I was reformating some USB drives to set up a PI cluster and one of the Raspberries wouldn’t boot. I took a look at it and realized that it was a Raspberry PI 3! RPis didn’t always boot from USB! We used to have to format SD cards and boot from them. But SD cards don’t like a lot of writes and will eventually fail. So, the nice people at Raspberry figured out how to get Pis to boot from USB and use them for their storage. If you want to upgrade your old Pis to boot from USB like the rest of your fleet, no worries, it’s easy.
First, you’ll need to install Raspberry Pi OS on an SD card and a USB drive. Then, you’ll make a (permanent) change to the OTP and reboot.
One Time Programmable Memory
Once you get the Pi to boot, enable the Raspberry Pi’s USB boot mode. This is done by setting a bit in the Raspberry Pi’s OTP (One Time Programmable) memory, allowing the device to be booted from a USB mass storage device. After that, we won’t need the SD card anymore. Open Terminal and run the following command:
echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
This adds the config option “program_usb_boot_mode=1” to the end of /boot/config.txt. Now, reboot the Pi. After the reboot, check that boot mode has been enabled with this command:
vcgencmd otp_dump | grep 17
The output should contain the value 3020000a.
pi@raspberrypi:~ $ vcgencmd otp_dump | grep 17 17:3020000a pi@raspberrypi:~ $