[Guide] Prepare Raspberry Pi for boot from USB/NVMe

The Raspberry Pi 4B has known issues with certain USB storage controllers, particularly when it comes to rebooting. These issues can cause devices to fail detection after a reboot or lead to boot failures when using USB storage as the boot device. Here are the main culprits:

1. JMicron JMS578 & JMS583 Controllers

  • Symptoms: USB drive fails to be detected after a warm reboot (sudo reboot), but works after a cold boot (power cycle).
  • Cause: These controllers have issues handling UAS (USB Attached SCSI) mode on Raspberry Pi 4.
  • Workarounds:
    • Disable UAS by adding usb-storage.quirks=152d:0578:u (for JMS578) or 152d:0583:u (for JMS583) to /boot/cmdline.txt.
    • Use a different firmware: Some JMS583 adapters allow firmware updates that can improve compatibility.
    • Switch to a different USB-to-SATA adapter.

2. ASMedia ASM1153 & ASM235CM Controllers

  • Symptoms: Similar to JMicron, may disappear after a reboot, requiring a power cycle.
  • Cause: UAS issues and power reset problems.
  • Workarounds:
    • Disable UAS with usb-storage.quirks=174c:1153:u (for ASM1153) or 174c:235c:u (for ASM235CM).
    • Try different firmware updates if available.

3. Realtek RTL9210 & RTL9210B

  • Symptoms: Failure to reconnect after a soft reboot, and sometimes boot failure when used as a boot drive.
  • Cause: Firmware bugs in early versions.
  • Workaround:
    • Update firmware to the latest version (use Realtek’s update tools).
    • Disable UAS with usb-storage.quirks=0bda:9210:u if issues persist.

4. VIA VL715 & VL716

  • Symptoms: May fail after reboot, especially when using NVMe enclosures.
  • Cause: Power management issues with Raspberry Pi 4’s USB controller.
  • Workaround: Use powered hubs or update firmware.

5. Generic USB-to-SATA Bridge Chips (Unknown Vendor)

  • Symptoms: Some cheap adapters don’t work reliably and may disappear on reboot.
  • Cause: Poor firmware or bad power handling.
  • Workaround: Use a powered USB hub or a better-known controller.

General Recommendations

  1. Use Known Good Adapters:

    • StarTech USB3S2SAT3CB (works well with RPi 4).
    • Sabrent EC-SS31 (compatible without quirks).
    • UGREEN SATA to USB 3.0 adapter (some models are OK, but check the chipset).
  2. Disable UAS for Problematic Controllers:

    • Find the device ID with:
      lsusb
      
    • Add the quirk to /boot/cmdline.txt:
      usb-storage.quirks=152d:0578:u
      
  3. Use a Powered USB Hub:
    If power issues are suspected, a USB hub with external power can help stabilize certain drives.

  4. Update Raspberry Pi Firmware:

    • Ensure you’re running the latest firmware by updating EEPROM (as explained in the first section of this thread):
      sudo rpi-eeprom-update -a
      

Would you like help checking your specific USB controller? Let me know what lsusb shows!


DISCLAIMER:

OTA upgrade will overwrite /boot/cmdline.txt and your changes will be lost.


Kind Regards,