This guide applies to the Cisco 7940, 7940G, 7941G, 7960, 7960G and 7961G. These phones are the real work horses of the IP Telephony industry. They’re sturdy, configurable and when used with Call Manager very robust. However you’re not here to learn how to use these phones with CallManager you’re hear to use reflash them to SIP, because you want to use them with Asterisk, PiaF, Trixbox, or any other SIP based PBX. This process is not that difficult but it can be frustrating without the right instructions, which is why I’m here to help.
IF YOU HAVE ACCESS TO CISCO IOS, OR HAVE A 7945G ,7965G OR 7975g GO TO THIS ARTICLE.
Firstly, I’m not a big fan of these phones in a SIP atmosphere, I have one on my desk so they’re by no means terrible, but realistically Cisco’s SIP firmwares are much more limited than their SCCP firmwares. If you haven’t yet bought your phone, I’d recommend you buy one of the SPA500 line . They’re made of virtually the same parts, except designed for the Small Business and SIP customers.
Let me explain more or less what you are doing, you are taking whatever firmware is on your phone and you will be reflashing it to the latest SIP firmware. Typically these phones come from Cisco with the SCCP, often called “Skinny” protocol. This protocol only works with the proprietary Cisco CallManager platform or with special asterisk modules. Although it is very rare to ‘brick’ these phones, it is possible. It is very important that you are patient with each step as well as careful that all of your connections are solid.
Alright, to reflash this phone you’re going to need:
- DHCP Server
- TFTP Server
- P0S3-07-5-00.zip (For the 7940/7960)
- cmterm-7940-7960-8.11.00-sip.cop (7940/7960) or cmterm-7941_7961-sip.8-5-2.cop (7941/7961)
- XMLDefault.cnf.xml configured correctly for your firmware. (Right Click Save As, or your browser might try to parse the XML) SERIOUSLY FOLLOW THOSE INSTRUCTIONS, THAT’S THE BIGGEST MISTAKE PEOPLE MAKE, MOST MODERN BROWSERS WILL PARSE XML.
If you have a Cisco Smartnet Contract already you can get the firmwares for the 7940/7960 here and for the 7941 and 7961 here. If you don’t have a Smartnet Contract I recommend you buy one from CDW. You can chance it on the internet trying to find a good Samaritan who has uploaded the firmwares for you but it’s seriously worth the 8$/year to have access to firmware updates.
Now the unusual part about reflashing the 7940 and 7960 generation of phones is that to get them to the most recent firmware often times they will have to be flashed twice. This is because sometime around the 7.5 firmware Cisco changed what I believe was the phone’s bootloader. For this reason it is necessary to take the phones directly from SCCP to P0S3-07-5-00 then to 8-11. Technically some phones may be able to go directly to the latest version from Cisco, but because it seems like the vast majority of phones with the SCCP firmware on them require this process, I now just assume that it will need to be done to streamline the process.
I’m going to steal a few bits from my Cisco 7970G Guide you can always use whatever TFTP server and DHCP server you like as long as you have the ability to set the DHCP options manually. Here we are going to use tftpd32, it has both a tftp and dhcp server inside.
To start make a folder on the desktop, I named mine CP-7940.
If you have a 7940 or 7960 extract the contents of P0S3-07-5-00.zip and cmterm-7940-7960-8.11.00-sip.cop with 7zip or WinRAR. The 7941 or 7961 will require you to extract the cmterm-7941_7961-sip.8-5-2.cop. If the archiver doesn’t automatically detect it’s extractable when you right click. Add a .gz to the end, it’ll figure it out. Then move the XMLDefault.cnf.xml that you downloaded from me into the same folder.
Now if you’re flashing a 7940 or 7960, you should have this in your directory.
The P003-* files are SCCP files, but they are used by the SIP. SIP firmwares are typically labeled P0S3-*. You want to make sure the P0S3*.loads file is referenced in your XMLDefault, but the P003 files still need to be available.
or for the 7941/7961
Now we have to modify our XMLDefault.cnf.xml file to reflect our intent to reflash the phone. Either download my starter file from above or add these line to your XMLDefault.cnf.xml. Here I’ve included the settings for both the 7940 as well as 7960 generation of phones.
<loadInformation309 model="Cisco 7941G-GE">SIP41.8-5-2S</loadInformation309>
<loadInformation308 model="Cisco 7961G-GE">SIP41.8-5-2S</loadInformation308>
If you need any other phones check out my post on XMLDefault.cnf.xml loadInformation tags.
Next let’s configure TFTPd32
Firstly, determine how you are going to connect your 7940/60 to your DHCP/TFTP server. You’re going to need to make sure that there is no other routers on the network that could send competing DHCP broadcasts. I recommend one of two scenarios.
- Connecting the Phone and Computer directly with a Crossover cable.
- Connecting the Phone and Computer together on a network switch with no other devices. Notice I say SWITCH not a ROUTER. You could use a router if you configured it properly, but that’s another story.
The switch option works better because it prevents the computer’s LAN interface from going up and down depending on if the phone is plugged in or not.
Next you are going to need to get a copy of tftpd32:
Now that you have tftpd32 open and running, we need to configure it:
Open up the settings box
Enable DHCP Server, TFTP Server, and Log Viewer, all others can be unchecked.
Make sure that you have set the directory into the same directory as your Cisco Firmware Files.
Make sure you have the correct configuration files in the directory including a XMLDefault.cnf.xml that at least partially resembles this one: (right click save as)
Set TFTP Security to STANDARD, in the image it says None. It should not be set to none it should be set to STANDARD.
Make certain that the bind address is set to the correct interface.
When done go to the DHCP tab
Make sure a DHCP and DNS server are set. Under additional options set “69” and make the IP the same as your TFTP server. Do not use these IP settings, they just server as a rough guide. The IP Pool starting address being out of the subnet is not intentional. Also under additional options the 19 was cut off by the size of the box. If you have problems with option 150, try option 66.
Check for any settings that I may have missed and double check that everything is correct.
Now it’s time to boot up the phone. If the phone is already on, a quick way to reboot it is by holding down the * key, the six key, and the settings key simultaneously. As the phone boots up watch the logs. With any luck it should boot up, and try to pull the SEPMAC.cnf then give up and move on to XMLDefault.cnf.xml. When it sees that file it should start downloading the firmware files and reboot. If after rebooting you see the phone look for a SIPMAC.cnf file then SIPDefault.cnf, your phone is successfully reflashed.
The 7941/7961 seems to reboot twice grabbing different files each time.
If the phone isn’t reflashing, double check your TFTP settings and make sure the phone is detecting your TFTP server. You may have to go into Network Settings and enable alternate TFTP server. Typically you can do this by moving to the option then pressing **# **to unlock it or going to setting then option 9. The default password is “cisco”. Then go to Network Configuration (Option 3) Then enable “Alternate TFTP Server” (Option 32) then type in the TFTP server address. The most common problem though is an error in the XMLDefault.cnf.xml file. I find myself having to do this very often on many networks.
Once you see the Sip logo in the upper right corner you are now safely flashed to 7.5. You’ll need to perform this process one more time to bring the phone up to the latest firmware. At the time of this writing that was 8.11. Open up your XMLDefault.cnf.xml file and replace the previous lines with
<loadInformation8 model=”IP Phone 7940″>P0S3-08-11-00</loadInformation8>
<loadInformation7 model=”IP Phone 7960″> P0S3-08-11-00</loadInformation7>
Reboot the phone again and it should update to the latest firmware.
This will get the phone reflashed, from here on you’ll need a configuration file to register the phone to a PBX. We have one already made for the Cisco 7941 / 7961 over here.