Some Arduino / USB Serial Converters use CH341 (or HL-340) which are not installed by the default jetpack. After struggling for a while, I solved the problem and decided to write this guide
Known Devices that might have this problem:
– Some Arduinos
– RS232 to USB serial converter
If you happen to have such device, by typing in command
lsusb
You might see “QinHeng Electronics HL-340 USB-Serial adapter”
I found out that HL-340 can be used after CH341 driver is enabled.
There was an outdated guide on eLinux for FTDI drivers. Fortunately, it can be easily applied to CH341 as well.
https://elinux.org/Jetson/Tutorials/Program_An_Arduino
Now,
download the source of your kernel from here at the bottom of the page
https://developer.nvidia.com/embedded/linux-tegra
extract the file, you will see kernel_src.tar.bz2 inside.
Extract kernel_src.tar.bz2 by
tar xvjf kernel_src.tar.bz2
cd into the extract folder, you will see hardware folder and a kernel folder
cd into kernel folder and then cd into kernel-4.4 folder
We then copy the config file to here
zcat /proc/config.gz > ./.config
edit the file,
find the line with “#CONFIG_USB_SERIAL_CH341”
uncomment it and change it to CONFIG_USB_SERIAL_CH341=m
Next, find the line CONFIG_LOCALVERSION= ,
make it CONFIG_LOCALVERSION=“-tegra”
This step is to avoid the version magic error.
Now,
make prepare
make modules_prepare
make M=drivers/usb/serial/
sudo cp drivers/usb/serial/ch341.ko /lib/modules/$(uname -r)/kernel
sudo depmod -a
Now plug in your serial device and type in dmesg | grep ch341
You should see the device attached to ttyUSB*
The procedure may also be applied to other serial devices, but I found ch341 one of the most common one.