Home   Evan Doorbell Tapes   Projects   Docs   Mirror

upgrading bcm50 firmware

A big thanks to techfury90 for sleuthing out this process!

NOTE: This procedure is to be used in conjunction with re-imaging the BCM50 with the latest Release 6 software. If you upgrade the firmware on a functioning BCM50, it will no longer boot until it's running the R6 software package. This is because the boot image on /dev/sda that the updated firmware is expecting is different than what exists on disk.

First, you will need to determine the current firmware version. Log in as nnsupport over SSH with the POTD then elevate to root via "su -". Then run "fw_printenv | grep u-boot". The version reported should match one of the following (if not, please let me know!):

R1: CSC U-Boot 2.04.01 (Jul 12 2005 - 18:25:35)
R2: CSC U-Boot 2.05.1 (Dec 12 2006 - 15:06:54)
R3: CSC U-Boot 2.06.4 (Aug 7 2007 - 16:15:37)
R5/R6: CSC U-Boot 2.06.6 (Aug 17 2009 - 17:07:17)

Procedure for R1/R2 Firmware:

[root@bcmm50r2 root]# cd /nn/patches/scripts/install
[root@bcmm50r2 install]# mkdir /nn/upgrade
[root@bcmm50r2 install]# touch /nn/upgrade/Upgrade.M50R2-to-M50R6
[root@bcmm50r2 install]# ./bsp-u-boot.sh
1433120 CSC U-Boot 2.06.6 (Aug 17 2009 - 17:07:17)
Erased 640 Kibyte @ 0 -- 100% complete.
1433120 CSC U-Boot 2.06.6 (Aug 17 2009 - 17:07:17)
Tue Mar 23 19:43:24 EDT 2021 uboot flash image updated
[root@bcmm50r2 install]# ./bsp-u-boot-env.sh
Unlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd2...Done
Locking ...DoneUnlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd3...Done
Locking ...DoneUnlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd2...Done
Locking ...DoneUnlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd3...Done
Locking ...DoneUnlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd2...Done
Locking ...DoneUnlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd3...Done
Locking ...DoneUnlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd2...Done
Locking ...DoneUnlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd3...Done
Locking ...Done
[root@bcmm50r2 install]# ./bsp-fpga-fw.sh
Erased 576 Kibyte @ 0 -- 100% complete.
Tue Mar 23 19:43:57 EDT 2021 Checking image in flash
*** Warning: "/tmp/spoo" has corrupted data!
size of image_header_t:00000040
Image Name: FPGA csc_r1 rel 25
Created: Tue Aug 7 16:15:29 2007
Image Type: PowerPC Fpga Firmware (gzip compressed)
Data Size: 48956 bf3c Bytes = 47.81 kB = 0.05 MB
Crc32 Hdrcalc:0xC5B1858F
Crc32 Imgage: 0xCC6D45BE
Load Address: 0x00010000
Entry Point: 0x00000000
*** Warning: "/tmp/spoo" has corrupted data!
Image Name: FPGA csc_r1 rel 25
Crc32 Imgage: 0xCC6D45BE
Tue Mar 23 19:43:57 EDT 2021 fpga flash image updated
[root@bcmm50r2 install]# rm -rf /nn/upgrade

Procedure for R3 Firmware:

The main difference here is you skip the FPGA upgrade.

[root@bcmm50r2 root]# cd /nn/patches/scripts/install
[root@bcmm50r2 install]# mkdir /nn/upgrade
[root@bcmm50r2 install]# touch /nn/upgrade/Upgrade.M50R3-to-M50R6
[root@bcmm50r2 install]# ./bsp-u-boot.sh
1433120 CSC U-Boot 2.06.6 (Aug 17 2009 - 17:07:17)
Erased 640 Kibyte @ 0 -- 100% complete.
1433120 CSC U-Boot 2.06.6 (Aug 17 2009 - 17:07:17)
Tue Mar 23 19:43:24 EDT 2021 uboot flash image updated
[root@bcmm50r2 install]# ./bsp-u-boot-env.sh
Unlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd2...Done
Locking ...DoneUnlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd3...Done
Locking ...DoneUnlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd2...Done
Locking ...DoneUnlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd3...Done
Locking ...DoneUnlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd2...Done
Locking ...DoneUnlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd3...Done
Locking ...DoneUnlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd2...Done
Locking ...DoneUnlocking flash...Done
Erasing flash...Done
Writing environment to /dev/mtd3...Done
Locking ...Done
[root@bcmm50r2 install]# rm -rf /nn/upgrade

Quick Note

There are reports that you may be able to use the R1/R2 procedure with any level firmware, but I haven't tested this out thoroughly enough. If I do, I will update this accordingly. However, if you're unsure which firmware release your BCM50 is running, it's probably safe to follow the R1/R2 procedure.