USB host boot is available on Raspberry Pi 3B, 3B+, 3A+, and 2B v1.2 only. Raspberry Pi 3A+ only supports mass storage boot, not network boot.
The USB host boot mode follows this sequence:
- Enable the USB port and wait for D+ line to be pulled high indicating a USB 2.0 device (we only support USB2.0)
- If the device is a hub:
- Enable power to all downstream ports of the hub
- For each port, loop for a maximum of two seconds (or five seconds if
program_usb_boot_timeout=1
has been set)- Release from reset and wait for D+ to be driven high to indicate that a device is connected
- If a device is detected:
- Send "Get Device Descriptor"
- If VID == SMSC && PID == 9500
- Add device to Ethernet device list
- If VID == SMSC && PID == 9500
- If class interface == mass storage class
- Add device to mass storage device list
- Send "Get Device Descriptor"
- Else
- Enumerate single device
- Go through mass storage device list
- Go through Ethernet device list