欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何在Arch Linux中利用USB转串口适配器(如CH340)操作

最编程 2024-02-24 08:14:21
...


一、CH340/CH341

1. 卸载系统已有驱动

查看系统版本:

uname -r

这里我是 5.17.1-arch1-1 版本,进入内核源码目录:

cd /lib/modules/5.17.1-arch1-1/kernel/drivers/usb/serial/

移动到用户目录,作为备份:

sudo mv ch341.ko.zst ~

2. 下载安装官网驱动

在沁恒官方下载ch340驱动:http://www.wch.cn/download/CH341SER_LINUX_ZIP.html。

(1)下载后解压:

unzip CH341SER_LINUX.ZIP

(2)修改驱动源码

1.5版本目前支持到LInux kernel 3.13,我用的内核是5.17版本,所以需要修改驱动源码 ch34x.c。

增加头文件:

#include <linux/sched/signal.h>

注释591-593行的变量:

//  int bps;
// long timeout;
// wait_queue_t wait;

939行 ch34x_write_room 函数的返回值改为unsigned int:

static unsigned int ch34x_write_room( struct tty_struct *tty )

965行 ch34x_chars_in_buffer函数的返回值改为unsigned int:

static unsigned int ch34x_chars_in_buffer( struct tty_struct *tty )

(3)编译:

make

Arch LInux 使用USB转串口(CH340)_arch

(4)安装:

sudo make load

(5)拷贝到内核目录:

sudo cp -v ch34x.ko /lib/modules/5.17.1-arch1-1/kernel/drivers/usb/serial
sudo depmod

3. 解决没有ttyUSB0问题

查看设备节点,没有ttyUSB*。

再看usb设备,有ch340:

Arch LInux 使用USB转串口(CH340)_linux_02

只能看系统日志,找到了问题所在,与brltty冲突:

Arch LInux 使用USB转串口(CH340)_arch_03

卸载这个鬼玩意,有个orca依赖于它:

yay -R orca
yay -R brltty

重新插拔USB,查看系统日志,没有冲突:

Arch LInux 使用USB转串口(CH340)_系统日志_04

再看看有没有ttyUSB节点:

Arch LInux 使用USB转串口(CH340)_arch_05

使用minicom打开该设备,查看串口日志,正常使用:

Arch LInux 使用USB转串口(CH340)_ch340_06