【xavier】USB serial port can not be recognized

I do have tried it with a USB hub(following ORICO usb hub), same result…


Need I try the original USB hub(provided with DRIVE AGX Xavier)? Or are there other solutions that I can try?

any further reply???

Hi,
We don’t hit the issue. Please share the adapter you use. Other users may have same device and can share experience.

Actually I have shared as mentioned above…(https://gd4.alicdn.com/imgextra/i4/741718256/O1CN01hLNa6r2ArIStTnvXk_!!741718256.jpg)… Thus, I should try to use the original NVIDIA’s hub?

If you monitor “dmesg --follow”, and then plug in the device, what log do you see? Not all serial devices are named with a “/dev/ttyUSB#” format…some get udev to rename the device. In other cases a different USB serial UART chip might need an extra driver.

Hi, @linuxdev @DaneLLL, here is the info:

nvidia@tegra-a:~$ dmesg --follow
....

[   36.610598] eqos 2490000.ether_qos eth0: Link is Up - 1Gbps/Full - flow control off
[   36.610650] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   58.842440] mttcan c320000.mttcan can1: Bitrate set
[   58.846164] mttcan_controller_config: ctrlmode 0
[   58.846184] mttcan c320000.mttcan can1: Bitrate set
[   58.857873] can: controller area network core (rev 20120528 abi 9)
[   58.858114] NET: Registered protocol family 29
[   58.864727] can: raw protocol (rev 20120528)
[   64.066428] mttcan c310000.mttcan can0: Bitrate set
[   64.086527] mttcan_controller_config: ctrlmode 10
[   64.086547] mttcan c310000.mttcan can0: Bitrate set
[   64.110613] mttcan c320000.mttcan can1: Bitrate set
[   64.131075] mttcan_controller_config: ctrlmode 10
[   64.131135] mttcan c320000.mttcan can1: Bitrate set
[   64.164622] EXT4-fs (vblkdev3): mounted filesystem with ordered data mode. Opts: (null)

[  158.380973] usb 1-1.1: new high-speed USB device number 7 using tegra-xusb
[  158.486047] usb 1-1.1: New USB device found, idVendor=09d7, idProduct=0100
[  158.486056] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  158.486060] usb 1-1.1: Product: NovAtel GPS Receiver
[  158.486064] usb 1-1.1: Manufacturer: NovAtel Inc.
[  158.486067] usb 1-1.1: SerialNumber: BMAW18060002P

nvidia@tegra-a:~$ lsusb 
Bus 002 Device 002: ID 05e3:0612 Genesys Logic, Inc. 
Bus 002 Device 003: ID 0781:558c SanDisk Corp. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 1546:01a8 U-Blox AG 
Bus 001 Device 005: ID 046d:c534 Logitech, Inc. Unifying Receiver
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
nvidia@tegra-a:~$ 
nvidia@tegra-a:~$ 
nvidia@tegra-a:~$ lsusb 
Bus 002 Device 002: ID 05e3:0612 Genesys Logic, Inc. 
Bus 002 Device 003: ID 0781:558c SanDisk Corp. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 1546:01a8 U-Blox AG 
Bus 001 Device 005: ID 046d:c534 Logitech, Inc. Unifying Receiver
Bus 001 Device 007: ID 09d7:0100 Novatel Wireless NovAtel FlexPack GPS receiver
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
nvidia@tegra-a:~$

And I see there are some udev rules:

nvidia@tegra-a:/etc/udev/rules.d$ ll
total 28
drwxr-xr-x 2 root root 4096 Jul  4  2017 ./
drwxr-xr-x 4 root root 4096 Nov 12 18:16 ../
-rw-r--r-- 1 root root 2338 Oct 17 11:59 60-vblkdev-storage.rules
-rw-r--r-- 1 root root  571 Oct 17 11:59 99-hide-disks.rules
-r--r--r-- 1 root root 2412 Oct 17 12:07 99-hyperion-storage.rules
-r--r--r-- 1 root root   35 Oct 17 12:07 99-nvpps.rules
-r--r--r-- 1 root root  588 Oct 17 12:07 99-usb-serial.rules
nvidia@tegra-a:/etc/udev/rules.d$ cat 99-usb-serial.rules 
SUBSYSTEM=="tty", ATTRS{idVendor}=="2639", ATTRS{idProduct}=="d00d", SYMLINK+="ttyUSBXSENS" RUN+="/bin/sh -c 'echo 0 > /sys/bus/usb-serial/devices/%k/latency_timer'"
SUBSYSTEM=="tty", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SYMLINK+="ttyUSBXSENS" RUN+="/bin/sh -c 'echo 0 > /sys/bus/usb-serial/devices/%k/latency_timer'"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="ttyUSBXSENS" RUN+="/bin/sh -c 'echo 0 > /sys/bus/usb-serial/devices/%k/latency_timer'"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="3329", SYMLINK+="ttyUSBRTC"
nvidia@tegra-a:/etc/udev/rules.d$

I do have remove the “99-usb-serial.rules” and restart, still not working…

I have also tried another DRIVE AGX Xavier, same result…

nvidia@tegra-a:~$ lsusb 
Bus 002 Device 002: ID 05e3:0612 Genesys Logic, Inc. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 1546:01a8 U-Blox AG 
Bus 001 Device 005: ID 046d:c534 Logitech, Inc. Unifying Receiver
Bus 001 Device 003: ID 09d7:0100 Novatel Wireless NovAtel FlexPack GPS receiver
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

nvidia@tegra-a:~$ dmesg --follow
...
ports DPO and FUA
[  170.832840]  sda: sda1
[  170.836841] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, supports DPO and FUA
[  170.837111] sd 0:0:0:0: [sda] Attached SCSI disk
[  207.053706] usb 1-1.1: USB disconnect, device number 3

[  280.493665] usb 1-1.1: new high-speed USB device number 7 using tegra-xusb
[  280.594746] usb 1-1.1: New USB device found, idVendor=09d7, idProduct=0100
[  280.594753] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  280.594785] usb 1-1.1: Product: NovAtel GPS Receiver
[  280.594788] usb 1-1.1: Manufacturer: NovAtel Inc.
[  280.594791] usb 1-1.1: SerialNumber: BMAW18060002P

Besides, I try to install NovAtel Linux USB Drivers, https://www.novatel.com/assets/Documents/Downloads/ngpsusbpackage.tar.gz, but got:

nvidia@tegra-a:~/Workspace/ngpsusbpackage$ sudo bash ngpsusb-install 
...
DKMS: add completed.
Error! Your kernel headers for kernel 4.9.131-rt93-tegra cannot be found.
Please install the linux-headers-4.9.131-rt93-tegra package,
or use the --kernelsourcedir option to tell DKMS where it's located
Error! Your kernel headers for kernel 4.9.131-rt93-tegra cannot be found.
Please install the linux-headers-4.9.131-rt93-tegra package,
or use the --kernelsourcedir option to tell DKMS where it's located
dpkg: error processing package ngpsusbpackage (--install):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 ngpsusbpackage

And seems that hard to fetch linux-headers-4.9.131-rt93-tegra

It isn’t clear which log is specifically occurring on plug in of that device, but I suspect this is because the USB cable is hosting more than one device type. Is it correct that this is the only dmesg text which occurred as a result of connecting the cable?

[  280.493665] usb 1-1.1: new high-speed USB device number 7 using tegra-xusb
[  280.594746] usb 1-1.1: New USB device found, idVendor=09d7, idProduct=0100
[  280.594753] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  280.594785] usb 1-1.1: Product: NovAtel GPS Receiver
[  280.594788] usb 1-1.1: Manufacturer: NovAtel Inc.
[  280.594791] usb 1-1.1: SerialNumber: BMAW18060002P

Some other devices showed up, but may not be part of this and I’d like to make sure I’m looking at the right device. For example, “sda1” is a disk partition…perhaps the device has a writable partition, but perhaps this is not from plugging in the device. There is also some “mttcan” text, and this would probably be a CAN bus (looks like a network device in “ifconfig” if it is configured).

The actual NovAtel device is a custom USB device needing a custom driver, and is not an ordinary serial UART. Underneath this customization there may indeed be an ordinary serial UART, but the plug-n-play information published by the device upon plugin is such that generic drivers cannot be used. If this is the serial device, then you’ll need the NovAtel driver to get the ttyUSB# to show up. USB has seen the device connect and has reported the specifications, but nothing took ownership (there is no driver, or else the customization of the information prevented the generic driver from recognizing it can handle the device).

I’m thinking there is more software you need to install for this, but keep in mind that desktop PC drivers won’t work on this architecture. If you go to the device’s support web site, then you’ll need the arm64/aarch64 drivers. If the CAN device is part of this, then you may also need user space software to talk to the CAN interface.

All your reply are correct, and that’s dmesg info from NovAtel (I separated them by several empty lines).

Currently we’re trying to install NovAtel USB Driver, no any official arm64/aarch64 release.

Any suggestions?

Fixed by installing usb-serial-simple.ko, which contains novatel_gps

nvidia@tegra-a:~$ sudo modprobe usbserial
nvidia@tegra-a:~$ sudo insmod usb-serial-simple.ko 
nvidia@tegra-a:~$ dmesg
...
[ 9421.234635] usbcore: registered new interface driver usbserial
[ 9424.247233] usbcore: registered new interface driver usb_serial_simple
[ 9424.247273] usbserial: USB Serial support registered for carelink
[ 9424.247294] usbserial: USB Serial support registered for zio
[ 9424.247316] usbserial: USB Serial support registered for funsoft
[ 9424.247336] usbserial: USB Serial support registered for flashloader
[ 9424.247381] usbserial: USB Serial support registered for google
[ 9424.247427] usbserial: USB Serial support registered for libtransistor
[ 9424.247470] usbserial: USB Serial support registered for vivopay
[ 9424.247514] usbserial: USB Serial support registered for moto_modem
[ 9424.247552] usbserial: USB Serial support registered for motorola_tetra
[ 9424.247591] usbserial: USB Serial support registered for novatel_gps
[ 9424.247630] usbserial: USB Serial support registered for hp4x
[ 9424.247666] usbserial: USB Serial support registered for suunto
[ 9424.247702] usbserial: USB Serial support registered for siemens_mpi

Then NovAtel can successfully attached to /dev/ttyUSB0…2

[ 1361.124082] usb_serial_simple 1-1.1:1.0: device disconnected
[ 1364.157877] usb 1-1.1: new high-speed USB device number 8 using tegra-xusb
[ 1364.258824] usb 1-1.1: New USB device found, idVendor=09d7, idProduct=0100
[ 1364.258832] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1364.258835] usb 1-1.1: Product: NovAtel GPS Receiver
[ 1364.258837] usb 1-1.1: Manufacturer: NovAtel Inc.
[ 1364.258839] usb 1-1.1: SerialNumber: BMAW18060002P
[ 1364.260571] usb_serial_simple 1-1.1:1.0: novatel_gps converter detected
[ 1364.260797] usb 1-1.1: novatel_gps converter now attached to ttyUSB0
[ 1364.261169] usb 1-1.1: novatel_gps converter now attached to ttyUSB1
[ 1364.261388] usb 1-1.1: novatel_gps converter now attached to ttyUSB2

Fetch usb-serial-simple.ko by kernel cross-compilation, only need change following configuration, adding line 483

$ vim drive-oss-src/kernel/arch/arm64/configs/tegra_gnu_linux_defconfig
...
475 CONFIG_USB_SERIAL=m
476 CONFIG_USB_SERIAL_CH341=m
477 CONFIG_USB_SERIAL_CP210X=m
478 CONFIG_USB_SERIAL_FTDI_SIO=m
479 CONFIG_USB_SERIAL_GARMIN=m
480 CONFIG_USB_SERIAL_KEYSPAN=m
481 CONFIG_USB_SERIAL_PL2303=m
482 CONFIG_USB_SERIAL_XSENS_MT=m
483 USB_SERIAL_SIMPLE=m
484 CONFIG_USB_HSIC_USB4604=y
485 CONFIG_DUAL_ROLE_USB_INTF=y
486 CONFIG_USB_GADGET=y
...
1 Like

I have a device ,connect with RS232 to usb serial cable(067b:23c3 Prolific),but don’t find a ttyUSB device in AGX Xavier.

ai@ai-desktop:~$ lsusb
Bus 002 Device 006: ID 05e3:0626 Genesys Logic, Inc.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 008: ID 067b:23c3 Prolific Technology, Inc.
Bus 001 Device 007: ID 046d:c534 Logitech, Inc. Unifying Receiver
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

ai@ai-desktop:~$ ls /dev/tty*
/dev/tty /dev/tty16 /dev/tty24 /dev/tty32 /dev/tty40 /dev/tty49 /dev/tty57 /dev/tty8 /dev/ttyp6 /dev/ttypf
/dev/tty0 /dev/tty17 /dev/tty25 /dev/tty33 /dev/tty41 /dev/tty5 /dev/tty58 /dev/tty9 /dev/ttyp7 /dev/ttyS0
/dev/tty1 /dev/tty18 /dev/tty26 /dev/tty34 /dev/tty42 /dev/tty50 /dev/tty59 /dev/ttyGS0 /dev/ttyp8 /dev/ttyS1
/dev/tty10 /dev/tty19 /dev/tty27 /dev/tty35 /dev/tty43 /dev/tty51 /dev/tty6 /dev/ttyp0 /dev/ttyp9 /dev/ttyS2
/dev/tty11 /dev/tty2 /dev/tty28 /dev/tty36 /dev/tty44 /dev/tty52 /dev/tty60 /dev/ttyp1 /dev/ttypa /dev/ttyS3
/dev/tty12 /dev/tty20 /dev/tty29 /dev/tty37 /dev/tty45 /dev/tty53 /dev/tty61 /dev/ttyp2 /dev/ttypb /dev/ttyTCU0
/dev/tty13 /dev/tty21 /dev/tty3 /dev/tty38 /dev/tty46 /dev/tty54 /dev/tty62 /dev/ttyp3 /dev/ttypc /dev/ttyTHS0
/dev/tty14 /dev/tty22 /dev/tty30 /dev/tty39 /dev/tty47 /dev/tty55 /dev/tty63 /dev/ttyp4 /dev/ttypd /dev/ttyTHS1
/dev/tty15 /dev/tty23 /dev/tty31 /dev/tty4 /dev/tty48 /dev/tty56 /dev/tty7 /dev/ttyp5 /dev/ttype /dev/ttyTHS4

What is the exact serial cable (a model number would help)? Is this cable plugged in (USB side) to the Xavier?

@ yyjqr789
What if you use usb-C [(J512) AGX recovery port] to USB-A [at host PC] connection?
it should create /dev/ttyACM0 device that could be accessed e.g.

sudo apt install picocom -y
sudo picocom /dev/ttyACM0

This is some dmesg info . PL2303GT chip from Taiwan. usb side is plugged in Xavier, another side is connected to GNSS Device.

[16129.625652] usb 1-2.2: New USB device found, idVendor=046d, idProduct=c534
[16129.625668] usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[16129.625675] usb 1-2.2: Product: USB Receiver
[16129.625680] usb 1-2.2: Manufacturer: Logitech
[16129.630377] input: Logitech USB Receiver as /devices/3610000.xhci/usb1/1-2/1-2.2/1-2.2:1.0/0003:046D:C534.0003/input/input8
[16129.691843] hid-generic 0003:046D:C534.0003: input,hidraw0: USB HID v1.11 Keyboard [Logitech USB Receiver] on usb-3610000.xhci-2.2/input0
[16129.695729] input: Logitech USB Receiver as /devices/3610000.xhci/usb1/1-2/1-2.2/1-2.2:1.1/0003:046D:C534.0004/input/input9
[16129.755021] hid-generic 0003:046D:C534.0004: input,hidraw1: USB HID v1.11 Mouse [Logitech USB Receiver] on usb-3610000.xhci-2.2/input1
[16129.858023] usb 1-2.3: new full-speed USB device number 8 using tegra-xusb
[16129.880332] usb 1-2.3: New USB device found, idVendor=067b, idProduct=23c3
[16129.880347] usb 1-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[16129.880355] usb 1-2.3: Product: USB-Serial Controller
[16129.880361] usb 1-2.3: Manufacturer: Prolific Technology Inc.
[16129.880367] usb 1-2.3: SerialNumber: BKCNb19C116
[16130.046262] usb 2-1: usb_suspend_both: status 0
[16130.047526] usb usb2: usb_suspend_both: status 0
[16130.270143] usb 2-1: usb_suspend_both: status 0
[16130.270572] usb usb2: usb_suspend_both: status 0
[16130.446269] usb 2-1: usb_suspend_both: status 0

Thanks.Recently, I just use Xavier to connect to a GNSS Device with RS232-USB cable, not communicate with PC.

Is this a hard wired custom solution, or is this just a USB cable you can unplug and replug? Because the USB side is connected to the Jetson it means the Jetson needs the driver, but if this is part of a custom hardware solution the requirements may differ versus if this is just a USB plug being inserted into a known working USB port (I am guessing it is, but want to confirm).

This part of the log shows USB is correctly functioning, but does not mention a driver:

USB is a “hot plug” system, and when the device reports its specs, USB broadcasts what the device is. If a driver can handle the broadcast device, then that driver would take ownership of the device. I see the broadcast, but I do not see a driver taking ownership (the driver is actually separate from USB other than talking through USB).

For reference, I found this information about the driver:
https://patchwork.kernel.org/project/linux-usb/patch/20190213123000.4656-1-charlesyeh522@gmail.com/

I am not positive, but I believe this kernel config enables the driver:
USB_SERIAL_PL2303

On your Jetson what do you see from:
zcat /proc/config.gz | grep -i USB_SERIAL_PL2303
(I ask because I did not see a log of the creation of a UART device in “/dev”, but a TX2 I looked at had this configured as a module by default)

Also, with this device plugged in, what do you see from “lsmod”?

Incidentally, I don’t think there is any USB suspend issue from the above, but it is rather common for low power or suspend modes of USB devices to break. Even if this was a problem you’d still have the “/dev/tty...something serial...”, and we need to identify the device special file to continue (or identify that the driver failed to load and thus there is no device special file).

Before I use this cable, shown as picture. config has PL2303,but doesn’t have a ttyUSB device . Now I use a FTDI chip RS232-USB cable ,it 's OK.The problem I will continue to check ,but I think it’s more about the driver or the PL2303 chip.

ai@ai-desktop:~$ zcat /proc/config.gz | grep -i USB_SERIAL_PL2303
CONFIG_USB_SERIAL_PL2303=m
ai@ai-desktop:~$ lsmod
Module Size Used by
bnep 16562 2
fuse 103841 3
ftdi_sio 47837 1
zram 26166 8
u3v_drv 67021 1
mvUniversalForEthernet 201179 0
xt_tcpudp 4182 2
iptable_filter 2481 1
overlay 48691 0
spidev 13282 0
binfmt_misc 13103 1
userspace_alert 5665 0
nvgpu 1580772 41
bluedroid_pm 13912 0
ip_tables 19441 1 iptable_filter
x_tables 28951 3 ip_tables,iptable_filter,xt_tcpudp
ai@ai-desktop:~$ dmesg |grep ttyU*
[ 0.000000] Kernel command line: console=ttyTCU0,115200 video=tegrafb no_console_suspend=1 earlycon=tegra_comb_uart,mmio32,0x0c168000 gpt tegra_fbmem=0x800000@0xa069d000 lut_mem=0x2008@0xa0698000 usbcore.old_scheme_first=1 tegraid=19.1.2.0.0 maxcpus=8 boot.slot_suffix=_b boot.ratchetvalues=0.4.2 vpr_resize sdhci_tegra.en_boot_part_access=1 quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 rootfstype=ext4
[ 0.001235] console [tty0] enabled
[ 1.729381] 3100000.serial: ttyTHS0 at MMIO 0x3100000 (irq = 51, base_baud = 0) is a TEGRA_UART
[ 1.730875] 3110000.serial: ttyTHS1 at MMIO 0x3110000 (irq = 52, base_baud = 0) is a TEGRA_UART
[ 1.731816] 3140000.serial: ttyTHS4 at MMIO 0x3140000 (irq = 53, base_baud = 0) is a TEGRA_UART
[ 1.733077] console [ttyTCU0] enabled
[ 11.163659] usb 1-2.1: FTDI USB Serial Device converter now attached to ttyUSB0

FTDI chipsets always seem to have a driver, and seem fairly standardized. The PL2303 would use a different driver, but if it is present, then upon plugin of the USB side you should see the name of the “/dev/tty*” created for this.

Note that it is the load of the driver for the serial UART (which only occurs after USB announces the device) which produces the file in “/dev”. Different drivers might use a different naming convention, and so I don’t know if your driver actually creates a “/dev/ttyUSB#”, or perhaps some other naming convention.

The zcat command seems to show you have the driver in module format. I see the module “ftdi_sio” is loaded, but don’t see anything which is for the PL2303…but if the PL2303 is an ftdi chipset sold under the PL2303 branding, then it may be that the ftdi_sio is actually the driver (but with some name changes). On the other hand, from what I can see, the PL2303 uses a different driver in the kernel source (not the FTDI driver).

If you run command “dmesg --follow”, and specifically watch this as you plug in the PL2303, what do you see? If it is something for “FTDI”, then things are going well; if not, then you may be missing a driver (and the “FTDI” log would be for a different UART).

I comment to fix my previous mistake, it should be “CONFIG_USB_SERIAL_SIMPLE=m” instead of “USB_SERIAL_SIMPLE=m”