Monday, June 23, 2008

Fixing a Cisco "Brick" phone

I need to write this down before I forget.

I bought a brand new Cisco 7940 phone and I wanted to make it into a SIP phone. Had done this before, so I thought it would have been no problem with doing this one. Murphy law strikes and I ended up with a phone that will not respond to any command other than the factory reset sequence. Even after the factory reset, it stopped with an error message "Protocol Application Invalid".

I hunted all over the web to find the solution. After many long hours, I came to realize that the Cisco phone boot up with a default sequence called Cisco Discovery Protocol or CDP. Wireshark log showed that the phone was sending out this CDP. So I was happy to see that the phone was OK.

I also found a Cisco document 67942 that explained the reason behind why it was getting the error message. Apparently, it cannot find the firmware image in the default tftp location and it is confused. It also needed the option 150 in the DHCP to point to the tftp server IP address.

So, this is what I did to fix the phone.

1. download TFTPUtil from sourceforge.net at http://sourceforge.net/projects/tftputil/
2. download dual server from sourceforge.net at http://sourceforge.net/projects/dhcp-dns-server/
3. get the proper SIP image for the phone.

4. install both the TFTPUtil and the dual server
5. I used a hub to connect the phone to my PC. I suppose a cross over cable will work too.
6. set up the PC with a fixed IP address. I used 192.168.168.5
7. modify the "DualSever.ini" file as follows, (remove the double quotes, of course)
added line 223 "DHCP_Range=192.168.168.100-192.168.168.150"
added line 371 "Next_Server=192.168.168.5"
added line 372 "150=192.168.168.5"
8. place the properly configured SIP image (unzipped) to the default TFTP file location
9. start the TFTPUtil and the DualServer
10. power cycle the Cisco phone.

That's all there is to it.

Once I figured it out, it took less than 10 minutes. So here it is hoping to save myself and all others a few hours in case this problem shows up in the future.