Raspberry Pi4 NVMe Boot Support

I have been trying to set up my Pi4 to boot from a 2TB NVMe drive and found that it doesn’t work with either the Pi4 OS for 1.7.4 or the new 2.0 beta. It boots fine from an SD card, but then there isn’t proper support to use external volumes for app data.

Chatting with the Umbrel support bot and looking at some of the other topics here, it appears that Umbrel are no longer supporting Pi4 properly. Has anyone else had this issue and do you know if Umbrel have plans to fix it?

hey, might be worth checking the Pi’s bootloader before giving up on it. Older Pi 4s shipped with firmware that didn’t support USB boot, so booting fine from an SD card but not the SSD could fit that. Flashing a newer Umbrel image doesn’t necessarily update that firmware.

Assuming your NVMe is connected through a USB enclosure, the easiest thing to try is Raspberry Pi Imager on another computer. Select Raspberry Pi 4, then under the OS options choose Misc utility images → Bootloader (Pi 4 family) → USB Boot. Write that to a spare microSD card, not your existing Umbrel card, since it’ll erase whichever card you select.

With the Pi powered off, disconnect the SSD and insert that spare card, then power it on. Wait for the green activity LED to flash steadily, or a green screen if you have a monitor connected. That confirms the bootloader flash completed. Then power off, remove the card, reconnect the SSD with your Umbrel image on it and try booting again.

If it still won’t boot, which USB enclosure/adapter and power supply are you using? Also, does it show anything on a connected monitor? That would help narrow down whether it’s failing before Umbrel even starts.

Raspberry Pi’s USB boot docs mention the older Pi 4 firmware issue.

Thanks so much for responding to me!

I did try the firmware update with USB Bootloader previously and unfortunately had no success (the NVMe was the only drive I had connected under that scenario, but I never tried it via a self-powered USB-hub). However the story gets way more interesting from here!!

Enclosure: Orico AM2C3-G2 (draws power from the Pi4)
NVMe drive: Fanxiang S880 2TB

Doing some hacking at this problem with Claude, I decided to proceed with booting from the SD card, and then bind-mounting both the Orico NVMe drive plus another old 1TB SDD to specific app data folders. The frustrating part of this approach is that I had no visibility of the drives within the UmbrelOS files app, but at least I could keep the data on my external drives.

This seemed like it was working, however during my first sync of files to the HDD both drives failed with ext4_read_inode_bitmap errors and I had to powercycle the Pi4. When restarting, all of my Umbrel account information was gone (along with the negligible amount of data I tried to sync when it all crashed) and I had to create a new account. Claude’s hypothesis was that the stock power supply was unable to support the two drives plus keyboard I had plugged into the Pi4 USB ports, so when starting up again I connected the HDD drive via a self-powered USB hub and the Orico NVMe drive connecting directly into the Pi4.

Here’s the crazy part - on reboot, Umbrel is now reading from my NVMe drive as the native data storage! So the power failure and crash may have accidentally resolved my issue - apparently UmbrelOS may not have trusted the SD cards state after the crash, and following its own bootstrap logic (which was an old feature for Pi setups with limited SD card space) it claimed the NVMe drive as a fresh data disk.

This has been observed by another user as described in GitHub issue #2147, and there is a community fork designed to address it here: GitHub - LuckyCoders/umbrel: An elegant home server OS. Run OpenClaw, store your files and photos, run a Bitcoin node, and do more with over 300 apps in the Umbrel App Store. · GitHub

ah, thanks for the detail! Since you’d already updated the bootloader, that probably wasn’t the missing piece here.

Power could explain the drives dropping out under load, so the powered hub is a sensible change. But I’d be careful about treating the crash as a fix. The filesystem errors and having to create your account again are worth checking before putting anything important on there.

That issue you linked is concerning. The older Pi storage setup can switch Umbrel’s data directory onto an external drive, which could explain why it looked like a fresh install. It doesn’t necessarily mean the SD card was wiped, or that Umbrel decided it couldn’t trust it.

Were you running 1.7.4 or the 2.0 beta when this happened, and which are you on now? Could you share the umbrelOS logs from Settings → Troubleshoot → umbrelOS → Download, along with the bind-mount commands or instructions you used? That should help distinguish a storage switch from actual data loss. I’d hold off on more mount changes or another big sync until that’s clearer, and keep a separate copy of anything you want to preserve.