My findings on how to install, upgrade and use the functions of the Cisco 7940g IP Phone
By: Cas Mollien Last modified on: 17 July 2010, 19:03h
I have been a happy user of Jeff Pulver's Free World Dialup for a while now, using various soft-phones (EyeP Phone most successfully) and a former Vonage Cisco ATA 186.
Given the geographical spread of the company I am was working for (offices in the US mainland, New Zealand and the Pacific Islands: Samoa, American Samoa, Tonga), it has always intriqued me to do some testing with this technology.
I have purchased 5 Cisco 7940g Voice over IP (VoIP) phones, to test the soundquality of phonecalls between our offices. This article will describe some of the perils I have encountered while performing the installation.
Update, May 2010: Since 2004, I have moved on to larger organisations and have set up and managed Asterisk based PBX systems with up to 350 phones, mostly Cisco 79xx. Many of the updates to this article that have been made over the years are based on stubborn phones or slightly different models. Recently, I started a company that specializes in enterprise level solutions for the small and medium sized business. If you are interested in receiving professional support, visit Bazic Blue and let me know that you found me through my personal pages...
Line Speed First of all: Make sure that you have a 90kbps UP and DOWNLOAD available in each location. This is (at the time of writing this, Jul 10th 2004) the minimum voor an acceptable conversation with these phones. On other solutions, codecs can compress an acceptable conversation to anywhere between 30k to 90k. At this moment, I can say that using a solution such as Skype uses far less, but this has some major disadvantages as well (which I will address in another article). The satellite connection in the islands proves to cause a delay, but definately not unacceptable.
Furthermore, I have encountered numerous quality issues (caused by climbing latency while using VoIP) when using cable, especially in combination with the Motorola Surfboard modem. I have read reports from others, stating that some other modem brands do not have issues. In my case, when I switched to DSL all my problems were gone. Same settings, nothing changed, except the switch from cable to DSL. Both the same speed, both highly stable and reliable. If you have cable and want to use VoIP, I would really suggest making the switch to DSL.
NAT/Firewall If you are using NAT (like I am at home), you need to open up some ports:
Incoming UDP 5060 -> Point to the phone
Incoming UDP 16384-16484 -> Point to the phone
If you are running a UPnP capable router, this should be more then sufficient. You may not even have to set this last one. By the way: The Cisco 79xx series phones are defaulted to 16384-32766 (These are a LOT of ports, but I found that restricting their number to 16384-16484 works just fine).
If you keep on having problems, like I had when I was installing the phone behind m0n0wall, try opening the following ports and making sure your phone is allowed a path out:
Outgoing UDP 123 (NTP - Network Time Protocol, may not be necessary)
Outgoing UDP 69 (TFTP - Should not be necessary unless your TFTP server is on the other side of your NAT)
A common and much heard complaint is that everything works up till the moment that the connection is established. At that moment there is no sound: either side does not hear the other party.
I found that this could be caused by the 'NAT Address'-setting in the phone. This setting should be the external IP address of your NAT router, or -when you do not have a static IP address like most of us- a Dynamic DNS name. m0n0wall supports many DynDNS services, so create a name and use this in your phone. You cannot do this on the phone itself, as it only supports the use of numbers. However, if you put this setting in the SIPDEFAULT.CNF-file in your TFTP-root, the phone will accept it and use it properly.
QoS (Quality of Service) or Traffic Shaping If you want to use ANY VoIP solution without stuttering or breaking up, use a router that supports QoS or Traffic Shaping. This technology will give your VoIP-data higher priority then other data (e.g. Websurfing) , so that VoIP traffic will always find it's way without delays. It is no guarantee, since you cannot control what happens outside of your network, but at least it will be the first data to go out and the first to come back in. I am using a Soekris box with the FreeBSD NAT/Firewall/VPN/QoS software m0n0wall, which is completely webconfigurable and could also run on an old spare PC with 2 networkcards..
Update: I have written an article on the use of Traffic Shaper with m0n0wall. You can find it here.
Installation and Configuration Out of the box, the Cisco phones come with the Cisco preferred firmware for their own protocol. This will NOT work with SIP. You need to get the SIP-firmware for this system to work, v3.2 or higher. I am currently running v8.2
Out of the box, the Cisco needs a TFTP-server configured in the DHCP server. The Windows 2000 DCHP server can do this by adding an option to the scope:
If you do not have a DHCP server that supports custom scope options, you will have to enter this in the phone manually (see the step-by-step below).
As for the basic configuration, Welby at Wheely-Bin (dead link) created a tutorial that is very helpful in configuring the basic settings of the phone for use with FWD, so I will not get too much into this.
Upgrading versions (from factory to the latest) has shown most easy in 3 steps:
1) Upgrade from factory to v3.2
2) Upgrade from v3.2 to v6.3
3) Upgrade from v6.3 to the latest
This is because these versions contain major changes in firmware style. Please note that if you upgrade to v6 or higher, you will NOT be able to downgrade to any version lower then v6.0. This includes the other (non-SIP) firmwares.
In April 2005, after having updated a few dozen phones, I bought a 7960 off eBay. This appears to have been a very old version, with a firmware (p003am30) that has 2 major bugs:
1) It will not load files that are larger then a certain size, with v3.2 already being too big.
2) It will not accept long file names (other then the old 8.3 convention).
The trick with this one is to update to one version more recent to fix the memory bug, then update to one version more recent to allow long file names:
upgrade to P0S30200
upgrade to P0S30203
continue with the upgrade path as described above...
I have created 3 zip-files with an upgrade-package, which I unpack in the root of the FTP-server one-by-one. I rename the SIP**mac-address**.CNF file to show the correct mac-address and enter the right phone-specific details in there.
**Optional for NON-DCHP environments** Manual phone configuration step-by-step:
1) Connect the phone, press **# to unlock the menu
2) Go to the Settings menu, then to Network Configuration
3) Under option 30 (DHCP Enabled), you should be able to select NO
4) Now, enter an IP address under option 6, a subnetmask under 7, your TFTP SERVER under 8 and any other network settings that are important for your environment.
5) Write down the MAC Address (option 3)
6) Press SAVE
**Continue for DHCP and NON-DHCP**
7) As described above, unpack the first firmware upgrade in your TFTP-root, restart the phone, wait for the upgrade to take place. Repeat for the other firmwares.
If, after performing one of the upgrades, you receive the message 'Phone Unprovisioned', check the status messages. The 'unprovisioned' message is almost certainly a problem with your configuration files (.cnf). Don't worry: The phone is OK, it just does not know what to do with the configs. There could be too much information in them to fit in the buffer, or the connection settings are not right. When a status message is shown regarding a full buffer, open the sipdefault.cnf file on the TFTP-server and delete all configuration lines for newer versions then the firmware you are trying to install.
In October 2008 I received a phone for my employer that would not upgrade. This phone came with a newer version of the Skinny firmware, P00305000400.
The easiest way of updating this phone, is by going straight to the latest version of the SIP firmware, by entering the proper version numbers in XMLDefault.cnf.xml.
However, after the initial upgrade (which looked like it did not complete somehow), I ran into a 'Protocol Application Invalid' message which seemed to make the phone completely unresponsive (yet not 'bricked'). Make sure you already have a SIP.cfg file configured in your tftp server!! If you have that done already, you need to make sure to set option 150 in your DHCP server (see below for the solution to this) and perform a factory reset on your phone (see below for the solution to this too). If this option is handed to your phone, it will finish the upgrade and fully provision itself (if you have a properly formatted SIP.cfg for the phone)
The 'Protocol Application Invalid' message In later versions of the Skinny firmware, Cisco replaces the standard DHCP option 66 (tftp) with a custom option: option 150 which they refer to as voip-tftp. If this option is not properly set in the DHCP server, the phone will stop responding with the 'Protocol Application Invalid' message.
In Windows DHCP, creating this custom option is not obvious, though it is very simple to set up;
1) On your windows host, open DHCP manager,
2) Right click on the DHCP server and select "set predefined options".
3) Click on 'Add'.
4) Type in Name such as VoIP-TFTP
5) Set 'data type' to IP Address and put a check mark next to "array"
6) In the 'code'-field, put in 150 then click ok.
7) You can now either edit the array values to predefine the ip addresses of your TFTP server globally or set it per scope in the scope options.
Now when you configure scope options you should be able to select the newly created option 150 and put in the appropriate IP addresses.
Note: If you do have option 150 in your DHCP server and you still receive the error, make sure that the SIP.cnf file for the phone exists. I noticed that the upgrade did not work for some phones that did not have their own configuration file.
Performing a factory reset in case you get stuck The Cisco 79xx series have a factory reset mode that can be initiated at startup, without having to go through the menus. The sequence can be initiated by performing the following key sequence:
1) Pull the power cord and plug it back in
2) Immediately after you connect the power cord, hold the # key until the speaker button turns off.
3) Release the pound key and press 123456789*0#
4) If done correctly, the phone prompts to keep network configs (1=yes, 2=no). Press 2.
5) The phone will factory reset and continue booting
Gathered notes on troubleshooting upgrades This part is mainly for my personal use, but I decided to put it here as this is one of the most popular articles on my site.
Always do the following:
1) Update the XMLDefault.cnf.xml with the correct LOAD information (P00...)
2) Update OS79XX.cfg with the correct load information (P00...)
2a) Make sure P003-08-2-00.sbn is available
2b) Update Feb 12, 2010: By removing the OS79XX.cfg, I was able to upgrade some really stubborn phones. Make sure that the XMLDefault.cnf.xml is there, though - This seems to ave replaces the functionality of OS79XX.cfg
3) Update SIPDefault.cfg with the correct load information
Play with the P00 and P0S prefixes. I have noticed that whatever prefix is used in the OS79XX.cfg file, is the prefix that is used for (most of) the other files to be loaded. One time, I was able to upgrade a phone by changing the prefix, rebooting the phone, updating the firmware after which the phone started complaining, and then moving to the next firmware while changing the prefix back...
Whatever happens, make sure that all the files that refer to the firmware, point to the same version *and prefix*. I have seen a number of people that mixed the prefixes and found that the phones would not upgrade.
MWI - the Message Waiting Indicator The MWI (the red light that indicates new voicemails) has been working flawlessly since Asterisk version 1.4. However, there are times that the MWI does not work out of the box with certain Asterisk implementations. I have had the issue with a roll-your-own Asterisk 1.4 with FreePBX. After researching the issue, the directive 'buggyciscomwi=yes' comes up in a lot of articles online. This is however, a WRONG DIRECTIVE. The right one is 'buggymwi=yes'. So, in order to fix the issue, add this directive to your sip.conf file or, if you use FreePBX, edit sip_general_custom.conf in your Asterisk config file directory and either add buggymwi or replace the faulty buggyciscomwi.
Logo The Cisco supports uploading a custom logo. This logo should be no more then 10k (for fast loading, but larger is allowed), and MUST be a 256 color (8 bit) Windows BMP-file, resolution 90 x 56 (max). Pictures larger then this will be resized (within reason).
Custom XML URL's I am yet to work on the XML-structure of these phones. However, I did find some sites which can be used as the XML services page:
Just fill out this URL as the 'services_url' and you will have various nice functions available (such as local weather, airport delays and CNN Headlines).
Custom Ringtones Creating custom ringtones in PCM format is possible, but they should adhere to certain standards. Please refer to this Cisco whitepaper on Custom Phone Rings for specifics.
I have found a number of ringtones on various websites and put them together in this zip-file.
Obtaining the latest firmware Firmware for these phones is a hot topic on several forums. The official word is that you need to get a $30 USD annual update subscription for the Cisco website, which you can only get through a Cisco reseller, of which very few are willing to sell individual licenses. There are some online stores that are able to sell these, though.
An other option is eBay or other market sites. Some sellers sell CD's with firmware versions, although I doubt the legality of most of these CD.
Then there is the carefully crafted Google search. Once again, legality is doubtful but it may give you an immediate answer (and an immediate firmware download).
Links CConvergence: A detailed article describing the functionality of SIP, it's history and it's future in great detail
VoIP Info Wiki: Very handy information about the 79xx phones, their configuration and some configuration details for Asterisk.
Found this article useful? Please consider buying me a beer - or something else useful..