No ttyUSB / ttyACM shown after installed Jetpack6.0

Hardware: AGX Orin 64GB developer kit
Jetpack: 6.0

After i flashed jetpack 6.0, but found that neither ttyUSB / ttyACM are shown although there’re devices connected and shown via lsusb Any idea what happened? And how shall i resolve this issue?

Result of lsusb

Bus 002 Device 012: ID 8086:0b3a Intel Corp. Intel(R) RealSense(TM) Depth Camera 435i
Bus 002 Device 011: ID 8086:0b07 Intel Corp. RealSense D435
Bus 002 Device 013: ID 8086:0b5c Intel Corp. Intel(R) RealSense(TM) Depth Camera 455 
Bus 002 Device 014: ID 8086:0b07 Intel Corp. RealSense D435
Bus 002 Device 003: ID 0bda:0420 Realtek Semiconductor Corp. 4-Port USB 3.0 Hub
Bus 002 Device 016: ID 05e3:0626 Genesys Logic, Inc. USB3.1 Hub
Bus 002 Device 015: 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 0bda:5420 Realtek Semiconductor Corp. 4-Port USB 2.0 Hub
Bus 001 Device 003: ID 13d3:3549 IMC Networks Bluetooth Radio
Bus 001 Device 011: ID 046d:c22f Logitech, Inc. Logitech Cordless RumblePad 2
Bus 001 Device 010: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Bus 001 Device 009: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 008: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Result of ls /dev

autofs                 capture-isp-channel44  capture-vi-channel25  capture-vi-channel64  log           mmcblk0rpmb                   nvme0n1p3  stdin              tty41    ttypd        video14
block                  capture-isp-channel45  capture-vi-channel26  capture-vi-channel65  loop0         mqueue                        nvme0n1p4  stdout             tty42    ttype        video15
btrfs-control          capture-isp-channel46  capture-vi-channel27  capture-vi-channel66  loop1         net                           nvme0n1p5  tee0               tty43    ttypf        video16
bus                    capture-isp-channel47  capture-vi-channel28  capture-vi-channel67  loop10        ng0n1                         nvme0n1p6  teepriv0           tty44    ttyS0        video17
capture-isp-channel0   capture-isp-channel48  capture-vi-channel29  capture-vi-channel68  loop11        null                          nvme0n1p7  tegra_camera_ctrl  tty45    ttyS1        video18
capture-isp-channel1   capture-isp-channel49  capture-vi-channel3   capture-vi-channel69  loop2         nvgpu                         nvme0n1p8  tegra-soc-hwpm     tty46    ttyS2        video19
capture-isp-channel10  capture-isp-channel5   capture-vi-channel30  capture-vi-channel7   loop3         nvhost-as-gpu                 nvme0n1p9  tty                tty47    ttyS3        video2
capture-isp-channel11  capture-isp-channel50  capture-vi-channel31  capture-vi-channel70  loop4         nvhost-ctrl-gpu               nvpps0     tty0               tty48    ttyTCU0      video20
capture-isp-channel12  capture-isp-channel51  capture-vi-channel32  capture-vi-channel71  loop5         nvhost-ctrl-isp               nvsciipc   tty1               tty49    ttyTHS1      video21
capture-isp-channel13  capture-isp-channel52  capture-vi-channel33  capture-vi-channel8   loop6         nvhost-ctrl-isp-thi           port       tty10              tty5     ttyTHS2      video22
capture-isp-channel14  capture-isp-channel53  capture-vi-channel34  capture-vi-channel9   loop7         nvhost-ctrl-nvcsi             pps0       tty11              tty50    urandom      video23
capture-isp-channel15  capture-isp-channel54  capture-vi-channel35  char                  loop8         nvhost-ctrl-nvdla0            printer    tty12              tty51    v4l          video3
capture-isp-channel16  capture-isp-channel55  capture-vi-channel36  console               loop9         nvhost-ctrl-nvdla1            ptmx       tty13              tty52    v4l2-nvdec   video4
capture-isp-channel17  capture-isp-channel56  capture-vi-channel37  cpu_dma_latency       loop-control  nvhost-ctrl-pva0              ptp0       tty14              tty53    v4l2-nvenc   video5
capture-isp-channel18  capture-isp-channel57  capture-vi-channel38  cuse                  mapper        nvhost-ctrl-vi0               pts        tty15              tty54    vcs          video6
capture-isp-channel19  capture-isp-channel58  capture-vi-channel39  disk                  media0        nvhost-ctrl-vi0-thi           ptyp0      tty16              tty55    vcs1         video7
capture-isp-channel2   capture-isp-channel59  capture-vi-channel4   dri                   media1        nvhost-ctrl-vi1               ptyp1      tty17              tty56    vcs2         video8
capture-isp-channel20  capture-isp-channel6   capture-vi-channel40  efi_capsule_loader    media2        nvhost-ctrl-vi1-thi           ptyp2      tty18              tty57    vcs3         video9
capture-isp-channel21  capture-isp-channel60  capture-vi-channel41  fb0                   media3        nvhost-ctxsw-gpu              ptyp3      tty19              tty58    vcs4         watchdog
capture-isp-channel22  capture-isp-channel61  capture-vi-channel42  fd                    media4        nvhost-dbg-gpu                ptyp4      tty2               tty59    vcs5         watchdog0
capture-isp-channel23  capture-isp-channel62  capture-vi-channel43  full                  media5        nvhost-gpu                    ptyp5      tty20              tty6     vcs6         zero
capture-isp-channel24  capture-isp-channel63  capture-vi-channel44  fuse                  media6        nvhost-nvsched_ctrl_fifo-gpu  ptyp6      tty21              tty60    vcsa         zram0
capture-isp-channel25  capture-isp-channel7   capture-vi-channel45  gpiochip0             media7        nvhost-nvsched-gpu            ptyp7      tty22              tty61    vcsa1        zram1
capture-isp-channel26  capture-isp-channel8   capture-vi-channel46  gpiochip1             media8        nvhost-power-gpu              ptyp8      tty23              tty62    vcsa2        zram10
capture-isp-channel27  capture-isp-channel9   capture-vi-channel47  hidraw0               mem           nvhost-prof-ctx-gpu           ptyp9      tty24              tty63    vcsa3        zram11
capture-isp-channel28  capture-vi-channel0    capture-vi-channel48  hidraw1               mmcblk0       nvhost-prof-dev-gpu           ptypa      tty25              tty7     vcsa4        zram2
capture-isp-channel29  capture-vi-channel1    capture-vi-channel49  host1x-fence          mmcblk0boot0  nvhost-prof-gpu               ptypb      tty26              tty8     vcsa5        zram3
capture-isp-channel3   capture-vi-channel10   capture-vi-channel5   hugepages             mmcblk0boot1  nvhost-sched-gpu              ptypc      tty27              tty9     vcsa6        zram4
capture-isp-channel30  capture-vi-channel11   capture-vi-channel50  hwrng                 mmcblk0p1     nvhost-tsg-gpu                ptypd      tty28              ttyAMA0  vcsu         zram5
capture-isp-channel31  capture-vi-channel12   capture-vi-channel51  i2c-0                 mmcblk0p10    nvidia0                       ptype      tty29              ttyGS0   vcsu1        zram6
capture-isp-channel32  capture-vi-channel13   capture-vi-channel52  i2c-1                 mmcblk0p11    nvidiactl                     ptypf      tty3               ttyp0    vcsu2        zram7
capture-isp-channel33  capture-vi-channel14   capture-vi-channel53  i2c-2                 mmcblk0p12    nvidia-modeset                random     tty30              ttyp1    vcsu3        zram8
capture-isp-channel34  capture-vi-channel15   capture-vi-channel54  i2c-3                 mmcblk0p13    nvmap                         rfkill     tty31              ttyp2    vcsu4        zram9
capture-isp-channel35  capture-vi-channel16   capture-vi-channel55  i2c-4                 mmcblk0p14    nvme0                         rtc        tty32              ttyp3    vcsu5
capture-isp-channel36  capture-vi-channel17   capture-vi-channel56  i2c-5                 mmcblk0p15    nvme0n1                       rtc0       tty33              ttyp4    vcsu6
capture-isp-channel37  capture-vi-channel18   capture-vi-channel57  i2c-6                 mmcblk0p2     nvme0n1p1                     rtc1       tty34              ttyp5    vfio
capture-isp-channel38  capture-vi-channel19   capture-vi-channel58  i2c-7                 mmcblk0p3     nvme0n1p10                    shm        tty35              ttyp6    vga_arbiter
capture-isp-channel39  capture-vi-channel2    capture-vi-channel59  i2c-8                 mmcblk0p4     nvme0n1p11                    snd        tty36              ttyp7    video0
capture-isp-channel4   capture-vi-channel20   capture-vi-channel6   i2c-9                 mmcblk0p5     nvme0n1p12                    spidev0.0  tty37              ttyp8    video1
capture-isp-channel40  capture-vi-channel21   capture-vi-channel60  initctl               mmcblk0p6     nvme0n1p13                    spidev0.1  tty38              ttyp9    video10
capture-isp-channel41  capture-vi-channel22   capture-vi-channel61  input                 mmcblk0p7     nvme0n1p14                    spidev1.0  tty39              ttypa    video11
capture-isp-channel42  capture-vi-channel23   capture-vi-channel62  kmsg                  mmcblk0p8     nvme0n1p15                    spidev1.1  tty4               ttypb    video12
capture-isp-channel43  capture-vi-channel24   capture-vi-channel63  kvm                   mmcblk0p9     nvme0n1p2                     stderr     tty40              ttypc    video13

Best,
Samuel

Hi,
Looks like the device driver is absent. For Jetpack 6.0GA, we align with upstream kernel for the kernel configs. So the config for the device may not be enabled. Please investigate what configs are required for the device and check developer guide to rebuild kernel image.

Hi @DaneLLL

What are the steps to do the rebuilding of kernel image?

Best,
Samuel

Hi,
Please check the kernel section in developer guide:

Kernel — NVIDIA Jetson Linux Developer Guide 1 documentation

Hi @DaneLLL

I have read through the link you sent, but i have no idea which one to choose that can bring ttyUSB / ttyACM. I have totally no experience on kernel rebuilding. Perhaps you can give further guidance. Thank you

Best,
Samuel

Hi,
We are uncertain which configs are related. Would see if other users can share experience.

You may try Jetpack 5.1.3 and see if the device is up and running well. If yes, you can compare the kernel configs between the releases for further information.

Do you have “/proc/config.gz” on your running Jetson? That has the list of current kernel config symbols. You might be interested in some subset of what this produces:
zcat /proc/config.gz | egrep '(USB|FTDI|ACM)'
(probably you could skip the USB in the egrep, I imagine it will provide a lot of symbols not needed)

Mostly I think those could be built as a module and simply copied to the right location, but you’d have to start by matching your current system’s configuration. You’d also want to write down your current “uname -r”. The suffix of the “uname -r” would be something like “-tegra” on NVIDIA builds, but might not be anything on a mainline; /proc/config.gz contains your exact configuration with the exception that it does not copy CONFIG_LOCALVERSION, and the suffix of “uname -r” is the CONFIG_LOCALVERSION.

The short version is that if you have the matching kernel source, and you’ve matched config.gz, and added in the CONFIG_LOCALVERSION from the suffix of “uname -r”, then your kernel source config is exactly what you already have. At that point you can use a dependency aware editor (such as nconfig or menuconfig build targets) to enable the symbol you want in the form of a module (uses the m key in the editor), make sure the config is valid (“make modules_depend”), and build the modules target. You’d copy the resulting .ko module file to the Jetson, run “sudo depmod -a”, and it should then work.

There are lots of docs about kernel build, but the trick is to get the config correct before you build the modules. If you do this you can save a lot of work since you wouldn’t need to reinstall the entire kernel and all modules.

Will there be any fix on Jetpack 6.0 for this issue? Beacuse i also found that the Jetpack 6.0 has issues with using D435i and D455 camera(s) as well, for these are cameras coming with inbuilt imu. I am told to solve the D435i and D455 camera(s) issue using GitHub - IntelRealSense/realsense_mipi_platform_driver: Intel® RealSense™ camera driver for GMSL* interface , but i am also facing installation hiccup on this solution. However, the previous Jetpack version totally don’t have these issues at all.

Really wish there’ll be fix release as soon as possible.

Hi,
Do you know what configs have to be enabled for the function? We would like to align the default config with upstream kernel, so may not have the configs enabled by default. But would like to list it as an option in elinux wiki:

Jetson/L4T/r36.3.x patches - eLinux.org

Nope, totally have no idea what configs need to be enabled. Is the elinux wiki that currently composed with are those missing functions that need to be fixed? As i saw there’re quite recent posts.

  1. For the realsense D435i and D455, i still have no idea at all.

  2. For the ttyUSB / ttyACM that is missing, it’s more related to CH340 or L2303 drivers.

https://forums.developer.nvidia.com/t/missing-of-support-ch340-or-l2303-drivers-on-jetpack-6-0/299336?u=happysamuel

Solution for (2) QinHeng Electronics CH340 serial converter, do the steps below:

Step 1 - Download file

Check corresponding version & release

head -n 1 /etc/nv_tegra_release

Download via

wget https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v3.0/sources/public_sources.tbz2

Step 2 - Extract Files

cd ~/Downloads
tar xf public_sources.tbz2
cd Linux_for_Tegra/source
tar xf kernel_src.tbz2
cd kernel/kernel-jammy-src

Step 3 - Generate and Edit .config

cd ~/Downloads/Linux_for_Tegra/source/kernel/kernel-jammy-src
make defconfig
gedit .config

Search for the CH341, uncomment it and enable it as module
CONFIG_USB_SERIAL_CH341=m
Save the file after finish editing.

Step 5 - Build the module

make -j$(nproc) modules

Step 6 - Copy & Paste ch341.ko

cd ~/Downloads/Linux_for_Tegra/source/kernel/kernel-jammy-src/drivers/usb/serial/
sudo cp ch341.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial/
sudo depmod -a

Step 6 - Reboot

reboot

Now shall be able to see the QinHeng Electronics CH340 serial converter being registered as /dev/ttyUSB*

In case, still unable to see it, do extra steps:

systemctl stop brltty-udev.service
sudo systemctl mask brltty-udev.service
systemctl stop brltty.service
systemctl disable brltty.service
sudo apt remove brltty

there is no #CONFIG_USB_SERIAL_CH341=m in jetson_36.4 how should i d

What do you see from “zcat /proc/config.gz | grep 'CH341'”, and “uname -r”?

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