So as of L4T 32.5 and per the Developer Guide it appears that flashing to and booting from USB is now officially supported. This however appears to not work with a basic USB drive so I haven’t even attempted booting from SD card, NVMe, or otherwise. Why is this happening? I would appreciate any guidance or explanation in order to get this working.
Current Setup
- NVIDIA Jetson AGX Xavier Developer Kit - 32GB
- L4T 32.5.1 flashed and running on the Jetson’s built-in 32GB eMMC
- Jetson Operating System: Ubuntu 18.04.5 LTS
- Jetson Kernel: Linux 4.9.201-tegra
- Jetson Architecture: arm64
- Host Operating System: Ubuntu 18.04.5 LTS
- Host Kernel: Linux 5.4.0-42-generic
- Host Architecture: x86-64
- Host JetPack: 4.5.1
- USB Drive: SanDisk Cruzer Glide 64GB (USB 2.0 Interface)
Flashing to a USB Drive - verbatim from Developer Guide
- cd /home/hogank/nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra
- sudo parted /dev/sdb mklabel gpt
- sudo parted /dev/sdb mkpart APP 0GB 32GB
- sudo mkfs.ext4 /dev/sdb1
- Put the Jetson device into recovery mode (middle button ~4 seconds… then combo left button ~4 seconds… then release both)
- Connect USB-C from host to Jetson (port next to power light)
- sudo BOOTDEV=sda1 ./flash.sh --no-flash jetson-agx-xavier-devkit sda1
- sudo mount /dev/sdb1 /mnt
- sudo mkdir tmp_system
- sudo mount bootloader/system.img.raw ./tmp_system
- sudo rsync -axHAWX --numeric-ids --info=progress2 --exclude=/proc ./tmp_system/ /mnt
- sudo umount /mnt
- sudo umount ./tmp_system
- Plug the flash drive into the target device and power it on or reboot it (in this case plugged direct into the Jetson’s eSATA + USB 3.1 Type A combo port between the Ethernet and HDMI)
Results on Serial Console
[0002.204] I> Load in CBoot Boot Options partition and parse it
[0002.214] E> Error -9 when finding node with path /boot-configuration
[0002.214] E> tegrabl_cbo_parse_info: “boot-configuration” not found in CBO fil.
[0002.221] I> Using default boot order
[0002.225] I> boot-dev-order :-
[0002.228] I> 1.sd
[0002.229] I> 2.usb
[0002.231] I> 3.nvme
[0002.233] I> 4.emmc
[0002.235] I> 5.net
[0002.237] I> Hit any key to stop autoboot: 4 3 2 1
[0004.245] initializing target
[0004.245] calling apps_init()
[0004.246] starting app kernel_boot_app
[0004.265] I> found decompressor handler: lz4-legacy
[0004.266] I> decompressing BMP blob …
[0004.277] I> Kernel type = Normal
[0004.277] I> Loading kernel-bootctrl from partition
[0004.278] I> Loading partition kernel-bootctrl at 0xa42d0000 from device(0x1)
[0004.284] W> tegrabl_get_kernel_bootctrl: magic number(0x00000000) is invalid
[0004.285] W> tegrabl_get_kernel_bootctrl: use default dummy boot control data
[0004.285] I> ########## SD (0) boot ##########
[0004.286] I> No sdcard
[0004.287] I> -0 params source =
[0004.291] E> Blockdev open: exit error
[0004.294] E> SD boot failed, err: 724238353
[0004.298] I> ########## USB (0) boot ##########
[0004.307] W> No valid slot number is found in scratch register
[0004.308] W> Return default slot: _a
[0004.324] I> USB Firmware Version: 60.06 release
[0004.380] I> regulator of usb2-0 already enabled
[0004.387] I> regulator of usb2-1 already enabled
[0004.394] I> regulator of usb2-2 already enabled
[0004.402] I> enabling ‘vdd-5v-sata’ regulator
[0005.470] I> USB 2.0 port 4 new high-speed USB device detected
[0005.472] W> WARNING: event and command not matching, cmd_trb_ptr = 0xa92d0000, cmd_ring.dma = 0xa92d0040
[0005.573] I> Start to enumerate device
[0005.574] W> WARNING: event and command not matching, cmd_trb_ptr = 0xa92d0000, cmd_ring.dma = 0xa92d0040
[0005.579] W> WARNING: event and command not matching, cmd_trb_ptr = 0xa92d0000, cmd_ring.dma = 0xa92d0040
[0005.581] I>
[0005.581] I> Enumerated USB Device 0781:5575
[0005.581] I>
[0005.582] I> Max LUN = 0
[0006.586] W> xusbh_wait_irq: Timed out! status = 0x00
[0007.589] W> xusbh_wait_irq: Timed out! status = 0x00
[0007.590] E> Bad CSW SIG (0)!
[0007.691] E> USBMSD: Invalid value CSW SIG 0.
[0007.692] E> INQUIRY returned error 0x7c7c1102 …
[0008.696] W> xusbh_wait_irq: Timed out! status = 0x00
[0008.696] E> Bad CSW SIG (0)!
[0008.797] E> USBMSD: Invalid value CSW SIG 0.
[0009.802] W> xusbh_wait_irq: Timed out! status = 0x00
[0009.802] E> Bad CSW SIG (0)!
[0009.903] E> USBMSD: Invalid value CSW SIG 0.
[0010.908] W> xusbh_wait_irq: Timed out! status = 0x00
[0010.908] E> Bad CSW SIG (0)!
[0011.009] E> USBMSD: Invalid value CSW SIG 0.
[0012.013] W> xusbh_wait_irq: Timed out! status = 0x00
[0012.014] E> Bad CSW SIG (0)!
[0012.115] E> USBMSD: Invalid value CSW SIG 0.
[0012.115] W> TEST UNIT READY returned error 0x7c7c1102, retries @ 5 …
[0012.116] I> -0 params source =
[0012.116] E> Blockdev read block: exit error = e0e0104
[0012.116] E> Blockdev read block: exit error = e0e0104
[0012.117] W> Cannot find any partition table for 00050000
[0012.119] I> Detect filesystem
[0012.122] E> Either offset or requested data size from that offset is beyond device size
[0012.130] E> Blockdev read: exit error = e0e0004
[0012.134] I> fs_detect:160: Failed to read superblock
[0012.139] E> USB boot failed, err: 724238349
[0012.139] I> ########## Fixed storage boot ##########
…and goes on to boot successfully from eMMC beyond this point
But booting from the Jetson’s built-in 32GB eMMC is not my intention. I want to boot from the USB drive with L4T 32.5 installed and running on the USB drive… why is this failing?