How do you revert the firmware on a non-booting Raspberry Pi 3?

The camera not was working under Ubuntu 16, despite it running the most recent firmware. So I took some advice and tried installing older firmware, but now it won't boot and all I get is the Rainbow Screen Of Death.

However, I previously installed Raspbian on a different SD card, and if I swap that in, it boots fine.

Is there anything I can do with the Ubuntu SD card to fix it, so it boots? I mounted it on my laptop, and saw there was a /boot.bak folder. I tried copying that over to /boot, but it still won't boot. Is there anything else I can do or is that SD card hosed?


I have used rpi-update from a Linux laptop in the past to update a Pi's SD card.

Look at the ROOT_PATH and BOOT_PATH advanced options of rpi-update.



sudo ROOT_PATH=/media/root BOOT_PATH=/media/boot rpi-update

Allows you to perform an "offline" update, ie update firmware on an SD card you are not currently booted from. Useful for installing firmware/kernel to a non-RPI customised image. Be careful, you must specify both options or neither. Specifying only one will not work.

To revert give the github commit hash.

To upgrade/downgrade to a specific firmware revision, specify its Git hash (from the https://github.com/Hexxeh/rpi-firmware repository) as follows:

sudo rpi-update fab7796df0cf29f9563b507a59ce5b17d93e0390


All you have to do is copying the contents of the first partition of the working card onto the first partition of the broken card.

To be specific, copying bcm2710-rpi-3-b.dtb, bootcode.bin, fixup.dat, start.elf, kernel7.img and config.txt is sufficient to boot. You may have to fix up the dts overlays and kernel command line after the system has booted, however.

  • 1
    I'd beware of ending up with a kernel for which you have no modules installed doing this. That is easy enough to check though -- make sure you have the same set of directories in /lib/modules on both cards. – goldilocks Oct 11 '16 at 13:01
  • Yes, but at least the system boots even when the modules aren't matching. There isn't anything vital for booting in the modules on the root partition. Modules needed for booting would have to be in an initrd on the first partition (don't look for it, stock Raspbian does not use an initrd.) – Janka Oct 11 '16 at 16:56
  • Indeed it does boot, but anything that doesn't work because of it maybe hard to diagnose unless you are aware of the possibility. For headless units, I think basic ethernet (sans IPv6) will be okay but not wifi. lsmod should probably always say something if the modules are there (since sound is one of them and loaded by default). Not sure about USB HID stuff (keyboard etc). – goldilocks Oct 11 '16 at 17:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.