For my Cisco Telephony Lab, I got few old 7940. One in SIP and an other one in MGCP.
For the 7940 SIP Phone, the firmware was recent and it was easy to update. But for the 7940 MGCP Phone, it was a bit more complex. So I’m going to share my experience it could help other people who would buy old 7940 MGCP phones on ebay and would encounter the same issue.
Initial release of the MGCP Phone
When I plugged the phone and checked the firmware release I got this :
Application Load ID :
P0M3-07-7-00
Boot Load ID :
PC030301
DSP Load ID :
PS03AT46
Short description of the Application Load ID :
The letter after P0 means :
0 for SCCP
S for SIP
M for MGCP
The number gives the CUCM release :
7 for CUCM7
Selection of a new firmware
My lab works on the 8.6 CUCM release, so I would like to have the most recent firmware but with the SCCP protocol.
So I downloaded on cisco.com the last release of SCCP Firmware. I got the 8.1(2)_SR2. I selected the .zip archive because I need to use a common TFTP server .
Upload the firmware with TFTP
To upload the firmware on your phone, you need a TFTP server and a DHCP server.
The DHCP server allows to specify the IP address of the TFTP server via its option 150. You can use the dhcp server on a cisco router.
For TFTP server, I used SolarWinds TFTP Server. I extracted the .zip archive in the TFTP directory.
The initial firmware being a MGCP firmware we need to define the new firmware to install in the configuration file MGCDefault.cnf.
Indeed, when your phone is starting, it requests this file from the TFTP Server. You can see it with a simple wireshark capture on your computer where your TFTP server is located.
When you extracted the firmware .zip archive you got the following files :
P0030801SR02.bin
P0030801SR02.loads
P0030801SR02.sb2
P0030801SR02.sbn
In the MGCDefault.cnf file, you need to define the image_version parameter with the identifier of your release.
So, you will find below an example :
# Generic MGCP Default Config File Options
#
# Any or All of these options can be configured
# in the user config file (MGC.cnf).
# The user config file options override any options
# specified here in the Default Config File.
# :sample user config file name: MGC003E362FE92.cnf
# image_version – specifies which image version should
# be on the phone. This is used to upgrade from an
# MGCP image to a diferent MGCP image. The OS79XX.TXT
# file is only used to switch protocols (ie. SIP to MGCP).
image_version: P0030801SR02
# tftp_cfg_dir – specifies the directory to use for the
# retrieveing the MGC.cnf file. The base
# for the directory is the base TFTP Server directory.
# tftp_cfg_dir is limited to 64 characters.
tftp_cfg_dir : “”
So now, you have just to restart the phone and it should download its new firmware. But not: Why?
A wireshark capture shows that the phone requests the MGCPDefault.cnf from the TFTP server and got it and after requests the P0030801SR02.loads and got it but nothing after, the phone stop there and restart loop.
How to solve our issue :
The reason to our issue is simple, 7940 phone can’t directly jump to this new firmware in one step. So, first, we need to update the firmware with intermediate steps.
In my case, I used two steps :
- Release 7.2.4
- Release 8.1.1
As soon as you have updated the 7940 in 7.2.4 SCCP you need to use XMLDefault.cnf.xml to define the next release to download.
<Default>
<callManagerGroup>
<members>
<member priority=”0″>
<callManager>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>µ
</ports>
<processNodeName>192.168.1.200</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
<loadInformation8 model=”IP Phone 7940″>P00308010100</loadInformation8>
</Default>
