In this article I will provide you with a simple way to update the firmware on the Cisco 79×1 series of IP phones. I made this article because a lot of tutorials provide you with wrong information, which could even brick a phone. And most tutorials use ptftp32, which I could not get working. This article is compiled from numerous other articles (like: this one and this one).
- Working Cisco 79×1 phone, with a reasonably high CSSP firmare version. (I tried this with version 8.5)
- The latest SIP firmware files from the Cisco downloads page. This device still receives regular updates, but you have to create a free account in order to download these files.
- Network switch with PoE (Cisco 100 mbit ones are very affordable), or without PoE but then you’ll need an AC adapter
- Raspberry Pi (any version)
- Secondary machine to configure the Pi (like a notebook with an ethernet port)
Download and install the latest version of Raspbian to the micro SD card. Add an empty file to the boot partition called ‘ssh’, with no extention. This will enable you to connect to the Pi using SSH, without using a monitor, keyboard and mouse.
Plug the Pi into your normal network, and find out what IP it has been assigned. Using this IP, SSH into the Pi using your favorite method (Putty/directly from terminal). Create a folder using mkdir called ‘cisco’. Execute
chmod 777 ciscoto access everything. Connect to the Pi over sFTP using a program like FileZilla, and place the firmware from the cisco website into the ‘cisco’ folder. This is where we’ll point the root directory of the TFTP server later. Do
chmod -R 777 cisco again.
Install dnsmasq using the following command:
sudo apt-get install dnsmasq. Dont forget to run
sudo apt-get update first!
Set the ip to static by editing the DHCP config file on the Pi, choose 192.168.1.1. Disconnect the Pi from your normal network and turn the Pi off.
In order for this method to work, you’ll need to create a separate network with just 3 devices: the network switch, the IP phone and your secondary machine. You can’t run this on a network that already has a DHCP server, as we are creating our own.
Setup the switch with a static IP of 192.168.1.2 (I can’t go in to detail how to do this, but usually you’ll need to set your machine to a static IP and connect to the management interface of your switch)
Configure your secondary machine to use a static IP of 192.168.1.3 (you might have already done this in the previous step to reach the management interface of your switch). SSH into your Pi using the new network we just created. We are going to create a custom configuration file for dnsmasq. Execute the following command:
sudo nano /etc/dnsmasq.d/custom.dns
In the texteditor that just opened, type the following:
dhcprange 192.168.1.4, 192.168.1.100, 24h
tfpt rootdirectory /home/pi/cisco
Now we are going to connect the phone to our new network, and immeadiatly update the firmware. Hold down the hastag (#) button and plug the phone in to the switch (or power it on if using a adaptor). Keep holding down the hashtag button until the line select buttons start to turn on and off consecetivly. Then enter the following code into the keypad: ‘123456789*0#’. The phone will now boot into the firmware update mode, and will look for our combined DHCP/TFTP server. The phone will show you the progress, and once it downloaded all the files from the TFTP server, it’ll reboot 2 times. After that it should show the normal screen with ‘Not provisioned’ in the bottom left corner. This means the update worked!