A lit doorway inside an Art Deco medallion

Call Me Maybe

A programmable home phone for a spare Raspberry Pi. Known callers ring the whole house. Everyone else meets the doorman.

The lobby

Dial an extension

Six digits. Or ten seconds of silence, and the doorman decides for you.

When the phone rings

One decision, Two doors

Like any quality doorman, every caller is checked against the list. Favored guests are automatiically allowed to ring the house phones. Their numbers formatted and fashioned into a universal form first to prevent confusion. Which makes sure grandma never has to meet the bouncer (unless you want her to).

For Known Callers

“Welcome, I’ll connect you.”

Every handset in the house rings at once. The first to answer gets the call. Classic Landline. No extensions needed. No spam callers.

Everyone Else

“Welcome to the phone lobby. Please dial an extension.”

These callers get ten seconds to start dialing an extension. Valid extension rings that room. Silence, or wrong guess, gets “Good day.” and a click.

Ten seconds sounds generous until you watch someone read a number off a card. The window is ten seconds to the first digit, then three between digits — so a confident caller is through in two seconds and a fumbling one still gets a fair shot.

A six-digit code exposed to the phone network is a million combinations: ample against a person, thin against a machine that can redial. So after three failed calls in an hour, a number skips the greeting entirely and goes straight to “Good day.” — no prompt, no dial window, nothing to work against.

How is the fit

No Ports Left Open

The Pi registers outbound to a VoIP provider, and incoming calls ride that registration back in. No port forwarding, no inbound firewall rules, no dynamic DNS. The only connection crossing your network edge is one the Pi opened itself.

Asterisk does SIP, RTP, and tone detection, because it is very good at those and there is no reason to write them again. Everything about who gets in lives in doorman: one static Go binary, talking to Asterisk over loopback. One call is one goroutine, and a caller hanging up cancels a context that unwinds the whole thing.

It is also its own operations tool. It will tell you what your configuration adds up to, show you how a caller ID normalises, and hand a language model the entire config surface as JSON Schema.

$ doorman check
✓ policy.toml is valid
 
  allow-listed numbers : 4
  extensions            : 4
  house ring group      : kitchen, living-room, office
  Kids                 : 2-stage ladder, afterhours configured
 
$ doorman e164 "(512) 555-0100"
(512) 555-0100  →  +15125550100  (usable for the allow-list)

Beyond the lobby

The rest of the switchboard

Once the handsets are registered, they get the toolkit a small office PBX has had for thirty years. It turns out to be a remarkably good fit for a house.

An afternoon, roughly

Four rungs, bottom up

In that order, and confirm each before climbing. A failure low down explains every symptom above it, which is why the runbook is written as a ladder rather than a checklist.

  1. A number to answer

    Create a sub-account with a VoIP provider, point a DID at it, and turn on E911. A couple of dollars a month, and the one line item worth not skipping on a house phone.

  2. Asterisk on the Pi

    apt install asterisk, copy the config from the repo, restart. Confirm the trunk registered before going further — everything above this rung depends on it.

  3. A voice for the lobby

    Render the prompts once on a workstation with piper and copy the WAVs across. The Pi never synthesises speech, so a broken speech service can never make the phone unreachable.

  4. Hand the doorman the rules

    Write who is known and what rings, run doorman check, and enable the service. Edits go live within a second, and a file that fails validation is discarded rather than applied.

What to buy

Suggested hardware

doorman has no opinion about brands. Anything that registers over SIP works, so buy on ergonomics and price. The type matters more than the model: wired desk phones never surprise you, DECT is the right answer for cordless, and an ATA means the phones already in your house may need nothing bought at all.

For the Pi itself, one choice is worth being rigid about: use wired Ethernet. Wi-Fi jitter on the box handling audio is the difference between a clear call and someone sounding underwater. Then put it on a small UPS — a house phone that dies in a power cut is worse than none, because you thought you had one.

The Pi

  • Raspberry Pi 5 Pi

    The most headroom. Wants active cooling and the 5 V/5 A supply.

  • Raspberry Pi 4 Pi

    The sweet spot. 2 GB is ample, and a PoE HAT fits so one cable does power and network.

  • Raspberry Pi 3 Pi

    The cheapest that still has wired Ethernet — which matters more than the model.

Wi-Fi handsets

Reuse the phones you own

  • Grandstream HT812 V2 ATA · 2× FXS

    Puts analog phones you already own on the lobby — an existing cordless base, or a 1950s rotary. Two ports, so two handset entries. Usually the cheapest way to cover rooms, and the most fun.

Cordless, done properly

  • Grandstream DP752 DECT base

    Carries several DP7xx handsets, each registering as its own SIP account — one entry per handset, exactly like a desk phone.

  • Grandstream DP730 DECT handset

    Pairs to the DP752. Buy one per room.

  • Yealink W73P DECT bundle

    W70B base plus a W73H handset. The straightforward place to start.

  • Yealink W73P + extra W73H DECT bundle

    Same, with a second handset in the box — cheaper than adding one later.

  • Yealink W79P DECT bundle

    W70B base plus the ruggedised W59R — the one to pick if it is going to get dropped.

  • Yealink W79P + 1 extra W59R DECT bundle

    Two rugged handsets.

  • Yealink W79P + 2 extra W59R DECT bundle

    Three handsets — the cheapest route to a whole-house cordless set.

Desk phones

  • Grandstream GRP2601P Desk · PoE

    Entry desk phone. The P is PoE, so one cable carries power and network.

  • Grandstream GRP2602P Desk · PoE

    Same family, the higher tier of the two.

  • Grandstream GRP2602W Desk · Wi-Fi

    The W is built-in Wi-Fi, for a room with no Ethernet drop. Prefer the P anywhere you have a cable.

  • Yealink T31P Desk · PoE

    Very common, well built, cheap. A safe default.

  • Fanvil X3U Desk · PoE

    About as cheap as this gets while still being pleasant to use.

  • Cisco SPA504 Desk · PoE

    The classic four-line workhorse, and abundant secondhand. Factory-reset anything used — it may still be provisioned to its last owner.

Disclosure. The Amazon links above are affiliate links — buy through one and the project earns a commission at no cost to you. Nothing here is sponsored and no vendor has paid for placement. Be aware of the obvious bias anyway: everything with a link earns something, so the honest guidance is the part that does not. doorman works with any SIP endpoint, the ATA above may mean buying nothing at all, and a free softphone will test your whole ringer ladder before you spend a cent.