Cisco phones: To Brick And Back Again

Over the last week or so I’ve had some fun with a couple of Cisco IP phones.  I can say fun because it actually was this time: not only did I manage to recover a 7960 from a bad firmware flash, but I unbricked my 7970!

Via voip-info.org I found that a later release of the Cisco SIP firmware is in the wild, apparently with Cisco’s blessing.  I have a phone that I had originally set up in the bedroom, but it hasn’t been plugged in for a while, so I decided to drop the new firmware on it.

Pulled the files, put them on the server, changed the config files to point phone to the new version, then powered up the phone.  The loader upgraded, but then would not get an IP address from DHCP.  Argh.  Because it was in the loader (and not in full firmware) I had no way to manually set IP.  I traced the network, and it looked like the phone was simply ignoring the DHCPOFFER.

I straight away put the TFTP config back to the previous firmware version — as it seemed like the new firmware was bad, I didn’t want to risk the other phones in the house pulling the new version.

Of course I thought that there might have been a network problem, so I took advantage of the port-mirroring capability in my Linksys switch…  As far as it could tell, the DHCP response was definitely making it out to the phone.

I spent way too much time looking at DHCP options, the config of the DHCP server, and my switch setup (I tried VLAN tweaks and duplex settings in the switch).  A phone reset (holding down # while you power the phone up) didn’t help either.

I eventually found a reference to a way to do a full factory reset of the phone — after holding down # at power-up, press “123456789*0#”.  Knowing that this is what bricked my 7970, I was quite nervous about doing it.  But, since the thing ws effectively bricked already, I gave it a run.  The phone asked if I wanted to keep config, and I told it not to.  It then did a reset, the Universal Loader started, and successfully got a DHCP lease.  Because I had put the config on the TFTP server back to the previous firmware level, it reloaded the old level and before long I was back where I started.

Being a glutton for punishment, but more importantly because I knew how I could get out of the problem if it happened again, I switched the files on the TFTP server back to the new version and tried again.  This time it went off perfectly, and the new code went up without a hassle.  I went around and reset the other 7960s in the house, and they too went fine.

The only reason I can come up with for why the problem happened is that my DHCP server has changed since the last time that phone was on the network.  It’s possible that the loader kept some record of the previous lease; even though it was getting a proper DHCPOFFER from DHCP, the fact that it was a different IP or a different DHCP server meant that it threw away the offer.  Maybe.

Spurred on by my success in rescuing that 7960 from brickness, I decided to have yet another go at making the 7970 work.  Some time ago (before there was SIP firmware for the 7970) I bought it and never really got it working with Asterisk’s SCCP support…  Then when the SIP firmware came out I managed to obtain it, but in the process of trying to get it loaded I did a factory reset, which on the 7970 actually deletes the phone’s existing firmware load.  The SIP firmware would not load, because of a TFTP error during the download.  I’d removed the only functional firmware from the thing with the factory reset, so it was totally dead.  An ex-phone.

In the earlier days of the 7960, there was an issue that some older firmwares could not be upgraded directly to newer firmwares.  This issue affects the 7970 as well, and seemed to be the problem I was having with mine in getting the SIP firmware on.  The solution is to progressively load firmware versions to step the phone up to the latest version, but with no valid way to obtain firmwares from Cisco (and a philosophical objection to paying for the privilege, even if they’d sell it to me) I was stuck with a brick.

If only there was a web site around the Internet that had the files available for download…  And if only there was a search engine that could find those files on that server for me…  đꙂ  I found a firmware that the phone would accept, and which let me go up to the SIP firmware.  After some mucking around with the XML config file, I finally — more than two years after I bought it — have my 7970 online to Asterisk!


(one of the line names is obscured, just because)

I’ve even got some of the XML app stuff working on the 7970 (as it’s subtly different from the 7960, of course) but I’ll put that in another post.  I might even post some more screenshots!

Leave a comment