CH340 串行设备未出现在 /dev/(WSL)中

CH340 串行设备未出现在 /dev/(WSL)中

我有一个带有 CH340 串行芯片的 arduino nano 克隆版。它出现在 lsusb 中,QinHeng Electronics HL-340 USB-Serial adapter当它连接时,我可以在 dmesg 中看到它,并显示以下日志:

[   31.251098] vhci_hcd vhci_hcd.0: pdev(0) rhport(0) sockfd(3)
[   31.251544] vhci_hcd vhci_hcd.0: devid(65541) speed(2) speed_str(full-speed)
[   31.252004] vhci_hcd vhci_hcd.0: Device attached
[   31.538489] vhci_hcd: vhci_device speed not set
[   31.608492] usb 1-1: new full-speed USB device number 2 using vhci_hcd
[   31.698522] vhci_hcd: vhci_device speed not set
[   31.768510] usb 1-1: SetAddress Request (2) to port 0
[   31.812328] usb 1-1: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.63
[   31.812734] usb 1-1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[   31.813059] usb 1-1: Product: USB2.0-Serial

但是没有/dev/ttyUSB*。

谢谢。

答案1

因此,截至撰写本文时,缺乏对 USB 串行设备的支持的原因是它们的模块未包含在 WSL 内核中。

你可以通过执行以下操作使用模块编译自己的 WSL 内核:

  1. 您可能需要这些依赖项:sudo apt install build-essential flex bison libssl-dev libelf-dev dwarves libncurses-dev

  2. 使用以下命令克隆 WSL2 存储库:git clone https://github.com/microsoft/WSL2-Linux-Kernel.git

  3. 将目录更改为 WSL2-Linux-Kernel 文件夹:cd WSL2-Linux-Kernel

  4. 通过运行来修改内核配置make menuconfig KCONFIG_CONFIG=Microsoft/config-wsl

  5. 然后转到Device Drivers -> USB Support -> USB Serial Converter support这里启用您的驱动程序。

    • CP210x 系列在微控制器开发板上也很常见。
    • 您可能希望将它们嵌入到内核中,因此按yspace两次以确保它们已启用,<*>而不是<M>

    然后保存并退出 menuconfig 并覆盖 config-wsl。

- 您可能不应该使用以下划掉的点,但它们是前两个点的替代 -

3. 修改 config-wsl 文件:(nano Microsoft/config-wsl或者使用您选择的编辑器)。

​转到第 2409 行(shift+_,然后是 nano 中的 2409)并替换# CONFIG_USB_SERIAL_CH341 is not setCONFIG_USB_SERIAL_CH341=y ​- 您可能希望对CONFIG_USB_SERIAL_CP210X- 另一个常见的串行 USB 适配器执行相同的操作。

  1. 关闭文本编辑器并保存(ctrl + x然后yenternano)。

  2. 使用 WSL2 内核配置构建内核:make KCONFIG_CONFIG=Microsoft/config-wsl ​- 这可能需要一段时间 ​- 您可以使用 -j 参数加快速度,但请确保指定一个值,例如 -j4

  3. 将编译好的内核复制到你的Windows用户目录:cp arch/x86/boot/bzImage /mnt/c/Users/<your-user-name-here>/wsl_kernel

  4. 在 Windows 用户目录中创建一个名为 .wslconfig 的文件并将其粘贴到其中:

[wsl2]
kernel = C:\\Users\\<your-user-name-here>\\wsl_kernel
  1. wsl --shutdown使用 Windows 命令提示符关闭 WSL 。

  2. 打开你的 WSL 终端,现在你应该能够按照概述连接 USB 串行设备这里

希望一切顺利!(在 Win10 和 Win11 上使用 Ubuntu WSL2 发行版进行测试)

答案2

Leo Bound 给出了正确的答案,但由于没有声誉,我无法发表评论。如果您的 Ubuntu 在编辑 .wslconfig 文件后似乎没有更新,请尝试删除 .wslconfig,然后从 WSL 在 vi​​ 中重新创建它。我的 Notepad 或 Notepad++ 导致了某种格式错误,导致 WSL 无法读取 .wslconfig 并忽略我的内核更新。

相关内容