今天在使用USB转UART模块连接设备时发现我的Ubuntu虚拟机无法识别USB设备,这个模块使用的CH340芯片,在Windows主机中可以识别到串口并连接,所以初步判断为虚拟机中缺少ch340驱动。实际上自Linux内核版本2.6.24起,Linux主线内核已内置ch341串行驱动。其位置在:drivers/usb/serial/ch341.c,但是内置驱动无法保持更新,驱动官方建议客户安装使用新的驱动。
安装驱动
在安装前先查看下内核版本,有些内核版本可能与下载的驱动文件存在不兼容现象:
uname -r
这里我的内核版本是 6.8.0-39-generic
6.8.0-39-generic
随后在官网下载CH340的驱动文件压缩包:
压缩包下载地址:CH341SER_LINUX.ZIP - 南京沁恒微电子股份有限公司 (wch.cn)
我的Ubuntu虚拟机是带图形显示的版本,无头模式的系统可以使用FTP或者SSH的方式把下载好的压缩包上传到服务器或虚拟机,也可以尝试下其他方式:
下载完成后cd到压缩包所在的路径,在终端输入命令将压缩包解压缩到/usr/local/src文件夹:
sudo unzip CH341SER_LINUX.ZIP -d /usr/local/src
文件解压后可以看到文件夹内有一个markdown的说明文档和driver文件夹,driver文件夹内存放着ch341的.c文件与.h、Makefile文件,其中Makefile文件主要用于自动化编译和构建程序。
driver文件夹内容如下: