I am using a Jetson Orin Nano Super, and I am facing an issue with detecting and communicating with my Arduino board using the CH340 USB-to-serial converter. The system detects the CH340 converter at the USB level (confirmed by lsusb), but the corresponding serial device files (/dev/ttyUSB0 or /dev/ttyACM0) are not being created, preventing communication with the Arduino.
Details:
The device is detected by the system (lsusb shows: ID 1a86:7523 QinHeng Electronics CH340 serial converter), but no serial device files are created.
When running ls /dev/ttyUSB* or ls /dev/ttyACM*, the output shows that these device files do not exist.
I also attempted to check for the CH340 driver by running dmesg | grep ch34, but there was no relevant output indicating the driver is loaded.
Kernel Version:
I am using kernel version 5.15.148-tegra on the Jetson Orin Nano Super.
Where was this module compiled? Natively on the Jetson? Or cross compile from a PC? Normally this implies the architecture is wrong, e.g., trying to load an x86 desktop PC module on an arm64 Jetson.
I would suggest you updating kernel config in defconfig and built it into kernel image.
After replacing the kernel image on the devkit, zcat /proc/config.gz | grep CONFIG_USB_SERIAL_CH341 should shows CONFIG_USB_SERIAL_CH341=y at least.
Did you set ARCH during the build? If you did, then even if this is native, and even if it is correct as arm64, then this probably is the cause. If building natively, then do not specify ARCH. If you did not set ARCH during the native build, then something else is the issue.
Btw, if you do build this in and not as a module, then I suggest you rebuild all modules.
Even Raspberry Pi’s Linux ARM build includes the ch340 driver built into the kernel by default. I was hoping the Jetson linux kernel would also have it prebuilt, as this driver is widely used in the embedded field.