How I Resolved the “mmc1: Controller Never Released Inhibit Bit(s)” Error on My Raspberry Pi 4 with an Argon One M.2 NVMe SSD

If you’ve been experimenting with running your operating system from an M.2 NVMe drive on your Raspberry Pi 4, you may have encountered the infamous mmc1: Controller never released inhibit bit(s) error. It can be both frustrating and confusing—particularly if your Pi was happily running from the SSD one day and suddenly decided to fail the next.

I recently ran into this error after installing an Argon One M.2 case with an NVMe SSD in my Raspberry Pi 4. Below is a walkthrough of my journey, the error symptoms, and the steps I took to get my Pi back up and running.


What Happened?

  • I was successfully booting my Raspberry Pi 4 from the SSD for some time.
  • One day, it refused to boot, displaying an error message:
    mmc1: Controller never released inhibit bit(s)
  • This left me scratching my head. I wasn’t sure what had triggered the error, and nothing I did seemed to fix it. I was not able to get into recovery mode.

Potential Causes

While I’m not entirely certain why my Pi decided to stop booting, here are a few possible culprits:

  1. Firmware or Bootloader Updates: If the firmware or the Pi’s bootloader has changed or updated, it might introduce compatibility issues with SSD booting.
  2. Power Issues: An insufficient power supply or poor connection can sometimes cause read/write errors.
  3. Corrupted Boot Files: Unexpected power loss or filesystem corruption could stop the Pi from properly recognizing the SSD.

My Recovery Journey

Because the Pi refused to boot from the SSD no matter what I tried, I ended up taking a more complicated route to recover. Here are the steps that worked for me:

  1. Power off the Raspberry Pi.
    • Important for preventing further data corruption.
  2. Unplug the SSD from the Argon One M.2 interface.
    • With the SSD physically disconnected, the Raspberry Pi is forced to look for other boot options (namely, the SD card).
  3. Boot with a Recovery Image (On SD Card).
    • I inserted a microSD card with a known-good Raspberry Pi OS image or the official Raspberry Pi recovery image.
    • This allowed me to bypass the failing SSD and access the Pi’s firmware/bootloader settings.
  4. Update & Change Firmware to Boot to SD card first
    • Using the Raspberry Pi OS on my SD card, I ran
    • $> sudo raspi-config
    • Changed the Pi’s boot order was set to look for USB devices first. This step confirms that once the SSD is plugged in again, the Pi will attempt to boot from it.
  5. Power off the Raspberry Pi again and reinstall the SSD.
  6. Power on and Image the OS Directly onto the SSD.
    • Using the SD card OS environment, I used the Raspberry Pi Imager (or the dd command / balenaEtcher method) to flash the operating system directly onto the SSD from within the Pi itself.
  7. Power off, Remove the SD Card, and Power on.
    • After a successful OS flash, I shut the Pi down, pulled out the SD card, and let it boot solely from the SSD.
    • The Pi should now correctly recognize and boot from the NVMe SSD.
  8. Change back to boot SSD first, reversing step 4 above.

Why These Steps?

  1. Forcing a Fresh Boot: By removing the SSD, you sidestep whatever is causing the bootloader confusion or corruption.
  2. Correcting the Boot Sequence: Ensuring the firmware is set to SD card first is critical when you want the Pi to avoid the SSD as the primary boot device.
  3. Fresh OS Installation: If your SSD’s boot partition or filesystem is corrupted, re-imaging provides the most foolproof fix.
  4. Ensuring Power Stability: Although not explicitly mentioned in every step, always ensure that you have a stable power supply (at least 3A for a Raspberry Pi 4). Any power hiccups can cause data corruption.

Lessons Learned

  1. Backup Regularly
    • Whenever you’re tinkering with new hardware on your Pi, keep your important files backed up or use version control for your critical data.
  2. Keep a Spare SD Card
    • Having a rescue SD card with a clean OS image is invaluable when you need to troubleshoot issues like this quickly.
  3. Check Your Bootloader
    • Periodically ensure your bootloader firmware is up to date. Sometimes old firmware versions can have bugs that are patched in later releases.
  4. Power and Connections Matter
    • A quality USB-C power adapter and solid USB connections help reduce weird errors.

Conclusion

Dealing with the “mmc1: Controller never released inhibit bit(s)” error on a Raspberry Pi 4 can feel daunting, especially when your device was previously booting off an SSD without issues. In my case, going through a rather roundabout process of unplugging the SSD, booting from an SD card, fixing the firmware, and then re-imaging the drive finally solved the problem.

If you’re wrestling with a similar issue, I hope these steps and insights help you recover your system as quickly (and as painlessly) as possible. While it may feel frustrating at first, a little troubleshooting and a clean OS flash often make all the difference.

Happy hacking—and here’s to a stable and speedy SSD-powered Raspberry Pi experience!


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *