Serial device hangs after closing, unable to re-open without first unplugging it

I have an Arduino sending data over USB and am unable to open it after closing it. The first time it’s opened everything works as expected, data flows fine. However, if I close the device it hangs indefinitely and the only resolution is to physically unplug it and plug it back in. The same Arduino works without issue on my desktop also running Ubuntu 20.

dmesg output:

[10238.430809] usb 1-2.1: new full-speed USB device number 15 using tegra-xusb
[10238.545457] usb 1-2.1: New USB device found, idVendor=2341, idProduct=0042, bcdDevice= 0.01
[10238.545468] usb 1-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=220
[10238.545474] usb 1-2.1: Manufacturer: Arduino (www.arduino.cc)
[10238.545480] usb 1-2.1: SerialNumber: 85937313237351B09012
[10238.547945] cdc_acm 1-2.1:1.0: ttyACM2: USB ACM device
[10323.198411] usb 1-2.1: USB disconnect, device number 15
[10328.540310] usb 1-2.1: new full-speed USB device number 16 using tegra-xusb
[10343.979890] usb 1-2.1: device descriptor read/64, error -110
[10359.595469] usb 1-2.1: device descriptor read/64, error -110
[10359.787433] usb 1-2.1: new full-speed USB device number 17 using tegra-xusb
[10375.211066] usb 1-2.1: device descriptor read/64, error -110
[10390.826624] usb 1-2.1: device descriptor read/64, error -110
[10390.939118] usb 1-2-port1: attempt power cycle
[10392.762522] usb 1-2.1: new full-speed USB device number 18 using tegra-xusb
[10393.775078] usb 1-2.1: Device not responding to setup address.
[10394.998835] usb 1-2.1: Device not responding to setup address.
[10395.210444] usb 1-2.1: device not accepting address 18, error -71
[10395.294429] usb 1-2.1: new full-speed USB device number 19 using tegra-xusb
[10396.307001] usb 1-2.1: Device not responding to setup address.
[10397.530790] usb 1-2.1: Device not responding to setup address.
[10397.742368] usb 1-2.1: device not accepting address 19, error -71
[10397.749192] usb 1-2-port1: unable to enumerate USB device

Hi,
Please apply the USB firmware and give it a try:
https://developer.nvidia.com/embedded/jetson-linux-r3531

overlay_usb_35.3.1.tbz2

How do I apply this? There’s a .bin and an executable binary in the tarball but no instructions on what to do with it.

lmao one of your devs deserves a beer, glad they have a sense of humor

$ hexdump xusb_sil_rel_fw | tail
001f610 0505 0505 0505 0505 0505 0505 0505 0505
001f620 0606 0606 0606 0606 0606 0606 0606 0606
*
001f640 0707 0707 0707 0707 0707 0707 0707 0707
*
001f680 0808 0808 0808 0808 0808 0808 0808 0808
*
001f700 beef dead beef dead beef dead beef dead
*
001f800

After doing some searching I tried a couple things and one seems to have worked

First attempt that didn’t yield any noticeable change

cd /lib/firmware/nvidia/tegra194
sudo mv xusb.bin xusb.bin.bk
sudo cp ~/Downloads/Linux_for_Tegra/bootloader/xusb_t234_prod.bin ./xusb.bin
sudo chmod 755 xusb.bin

Second

sudo rm /lib/firm/ware/tegra19x_usb_firmware  # Remove existing symlink
sudo cp ~/Downloads/Linux_for_Tegra/bootloader/xusb_sil_rel_fw /lib/firmware/tegra19x_xusb_firmware

@DaneLLL can you please confirm if this is the correct way to apply the new firmware?

Never mind, still seeing the same issue.

Hi,
Please overwrite the files in the system image and re-flash the device. On the host PC, if you have used SDKManager to flash the system, the two files are in

~/nvidia/nvidia_sdk/JetPack_5.1.1_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/bootloader/xusb_t234_prod.bin
~/nvidia/nvidia_sdk/JetPack_5.1.1_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/bootloader/xusb_sil_rel_fw

After re-flash the device, please check dmesg to confirm the version is 80.05:

[    8.389993] tegra-xusb 3610000.xhci: Firmware timestamp: 2023-02-10 03:48:10 UTC, Version: 80.05 release

Is this the only option? Can it be done without wiping the filesystem? I never got a resolution to the issue I faced when trying to flash to NVMe and have spent the last 10 days getting the system configured for my project.

@DaneLLL this solution is not viable as I’m not able to flash to an NVMe. I have been using the workaround laid out here which requires loading the system image from the SD card blob. Please advise on how to fix this.

This solved the serial hanging issue. Hopefully this patch is included in the next release of Jetpack

Hi,
The fix is included in next Jetpack 5.1.2 release. For using 5.1.1, please apply the overlay.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.