【安装usbipd-win】
1、Releases · dorssel/usbipd-win · GitHub中下载msi文件安装
2、usbipd list
3、usbipd bind --busid 4-4
4、usbipd attach --wsl --busid <busid>
【启动ch341模块】
在较新的wsl内核中,已经有相应的驱动模块,手动启动就行,执行以下命令
modprobe ch341
然后在/dev下就能看到类似ttyUSB0这样的usb串口
-------------以下作废-------------
参考:
https://zhuanlan.zhihu.com/p/661175117
https://www.cnblogs.com/hartmon/p/15771731.html
ubuntu安装串口驱动(找不到ttyUSB*)_ubuntu usb转串口找不到-CSDN博客
install ch341.ko error!_insmod: error: could not insert module ch341.ko: u-CSDN博客
问题描述:需要在wsl2中识别到宿主机上的ch340串口,用于烧录程序
原因分析:wsl2无法直接访问宿主机的usb设备,同时没有核头文件和modules
文件,无法编译ch340驱动
解决方案:1、安装usbipd-win,把宿主机上的usb设备映射到wsl2中;2、重新编译增加usb功能的内核,同时安装内核头文件和modules
文件,用于ch340的驱动编译
实现步骤:
【安装usbipd-win】
1、Releases · dorssel/usbipd-win · GitHub中下载msi文件安装
2、usbipd list
3、usbipd bind --busid 4-4
4、usbipd attach --wsl --busid <busid>
【编译ch340驱动】
1、CH340/CH341 Linux驱动链接下载驱动源文件
2、wsl中用uname -a查看内核版本,在ch341.c - drivers/usb/serial/ch341.c - Linux source code v5.15.153 - Bootlin中下载对应内核版本的ch341.c文件并进行替换
3、在wsl中编译ch340驱动
sudo make生成ch341.ko
sudo make load会动态加载加载ch341.ko驱动到系统内核中(实际调用的是insmod ch341.ko,但这种方式在系统重启后需要重新加载)
sudo cp -v ch34*.ko /lib/modules/5.15.153.1-microsoft-standard-WSL2/kernel/drivers/usb/serial/把驱动固定到内核中
【问题汇总】
1、报错/lib/modules/5.15.153.1-microsoft-standard-WSL2/build: No such file or directory
查看确实是没有
在重新编译出内核后加入modules_install再次执行,参考https://www.cnblogs.com/hartmon/p/15771731.html
sudo LOCALVERSION= make KCONFIG_CONFIG=Microsoft/config-wsl modules_install -j$(nproc)
然后就有build文件夹了
注意wsl --shutdown后再启动wsl,内核的文件夹会重新加载,即build文件就没了