Category Archives: Tech tips

Forward Your Landline Apartment Buzzer to your Cell Phone

My partner and I recently purchased a condo in a high-rise building. The door phone (also known as a buzzer, intercom or Enterphone) at the front entrance of the building connects to the landline phone wiring in each unit. When a visitor enters the code listed next to our names on the panel, our landline phone rings. After confirming the identity of the caller, we can unlock the entrance door by pressing a touch-tone button.

The door phone in question.

Of course, we don’t actually subscribe to landline phone service, what with it being 2019 and all. Fortunately, the door phone still works even with the phone service disconnected. However, it does mean that we need to keep a landline phone around that can’t actually make calls, and we don’t have any way to accept deliveries when we aren’t at home.

What if I could somehow hook the phone line up to the internet and forward these door phone calls to our cell phones? Thus begins the adventure…

An internet search led me to this Reddit post which informed me that I would need a SIP phone adapter with an FXO port[1]. Looking to do this on the cheap, I went to eBay and bought a “Linksys” SPA3000[2] for about $25 USD. [3]

Having received the hardware, the next step was to sign up with a SIP provider. I had heard good things about VoIP.ms, and so far my experience has been overwhelmingly positive. (Sign up with my affiliate link and receive a $10 bonus credit when you fund your account and place your first call!)

For the minimum functionality of making VoIP calls and forwarding the door phone to our cell phones, we pay only $0.25 per month plus about $0.01 per minute of usage[4]. We are however spending an additional $2.35 per month to add the ability to receive calls and to dial 911 in an emergency ($0.85 for the phone number and a $1.50 e911 regulatory fee).

The rest of this post will document the process I went through to set up the SPA3000 with VoIP.ms. The exact steps will vary if you choose a different SIP adapter or provider, but this should at least provide a starting point.

The setup

Connect the Ethernet jack on the SPA3000 to your internet router, the Line jack to the phone jack in the wall and plug your phone in to the Phone jack. Once you have signed up for your VoIP.ms account, make a note of your six digit SIP/IAX Main Username and choose a nearby server from here. With this information in hand, follow the instructions at the VoIP.ms wiki article for setting up the Cisco SPA2100, which is also applicable for the SPA3000.

At this point we have completed the setup for making outgoing calls on the landline phone. You can dial 4443 on your landline to check your connectivity. If you haven’t already, now would be a good time to fund your VoIP.ms account.

Next, you need to create a subaccount in the VoIP.ms admin panel. This subaccount will be used for routing the incoming calls from the door phone. The username of your subaccount will be the six digit username of your main account, followed by an underscore, followed by a name of your choosing. (I used “enterphone”.)

Once you’ve done that, create a Call Forwarding entry for each cell phone number to be called when the door phone rings. Then, create a Ring Group and add each of the Call Forwarding entries to it. You should also add your Main Account if you want the door phone to ring your landline phone as well. Note: if you just want the door buzzer to ring one cell phone, skip the Ring Group and just create one Call Forwarding entry.

Our last task in the VoIP.ms portal is to to create a Virtual SIP Number using the three-digit suffix of your choice (I used “000”). Configure the Routing on this DID to use the Ring Group you created previously (or the Call Forwarding entry if you are just routing to one cell phone). Select the same Point of Presence server you chose when you set up the SPA3000.

Finally, go back to the web admin interface of the SPA3000 and click on the PSTN Line tab. You’ll notice the settings here are similar to the ones you saw on the Line 1 tab. Repeat the setup you performed from Step 4 of the wiki article with the following changes:

  • For the Display Name, choose something like “Enterphone”
  • The username and password are the ones for the subaccount you created (e.g. xxxxxxx_enterphone).
  • Set Dial Plan 8 to (S0<:1xxxxxxxyyy), where 1xxxxxxxyyy is your Virtual SIP Number (the x’s are your Main Username and the y’s are the three-digit suffix you chose).[5]
  • Set PSTN Caller Default DP to 8
  • Set PSTN Answer Delay to 0
  • Remember to click Submit All Changes at the bottom of the page

And that’s it! Bring your cell phone to the entrance of your building and try buzzing yourself in.

Some other tasks you may want to complete once everything else is set up:

  • Set a password on the User and Admin accounts in the SPA3000’s web interface.
  • You may want to turn on the option on your Ring Group entries requiring the answering party to press 1 to accept the call. This will prevent someone’s cell phone voice mail from grabbing the call if their phone is off or out of range.
  • If you want to be able to receive calls on your landline phone, order a Local Number DID and assign it to your main account. Optionally add on voicemail and e911.

Disclosure: I may receive a commission on purchases made from links in this post.


[1] FXO, as I learned from this article, stands for “Foreign eXchange Office”. It is the port that receives the analog line from the telephone company (or in our case, the door phone). Contrast with FXS, which stands for “Foreign eXchange Subscriber”, which is the port that provides the analog line.

[2] Given the item was a.) advertised as being in “new” condition despite this model having been discontinued around 2009 and b.) shipped from Shenzhen, China, it is almost certainly counterfeit.

[3] All rates and prices in this blog post are in USD and subject to change.

[4] The Virtual DID is $0.25 per month and incoming usage is $0.004 per minute. Per minute rates on outgoing calls to North American destinations range from $0.0052 (Canada value route) to $0.01 (USA premium route). Call forwarding is billed at the sum of the incoming and outgoing rates, but calls within the VoIP.ms network are free so for our purposes the incoming usage rate does not apply, only outgoing usage.

[5] This section was adapted from this article on Cisco’s site. The (S0<:1xxxxxxxyyy) string is called a Dial Plan. The syntax is documented at this VoIP.ms wiki article and some examples can be found in this article on the Linksys site. This Dial Plan implements a “hot line” function which initiates a call to the supplied number as soon as the line is taken off hook, rather than waiting for DTMF tones.

Unstick a remote reboot

Here’s a useful tip if you’ve ever tried performing a remote reboot of a server or workstation running Windows and had the reboot get hung up.

First, some background: you can remotely reboot a machine with the following command:

shutdown /r /m \\computername

Of course, you need to be running as a user with admin rights on the remote machine. Typically, I would follow this with a ping -i computername to confirm the remote machine has rebooted.

Normally, after a minute or two, you’ll see the machine stop responding to ping, and then eventually come back online. Occasionally, though, if the remote machine is having issues, the reboot can get hung up. If you try the command again, you will get the error: A system shutdown is in progress.(1115).

What now? Well, you can try cancelling the reboot with shutdown /a /m \\computername and initiate it again. You might try adding the /f switch to the shutdown /r command, which forces all running applications to exit rather than allowing them to save their data. But what if that doesn’t work either?

PSKill to the rescue. This tool is part of the excellent PSTools suite. Just unzip them to a folder in your path (like C:\Windows). We’re going to take advantage of a useful property of the Windows kernel: it depends on certain processes to be running at all times, and if one of these processes is terminated, the system will immediately reboot. One of these processes is winlogon.exe. Just issue this command:

pskill \\computername winlogon

Note that this is nearly the equivalent of pulling the plug on the machine. I wouldn’t recommend using it unless a regular reboot has failed. And of course if the machine isn’t responding to RPC, then nothing is going to work and you’ll just have to walk over there and mash that power button.

Was this helpful? Know of a better way? Leave a comment and let me know!