Upgrading SPA504G pre-7.5.2.b firmware

I’ve had some trouble upgrading my Cisco SPA504G phone. I first tried to update to the latest and greatest (7.6.1) and that failed. It would download, flash red, and then return to normal. It stayed at 7.5.2. After browsing I found out that I had to upgrade to 7.5.2b first for firmwares before that. Tried that, but that didn’t take either. I tried several different versions, like downgrades but none of it worked.

After using this suggestion about starting a small syslog server on a Windows box I found the following log entries:

++++ retry query scaps
+++ need tftp addr..
+++ send scaps discovery query
Allocating 4194816 bytes for upgrade buffer.
Allocating 4162048 bytes for upgrade buffer.
Allocating 4129280 bytes for upgrade buffer.
Allocating 4096512 bytes for upgrade buffer.
Allocating 4063744 bytes for upgrade buffer.
Allocating 4030976 bytes for upgrade buffer.
Allocating 3998208 bytes for upgrade buffer.
Allocating 3965440 bytes for upgrade buffer.
Allocating 3932672 bytes for upgrade buffer.
Allocating 3899904 bytes for upgrade buffer.
Allocating 3867136 bytes for upgrade buffer.
Allocating 3834368 bytes for upgrade buffer.
SPA504G 84:80:2d:41:48:1a -- Requesting upgrade http://159.253.7.153:80/downloads/spa50x-30x-7-5-2b.bi
SPA504G 84:80:2d:41:48:1a -- Upgrade failed: file not found

First, why the many allocations? The first one looked correct, but the later ones were too small I realised from the .bin file size. I had tried several upgrades by now and each time the tftp download failed prematurely. Then it dawned on my that I had to first reboot the device, then run the 7.5.2b before anything else. And presto!

+++ send scaps discovery query
++++ retry query scaps
+++ need tftp addr..
+++ send scaps discovery query
Allocating 4194816 bytes for upgrade buffer.
SPA504G 84:80:2d:41:48:1a -- Requesting upgrade http://159.253.7.153:80/downloads/spa50x-30x-7-5-2b.bin
fprv_upgrade_from_buffer_priv(manual:0, buf: SkOsMo5 fIrMwArE, file_len: 4194816)
** New magic: SkOsMo5 fIrMwArE. Old magic: SkOsMo5 fIrMwArE
Busy Upgrading...
SPA504G 84:80:2d:41:48:1a -- Successful upgrade http://159.253.7.153:80/downloads/spa50x-30x-7-5-2b.bin -- new image 7.5.2b
request reboot type=1 reason=Upgrade(8)
System started: ip@192.168.178.28, reboot reason:C8

The phone is this moment blinking its lights during an upgrade to 7.6.1.

One thought on “Upgrading SPA504G pre-7.5.2.b firmware”

  1. Thanks for this valuable hints! I have been trying to upgrade the firmware of my Cisco SPA502G which was on version 7.5.2 and did not notice that there is a difference to 7.5.2b. The TFTP transfer of the file “spa50x-30x-7-6-2e.bin” kept failing always on block 8194 with the Cisco SPA502G IP Phone sending an ICMP Destination unreachable (Port unreachable). Since the file-size is 4399584 there should be 8593 blocks in total to be transferred. After enabling syslog i could see in Wireshark the syslog message “Message: fprv_upgrade_from_buffer_priv(manual:0, buf: SkOsMo5 fIrMwArE, file_len: 4096512)\n” that was the decisive hint to your description above. Solution was to reboot the IP-phone, perform the firmware upgrade to 7.5.2b first followed by the target version 7.6.2, worked fine

Leave a Reply

Your email address will not be published. Required fields are marked *