Unable to Boot Pi4 after eeprom firmware upgrade

I’ve been running HA on a Pi4 2Gb for a few weeks using an SD card, and wanted to migrate to an SSD for reliability. My plan was to just do a fresh install on the SSD and then restore a backup. That didn’t go as planned so I wanted to go back to booting from the SD card until I sort out the SSD properly.

During the process of setting up the SSD I’ve applied the latest EEPROM update to the Pi4. This seems to have resulted in the Pi4 refusing to boot from my original SD card. I just get a rainbow screen after the initial Pi4 white/red boot screen.

I haven’t found a way of downgrading the EEPROM back to a previous version otherwise I would just do that. I can find the firmware binaries in github but they don’t appear to have .sig files with them which I’m guessing will probably prevent me from creating a custom eeprom flashing partition with earlier files on it. I haven’t tried doing this as I don’t want to brick the Pi4 (although I suspect it just won’t work rather than bricking it).

I tried creating a new SD card with PiOS on it and booting from that and it’s fine. On looking at the partitions on the PiOS installation it has the traditional boot files on it (bootcode.bin, start4x.elf etc). Whereas the HA SD card does not have these; it has a 25mb partition with a file called “Image” in it, then a 268Mb partition with /boot etc in it (which I can’t access and I presume is encrypted). Plus the hassos-* partitions.

I’m not at all familiar with the “Image” thing and couldn’t find anything about it in searches. But this seems to be the key difference between a bootable SD card and a non-bootable one. I tried creating a new SD card with a new HA installation (via Pi imager) and it still creates the same “Image” file and partition set, so I presume this is correct and that for some reason the new firmware doesn’t like that set of files to boot from. I don’t even know what the “Image” thing is, if anyone can fill the knowledge gap for me.

With the SSD, I can see it also has that Image file on it and the same set of partitions, and it does actually boot, although I can’t use it due to undervoltage issues causing all sorts of knock on errors. I probably just need a proper power supply in the long term but I want my HA back up and running from the SD card in the meantime and currently I can’t boot it.

So the firmware does seem to recognise the device as bootable with that partition arrangement when it’s on USB3, but not when it’s on an SD card.

Does anyone have any ideas how I can recover from here? I want to get back to being able to boot the SD card for now.
Summary and order of events:

  • Flashed an SSD with new HA instance.
  • Pi4 working fine at this point, I shut down HA and took out the card
  • Plugged in the SSD and it seemed like it wasn’t booting. I followed the EEPROM firmware upgrade instructions posted elsewhere on here and did the upgrade.
  • After updating EEPROM it seemed like it still didn’t want to boot the SSD so I went back to the original SD card
  • SD card would not boot. I got 7 flashes of the led which means kernel not found.
  • Attached a screen, saw that was on the rainbow screen so definitely not booting.
  • Tried the SSD again; discovered it would actually kinda boot but lots of errors due to undervoltage.
  • Tried SD again, does not boot
  • Put PiOS on a different SD via Pi Imager (same brand and size). It boots fine.
  • Put a new instance of HA on the same SD via Pi Imager, It does not boot (7 green flashes as before).

So I think I can conclude my SD card is fine, and it’s the latest EEPROM firmware that doesn’t like what’s on the card.
I sort of have the feeling if I could put the eeprom firmware back to an earlier version it will probably boot, but I don’t know for sure.

SD Card is a 32Gb Sandisk Ultra. Pi4 2Gb.

Can anyone provide any words of wisdom to help me get it back up and running?

I suspect there could be an incompatibility between the latest RPi4 firmware and HAOS, so I’d try reverting back to the “default” RPi4 firmware.

If you have one of the two latest RPi4 firmwares, you can install OS directly from the boot screen, and then try changing back:

You’ve clearly done a few of these points already, but for completeness, I’d try…

  • Insert a blank or otherwise spare uSD card
  • Turn on the RPi4, pressing SPACE
  • The RPi should show a white/“raspberry pink” screen with options to install an OS from the network
  • Install RPi OS from the network, reboot
  • Open a terminal
  • sudo rpi-eeprom-update shows the current version - POST IT HERE!
  • sudo raspi-config - the important bit!
    Use the menu to select…
    * 6 Advanced Options
    * A5 Bootloader Version
    * Change the boot loader to the default
  • Reboot with the RPiOS uSD as a test.
  • Reboot with the original HAOS uSD card - fixed?
  • Consider reporting an Issue in GitHub.

If this helps, :heart: this post!

2 Likes

I modified this procedure slightly by just using Pi Imager to get PiOS Lite installed (I’d mentioned that still boots fine).

Results:

BOOTLOADER: up to date
   CURRENT: Tue 11 Feb 17:00:13 UTC 2025 (1739293213)
    LATEST: Mon 15 Apr 13:12:14 UTC 2024 (1713186734)
   RELEASE: default (/lib/firmware/raspberrypi/bootloader-2711/default)
            Use raspi-config to change the release.

  VL805_FW: Using bootloader EEPROM
     VL805: up to date
   CURRENT: 000138c0
    LATEST: 000138c0

That’s as expected given I updated it to latest i.e. it matches what the latest is in the RPi github repo. Incidentally I had tried both SD first and USB first and they both behave the same.

For the benefit of others reading - that version definitely does not work.

After using raspi-config to restore the bootloader to the factory default one, I am back up and running with my original HA SD card. So many thanks for that - I had no idea that raspi-config had that option present. It certainly explains why there are no other choices in RPi Imager.

So it looks like it’s an incompatibility between the latest firmware and the HA image. This is not ideal, especially considering the image itself is provided via the RPi Imager app.

Can anyone fill me in on the boot files thing (the partition with one file called “Image”)? I’m more used to seeing the standard set of boot files in the circa 250mb partition. I did Google a bit but unfortunately the word “Image” is rather overloaded when it comes to boot partitions so I could not find anything of use.

1 Like

btw I think “latest” is out of date in the output of rpi-eeprom-update because I didn’t update the repos first.

Hi,

It’s bad that the latest RPi FW is a problem, but good that you managed to revert.

I just had a look in Github and didn’t find any similar issues referencing “raspberry firmware” so raising one might be a nice idea:

There are several options “hidden in plain sight” on RPi tools behind “here be dragons” warnings which I ignore on pre-production kit. After seeing a Explaining Computers / Jeff G YT video with the new feature, I also installed it immediately and am impressed that net install is even possible.

HAOS is a bit different from the usual *nix although it is based on Buildroot and (ISTR) Alpine, it has a host OS with two images so a failed update can always revert and recover.

The dev docs for HAOS have more detail:

HA is basically a set of containers running on HAOS (e.g. integrations are in the main container, Add-Ons are separated).

TTFN,

James

I’ve raised an issue in github. Not sure who should be fixing it really; the new firmware is what broke it.

1 Like

I had exactly the same problem. The default option didn’t work for me for some reason so I rolled back to a stable release from 2022 and now it’s working again. Many thanks.