Ubuntu22.04安装CH343驱动并创建udev规则

时间:2024-11-20 18:23:18

驱动说明

Linux系统提供CH34*系列 USB UART 设备配合使用的默认 CDC-ACM 驱动程序。驱动程序文件名为CDC-ACM。CDC-ACM 驱动程序控制特定设备的能力有限。此通用驱动程序不了解特定设备协议。因此,设备制造商可以创建能够访问设备特定功能集(例如硬件流控制或 GPIO 功能)的替代或自定义驱动程序。
驱动文件下载:https://github.com/WCHSoftGroup/ch343ser_linux
或:百度云 提取码:nc2m

安装步骤

安装步骤参考README.md:

#1、解压文件后打开终端
#2、切换到“ch343ser_linux/driver”目录
#3、编译驱动程序,成功后将看到模块“ch343.ko”
make 
#4、输入“sudo make load”或“sudo insmod ch343.ko”以动态加载驱动程序
sudo make load  
#5、 使驱动程序永久工作
sudo make install 
#6、卸载驱动程序
sudo make unload # 或sudo rmmod ch343.ko
#7、删除驱动程序
sudo make uninstall

注意事项

编译注意:运行第五步编译时可能会出现报错如:(6.1.83是系统内核,每个人的版本可能不一样)
/lib/modules/6.1.83/build: No such file or directory. Stop

/lib/modules/6.1.83/build: No such file or directory.  Stop

解决办法:
手动创建它,链接到/usr/src/linux-headers-6.1.83目录:

sudo ln -s /usr/src/linux-headers-6.1.83 /lib/modules/6.1.83/build

操作注意:如果接入设备后仍无法识别为ttyCH34*USB0设备,需要先卸载CDC-ACM 驱动,避免系统先识别成CDC-ACM 设备
检查系统是否识别为CDC-ACM:

lsmod | grep cdc_acm

卸载CDC-ACM 驱动

sudo rmmod cdc_acm

如果卸载失败,可尝试加入黑名单,让系统不识别为ttyACM*,从而不再干扰 CH343设备

1、创建黑名单文件
sudo nano /etc/modprobe.d/blacklist_cdc_acm.conf
2、添加内容
blacklist cdc_acm
3、更新initramfs
sudo update-initramfs -u
4、重启系统以应用更改,并确认cdc_acm模块没有加载:
lsmod | grep cdc_acm  # 不应有输出

插入设备使用

完成上述操作后重新插入设备并检查输出:

lsmod | grep ch343 #查看驱动是否已加载
dmesg | tail
ls /dev

创建设备别名

插入设备后输入”lsusb“获取设备的详细信息(Vendor ID 和 Product ID),可以观测"QinHeng"这一项输出。

Bus 002 Device 002: 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 003: ID 046d:c534 Logitech, Inc. Unifying Receiver
Bus 001 Device 004: ID 1a86:55d4 QinHeng Electronics USB Single Serial #here
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

1a86是设备Vendor ID
7523是设备的Product ID
使用指令查看设备信息

udevadm info /dev/ttyCH343USB0

输出
在这里插入图片描述

记录下ID_VENDOR_ID=1a86、ID_MODEL_ID=55d4、和ID_SERIAL_SHORT=0001
创建规则文件:

sudo nano /etc/udev/rules.d/99-ch343.rules
#添加内容
KERNEL=="ttyCH343USB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523",ATTRS{serial}=="0001", MODE:="0777", GROUP:="dialout", SYMLINK+="ttyUSBCH343_name"

保存文件后重新加载udev规则

sudo udevadm control --reload-rules
sudo udevadm trigger

拔插设备后可以在系统中使用”ll /dev“查询设备名已重命名为/dev/ttyUSBCH343_name。
祝大家debug顺利!