Connecting GPS USB devices to NVIDIA DRIVE AGX Orin

Please provide the following info (tick the boxes after creating this topic):
Software Version
DRIVE OS 6.0.8.1
DRIVE OS 6.0.6
DRIVE OS 6.0.5
DRIVE OS 6.0.4 (rev. 1)
DRIVE OS 6.0.4 SDK
other

Target Operating System
Linux
QNX
other

Hardware Platform
DRIVE AGX Orin Developer Kit (940-63710-0010-300)
DRIVE AGX Orin Developer Kit (940-63710-0010-200)
DRIVE AGX Orin Developer Kit (940-63710-0010-100)
DRIVE AGX Orin Developer Kit (940-63710-0010-D00)
DRIVE AGX Orin Developer Kit (940-63710-0010-C00)
DRIVE AGX Orin Developer Kit (not sure its number)
other

SDK Manager Version
1.9.3.10904
other

Host Machine Version
native Ubuntu Linux 20.04 Host installed with SDK Manager
native Ubuntu Linux 20.04 Host installed with DRIVE OS Docker Containers
native Ubuntu Linux 18.04 Host installed with DRIVE OS Docker Containers
other

Hi,
I’m trying to connect my u-blox gps devices (F9P, noticed that on your supported accessores only F9K is present: DRIVE AGX Orin Sensors & Accessories | NVIDIA Developer) to the NVIDIA DRIVE AGX Orin.
I already managed to connect the devices to my ubuntu linux laptop and use them within DriveWorks SDK as gps.uart devices and it worked.
over my laptop the devices are supported by the usb drivers for cdc_acm, ch341 (in bold):

user@user-Legion-9-16IRX8:~/git/ab_l2pp_dw/new_sw_arch/l2-sensor-docker$ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 008: ID 05e3:0626 Genesys Logic, Inc. USB3.1 Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 048d:c980 Integrated Technology Express, Inc. ITE Device(8258)
Bus 001 Device 004: ID 0bda:5815 Realtek Semiconductor Corp. Smart Antenna Controller
Bus 001 Device 003: ID 046d:c246 Logitech, Inc. Gaming Mouse G300
Bus 001 Device 002: ID 17ef:f006 Lenovo Zephyr for ZhanLu
**Bus 001 Device 018: ID 1546:01a9 U-Blox AG u-blox GNSS receiver**
**Bus 001 Device 017: ID 1a86:7523 QinHeng Electronics CH340 serial converter**
Bus 001 Device 016: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 008: ID 8087:0033 Intel Corp.
Bus 001 Device 007: ID 10a5:9800 FPC FPC Sensor Controller L:0002 FW:27.26.23.42
Bus 001 Device 006: ID 04f2:b7b6 Chicony Electronics Co., Ltd Integrated Camera
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

user@user-Legion-9-16IRX8:~/git/ab_l2pp_dw/new_sw_arch/l2-sensor-docker$ lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 10000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/7p, 20000M/x2
    |__ Port 2: Dev 8, If 0, Class=Hub, Driver=hub/4p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
    |__ Port 2: Dev 16, If 0, Class=Hub, Driver=hub/4p, 480M
        **|__ Port 1: Dev 17, If 0, Class=Vendor Specific Class, Driver=ch341, 12M**
**        |__ Port 3: Dev 18, If 0, Class=Communications, Driver=cdc_acm, 12M**
**        |__ Port 3: Dev 18, If 1, Class=CDC Data, Driver=cdc_acm, 12M**
    |__ Port 3: Dev 2, If 2, Class=Human Interface Device, Driver=usbhid, 480M
    |__ Port 3: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 480M
    |__ Port 3: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 480M
    |__ Port 4: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 4: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 5: Dev 4, If 1, Class=Application Specific Interface, Driver=, 480M
    |__ Port 5: Dev 4, If 0, Class=Vendor Specific Class, Driver=, 480M
    |__ Port 6: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 12: Dev 6, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 12: Dev 6, If 2, Class=Application Specific Interface, Driver=, 480M
    |__ Port 12: Dev 6, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 13: Dev 7, If 0, Class=Vendor Specific Class, Driver=, 480M
    |__ Port 14: Dev 8, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 14: Dev 8, If 1, Class=Wireless, Driver=btusb, 12M

However, when I plug the devices to the NVIDIA DRIVE AGX Orin, lsusb returns:

nvidia@tegra-ubuntu:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 046d:c534 Logitech, Inc. Unifying Receiver
**Bus 001 Device 008: ID 1546:01a9 U-Blox AG USB2.1 Hub**
**Bus 001 Device 007: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter**
Bus 001 Device 006: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
nvidia@tegra-ubuntu:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
    |__ Port 3: Dev 6, If 0, Class=Hub, Driver=hub/4p, 480M
        **|__ Port 1: Dev 7, If 0, Class=Vendor Specific Class, Driver=, 12M**
**        |__ Port 3: Dev 8, If 0, Class=Communications, Driver=, 12M**
**        |__ Port 3: Dev 8, If 1, Class=CDC Data, Driver=, 12M**
    |__ Port 4: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 4: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M

You can see that the kernel didn’t assign anything under “Driver” to the devices.
Also, when searching for the available drivers in the kernel I noticed that cdc-acm,ch341 drivers are missing:

nvidia@tegra-ubuntu:~$ find /lib/modules/$(uname -r) -type f -name "*.ko" | grep -i usb
/lib/modules/5.15.98-rt-tegra/kernel/drivers/net/usb/r8152.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/net/usb/cdc_ether.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/net/usb/ax88179_178a.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/net/usb/usbnet.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/net/usb/asix.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/net/usb/r8153_ecm.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/net/usb/cdc_subset.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/net/usb/cdc_ncm.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/media/usb/uvc/uvcvideo.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/usb/gadget/udc/tegra-xudc.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/usb/gadget/function/usb_f_rndis.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/usb/gadget/function/usb_f_ecm.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/usb/gadget/function/usb_f_mass_storage.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/usb/gadget/function/usb_f_ncm.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/usb/gadget/function/usb_f_acm.ko
/lib/modules/5.15.98-rt-tegra/kernel/drivers/usb/gadget/libcomposite.ko

What I already tried:
I tried adding rules to the /etc/udev for my specific devices however it didn’t help (since the drivers are missing as I see it)
I tried copying the required .ko files from a different tegra version (older one) but since the versions mismatch it didn’t work.

Can you please instruct on how to add drivers to the kernel or a workaround? These are basic usb devices.

Thanks.

Dear @al.es,
I see /drive/drive-linux/kernel/preempt_rt/modules/5.15.98-rt-tegra/kernel/drivers/usb/class/cdc-acm.ko in DRIVE OS 6.0.8.1 docker. does that help?

Hi @SivaRamaKrishnaNV,
Thanks for replying.
I also see the file in the docker container. However, it’s not present in the NVIDIA DRIVE AGX Orin after flashing. Is this an issue in my target installation only or that’s the default installation?

Anyway, performing the following commands on the target device installed it and it’s now working:

sudo mkdir -p /lib/modules/5.15.98-rt-tegra/kernel/drivers/usb/class
sudo cp -v cdc-acm.ko /lib/modules/5.15.98-rt-tegra/kernel/drivers/usb/class
sudo depmod -a

That’s the behaviour of default installation.

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