** The original, and always updated article can be found on Mollien dot Net **
This article describes some of the perils I have encountered while performing the installation of these phones, using SIP, usually with Asterisk based PBX systems. I started writing this in 2002, and it is still one of the most visited reference manuals on the Mollien.net website. The initial reason for writing this, was to get VoIP going between Los Angeles and several islands in the South Pacific.
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 internet, 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 or any other non-shared technology.
If you are using NAT (like most people), you need to open up some ports:
Incoming UDP 5060 -> Point to the phone/PBX
Incoming UDP 16384-16484 -> Point to the phone/PBX
Note that you have to choose between 'phone' and 'pbx', depending if you are using a PBX or not. If you are using multiple SIP phones behind a NAT router, I would strongly suggest setting up a PBX to play the middle man.
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, a great 'Free and Open Source Software' firewall, supports many Dynamic DNS 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 device with the FreeBSD NAT/Firewall/VPN/QoS software called m0n0wall, a great 'Free and Open Source Software' firewall, which is completely webconfigurable and could also run on an old spare PC with 2 networkcards..
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:
DHCP Option 66 (Boot Server Host Name)
As a TFT-server, I use the freeware TFTP-server from www.solarwinds.net or any Linux distribution with a TFTP server package (like atftpd) installed.
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).
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 a client 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
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
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
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).
For an explanation of the XML structure, take a look at the article at VoIP-Info.org. It describes the use of XML with the Linux-based, freeware Asterisk PBX, but should give you a good idea on what the structure od the Cisco XML is.
Also, this extensive description of XML on Cisco is very helpful.
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.
As an alternative to buying an expensive proprietary headset to use with the Cisco 7940/7960 phones, I have found a site where a simple, home-made box will allow you to connect any regular headset.
If you do not want to fiddle with a soldering iron yourself, you can choose to:
Get a pre-made Cisco Headset Adaptor to connect any standard 2.5mm headset to your Cisco 79xx, or
buy this cable to connect any Plantronics H-series headset with QuickDisconnect to your 79xx.
Obtaining the latest firmware
You will 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.
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.
** The original, and always updated article can be found on Mollien dot Net **