This tutorial quickly explains how to boot raspberry pi 3 from USB storage such as flash drive or USB Hard disk. As of April 2017 this has officially baked into there main kernel and is fully supported by raspberry pi.

Equipment List

Raspberry Pi 3 ► Amazon | Ebay

USB HDD ► Amazon | Ebay

Software List

Raspbian Pixel ► https://www.raspberrypi.org/downloads/

Etcher  ► https://etcher.io/

Process

Downloading Stuff

First you will need to download Rasbian Pixel, this method does work with other newer OS too such as OSMC.

download pixel

Now we will need a piece of software called etcher to write the image onto our SD card and USB Storage device.

etcher

Prepare the SD-Card and USB Storage

With all the software downloaded, now lets write the downloaded image to both the SD card and USB storage device, if you are unable to detect the USB storage device be sure to check the “unsafe” option in settings of etcher

unsafe etcher

Program USB Boot Mode

Once both the images have been written, we will need to insert a line to our config.txt file located at

/boot/config.txt

now add

program_usb_boot_mode=1

to the end of the file on both sdcard and USB storage

This will set a bit in the OTP (One Time Programmable) memory in the Raspberry Pi SoC that will enable booting from a USB mass storage device. Once this bit has been set, the SD card is no longer required. Note that any change you make to the OTP is permanent and cannot be undone.

But you will still be able to boot from SD card if it is inserted and does not change the operations of your Pi

Now that the hard part is completed we just need to boot it from sd-card first. then reboot once it’s completely booted to ensure it has written the boot mode to the Pi. After the reboot you can now remove the SD-card and plug in the USB Storage device.

Be sure to remove the boot mode code from your sdcard when these steps are completed or you might flash another Pi by accident.

Troubleshooting

If your Pi is not booting from the usb storage device, you can check to see if the boot mode has been written by running this command on the Pi booted from SD

$ vcgencmd otp_dump | grep 17:
17:3020000a

ensure the output 0x302000a is shown. If not then the boot mode has not been written successfully.

Is it also possible that your USB Storage device is not supported, try on another storage device if possible.