I was flashing JetPack 6.2.2 to a Jetson AGX Orin 64GB and hit the USB write timeout error repeatedly. After working through it across 19 attempts, I found a fix that I haven’t seen documented anywhere.
The problem: flash.sh fails with “ERROR: might be timeout in USB write” during “Sending bct_br” or “Sending blob.” Disabling autosuspend helps with small payloads but larger blob transfers (22MB+) still fail.
The fix:
Increase USB buffer from default 16MB to 2GB
echo 2048 | sudo tee /sys/module/usbcore/parameters/usbfs_memory_mb
Disable USB autosuspend
echo -1 | sudo tee /sys/module/usbcore/parameters/autosuspend
Disable power management on all USB devices
for dev in /sys/bus/usb/devices//power/control; do echo on | sudo tee “$dev”; done
for dev in /sys/bus/usb/devices//power/autosuspend_delay_ms; do echo -1 | sudo tee “$dev”; done
Run these on your Linux host before starting flash.sh.
Why it works: The flash tools send large payloads (22-80MB) over USB 2.0 bulk transfers. The Linux kernel’s usbfs_memory_mb parameter limits how much memory the USB filesystem can use for staging these transfers. The default is 16MB. When the buffer fills, the kernel
blocks the write and the flash tool’s timeout fires. Increasing to 2048MB gives the controller enough headroom to drain at its own pace.
What I tried that didn’t work:
- Different USB cables (USB-C to USB-C, USB-C to USB-A)
- Different USB ports and hubs
- l4t_initrd_flash.sh
- SDK Manager CLI and GUI
- usbfs_memory_mb=1024 (got past bct_br but failed on blob)
What worked: usbfs_memory_mb=2048 combined with autosuspend disabled and USB power management off. Flash completed in about 14 minutes.
Host: Ubuntu 22.04 on an Intel-based machine (Intel 100 Series xHCI controller). The Jetson operates at USB 2.0 in recovery mode, so all traffic routes through the xHCI controller regardless of which physical port is used.
Hope this helps someone. Happy to answer questions.