I’ve used VoIP a couple of times in conjuction with ham radio for supporting public events; some troubleshooting problems lend themselves to full duplex communication better than PTT radios. Until now I hadn’t really considered setting up something for myself, but then I learned about Hamshack Hotline. It’s a collective of VoIP geeks running their own phone network, and it even has links into RF repeaters and such. Neat!

HH keeps a list of fully supported devices, but I was somewhat drawn to an unsupported device, a Cisco 7900 series, for nostalgic reasons (it’s what I supported in the Army) as well as cost (~$20 on eBay). Because of this, I was directed down the road of setting up my own local PBX with a trunk connection to HH. How hard could that be?

FreePBX initial setup

Download https://www.freepbx.org/. I used the ISO image to create a VM for testing. Create an admin account and do basic configuration. This YouTube series goes in-depth about the entire process.

Then add some phone extensions. This video on creating extensions was particularly useful. I also found it very helpful to register a couple of software phone clients, which were relatively easy, before moving on to dealing with Cisco “legacy” hardware issues.

Cisco 7965G setup

Cisco 7965

Download SIP Firmware. You need SIP firmware. Some folks advise to use v8 or v9, but both worked for me. You need the “firmware files only” zip file. Unzip the files.

The firmware files need to be served by a TFTP server. I used tftpd-hap on my workstation.

Your DHCP server needs to advertise the TFTP server. My DHCP server is running on my MikroTik router. At first I tried setting “DHCP option 150,” but that didn’t seem to work; I could see in MikroTik WinBox that the phone kept rejecting DHCP offers. Instead I set the “next-server” option, which worked.

Follow the steps below to factory reset your Cisco IP phone and get it to download the new firmware. Here’s a good video.

  1. Unplug the power cable from the IP phone and then plug it back in.
  2. While the phone is powering up, and before the speaker button flashes on and off, press and hold the pound # key.
  3. Continue to hold # until each line button (right of the LCD screen) flashes on and off in sequence in orange color.
  4. Now release the pound # key and type the following sequence 123456789*0#

(On the first phone I tried, I had a hardware issue: I’d start typing the 123… sequence and the phone would start booting normally before I could finish. Luckily, I bought two, and the other phone behaved as intended.)

The phone should show “Upgrading” and the MAC address on the screen. It will download the firmware files one by one and show its progress. After the last file is downloaded, the phone will reboot and the firmware upgrade is complete.

At this point, you need to configure the phone by downloading and modifying an XML file, renaming it to SEP{MAC_ADDRESS}.cfg.xml and putting that on your TFTP server. The XML file at a minimum needs to specify the SIP server address, username and password. Many other config options are available. As I was iterating on the config file, I found it useful to modify the value in <phoneLabel> so I could easily tell if the phone had downloaded my latest version.

After all this, I was stuck for a while with the Cisco phone unable to register with the FreePBX server despite having picked up its configuration file. I found advice to find the force_rport setting within FreePBX/Asterisk for that phone’s extension advanced settings and turn that setting “off”; that made it so I could call out from the Cisco phone, but was unable to receive calls. I also tried enabling TCP for the Asterisk server and forcing that extension to use it; still no dice.

This is where the story takes a turn for the worse: I asked for advice from some of my ham friends, some of whom are VoIP professionals, and their advice was to abandon all hope. Cisco phones are apparently very nice in an enterprise setting with their proprietary controller, but are not really suitable for hobbyists. Yes, they can be made to work, but are not worth the time to set up and keep running. It’s better, my friends say, to use a desk phone that will work without putting up a fight. So I guess I’ll try out a Polycom or a Grandstream or something.

Conclusions

I’ve put many hours into this project, and I still don’t have a working connection to Hamshack Hotline! I guess I’m getting what I paid for. Still, I’ve learned a lot.