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

ops/2024/11/23 18:50:46/

驱动说明

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顺利!


http://www.ppmy.cn/ops/136111.html

相关文章

C# 常用三方库

C# 第三方库 C# 第三方库日志工具库REST 客户端JSON 处理App.config 文件自定义ConfigSection 的 auto 配置ORM 工具嵌入数据库条码/二维码通讯类组件串口通讯 https://www.nuget.org/packages/GodSharp.SerialPort/Modbus 通讯组件西门子通讯组件Fins协议通讯组件, 报表组件包…

深入探索Apache JMeter:HashTree结构解析与应用

Apache JMeter的TestPlan .jmx文件中,HashTree是用于组织和管理测试计划元素的关键数据结构。以下是对HashTree及其在JMeter中的作用和特点的详细解释: 一、HashTree的定义与作用 定义:HashTree是JMeter中用于存储和管理测试计划元素的一种…

解决vue-pdf的签章不显示问题

在使用vue-pdf 4.3.0时发现上传一般的普通pdf正常预览,但是上传带有红头文件的和和特殊字体的pdf无法正常内容显示,文字丢失问题。 1、查看控制台报错信息 2、缺少字体原因 getNumPages(url) {var loadingTask pdf.createLoadingTask({url: url,//引入…

【大数据学习 | Spark-Core】Spark的分区器(HashPartitioner和RangePartitioner)

之前学过的kv类型上面的算子 groupby groupByKey reduceBykey sortBy sortByKey join[cogroup left inner right] shuffle的 mapValues keys values flatMapValues 普通算子,管道形式的算子 shuffle的过程是因为数据产生了打乱重分,分组、排序、join等…

mysql in查询大数据量业务无法避免情境下优化

在 MySQL 中,IN 查询操作广泛用于从数据库中检索符合条件的多条记录,但当涉及到大数据量的 IN 查询时,性能可能会显著下降。特别是当 IN 子句中的元素数量非常大时,MySQL 需要对每个元素进行匹配,这会导致查询变得非常…

ffmpeg视频滤镜:提取缩略图-framestep

滤镜描述 官网地址 > FFmpeg Filters Documentation 这个滤镜会间隔N帧抽取一帧图片&#xff0c;因此这个可以用于设置视频的缩略图。总体上这个滤镜比较简单。 滤镜使用 滤镜参数 framestep AVOptions:step <int> ..FV....... set frame st…

单片机学习笔记 8. 矩阵键盘按键检测

更多单片机学习笔记&#xff1a;单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘 目录 0、实现的…

华为IPD流程管理体系L1至L5最佳实践-解读

该文档主要介绍了华为IPD流程管理体系&#xff0c;包括流程体系架构、流程框架实施方法、各业务流程框架示例以及相关案例等内容&#xff0c;旨在帮助企业建立高效、规范的流程管理体系&#xff0c;实现业务的持续优化和发展。具体内容如下&#xff1a; 1. 华为流程体系概述 -…