Ubuntu22.04使用ch340的驱动问题

原因

看了挺多东西,折腾了一段时间,发现问题有以下几种

  1. Ubuntu22.04自带的ch34x驱动版本过老,使用ls /lib/modules/$(uname -r)/kernel/drivers/usb/serial命令查看Ubutnu自带驱动,找到ch341.ko发现是2013年的,先把旧驱动删除sudo rm ch341.ko
  2. brltty进程占用了串口
  3. gcc版本过低

解决

先到沁恒电子的官网下载驱动,下载完是这样子的。

但是!!!

官网的驱动包不支持我们版本的内核驱动,使用下面的命令查看内核版本,我的版本是5.19.0-43-generic

uname -r

到这里查看ch341的源码,并且复制到我们driver/ch341.c里面,把原有的代码完全替代

https://elixir.bootlin.com/linux/v5.15/source/drivers/usb/serial/ch341.c

我的版本是5.19.0-43-generic,所以是这样选的

然后在命令行运行

make -C /lib/modules/版本/build  M=/home/计算机名/CH341SER_LINUX/driver

这时候可能会出现gcc版本太低的问题,先看版本

gcc --version

确认已安装的 GCC 版本:

运行以下命令,列出系统上已安装的 GCC 版本:

ls /usr/bin/gcc*

下载gcc

直接搜自己想要的版本,这里是gcc12

手动更改默认编译器版本:

运行以下命令,更改默认的 gcc 编译器版本为你希望使用的版本:

sudo update-alternatives --set gcc /usr/bin/gcc-12

到目录下运行

sudo make load

这次报错了,别急,运行这段命令 (sakura和5.19.0-43-generic改成自己的)

sudo cp /home/sakura/CH341SER_LINUX/driver/ch341.ko  /lib/modules/5.19.0-43-generic/kernel/drivers/usb/serial
 

这段命令就是将make后输出的.ko文件复制到系统目录下

还有一个直接删除就好(盲人当我没说)

sudo apt remove brltty

使用lsmod和ls /dev/ttyUSB*查看是否识别到ttyusb0

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值