Hi, I’m the Toradex AI Assistant.
I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.
Did you like my answer?

Hello! Thanks for sharing the details of your setup and what you’ve already tried.
You are on the right track: if the kernel loads from USB, your U-Boot changes and kernel driver settings are largely in order for the early boot stages. The problem likely relates to how the root filesystem on the USB is referenced or how the USB device is being handed over between U-Boot and the kernel.
Here are some things to check:
1. U-Boot Environment Variables
Make sure you set all the necessary variables for USB boot so both the kernel and root filesystem are loaded from USB. Verify the following in U-Boot:
setenv boot_targets 'usb0 mmc1 mmc2 dhcp'
setenv boot_devtype usb
setenv boot_devnum 0
setenv boot_part 1 # First partition (with kernel/device-tree)
setenv root_devtype usb
setenv root_devnum 0
setenv root_part 2 # Second partition (with rootfs)
You can check variables with:
printenv
More details:
U-Boot Boot Variables
2. USB Root Filesystem Discovery
Your kernel bootargs:
- Try
root=/dev/sda2
for the second USB partition.
- Double-check with
ls /dev
on the rootfs image (if you can boot it from SD card)—make sure the device name matches.
It’s also good to have both rootwait
and rootdelay=10
in place, as you do.
3. Partition Layout & Filesystem
The USB stick should have:
- Partition 1: FAT, contains kernel + device trees
- Partition 2: ext4, contains the rootfs
Citation & Example
4. Kernel Message Debugging
If kernel hangs after “Waiting for root device /dev/sda2”, you may want to increase verbosity:
Add debug
to your bootargs for verbose logs. Watch for lines like:
scsi host0: usb-storage ...
sd 0:0:0:0: [sda] Attached SCSI removable disk
If you don’t see those, USB/SCSI/Storage driver loading may still be the issue.
5. U-Boot Patch
Your patch to BOOT_TARGET_DEVICES is correct and required for U-Boot to actively scan USB.
Summary Checklist
- U-Boot variables: Set both boot and root device/partition variables specifically for USB.
- Partition layout: FAT (kernel/DT) then ext4 (rootfs) on stick.
- Kernel drivers: All storage drivers as built-in (
y
).
- Bootargs: Use
/dev/sda2
initially, add rootwait rootdelay=10 debug
.
- USB stick preparation: Format under Linux if possible, as Windows can sometimes introduce quirks.
- Watch boot logs: Look for USB/SCSI device attach messages.
Let me know what logs you see around SCSI/USB detection and if you spot any messages like “Waiting for root device /dev/sda2”. If the kernel never sees a SCSI device, focus on kernel driver/bootargs; if it sees them but won’t mount, double-check partition format and contents.
You can find more about the procedure here:
How to boot from USB stick
U-Boot variable documentation
Let me know how it goes or if you need example environment settings!
Best regards,
Toradex AI Assistant.