Cisco IP Phone 7945 with SIP Configuration

This article is based on the original that can be found here:

Having just finished a rollout of Cisco IP Phones, I was curious when one of the network engineers made comment that they could also be configured in a SIP format instead of the SCCP format. This type of configuration is certainly advantageous for the home/enthusiasts where setting up and maintaing a call manager config is probably not practical. These are enterprise grade phones have a great build and voice quality.

Just a word of warning if you are thinking about purchasing a Cisco IP Phone to convert it to a SIP phone.

Overall, the Cisco implementation of SIP is very temperamental. What makes things even more difficult is the ‘broken’ implementation of NAT. There is no GUI or Web Interface to configure these phones; it needs to be done from a XML config file in conjunction with a TFTP server. Lastly, Cisco provides pretty much no documentation or support for this SIP Configuration.

The Whirlpool Community has a wealth of information of people configuring their phones. I recommend that you start with the following threads as background reading:

Lastly, a big shout out to Aalex - he’s an all round nice guy, and pretty much an expert with this stuff!

There’s also a heap of great information over at Voip-Info, I highly recommend starting with this thread before you do anything, it has a breakdown of all of the firmware versions and a sample XML file with a detailed explanations of the configuration line items.

All of the being said, I have had some fairly good success with getting this device to function, follow my steps below.

The last word of warning before we begin: Not all VOIP Providers are created equally. They all use different implementations of VOIP to provide their service, however if your VOIP Provider uses Asterisk on the backend and you plan to use your phone behind a NAT firewall - then it’s just not going to work. I don’t know why - but this is a incompatibility with Cisco SIP and Asterisk. Asterisk will however work without NAT (but that’s not the purpose of this guide, so if you really want to do that, then get another public IP address from your ISP and put your phone in your DMZ). PennyTEL and MyNetPhone have good success.


Upgrading to a SIP Firmware.

If you’ve acquired a Cisco 7945 that already has the SIP Firmware loaded, then great, jump below to Step 2, otherwise you will need to ‘upgrade’ most likely from the SCCP firmware to the SIP firmware.

Ok, so upgrading the firmware, is not a simple as “uploading and installing”, but you already knew that right?

What you need:

  • Cisco IP Phone Firmware (I highly recommend the 8.5.4 firmware, read this as to why.)
  • TFTP server
  • DHCP server (with option 150 available)

Cisco IP Phone Firmware

Your going to need a Cisco SmartNet contract in order to download the 8.5.4 firmware, I believe that some of the others don’t require it. Cisco SmartNet for a single phone is pretty cheap, contact your local authorised Cisco Partner.

Download the zip file and extract all of the files into a directory. If you have downloaded the .cop file, you can rename it to .tar.gz and then extract it.

The file structure should look something like this:

TFTP server & DHCP server

There are a lot of documented incompatibilities between Cisco devices and particular TFTPd and DHCPd software. Save yourself the trouble and go and download TFTPD32. Get version 3.23 - because it works, don’t waste your time with other versions. TFTPD32 will provide the TFTPd and the DHCPd. Two birds, one stone.

What you need to do:

Configuring your windows Workstation:

  • Configure your Windows workstation with a static IP address of and subnet, you can leave the other settings blank.

Configuring TFTPD32:

  • Change the patch of the “Current Directory” to the directory where you extracted the firmware.
  • Under the DHCP Server Tab:
  • IP pool starting address:
  • Size of pool: 20
  • Boot file: Blank
  • WINS/DNS Server:
  • Default router:
  • Mask:
  • Domain name: Blank
  • Additional Option: 150   0x0101A8C0   (this is really really important!)

What does the Option 150 do? This allows the DHCP server to automatically tell the client the address of the TFTP server, when it is issuing it’s IP addresses - very clever. If you don’t have this option, the Phone is only going to get an IP address, and not know how to contact the TFTP server to download the required firmware.

What’s 0x0101A8C0? This is the hexadecimal representation of the IP address: (remembering that the bytes in unsigned longs are reversed), below is how the IP address is converted:

  • 0x01 = 1
  • 0x01 = 1
  • 0xa8 = 168
  • 0xc0 = 192

Upgrading the phone:

Follow the instructions on this Cisco thread to factory reset your phone, I’ve copied them here for the sake of completeness. 

The phone begins its power up cycle.

The line buttons flash in sequence in order to indicate that the phone waits for you to enter the key sequence for the reset.

If you repeat a key within the sequence, for example, if you press 1223456789*0#, the sequence is still accepted and the phone resets.

If you do not complete this key sequence or do not press any keys, after 60 seconds the Headset, Mute, and Speaker buttons no longer flash, and the phone continues with its normal startup process. The phone does not reset.

If you enter an invalid key sequence, the buttons no longer flash, and the phone continues with its normal startup process. The phone does not reset.

If you enter this key sequence correctly, the phone displays this prompt:


  1. Unplug the power cable from the phone, and then plug in the cable again.
  2. Immediately press and hold # and while the Headset, Mute, and Speaker buttons begin to flash in sequence, release #.
  3. Press 123456789*0# within 60 seconds after the Headset, Mute, and Speaker buttons begin to flash.

The phone will now begin to download the SIP firmware from the TFTP server.

Step 2: Configuring the Cisco 7945 for SIP

What you need:

  • Cisco IP Phone 7945 with SIP Firmware Installed (see Step 1 above)
  • TFTP server
  • XML Configuration Files

What you need to do:

Now that you have loaded the firmware using the DHCP/TFTP combo, it is now preferable that you give the phone a static IP address. This just eliminates the need for DHCP server and will simplify things a little.

Statically assign the IPV4 network settings for 7945:

To maintain the same settings for TFTPD32 - use a static IP address of

Set IP Address:

  1. Unlock network configuration options. (**#)
  2. Set the DHCP option to No.
  3. Scroll to the IP Address option, press the Edit softkey, and then enter a new IP Address,
  4. Press the Validate softkey and then press the Save soft key.

Set Network Mask:

  1. Unlock network configuration options. (**#)
  2. Set the DHCP option to No.
  3. Scroll to the Subnet Mask option, press the Edit softkey, and then enter a new subnet mask,
  4. Press the Validate softkey and then press the Save softkey.

Set default router:

  1. Unlock network configuration options. (**#)
  2. Set the DHCP option to No.
  3. Scroll to the appropriate Default Router option, press the Edit softkey, and then enter a new router IP address,
  4. Press the Validate softkey.
  5. Repeat Steps 3 and 4 as needed to assign backup routers.
  6. Press the Save soft key.

Set alternate TFTP server:

  1. Unlock network configuration options. (**#)
  2. Scroll to the Alternate TFTP option and press the Yes softkey if the phone should use an alternative TFTP server.
  3. Press the Save soft key.

Set TFTP server:

  1. If DHCP is enabled, set the Alternate TFTP option to Yes.
  2. Scroll to the TFTP Server 1 option, press the Edit softkey, and then enter a new TFTP server IP address, (assuming this is what your router config is)
  3. Press the Validate softkey, and then press the Save soft key.

The phone should now be manually configured to connect to the TFTP server. On your windows workstation, try to ‘ping’ to confirm that you have network connectivity to the phone.

Now, every time you boot the phone, it will connect to the new TFTP server that you have manually configured.

Get your XML Configuration files sorted:

At a minimum you need to have the following XML files:

  • SEPMACADDRESS.cnf.xml - where MACADDRESS is the actual mac-address of the phone, for example: SEP04FE7F68D70A.cnf.xml (all letters will be in capitals).
  • dialplan.xml


Getting this configuration correct, is likely to take a lot of trial and error. I suggest that you start with this sample configuration provided by Aalex, a couple of caveats:

  • This config file was originally for a Cisco 7975.
  • This config file is specific for a NAT configuration
  • This config file is specific for the 8.5.4 firmware.
  • This config file is specific for MyNetFone VOIP Provider (you should be able to substitute your own VOIP Provider fairly easily)

There are a few things that you need to change to suit for 7945.

  1. Change the default username: <sshUserId>admin</sshUserId> (make it hard)
  2. Change the default password: <sshPassword>cisco</sshPassword> (make it hard)
  3. <loadInformation>SIP75.8-5-4S</loadInformation> needs to be changed to <loadInformation>SIP45.8-5-4S</loadInformation>
  4. If you are using MyNetFone you need to change the following to your actual MyNetFone credentials: MNFNUMBER and MNFPASSWORD.
  5. You can also decide what SIP codec to use: if you have the bandwidth and your voip provider supports it, go with 711, otherwise 729 is fine. Check out this thread for more info on VOIP codecs. <preferredCodec>g729</preferredCodec>
  6. You need to change <natAddress>YOURWANIPADDRESS</natAddress> to the Public IP address of your gateway provided to you by your ISP. If you have a static IP address, this is fairly easy. If your ISP dynamically assigns you an IP address then you will need to use a DDNS service such as zone editdyndns, no-ip, etc, etc, to get this configured correctly. Just about every modem/router available today will have built-in functionality to support DDNS.

While this section looks pretty small, but dont be fooled it’s certainly going to take the most amount of time to get right. Remember to refer back to this thread which provides a very detailed explanation of all the configuration items in the XML file.


Use a simple dial plan.xml as follows:


 <TEMPLATE MATCH=”*#”  Timeout=”0”/>

 <TEMPLATE MATCH=”*”   Timeout=”4”/>


Reboot your phone, and check the logs of TFTPD32 to ensure that you xml configs are being downloaded by the phone.

Step 3: Port forwarding

  • In order for you phone to register with the VOIP provider, you will need to port forward the appropriate SIP traffic directly to the phone (you will see that these ports are listed in the SEP.cnf.xml file)
  • UDP: 5060-5062,16384-16399
  • TCP: 5060-5062
  • Don’t open these ports up to the entire internet, you should limit the firewall rules/ACLS to that specifically of your VOIP provider.
  • For example: MyNetFone is on the (you could probably tighten this up even more if you want to, the entire class allows some flexibility within MyNetFone if they change IP addresses or what not) - so limit the rule to only allow traffic from MyNetFone, rather than the entire internet.

Step 4: Gotcha’s

  • Make sure your VOIP Provider is not using Asterisk if you want to have a NAT implementation.
  • Make sure you have a static IP address from your ISP, or you are using DDNS. It would be a very difficult task having to continually update your XML config to represent your dynamic IP address.