c7960With our recent change to a more permanent dwelling I have decided that it is time to invest in a higher quality infrastructure.  To an IT guy, this is as essential as brushing your teeth or taking a shower . . . but to a non-IT budget conscious wife I might as well be asking to buy a lunar spaceship.

Luckily my wife is semi-IT savvy and patient with my IT projects :).  She is a keeper.  But that is beyond focus of this post, so back to the topic at hand.

Since the first iteration our home VOIP system we have been using the Grandstream GXP2000 VOIP phone.  And it has been a fantastic phone to use on several levels.  1) Affordable 2) Easy to configure and manage 3) Decent level of config options 4) Decent hardware.  We have been using our GXPs for almost 2 years and for a little over the past year I have been aching to upgrade them to higher quality hardware and software.  I have had my eyes on the Aastra 57i CT, but unfortunately it is a bit on the expensive side (~$300 per unit) so I was too eager to purchase a couple of those.  So I started looking at Cisco phones.  If you are in IT and involved in anyway with networking you know that Cisco is the only way to go.  Period.  This doesn’t mean the the Linksys junk they sell at Best Buy, I mean true-blue through ‘n through 100% Cisco hardware/software.  There is nothing better, more reliable, more robust, more dependable, more secure or configurable.  Also nothing more expensive :(.  Which means that most people that have a normal salary have to resort to purchasing older out-of-life equipment.  Which isn’t a problem because Cisco gear lasts forever!  So as I started browsing for Cisco phones I came across a deal in our local Craigslist for a Cisco 7960 IP phone.  The guy only had one phone and he just wanted to get rid of it.  He made me a good deal and I bought it.  I figured that if worst case scenario I didn’t like the phone then I could sell it on eBay for what I paid and move on to a different phone.  Since having gotten the configuration up and running I’ve been so impressed with the phone that I have actually purchased another (a phenominal price on eBay certainly helps too!

I had experience with other Cisco gear and knew ahead of time that Cisco gear requires detailed configuration in order to function, so I understood that there would be a learning curve associated with this new phone.  So with this understanding I set off to get it working.  The first thing I learned about Cisco VOIP phones is that they LOVE TFTP.  Want to make your Cisco VOIP life easy?  Make sure you have a TFTP server.  EVERYTHING the phone uses is accessed on a local TFTP server.   Here is a list of the most common files you will need on the TFTP server:

  1. OS79XX.TXT- The only thing this file has in it is the name of the image filename stripped of the extension (i.e. P003-08-12-00)  **PLEASE NOTE THAT THE IMAGE FILE NEEDS TO BE SPELLED “P003-08-12-00 IN THE OS79XX.TXT FILE AND P0S3-08-12-00 IN THE SIPDEFAULT.CNF FILE**
  2. P003-xx-y-zz-bin- Nonsecure universal application loader for upgrades from pre-5.x images
  3. P003-xx-y-zz.sbn – Secure universal application loader for upgrades from images 5.x or later
  4. P0a3-xx-y-zz.loads – File that contains the universal application loader and application image, where “a” represents the protocol of the application image loads file 0-SCCP, S-SIP, M-MGCP
  5. P0a3-xx-y-zz.sb2 – Application firmware image, where “a” represents the application firmware image
  6. SIPDefault.cnf -Contains generic parameters for all Cisco phones at your location
  7. SIPXXXXXXXXXXXX.cnf -Where the last 12 hex digits is the MAC address of your Cisco phone
  8. dialplan.xml – matches dial patterns on phone
  9. RINGLIST.DAT – specifies list of customized ring tones to be downloaded
  10. ringer1.pcm- custom ringtone to be downloaded to phone (name is not important)

See I told you Cisco VOIP loves TFTP :).

So really the only files you need to worry about configuring are # 6-9.  We will go through them and I will make a sample copy available for your convenient download here –> SIPDefault.



This file contains generic settings that can be applied to call Cisco phones at your location.  This file can contain A LOT of different configuration options, however there are really only a few required ones.  For sake of this post I will only cover the required ones.  Additional options can be researched at your convenience.

#Image Version
image_version:P0S3-07-4-00 ;    <– NOTE THIS MUST HAVE “P0S3-xx-y-zz”!!!
#Proxy server address
proxy1_address: ;     <– this is the address of your SIP server you want to register with
proxy_register: 1;     <– this option tells the phone it MUST register with the SIP server

Some other items that you look into are codecs, telnet access, default password for the phone, ntp, backup sip servers, port settings, nat, and button configuration settings. On a side note I found out the hard way that Cisco phones have an ultra-sensitivity to your NAT settings.  Please ensure that the NAT setting is properly set on the phone and the server!!!  It took me two weeks of head-banging-against-desk before I realized that the NAT setting was mismatched and it was not allowing the phone to register with my server.


This file is specific for each phone.  You must replace the XXs above with the MAC address of your device(s).  In this file you have 3 parameters to change.

a) linen_name – where n is the number of the line i.e. 1,2,3 and so on. This name could be whatever you want.
b) linen_authname – here you should to write the name of the user which you have already registered in your Asterisk PBX and you want to use for this line. For example the user pstn01.
c) linen_password – here you write the password(secret) which you have set for this user in your Asterisk PBX. In our case – pstn01

line1_name : pstn01
line1_authname : pstn01
line1_password : pstn01


This file controls the phone’s matching of digits. By default “*” matches anything and times out after 5 seconds. Users must push ‘Dial’ or ‘#’ to connect if they don’t want to wait 5 seconds.  In this example we have three patterns we are looking for ——-> 1) 5xx (internal extension, change as necessary) 2) 11 digit numbers beginning with 1 and 3) a 10 digit number.  After matching the pattern the number is automatically dialed.  If a pattern is not matched then the user must either press “#” or wait 5 seconds for the number to be dialed.



This is the file that lists the custom ringtones that the phone will download.  All you need is to specify the name you want to display on the Ring Type menu, press TAB, and then specify the corresponding filename for that ring.

Ring Type 1 ringer1.pcm

**NOTE it is important that you press the “TAB” key so that the phone can parse this file properly!**


In order to upload custom ring tones to the phone it is essential that the sound files are in the correct format and sampling frequency.  The required specifications for custom ring tones are as follows:

8000 Hz sampling rate
8 bits per sample
ulaw compression
240 – 16080 samples long ( 0.03 sec – 2.01 sec )

To create a suitable ring file in this format you can use a variety of programs to do so, I used a linux box and a program called sox.

sox -t wav in.wav -t raw -r 8000 -U -b -c 1 out.raw resample -ql

Windows users might look into Audacity.  For those who are interested I will host the infamous ring tone from the hit television series “24″.  You can download it here –> ctu.

Well that is the basic configuration of the 7960, and the emphasis is on BASIC.  For a more secure, robust setup please take the necessary time to adjust the configuration settings to your needs.



Additional Features

  • To program the voicemail button –> in the SIPDefault.cnf file find the line that says “messages_uri:” and add the extension you want it to dial.  For PBIAF the number is “*97″
  • To program a custom telephone directory you will need access to a web server.  Modify the SIPDefault.cnf file to point to your website “directory_url: “http://www.mywebserver.com/asterisk/directory.xml” .  The specified file must be accessbile over http and it must be in .xml format.  The file should include entries such as these:

<Title>IP Telephony Directory</Title>
<Prompt>People reachable via VoIP</Prompt>

  • Each time a user presses the Directory key and accesses the External Directory option from the menu, the phone will access the contents of this html file and display whatever text entries included in it. Therefore, changes to the html file do not require any futher rebooting of the Cisco phone.
  • To change the default logo the Cisco documentation suggests the logo be a Windows Bitmap form (*.BMP) with 256 colors and 90 x 56 pixels in size. Only two colors are displayed, black or white. The image must be saved in greyscale format.  The subsequent image should be placed into the web server and made available via http.  Modify the SIPDefault.cnf file –> logo_url: http://www.mywebserver.com/asterisk/logo.bmp.  The smaller the image, the faster it will load.  Suggested image size is around 10kb.
  • To program the extra line buttons to be speed dial buttons do the following –> Settings –> Call Preferences –> Speed Dial Lines –> Select correct line –> give it a label and number and click Accept.

I am still experimenting with the Services button on the phone, however I would love to hear any suggestions or other tips ‘n tricks ya’ll have discovered with this phone!

There are a lot of good sources on configuring and troubleshooting this phone, I recommend the following: http://www.voip-info.org/wiki/view/Asterisk+phone+cisco+79xx