USB not recognized at boot/startup

i have pluged an USB cable with a teensy 4.0 on USB port with name /dev/ttyACM0, but when the jetson boots, using the command ls /dev, there is no /dev/ttyACM0, i always have to manually disconnect and connect again for the usb to get recognized. Is there any solution to this so the usb port gets detected at boot?

Hi,
Please try this to trigger enumeration:
Power down USB ports - #4 by vsaw

If it works, you may set up rc.local service to execute the commands in booting. For setting up rc.local service, please check Jetson Nano FAQ.

Thanks, I will try this software method but i also want to point out that when i first bought it (about 2 years ago), this issue did not exist, and about a week ago started happening. My question is: is this behavior usual for jetson nano after some kind of update? or what may i have changed to alter to change the USB hub behavior? if so, how can i turn it back to normal, where it just reads all usb peripherals at boot?

And another conncern is that sometimes, it reads it (/dev/ttyACM0 at boot, some other times it does not, with no changes between boots, so, is possible to have always the same behavior and better predictability on the booting?

rioo@rioo-desktop:~$ sudo uhubctl
[sudo] password for rioo:
No compatible devices detected!
Run with -h to get usage info.

rioo@rioo-desktop:~$ sudo lsusb -v

wHubCharacteristic 0x000a
  No power switching (usb 1.0)
  Per-port overcurrent protection

also tried:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <linux/usbdevice_fs.h>

int main(int argc, char *argv[])
{
    const char *dev_path = argv[1];

    int fd = open(dev_path, O_WRONLY);
    if (fd < 0) {
        perror("Error opening device");
        return 1;
    }

    if (ioctl(fd, USBDEVFS_RESET, 0) < 0) {
        perror("Error in ioctl");
        return 1;
    }

    printf("USB device reset successful\n");

    close(fd);

    return 0;
}

did not work

the tried:
https://developer.ridgerun.com/wiki/index.php/How_to_reset_USB_port_on_Jetson

echo "1-2" | sudo tee /sys/bus/usb/drivers/usb/unbind
echo "1-2" | sudo tee /sys/bus/usb/drivers/usb/bind

This one works to power it ON and OFF as long as the port was detected on boot, else is not working.

Now trying changing USB port from 3.0 to 2.0 but as said before, is not yet reproductible. Some boots it gets detected, some others it does not.

$ sudo apt-cache show nvidia-jetpack
[sudo] password for rioo:
Package: nvidia-jetpack
Version: 4.6.3-b17
Architecture: arm64
Maintainer: NVIDIA Corporation
Installed-Size: 194
Depends: nvidia-l4t-jetson-multimedia-api (>> 32.7-0), nvidia-l4t-jetson-multimedia-api (<< 32.8-0), nvidia-cuda (= 4.6.3-b17), nvidia-tensorrt (= 4.6.3-b17), nvidia-nsight-sys (= 4.6.3-b17), nvidia-cudnn8 (= 4.6.3-b17), nvidia-opencv (= 4.6.3-b17), nvidia-container (= 4.6.3-b17), nvidia-vpi (= 4.6.3-b17)
Homepage: Jetson - Embedded AI Computing Platform | NVIDIA Developer
Priority: standard
Section: metapackages
Filename: pool/main/n/nvidia-jetpack/nvidia-jetpack_4.6.3-b17_arm64.deb
Size: 29368
SHA256: 694254a8667ebbf13852548bdd13a5b8ae61481ac059845b706398eefdcb9e01
SHA1: 67140fc8463ec61fd69352b225244b639c799edd
MD5sum: afa1382b6caded6b736d494fc481bab4
Description: NVIDIA Jetpack Meta Package
Description-md5: ad1462289bdbc54909ae109d1d32c0a8

Package: nvidia-jetpack
Version: 4.6.2-b5
Architecture: arm64
Maintainer: NVIDIA Corporation
Installed-Size: 194
Depends: nvidia-cuda (= 4.6.2-b5), nvidia-opencv (= 4.6.2-b5), nvidia-cudnn8 (= 4.6.2-b5), nvidia-tensorrt (= 4.6.2-b5), nvidia-visionworks (= 4.6.2-b5), nvidia-container (= 4.6.2-b5), nvidia-vpi (= 4.6.2-b5), nvidia-l4t-jetson-multimedia-api (>> 32.7-0), nvidia-l4t-jetson-multimedia-api (<< 32.8-0)
Homepage: Jetson - Embedded AI Computing Platform | NVIDIA Developer
Priority: standard
Section: metapackages
Filename: pool/main/n/nvidia-jetpack/nvidia-jetpack_4.6.2-b5_arm64.deb
Size: 29378
SHA256: 925f4abff97e6024d86cff3b9e132e7c7554d05fb83590487381b7e925d5b2bb
SHA1: e3ef727e87df5c331aece34508c110d57d744fe9
MD5sum: 7cb2e387af41bc8143ac7b6525af7794
Description: NVIDIA Jetpack Meta Package
Description-md5: ad1462289bdbc54909ae109d1d32c0a8

Package: nvidia-jetpack
Version: 4.6.1-b110
Architecture: arm64
Maintainer: NVIDIA Corporation
Installed-Size: 194
Depends: nvidia-cuda (= 4.6.1-b110), nvidia-opencv (= 4.6.1-b110), nvidia-cudnn8 (= 4.6.1-b110), nvidia-tensorrt (= 4.6.1-b110), nvidia-visionworks (= 4.6.1-b110), nvidia-container (= 4.6.1-b110), nvidia-vpi (= 4.6.1-b110), nvidia-l4t-jetson-multimedia-api (>> 32.7-0), nvidia-l4t-jetson-multimedia-api (<< 32.8-0)
Homepage: Jetson - Embedded AI Computing Platform | NVIDIA Developer
Priority: standard
Section: metapackages
Filename: pool/main/n/nvidia-jetpack/nvidia-jetpack_4.6.1-b110_arm64.deb
Size: 29366
SHA256: acfd9e75af780eab165361d61de4b4fe4974890864fe191060b402ac4c2f54d5
SHA1: a016568ac53705acc145a9f7e60505707bea259f
MD5sum: 79be976b184a8c885bd9169ea5b7fb7b
Description: NVIDIA Jetpack Meta Package
Description-md5: ad1462289bdbc54909ae109d1d32c0a8

I have generated this udev rule:

sudoedit /etc/udev/rules.d/50-myusb.rules
KERNEL=="ttyUSB[0-9]*",MODE="0666"
KERNEL=="ttyACM[0-9]*",MODE="0666"

But nothing seems to work.

sudo reboot:
It dissappears

some more reboots without any changes:
It appears again

i used :
dmesg --follow
To check what happens when the device is reconnected:


[  170.354210] tegra-xusb 70090000.xusb: exiting ELPG
[  170.355867] tegra-xusb-padctl 7009f000.xusb_padctl: power on UTMI pads 1
[  170.361530] tegra-xusb 70090000.xusb: Firmware timestamp: 2020-07-31 09:33:12 UTC, Version: 50.26 release
[  170.362064] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 0
[  170.362252] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 1
[  170.362433] tegra-pmc: PMC tegra_pmc_utmi_phy_disable_sleepwalk : port 2
[  170.363406] tegra-xusb 70090000.xusb: exiting ELPG done
[  170.390811] usb usb2: usb_suspend_both: status 0
[  170.589329] usb 1-2: new high-speed USB device number 3 using tegra-xusb
[  170.611972] usb 1-2: New USB device found, idVendor=16c0, idProduct=0483
[  170.612040] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  170.612091] usb 1-2: Product: USB Serial
[  170.612135] usb 1-2: Manufacturer: Teensyduino
[  170.612175] usb 1-2: SerialNumber: 10433430
[  170.664083] cdc_acm 1-2:1.0: ttyACM0: USB ACM device
[  170.664555] usbcore: registered new interface driver cdc_acm
[  170.664559] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

Hi,
For using Jetson Nano developer kit, each port has done compliance test. So if the device is USB certificate, ideally it should be enumerated without issue.

If you use custom board, you would need to do compliance test to ensure signal quality is good

Hi,
I am using Jetson Nano developer kit 2 GB. all devices are regular USB, this problem just start appearing a week ago more or less, and its getting worse (more times undetected than detected and a week ago it was almost always detected and a minor issue when it was not detected).

Hi,
Yo may try to re-flash the system to Jetpack 4.6.3 and check if the issue persists. If it is still present, the board may be physically broken. If it is still in warranty, you may consider RMA:
Jetson FAQ | NVIDIA Developer

It is possible in certain race condition some device is not enumerated, but shall be enumerated after off/on the USB hub. There may be physical damage that you observe more frequent failure rate.

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