This article show step by step how to upgrade the firmware of a Cisco IP phone managed by CME(Call Manager Express). I will be upgrading Cisco 8851 IP phone(from version 12-0-1-11 to 12-5-1SR3-74) using Cisco ISR4331/K9 router as a CME.
Step 1. Download the firmware files
The first thing we need to do is download the new firmware files from Cisco website. Go to Cisco Software Download and download the firmware files for your IP phone model (in my case it is 8851). Make sure you download the .zip package as shown on the picture below.
Now you need to extract the contents of this ZIP archive and add all extracted files to another type of archive – TAR. You can do this using 7-Zip archiving software.
Step 2. Download the TFTPD32
TFTPD32 is a tiny TFTP server which we are going to use to upload our firmware files to CME. Run the TFTPD32 server and make sure the base directory contains the TAR archive, so TFTPD32 can serve it.
Step 3. Copy archive to the router
Now we are going to upload the TAR package to the flash of the router using TFTP protocol. We can do this in one step, because our archive is in a TAR format, otherwise we would have to copy all files from the archive one by one. Go to the router CLI and run the following command:
# archive tar /xtract tftp://172.16.121.57/cmterm-88xx.12-5-1SR3-74.tar flash:
The command is self-explanatory. It gets and extracts TAR archive(cmterm-88xx.12-5-1SR3-74.tar) from TFTP server(172.16.121.57- my laptop) to the router flash.
Step 4. Verify the flash storage
Use dir command to verify the contents of the flash storage:
As you can see all firmware files are located in /cmterm-88xx.12-5-1SR3-74/ directory.
Step 5. Enable TFTP server on CME
Now we need to make TFTP server serve those files. Besides that we need to bind aliases to the full path of the files, because the clients are not aware of the directory hierarchy on CME and will be requesting file names only.
The syntax of the command is: tftp-server flash:full-name alias file-name
Below is the screenshot from my router:
Important! If you have a problem with your router’s TFTP server please try running the following command:
ip tftp source-interface interface
Some newer routers have the TFTP server bound to the management interface by default, which was the case with my ISR4331/K9. I had to bind it to the interface with a real IP address before it started working.
Step 6. Specify firmware version
Now let’s specify which phone type should use which firmware. This is done in voice register global section. Run the following commands:
voice register global
load 8851 sip88xx.12-5-1SR3-74
These commands tell the router that 8851 model IP phones should use sip88xx.12-5-1SR3-74 firmware. Notice, that the firmware name DOES NOT contain .loads extension. The full name is sip88xx.12-5-1SR3-74.loads, but in voice register global we omit that trailing .loads and specify only xx.12-5-1SR3-74 .
Don’t forget to run the create profile under voice register global to generate new configuration files for the phones.
Step 7. Final Step
Restart the IP Phone and it will detect and download the new firmware files.