当前位置:首页 » 《随便一记》 » 正文

ubuntu22.04安装CH340驱动踩坑记录

16 人参与  2024年11月04日 10:01  分类 : 《随便一记》  评论

点击全文阅读


因为项目需要,需要安装CH340驱动,在这里记录以下自己的踩坑解决过程。

之前自己安装了CH340驱动,但是没有成功,后来是参考这篇博客才开始算是开始真正的安装成功CH340驱动,在这里贴一下解决的链接:Linux-ubuntu22.04串口驱动安装(CH34X)

总结一下:

1.查看自己电脑是否安装了ch340驱动

  如果有CH340(类似于ch34x.ko文件)驱动,但是不能用。删掉:

ls /lib/modules/$(uname -r)/kernel/drivers/usb/serialcd /lib/modules/$(uname -r)/kernel/drivers/usb/serialsudo rm -rf ch341.ko

  把ch341.ko文件替换成自己的文件。

2.安装CH340驱动

我是参考这个链接安装的驱动:Linux-ubuntu22.04串口驱动安装(CH34X)

3.查询操作系统发行编号

uname -r

在网页查询对应自己编号,复制全部内容,替换下载的ch34x.c文件。https://elixir.bootlin.com/linux/v6.5/source/drivers/usb/serial/ch341.c

4.编译源文件

cd切换至下载的文件夹,make编译源码,生成ch34x.ko文件:

cd CH341SER_LINUX/makesudo make load

我在运行这一步的时候会报错,贴别人的原图:参考链接:解决Ubuntu22.04.1上安装ch34x串口驱动报 Key was rejected by service 需要签名的问题

同时可能会有:

的问题,解决方法是安装,gcc-12:指令如下:

sudo apt updatesudo apt install gcc-12make cleanmake CC=gcc-12

出现错误提示:

insmod: ERROR: could not insert module ch34x.ko: Key was rejected by service

 说明.ko文件需要签名。查看驱动签名情况。

查看签名,指令:

(base) robot@YL:~/Downloads/CH341SER_LINUX$ lsch34x.c   ch34x.mod    ch34x.mod.o  Makefile       Module.symversch34x.ko  ch34x.mod.c  ch34x.o      modules.order  readme.txt

指令:

hexdump -C ch34x.ko | tail

说明没有签名(贴的别人的图)。

给驱动签名

首先依赖mokutil和shim-signed

sudo apt install mokutilsudo apt install shim-signedsudo update-secureboot-policy --new-key

生成的证书(MOK.der)和私钥(MOK.priv)位于 /var/lib/shim-signed/mok/ 目录下。

导入签名证书:

sudo mokutil --import /var/lib/shim-signed/mok/MOK.der

重新启动电脑

电脑启动 UEFI 询问您是否要更改安全设置。选择Enroll MOK, 选择YE

将签名写入驱动

重新启动后出现打开终端,输入:

(base) robot@YL:~/Downloads/CH341SER_LINUX$ hexdump -C ch34x.ko | tail00064ce0  0b b3 1b 2f dc 99 c1 c4  9e af d5 d3 6c 45 a4 f7  |.../........lE..|00064cf0  5f 2c b3 4f 34 ae fa 24  81 14 ec cf fd e1 1a 22  |_,.O4..$......."|00064d00  dc e1 b3 40 2e 9f 5e 82  74 50 32 26 82 c1 60 4d  |...@..^.tP2&..`M|00064d10  a3 4e 98 59 6a 84 a3 1e  92 75 95 ed 7d bf bc f2  |.N.Yj....u..}...|00064d20  19 98 da c0 70 51 1d 20  d1 2e f0 ce 82 58 94 22  |....pQ. .....X."|00064d30  be b9 12 81 bd 83 bd 6b  0b 00 00 02 00 00 00 00  |.......k........|00064d40  00 00 00 01 a9 7e 4d 6f  64 75 6c 65 20 73 69 67  |.....~Module sig|00064d50  6e 61 74 75 72 65 20 61  70 70 65 6e 64 65 64 7e  |nature appended~|00064d60  0a                                                |.|00064d61

驱动程序数据中有~Module signature appended~,可知已写入签名。

在CH341SER_LINUX文件夹下再次

(base) robot@YL:~/Downloads/CH341SER_LINUX$ sudo make load[sudo] password for robot: modprobe usbserialinsmod ch34x.ko(base) robot@YL:~/Downloads/CH341SER_LINUX$ 

此时,载入成功了,使用lsmod | grep ch指令查看

(base) robot@YL:~/Downloads/CH341SER_LINUX$ lsmod | grep chch34x                  24576  0usbserial              69632  1 ch34xnft_chain_nat          12288  3nf_nat                 61440  2 nft_chain_nat,xt_MASQUERADEhid_logitech_hidpp     65536  0nf_tables             372736  75 nft_compat,nft_chain_natsnd_soc_acpi_intel_match    94208  2 snd_sof_intel_hda_common,snd_sof_pci_intel_tglsnd_soc_acpi           12288  2 snd_soc_acpi_intel_match,snd_sof_intel_hda_commonhid_logitech_dj        36864  0usbhid                 77824  2 hid_logitech_dj,hid_logitech_hidpphid_multitouch         36864  0sch_fq_codel           24576  1hid                   180224  6 i2c_hid,usbhid,hid_multitouch,hid_generic,hid_logitech_dj,hid_logitech_hidpp(base) robot@YL:~/Downloads/CH341SER_LINUX$ 

发现已经识别,这是本人的踩坑记录解决过程。但是本人重启电脑后发现驱动又没了,需要重新在H341SER_LINUX文件夹下sudo make load 才有。时间不早了,明天解决~~

开机自动加载CH340驱动

ch34x.ko文件被复制到内核模块目录。这个目录是/lib/modules/$(uname -r)/kernel/drivers/usb/serial/

sudo cp ch34x.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial/

刷新模块依赖关系

sudo depmod

执行完成后重新启动电脑即可。


点击全文阅读


本文链接:http://zhangshiyu.com/post/182121.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1