最近在 Jetson Orin Nano 上接了个 CH341 的 USB 转串口模块,结果发现 /dev/ 下根本没有 ttyUSB* 设备。折腾了一下午,记录一下解决过程。
驱动安装
下载源码
首先得去 NVIDIA 官网下载对应版本的内核源码。我用的是 JetPack 6.1.x,所以去这里找: https://developer.nvidia.com/embedded/jetson-linux-archive


下载完之后,通过 scp 传到 Jetson 上:
scp ./public_sources.tbz2 jetson@172.20.10.2:~/然后在 Jetson 上解压:
tar xjf public_sources.tbz2cd ~/Linux_for_Tegra/sourcetar xjf kernel_src.tbz2cd kernel/kernel-jammy-src编译驱动
接下来要配置内核,先把当前运行的内核配置导出来:
zcat /proc/config.gz > .config然后进入配置界面:
make menuconfig使用按键/可以进行驱动搜索,搜索CH341出现以下结果
Symbol: USB_SERIAL_CH341 [=n]Type : tristateDefined at drivers/usb/serial/Kconfig:106 Prompt: USB Winchiphead CH341 Single Port Serial Driver Depends on: USB_SUPPORT [=y] && USB [=y] && USB_SERIAL [=m] Location: -> Device Drivers -> USB support (USB_SUPPORT [=y]) -> USB Serial Converter support (USB_SERIAL [=m])make modules_preparemake M=drivers/usb/serial modules临时加载驱动
编译完成后,可以用 insmod 临时加载驱动测试一下。
sudo insmod drivers/usb/serial/usbserial.kosudo insmod drivers/usb/serial/ch341.ko注意 ch341.ko 依赖 usbserial.ko,所以要先加载 usbserial。
加载后可以用 lsmod 确认一下:
永久启用驱动
临时加载每次重启都得重新来一遍,太麻烦了。要让驱动开机自动加载,需要把编译好的模块装到系统里。
首先把编译好的 .ko 文件复制到系统模块目录:
sudo cp drivers/usb/serial/ch341.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial/sudo cp drivers/usb/serial/usbserial.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial/然后更新模块依赖关系:
sudo depmod -a接下来配置开机自动加载。创建一个配置文件:
sudo nano /etc/modules-load.d/ch341.conf在文件里写入:
usbserialch341保存退出后,重启系统验证一下:
sudo reboot重启后用 lsmod | grep ch341 检查,如果能看到 ch341 模块,说明配置成功了。插上 USB 设备,/dev/ttyUSB0 应该就会自动出现。
疑难
按理说到这里应该就能用了,但我插上 USB 设备后,/dev/ 下还是没有 ttyUSB0。
使用
dmesg | tail -30或
dmesg -w我比较喜欢使用dmesg -w然后拔插USB设备,查看日志变化
发现关键日志
[ 2930.075949] ch341 1-2.1:1.0: ch341-uart converter detected[ 2930.083122] usb 1-2.1: ch341-uart converter now attached to ttyUSB0[ 2930.150612] usb 1-2.1: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1[ 2930.153427] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0brltty是Linux系统中的盲文显示设备服务,它会自动检测并占用某些USB串口设备。CH340芯片恰好被brltty误识别为盲文设备,导致设备被占用后立即断开。
直接卸载即可
sudo apt remove brltty重新插上USB 设备,/dev/* 成功创建出ttyUSB0。
鲁公网安备37011302000501号