Rescuing My Headless Raspberry Pi 4: How to Fix a Bricked UmbrelOS Update (1.5 to 1.7.3)
There are few things more anxiety-inducing in the homelab world than clicking "Update" on a headless server, waiting for it to reboot, and… nothing.
That’s exactly what happened to me recently. I run a headless Raspberry Pi 4 with an external SSD, powered by UmbrelOS. I decided to push the update from version 1.5 to 1.7.3. I hit update, walked away, and when I came back, the device had completely vanished from my network. SSH wouldn't connect, my router couldn't see it, and my dashboard was totally offline.
My first thought was that my data might be toast, or that my SSD had somehow corrupted. With no network access, I had to do the walk of shame: digging out a spare monitor and keyboard to plug directly into the Pi.
The Crime Scene
When the monitor flickered to life, I was greeted by a wall of boot text with some very angry red [FAILED] messages.
The immediate culprit jumping off the screen was that NetworkManager.service was repeatedly failing to start, which explained why I couldn't SSH into the machine. But NetworkManager wasn't acting alone—it was failing because its dependency, polkit.service (Authorization Manager), was dead on arrival.
Once I got to the command line prompt, I ran a quick status check on Polkit: sudo systemctl status polkit.service
The output gave me the exact smoking gun I needed: Process: 360 ExecStart=/usr/lib/polkit-1/polkitd --no-debug --log-level=notice (code=killed, signal=ILL)
The Diagnosis: What is "signal=ILL"?
That signal=ILL error stands for "Illegal Instruction."
In short, my Raspberry Pi 4’s processor was trying to run the updated Polkit software, but it couldn't understand the machine code. This usually happens when an update mistakenly pulls a package optimized for a newer or different CPU architecture (like the Raspberry Pi 5). My Pi 4 looked at the code, didn't recognize the instructions, threw its hands up, and instantly killed the process to prevent hardware damage.
Because Polkit controls security and networking, it took my network connection down with it.
The Savior: Rugix and A/B Partitioning
In the old days of Raspberry Pi tinkering, a corrupted core system update usually meant one thing: formatting the drive and starting completely from scratch.
Luckily, newer versions of UmbrelOS (1.0+) use an underlying engine called Rugix. Rugix makes the operating system immutable and handles updates using something called A/B partitioning.
When I clicked update, Umbrel didn't overwrite my current operating system. Instead, it downloaded and installed the new 1.7.3 update onto a hidden "spare" partition on my SSD. When it was done, it just told the Pi to boot from that new partition instead. When the new partition failed because of the CPU architecture bug, my old, perfectly working OS was still sitting exactly where I left it.
The Fix
Because the old partition was completely untouched, rescuing the system just required a single command to tell the system to flip the switch back.
Right from the command line, I typed: sudo rugix-ctrl system reboot --spare
The Raspberry Pi immediately rebooted. It took an extra minute or two to remount the data drives, but sure enough, it booted straight back into my old, working UmbrelOS 1.5 setup. All my apps, my node data, and my settings were perfectly intact.
The Takeaway
If you are running a Raspberry Pi 4 and run into a bricked system after updating to 1.7.3, do not panic and do not wipe your drive. Hook up a keyboard and try the Rugix spare reboot command.
And more importantly: once you rollback and get your dashboard back, do not immediately try to update again! The architecture bug is still there in the update servers. I’m keeping my setup exactly as it is until the Umbrel team pushes a patch specifically addressing the RPi4 hardware mismatch.
Until then, I'm just incredibly thankful for A/B partitioning.

















