Xavier NX not recognizing certain ACM USB device

I am using a Xavier NX developer board to connect to a DJI M300 drone. There are two device connections, one through an FTDI serial-to-USB cable which works fine, and the other that normally shows up as an ACM device. The developer board is on the latest Jetpack 4.4.

When I plug in the ACM device cable, the dmesg output is

[ 1654.410917] usb 1-2-port4: Cannot enable. Maybe the USB cable is bad?
[ 1655.262959] usb 1-2-port4: Cannot enable. Maybe the USB cable is bad?
[ 1655.263429] usb 1-2-port4: attempt power cycle
[ 1657.642944] usb 1-2-port4: Cannot enable. Maybe the USB cable is bad?
[ 1658.514939] usb 1-2-port4: Cannot enable. Maybe the USB cable is bad?
[ 1658.515355] usb 1-2-port4: unable to enumerate USB device

However this device loads correctly on an NVidia TX2 on an Auvidea carrier board.
dmesg output on the TX2

[  186.733262] usb 1-2.2: new high-speed USB device number 4 using tegra-xusb
[  186.755771] usb 1-2.2: New USB device found, idVendor=2ca3, idProduct=001f
[  186.755796] usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  186.755813] usb 1-2.2: Product: e1e
[  186.755827] usb 1-2.2: Manufacturer: DJI
[  186.755841] usb 1-2.2: SerialNumber: 123456789ABCDEF
[  186.762169] usb-storage 1-2.2:1.2: USB Mass Storage device detected
[  186.762370] scsi host2: usb-storage 1-2.2:1.2
[  186.827768] rndis_host 1-2.2:1.0 usb1: register 'rndis_host' at usb-3530000.xhci-2.2, RNDIS device, 16:88:86:cb:20:26
[  186.831754] usbcore: registered new interface driver rndis_host
[  186.846360] cdc_acm 1-2.2:1.4: ttyACM0: USB ACM device
[  186.849005] usbcore: registered new interface driver cdc_acm
[  186.849009] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[  186.877380] IPv6: ADDRCONF(NETDEV_UP): usb1: link is not ready
[  187.776579] scsi 2:0:0:0: Direct-Access     Linux    File-Stor Gadget 0409 PQ: 0 ANSI: 2
[  187.788733] sd 2:0:0:0: [sda] Attached SCSI removable disk
[  187.792475] scsi 2:0:0:1: Direct-Access     Linux    File-Stor Gadget 0409 PQ: 0 ANSI: 2
[  187.797773] sd 2:0:0:1: [sdb] Attached SCSI removable disk

Other ACM devices show up on the NX properly. For example, I have plugged in a Beaglebone computer into the Nvidia NX and it connects as an ACM device.

I have tested manually loading the cdc-acm and rndis_host drivers before and after plugging in the device, but the result is the same.

I have tested creating a udev rule that DJI suggests

SUBSYSTEM=="usb", ATTRS {idVendor} =="2ca3", MODE ="0666"

but the output is the same (and this rule is not needed on the TX2).

Looking at udevadm monitor, no kernel or udev events are triggered by inserting the cable. The kernel and udev output on the TX2 is extensive and I’ll post it at the end.

I could not see the combination of idVendor and idProduct on an internet search, and so it has me thinking perhaps some very recent software release might know the combination, while anything slightly older does not.

Normally, when a USB device is plugged in, the USB will announce the idVendor and idProduct, and any driver which can handle that combination can take ownership of the device. If for example this is a common chip, then it won’t matter who used that chip in their product, the driver will just work without anything special.

On the other hand, the manufacturer can use their own idVendor and idProduct. If it turns out that this custom vendor/product uses the same driver (which is highly likely), then one needs a udev rule to associate the new vendor/product to the old vendor/product. Once that association exists, then the driver can bind to the device. The same udev rule might be used to provide a new device special file name to distinguish this particular implementation from someone else’s implementation.

So far as I can tell from your udev rule this never mentioned a driver to associate with, all it did was set permission to the device special file. When looking up common vendor/product IDs I never found the combination vendor 0x2ca3 and product 0x001f. Seems this is new (the registries I looked at are probably at least 6 months old). On your systems which were able to use this it leads me to believe the USB registry and udev combination were newer than on the system not recognizing the device. The device vendor (apparently DJI) could probably help with this (or it might be a hardware failure…the fact that you saw DJI in dmesg tells me this is not a hardware failure) by providing a more complete udev rule. Or if by coincidence you install some newer software which is already aware of this vendor/product combination, then this too would work. I just don’t know which version that is.

Btw, you can check for USB ACM serial deice support via:
zcat /proc/config.gz | grep 'USB_ACM'
…where “=m” or “=y” means it is supported so long as the driver is associated with that vendor/product ID.

The DJI M300 is a very new product, so it’s not surprising that the idProduct is not out yet.

The NVidia NX image has USB ACM device support:

$ zcat /proc/config.gz | grep 'USB_ACM'

The computer that recognizes it, the Nvidia TX2, definitely does not have a newer image. It’s running on Jetpack 4.2 with a BSP from Auvidea from Dec. 2019. And to reiterate, the udev rule I mentioned is NOT needed on the TX2 that recognizes the ACM device. I only mentioned the udev rule to show that I tried it. As you mention, it doesn’t call out a specific driver to associate with this device, so it wouldn’t solve the problem.

What are other troubleshooting steps I could take? I find it weird that when I plug in the device that no kernel uevents are triggered. Is there anything I can check besides dmesg? Is there anything I could check on the working setup that might give a clue?

Any third party carrier board could have updates for udev, but what I am thinking is that somehow the earlier release you had identified the idVendor/idProduct combination as being an ACM device. I will suggest that if you contact the DJI people and ask what would cause non-recognition of the “2ca3:001f” ID, then they would have probably seen this and been asked exactly this question (it wouldn’t just be a problem limited to Ubuntu on a Jetson). I would specifically include the dmesg log you see from the USB cable insert.

One thing I don’t know about though is the presence of the ID 0001:0002, which is usually an indication of something which has no registration. Your device looks like it is providing two devices in one cable (and this is common for a lot of devices), and perhaps it is the 0001:0002 ID which is getting in the way (there may be a missing udev rule related to this, but this is under the control of the maker of the chip…in this case, this would be controlled by the DJI people). It might be as simple as a revision getting in the way.

Thanks for your help. I’ll reach out to DJI on this.

What 0001:0002 ID are you referencing, by the way?

Also, here is the output of udevadm monitor when attaching the ACM device to the working TX2. I’m not getting any of this on the NX. @linuxdev Any idea why plugging in the USB wouldn’t at least trigger a kernel event?

KERNEL[86.084297] add      /devices/3530000.xhci/usb1/1-3 (usb)
KERNEL[86.088669] add      /devices/3530000.xhci/usb1/1-3/1-3:1.0 (usb)
KERNEL[86.089194] add      /devices/3530000.xhci/usb1/1-3/1-3:1.1 (usb)
KERNEL[86.089442] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2 (usb)
KERNEL[86.093848] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2 (scsi)
KERNEL[86.093924] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/scsi_host/host2 (scsi_host)
KERNEL[86.096041] add      /devices/3530000.xhci/usb1/1-3/1-3:1.3 (usb)
KERNEL[86.096387] add      /devices/3530000.xhci/usb1/1-3/1-3:1.4 (usb)
KERNEL[86.096624] add      /devices/3530000.xhci/usb1/1-3/1-3:1.5 (usb)
KERNEL[86.096867] add      /devices/3530000.xhci/usb1/1-3/1-3:1.6 (usb)
KERNEL[86.097092] add      /devices/3530000.xhci/usb1/1-3/1-3:1.7 (usb)
UDEV  [86.139614] add      /devices/3530000.xhci/usb1/1-3 (usb)
KERNEL[86.147768] add      /module/rndis_host (module)
KERNEL[86.152941] add      /devices/3530000.xhci/usb1/1-3/1-3:1.0/net/usb1 (net)
KERNEL[86.152984] add      /devices/3530000.xhci/usb1/1-3/1-3:1.0/net/usb1/queues/rx-0 (queues)
KERNEL[86.153009] add      /devices/3530000.xhci/usb1/1-3/1-3:1.0/net/usb1/queues/tx-0 (queues)
KERNEL[86.155530] add      /bus/usb/drivers/rndis_host (drivers)
UDEV  [86.157246] add      /devices/3530000.xhci/usb1/1-3/1-3:1.0 (usb)
UDEV  [86.157310] add      /devices/3530000.xhci/usb1/1-3/1-3:1.3 (usb)
UDEV  [86.161606] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2 (usb)
UDEV  [86.161964] add      /bus/usb/drivers/rndis_host (drivers)
UDEV  [86.162994] add      /module/rndis_host (module)
UDEV  [86.163963] add      /devices/3530000.xhci/usb1/1-3/1-3:1.6 (usb)
UDEV  [86.165781] add      /devices/3530000.xhci/usb1/1-3/1-3:1.5 (usb)
UDEV  [86.166607] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2 (scsi)
UDEV  [86.167024] add      /devices/3530000.xhci/usb1/1-3/1-3:1.7 (usb)
UDEV  [86.169318] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/scsi_host/host2 (scsi_host)
KERNEL[86.170133] add      /module/cdc_acm (module)
UDEV  [86.170368] add      /devices/3530000.xhci/usb1/1-3/1-3:1.1 (usb)
KERNEL[86.174486] add      /devices/3530000.xhci/usb1/1-3/1-3:1.4/tty/ttyACM0 (tty)
KERNEL[86.176119] add      /bus/usb/drivers/cdc_acm (drivers)
UDEV  [86.177526] add      /module/cdc_acm (module)
UDEV  [86.178172] add      /devices/3530000.xhci/usb1/1-3/1-3:1.4 (usb)
UDEV  [86.179229] add      /bus/usb/drivers/cdc_acm (drivers)
UDEV  [86.181561] add      /devices/3530000.xhci/usb1/1-3/1-3:1.4/tty/ttyACM0 (tty)
UDEV  [86.206525] add      /devices/3530000.xhci/usb1/1-3/1-3:1.0/net/usb1 (net)
UDEV  [86.211063] add      /devices/3530000.xhci/usb1/1-3/1-3:1.0/net/usb1/queues/tx-0 (queues)
UDEV  [86.213585] add      /devices/3530000.xhci/usb1/1-3/1-3:1.0/net/usb1/queues/rx-0 (queues)
KERNEL[86.230583] add      /kernel/slab/:atA-0000192/cgroup/dentry(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.230747] add      /kernel/slab/inode_cache/cgroup/inode_cache(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.230872] add      /kernel/slab/:tA-0000192/cgroup/cred_jar(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.230978] add      /kernel/slab/:tA-0000896/cgroup/mm_struct(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.231160] add      /kernel/slab/:tA-0000176/cgroup/vm_area_struct(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.231264] add      /kernel/slab/:tA-0000064/cgroup/anon_vma_chain(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.231379] add      /kernel/slab/anon_vma/cgroup/anon_vma(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.231540] add      /kernel/slab/:t-0000192/cgroup/kmalloc-192(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.231682] add      /kernel/slab/:t-0001024/cgroup/kmalloc-1024(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.231810] add      /kernel/slab/:tA-0003584/cgroup/task_struct(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.231932] add      /kernel/slab/:tA-0000704/cgroup/files_cache(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.232355] add      /kernel/slab/sighand_cache/cgroup/sighand_cache(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.232460] add      /kernel/slab/:tA-0001088/cgroup/signal_cache(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.232847] add      /kernel/slab/:tA-0000128/cgroup/pid(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.236928] add      /kernel/slab/:atA-0000192/cgroup/dentry(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.238602] add      /kernel/slab/sock_inode_cache/cgroup/sock_inode_cache(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.241218] add      /kernel/slab/:t-0000192/cgroup/kmalloc-192(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.244144] add      /kernel/slab/:tA-0000704/cgroup/files_cache(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.245519] add      /kernel/slab/sighand_cache/cgroup/sighand_cache(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.247134] add      /kernel/slab/:tA-0001088/cgroup/signal_cache(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.248628] add      /kernel/slab/inode_cache/cgroup/inode_cache(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.249514] add      /kernel/slab/:tA-0000128/cgroup/pid(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.250948] add      /kernel/slab/anon_vma/cgroup/anon_vma(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.251419] add      /kernel/slab/sock_inode_cache/cgroup/sock_inode_cache(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.252560] add      /kernel/slab/:t-0001024/cgroup/kmalloc-1024(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.252900] add      /kernel/slab/:tA-0000192/cgroup/cred_jar(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.257013] add      /kernel/slab/:tA-0003584/cgroup/task_struct(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.257787] add      /kernel/slab/:tA-0000896/cgroup/mm_struct(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.258025] add      /kernel/slab/proc_inode_cache/cgroup/proc_inode_cache(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.259942] add      /kernel/slab/:tA-0000064/cgroup/anon_vma_chain(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.261573] add      /kernel/slab/:tA-0000176/cgroup/vm_area_struct(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.264685] add      /kernel/slab/proc_inode_cache/cgroup/proc_inode_cache(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.269304] add      /kernel/slab/shmem_inode_cache/cgroup/shmem_inode_cache(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.273067] add      /kernel/slab/shmem_inode_cache/cgroup/shmem_inode_cache(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.280877] add      /kernel/slab/:t-0000064/cgroup/kmalloc-64(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.281142] add      /kernel/slab/:t-0002048/cgroup/kmalloc-2048(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.281190] add      /kernel/slab/:t-0000128/cgroup/kmalloc-128(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.284085] add      /kernel/slab/:t-0000064/cgroup/kmalloc-64(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.287036] add      /kernel/slab/:t-0000128/cgroup/kmalloc-128(1281:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.287819] add      /kernel/slab/:t-0002048/cgroup/kmalloc-2048(1281:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.381419] remove   /kernel/slab/:atA-0000192/cgroup/dentry(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.381542] remove   /kernel/slab/inode_cache/cgroup/inode_cache(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.381617] remove   /kernel/slab/:tA-0000192/cgroup/cred_jar(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.381709] remove   /kernel/slab/:tA-0000896/cgroup/mm_struct(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.381782] remove   /kernel/slab/:tA-0000176/cgroup/vm_area_struct(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.381853] remove   /kernel/slab/:tA-0000064/cgroup/anon_vma_chain(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.381926] remove   /kernel/slab/anon_vma/cgroup/anon_vma(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.381997] remove   /kernel/slab/:t-0000192/cgroup/kmalloc-192(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.382099] remove   /kernel/slab/:t-0001024/cgroup/kmalloc-1024(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.382174] remove   /kernel/slab/:tA-0003584/cgroup/task_struct(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.382248] remove   /kernel/slab/:tA-0000704/cgroup/files_cache(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.382321] remove   /kernel/slab/sighand_cache/cgroup/sighand_cache(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.382391] remove   /kernel/slab/:tA-0001088/cgroup/signal_cache(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.382479] remove   /kernel/slab/:tA-0000128/cgroup/pid(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.382554] remove   /kernel/slab/sock_inode_cache/cgroup/sock_inode_cache(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.382624] remove   /kernel/slab/proc_inode_cache/cgroup/proc_inode_cache(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.382715] remove   /kernel/slab/shmem_inode_cache/cgroup/shmem_inode_cache(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.382787] remove   /kernel/slab/:t-0000064/cgroup/kmalloc-64(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.382858] remove   /kernel/slab/:t-0002048/cgroup/kmalloc-2048(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[86.382928] remove   /kernel/slab/:t-0000128/cgroup/kmalloc-128(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.387712] remove   /kernel/slab/:atA-0000192/cgroup/dentry(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.388900] remove   /kernel/slab/:tA-0000192/cgroup/cred_jar(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.389024] remove   /kernel/slab/inode_cache/cgroup/inode_cache(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.391603] remove   /kernel/slab/:t-0000192/cgroup/kmalloc-192(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.391675] remove   /kernel/slab/:tA-0000064/cgroup/anon_vma_chain(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.391718] remove   /kernel/slab/anon_vma/cgroup/anon_vma(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.394104] remove   /kernel/slab/:tA-0000176/cgroup/vm_area_struct(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.394253] remove   /kernel/slab/:tA-0000896/cgroup/mm_struct(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.395150] remove   /kernel/slab/:tA-0000704/cgroup/files_cache(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.395203] remove   /kernel/slab/:tA-0003584/cgroup/task_struct(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.395398] remove   /kernel/slab/:tA-0000128/cgroup/pid(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.396156] remove   /kernel/slab/sighand_cache/cgroup/sighand_cache(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.396209] remove   /kernel/slab/:tA-0001088/cgroup/signal_cache(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.396852] remove   /kernel/slab/:t-0001024/cgroup/kmalloc-1024(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.397222] remove   /kernel/slab/sock_inode_cache/cgroup/sock_inode_cache(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.397542] remove   /kernel/slab/:t-0000128/cgroup/kmalloc-128(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.397604] remove   /kernel/slab/:t-0000064/cgroup/kmalloc-64(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.398193] remove   /kernel/slab/shmem_inode_cache/cgroup/shmem_inode_cache(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.398241] remove   /kernel/slab/proc_inode_cache/cgroup/proc_inode_cache(817:resolvconf-pull-resolved.service) (cgroup)
UDEV  [86.398538] remove   /kernel/slab/:t-0002048/cgroup/kmalloc-2048(817:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.113662] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0 (scsi)
KERNEL[87.113815] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:0 (scsi)
KERNEL[87.113852] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:0/scsi_disk/2:0:0:0 (scsi_disk)
KERNEL[87.113953] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:0/scsi_device/2:0:0:0 (scsi_device)
KERNEL[87.114230] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:0/bsg/2:0:0:0 (bsg)
KERNEL[87.117025] add      /devices/virtual/bdi/8:0 (bdi)
KERNEL[87.117439] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:0/block/sda (block)
UDEV  [87.118566] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0 (scsi)
UDEV  [87.119932] add      /devices/virtual/bdi/8:0 (bdi)
UDEV  [87.120855] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:0 (scsi)
UDEV  [87.123132] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:0/scsi_device/2:0:0:0 (scsi_device)
UDEV  [87.123547] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:0/scsi_disk/2:0:0:0 (scsi_disk)
KERNEL[87.126092] change   /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:0/block/sda (block)
KERNEL[87.126145] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:1 (scsi)
KERNEL[87.126247] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:1/scsi_disk/2:0:0:1 (scsi_disk)
KERNEL[87.126366] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:1/scsi_device/2:0:0:1 (scsi_device)
KERNEL[87.126428] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:1/bsg/2:0:0:1 (bsg)
UDEV  [87.128726] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:1 (scsi)
KERNEL[87.129539] add      /devices/virtual/bdi/8:16 (bdi)
KERNEL[87.129699] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:1/block/sdb (block)
KERNEL[87.131243] change   /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:1/block/sdb (block)
UDEV  [87.132231] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:0/bsg/2:0:0:0 (bsg)
UDEV  [87.132872] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:1/scsi_disk/2:0:0:1 (scsi_disk)
UDEV  [87.138288] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:1/scsi_device/2:0:0:1 (scsi_device)
UDEV  [87.139928] add      /devices/virtual/bdi/8:16 (bdi)
UDEV  [87.145389] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:1/bsg/2:0:0:1 (bsg)
UDEV  [87.197570] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:1/block/sdb (block)
KERNEL[87.203224] add      /kernel/slab/:t-0000064/cgroup/kmalloc-64(518:udisks2.service) (cgroup)
UDEV  [87.204497] add      /kernel/slab/:t-0000064/cgroup/kmalloc-64(518:udisks2.service) (cgroup)
UDEV  [87.210862] change   /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:1/block/sdb (block)
UDEV  [87.214001] add      /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:0/block/sda (block)
UDEV  [87.223712] change   /devices/3530000.xhci/usb1/1-3/1-3:1.2/host2/target2:0:0/2:0:0:0/block/sda (block)
KERNEL[87.887412] add      /kernel/slab/:atA-0000192/cgroup/dentry(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.887596] add      /kernel/slab/inode_cache/cgroup/inode_cache(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.887686] add      /kernel/slab/:tA-0000192/cgroup/cred_jar(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.888420] add      /kernel/slab/:tA-0000896/cgroup/mm_struct(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.888480] add      /kernel/slab/:tA-0000176/cgroup/vm_area_struct(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.888509] add      /kernel/slab/:tA-0000064/cgroup/anon_vma_chain(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.888534] add      /kernel/slab/anon_vma/cgroup/anon_vma(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.890181] add      /kernel/slab/:t-0000192/cgroup/kmalloc-192(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.890232] add      /kernel/slab/:t-0001024/cgroup/kmalloc-1024(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.890258] add      /kernel/slab/:tA-0003584/cgroup/task_struct(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.890281] add      /kernel/slab/:tA-0000704/cgroup/files_cache(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.890306] add      /kernel/slab/sighand_cache/cgroup/sighand_cache(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.890329] add      /kernel/slab/:tA-0001088/cgroup/signal_cache(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.890353] add      /kernel/slab/:tA-0000128/cgroup/pid(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.891001] add      /kernel/slab/:atA-0000192/cgroup/dentry(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.893699] add      /kernel/slab/sock_inode_cache/cgroup/sock_inode_cache(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.894238] add      /kernel/slab/:tA-0000896/cgroup/mm_struct(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.895279] add      /kernel/slab/:tA-0000192/cgroup/cred_jar(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.895947] add      /kernel/slab/:tA-0000176/cgroup/vm_area_struct(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.896062] add      /kernel/slab/inode_cache/cgroup/inode_cache(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.897355] add      /kernel/slab/:tA-0000064/cgroup/anon_vma_chain(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.898356] add      /kernel/slab/anon_vma/cgroup/anon_vma(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.898551] add      /kernel/slab/:t-0000192/cgroup/kmalloc-192(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.898677] add      /kernel/slab/:t-0001024/cgroup/kmalloc-1024(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[87.900270] add      /kernel/slab/proc_inode_cache/cgroup/proc_inode_cache(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.901022] add      /kernel/slab/:tA-0003584/cgroup/task_struct(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.902735] add      /kernel/slab/sighand_cache/cgroup/sighand_cache(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.903171] add      /kernel/slab/:tA-0000128/cgroup/pid(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.903877] add      /kernel/slab/:tA-0000704/cgroup/files_cache(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.904639] add      /kernel/slab/sock_inode_cache/cgroup/sock_inode_cache(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.905220] add      /kernel/slab/:tA-0001088/cgroup/signal_cache(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [87.908577] add      /kernel/slab/proc_inode_cache/cgroup/proc_inode_cache(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.044275] remove   /kernel/slab/:atA-0000192/cgroup/dentry(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.044380] remove   /kernel/slab/inode_cache/cgroup/inode_cache(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.044455] remove   /kernel/slab/:tA-0000192/cgroup/cred_jar(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.044528] remove   /kernel/slab/:tA-0000896/cgroup/mm_struct(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.044599] remove   /kernel/slab/:tA-0000176/cgroup/vm_area_struct(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.044671] remove   /kernel/slab/:tA-0000064/cgroup/anon_vma_chain(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.044769] remove   /kernel/slab/anon_vma/cgroup/anon_vma(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.044844] remove   /kernel/slab/:t-0000192/cgroup/kmalloc-192(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.044925] remove   /kernel/slab/:t-0001024/cgroup/kmalloc-1024(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.045005] remove   /kernel/slab/:tA-0003584/cgroup/task_struct(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.045096] remove   /kernel/slab/:tA-0000704/cgroup/files_cache(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.045176] remove   /kernel/slab/sighand_cache/cgroup/sighand_cache(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.045278] remove   /kernel/slab/:tA-0001088/cgroup/signal_cache(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.045366] remove   /kernel/slab/:tA-0000128/cgroup/pid(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.045457] remove   /kernel/slab/sock_inode_cache/cgroup/sock_inode_cache(1294:resolvconf-pull-resolved.service) (cgroup)
KERNEL[88.045535] remove   /kernel/slab/proc_inode_cache/cgroup/proc_inode_cache(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.046805] remove   /kernel/slab/:atA-0000192/cgroup/dentry(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.048960] remove   /kernel/slab/:tA-0000896/cgroup/mm_struct(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.049523] remove   /kernel/slab/:tA-0000192/cgroup/cred_jar(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.050408] remove   /kernel/slab/inode_cache/cgroup/inode_cache(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.051968] remove   /kernel/slab/:t-0000192/cgroup/kmalloc-192(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.052044] remove   /kernel/slab/:tA-0000176/cgroup/vm_area_struct(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.052246] remove   /kernel/slab/:tA-0000064/cgroup/anon_vma_chain(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.052318] remove   /kernel/slab/anon_vma/cgroup/anon_vma(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.053288] remove   /kernel/slab/:tA-0003584/cgroup/task_struct(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.053412] remove   /kernel/slab/:t-0001024/cgroup/kmalloc-1024(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.053456] remove   /kernel/slab/sighand_cache/cgroup/sighand_cache(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.054162] remove   /kernel/slab/:tA-0001088/cgroup/signal_cache(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.054458] remove   /kernel/slab/:tA-0000704/cgroup/files_cache(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.055973] remove   /kernel/slab/sock_inode_cache/cgroup/sock_inode_cache(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.056069] remove   /kernel/slab/proc_inode_cache/cgroup/proc_inode_cache(1294:resolvconf-pull-resolved.service) (cgroup)
UDEV  [88.056103] remove   /kernel/slab/:tA-0000128/cgroup/pid(1294:resolvconf-pull-resolved.service) (cgroup)

Please check if this helps:

I can confirm that CONFIG_USB_STORAGE=y

While there I also checked for anything else that seems relevant:


I also compared these settings to the working TX2 and nothing seems different.

Sorry the link is to suggest disable CONFIG_USB_UAS. I have corrected it. Please disable it and try again.

Thanks, I can test this tomorrow. However, on the working TX2, this setting is enabled.

I just realized I don’t know how to change this setting. Any resources you could point me to?

CONFIG_USB_UAS is a kernel feature/symbol. A symbol or feature is simply configured in the kernel source, and then compiled as a module or integrated to the kernel. Not all features/symbols can be in module format, but many can. Modules are easier to work with if they are supported. However, first check if the feature/symbol is already present:
zcat /proc/config.gz | egrep 'CONFIG_USB_UAS'
("=m" is present in the form of a module, “=y” is present in the form of integration into the kernel Image)

Typically, if the feature is not needed during boot, then this could be added as a kernel module (a simple file copy). If needed during boot, then typically you would either add the module to the initrd as well as the module directory, or else integrate this directly into the kernel (compiling a new kernel instead of a kernel module). Either way you would start with the existing kernel’s configuration, conveniently supplied via “/proc/config.gz”. Does your system already have CONFIG_USB_UAS? No need to build anything if it is there, although if boot is involved, then you might need to make the feature available earlier in the boot chain (Linux is actually the last part of the boot chain).

In the case of talking to a USB device after boot there is no need for the feature to be present early on.

My system already has CONFIG_USB_UAS.

$ zcat /proc/config.gz | egrep 'USB_UAS'

How do I unset it or remove it from this configuration? If I understand correctly, @DaneLLL is suggesting to try disabling it.

Please refer to kernel customization in development guide.
You can remove it from tegra_defconfig and rebuild kernel.

Sorry, just saw the above. lsusb uses a manufacturer ID and device ID. The 0001 is a manufacturer ID, the 0002 is a product ID. This is from the lsusb. Your device reported more than one component, and one of them was ID combination 0001:0002 (which implies it is a default which was never set up). Command line to lsusb sets this up in that format, e.g., “lsusb -d 0001:0002” queries only manufacturer 0001 devices, device type 0002

Yes, the above says the feature is integrated into your kernel, not as a loadable module, and @DaneLLL is saying to build a new kernel where everything is the same other than disabling that symbol, CONFIG_USB_UAS.

The documentation provides instructions for cross compiling a kernel on an Ubuntu host PC. One of the first things you’d do is set up your temporary build location. After that you’d set up the kernel configuration, followed by building the kernel. The choices for starting configuration will either be “make tegra_defconfig” (see the build docs, other options are involved to name output locations), or copying in the running system’s “/proc/config.gz” (after gunzip and rename to “.config”). Then editing that parameter, and setting CONFIG_LOCALVERSION="-tegra" (this can be a direct edit to your “.config”).

When you build the configured kernel there will be an “Image” file to either flash or copy in place, depending on circumstances. You can always ask for more information if the docs don’t provide enough information.

FYI, what I mentioned about editing CONFIG_LOCALVERSION in the “.config” file is so that the output of “uname -r” remains the same on both old and new kernels. “uname -r” is part of how the kernel finds modules. If this is the same, then generally you don’t need to install or worry about modules, and only worry about the Image file. If you change uname -r, then you have to also build and install all of the modules.

Whenever you are in an editor, and you find a feature (which is why I prefer “nconfig” which supports searching for symbols), then the “n” key will disable the feature (the “y” key sets “=y”, the “m” key sets “=m”, and you want “=n”).

FYI, before you start building a kernel I recommend installing the right ncurses package which is needed for most of the configuration editors:
sudo apt-get install libncurses5-dev

BTW, you can disable UAS for a specific device on the kernel command line as follows:


Substitute 152d with the vendorId and 0562 with the productId of the device you want to remove UAS from.

No need to recompile kernel.

I have modified the kernel as @DaneLLL suggested and I am still having the same issue.

$ zcat /proc/config.gz | grep USB_UAS
# CONFIG_USB_UAS is not set

Still the same output:

sudo journalctl -f
Jun 16 16:00:08 nx kernel: usb 1-2-port1: Cannot enable. Maybe the USB cable is bad?
Jun 16 16:00:08 nx kernel: usb 1-2-port1: Cannot enable. Maybe the USB cable is bad?
Jun 16 16:00:08 nx kernel: usb 1-2-port1: attempt power cycle
Jun 16 16:00:11 nx kernel: usb 1-2-port1: Cannot enable. Maybe the USB cable is bad?
Jun 16 16:00:12 nx kernel: usb 1-2-port1: Cannot enable. Maybe the USB cable is bad?
Jun 16 16:00:12 nx kernel: usb 1-2-port1: unable to enumerate USB device

Nothing shows up in lsusb. Not sure where to go from here. It’s not even seeing the device or vendor id, so udev rules don’t seem likely to help.

Are there other kernel modules that may be interfering with it?

When you say “nothing shows up in lsusb” do you mean the device isn’t showing up but other things are or literally “nothing”? If the device isn’t even showing up, then kernel modules, UAS, ACM, etc have no bearing. You’re never getting that far.

If you have a USB powered hub, try connecting the device to the hub then the hub to the NX.

1 Like

I meant the device doesn’t show up in lsusb. Every other USB device is there as I would expect. You’re right, it didn’t seem to be getting that far.

I actually just tried a USB hub earlier today and it finally works.

Unfortunately our system is pretty space limited so I would hope to not have to use a hub long term. What does this solution indicate and is there anything I can do to make it work without a hub?

Please share more information.

In this working case, do you use r32.4.2 or other version?
Also does it work on TX2 + default carrier board?