ch340 (ubuntu22.04) 老驱动替换为最新驱动 (解决一插入ch340 到usb , dmesg显示马上断开问题)
·
#!/bin/sh
# [描述] ch340 (ubuntu22.04) 老驱动替换为最新驱动
# [file name] ch340-drv-replace-at-ubuntu22.04.sh
# [执行] bash -x ch340-drv-replace-at-ubuntu22.04.sh
# [参考] https://blog.csdn.net/a1058191679/article/details/129111054
# [备注] ch430 ch341 估计是兼容的
set -x
set -e -u
#1.获取内核主要版本号
KerVer=$(uname -r | cut -d '.' -f 1-2)
# uname -r == 6.8.0-40-generic
#KerVer==6.8
#2.下载 该内核版本的 ch341.c
# https://elixir.bootlin.com/linux/v6.8/source/drivers/usb/serial/ch341.c
# https://elixir.bootlin.com/linux/v6.8/source/drivers/usb/serial/ch341.c?raw
URL_ch341_c_KerVer=https://elixir.bootlin.com/linux/v${KerVer}/source/drivers/usb/serial/ch341.c?raw
F_ch341_c_KerVer=ch341_kernel_v${KerVer}.c
rm -fv $F_ch341_c_KerVer
wget $URL_ch341_c_KerVer -O $F_ch341_c_KerVer
#3. 删除ubuntu22.04自带的 老旧的 ch341.ko
OLD_ko=/lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch341.ko
[[ -f $OLD_ko ]] && mv $OLD_ko ~/origin.ch341.ko
#4. brltty占用串口,因此卸载
# sudo dmesg | grep tty | grep brltty && \
sudo apt remove -y brltty
#5. 下载 南京沁恒 ch340 驱动源代码
F_SrcPck=CH341SER_LINUX.ZIP
D_SrcHome=CH341SER_LINUX
rm -rfv $F_SrcPck $D_SrcHome
# https://www.wch.cn/downloads/CH341SER_LINUX_ZIP.html
wget "https://www.wch.cn/downloads/file/177.html?time=2024-09-23%2018:38:38&code=qI3SokZr5UxoIray9AqsaJGOOA2bD5RAhnMDZWZb" -O $F_SrcPck
unzip $F_SrcPck -d .
#6. 用 elixir.bootlin.com 的 ch340.c 替换 南京沁恒 的 ch340.c
mv $F_ch341_c_KerVer $D_SrcHome/driver/ch341.c
#7. 编译
D_Src=$D_SrcHome/driver
cd $D_Src
make
#8. 临时 加载内核模块(ch341驱动)
sudo rmmod ch341.ko #卸载
sudo insmod ch341.ko #安装
#9.验证
echo "请插入 'ch341-uart converter' "
#sudo dmesg --follow
file /dev/ttyUSB0
#安装字符界面串口工具
sudo apt install -y picocom
#连接串口
picocom -b 115200 /dev/ttyUSB0
#10. 永久驱动
sudo cp ch341.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch341.ko
#重启生效
更多推荐
所有评论(0)