Рейтинг:2

Последовательное устройство CH340 не отображается в /dev/ (WSL)

флаг cn

У меня есть клон arduino nano с серийным чипом CH340. Он отображается в lsusb как QinHeng Electronics HL-340 USB-последовательный адаптер и когда он подключается, я вижу его в 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(полная скорость)
[31.252004] vhci_hcd vhci_hcd.0: устройство подключено
[ 31.538489] vhci_hcd: скорость vhci_device не установлена
[ 31.608492] usb 1-1: новое полноскоростное USB-устройство номер 2 с использованием vhci_hcd
[ 31.698522] vhci_hcd: скорость vhci_device не установлена
[ 31.768510] usb 1-1: Запрос SetAddress (2) на порт 0
[ 31.812328] usb 1-1: найдено новое USB-устройство, idVendor = 1a86, idProduct = 7523, bcdDevice = 2,63
[ 31.812734] usb 1-1: новые строки USB-устройства: производитель = 0, продукт = 2, серийный номер = 0
[ 31.813059] usb 1-1: Продукт: USB2.0-Serial

Но нет /dev/ttyUSB*.

Спасибо.

NotTheDr01ds avatar
флаг vn
Вы используете USB/IP или пытаетесь получить к нему доступ напрямую из WSL? Насколько я знаю, будет работать только USB/IP (и только в последнем ядре, которое у вас, видимо, установлено).
Leo Bound avatar
флаг cn
USB/IP (с usbipd) в WSL2 на Win11. Отображается с lsusb как «Bus 001 Device 002: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter», а uname -r — «5.10.60.1-microsoft-standard-WSL2».
Рейтинг:5
флаг cn

Итак, на момент написания этой статьи причина отсутствия поддержки последовательных USB-устройств связана с тем, что их модули не включены в ядро ​​​​WSL.

Вы можете скомпилировать собственное ядро ​​WSL с модулями, выполнив следующие действия:

  1. Вам могут понадобиться следующие зависимости: sudo apt install build-essential flex bison libssl-dev libelf-dev карлики libncurses-dev

  2. Клонируйте репозиторий WSL2 с помощью: клон git https://github.com/microsoft/WSL2-Linux-Kernel.git

  3. Перейдите в папку WSL2-Linux-Kernel: cd WSL2-Linux-ядро

  4. Измените конфигурацию ядра, запустив make menuconfig KCONFIG_CONFIG=Microsoft/config-wsl.

  5. Перейти к Драйверы устройств -> Поддержка USB -> Поддержка USB Serial Converter затем включите свои драйверы здесь.

    • Семейство CP210x также распространено на платах разработки микроконтроллеров.
    • Вы, вероятно, хотите, чтобы они были встроены в ядро, поэтому нажмите у или же пространство дважды, чтобы убедиться, что они включены с помощью <*> скорее, чем <M>.

    Затем сохраните и выйдите из menuconfig и перезапишите config-wsl.

- Вам, вероятно, не следует использовать следующие перечеркнутые точки, но они являются альтернативой предыдущим двум -

3. Измените файл config-wsl: нано Microsoft/config-wsl (Или используйте редактор по вашему выбору).

Перейдите к строке 2409 (shift+_, затем 2409 в nano) и замените # CONFIG_USB_SERIAL_CH341 не установлен с CONFIG_USB_SERIAL_CH341=y - Вы можете сделать то же самое для CONFIG_USB_SERIAL_CP210X - еще один обычный последовательный USB-адаптер.

  1. Закройте текстовый редактор и сохраните (Ctrl + х тогда у тогда войти с нано).

  2. Соберите ядро, используя конфигурацию ядра WSL2: сделать KCONFIG_CONFIG=Microsoft/config-wsl - Это может занять некоторое время - Вы можете ускорить это с помощью аргумента -j, но обязательно укажите значение, например. -j4

  3. Скопируйте скомпилированное ядро ​​в ваш пользовательский каталог Windows: cp arch/x86/boot/bzImage /mnt/c/Users/<ваше-имя-пользователя>/wsl_kernel

  4. Создайте файл в пользовательском каталоге Windows с именем .wslconfig и вставьте в него это:

[wsl2]
kernel = C:\Users\<ваше-имя-пользователя>\wsl_kernel
  1. Выключите WSL с помощью wsl --shutdown в командной строке Windows.

  2. Откройте терминал WSL, и теперь вы сможете подключать последовательные USB-устройства, как описано выше. здесь.

И, надеюсь, все должно работать! (Проверено на Win10 и Win11 с дистрибутивом Ubuntu WSL2)

Biswapriyo avatar
флаг ng
Используйте menuconfig вместо ручного редактирования файла конфигурации.
Leo Bound avatar
флаг cn
@Biswapriyo Спасибо, мне никогда раньше не приходилось возиться с конфигурацией ядра, поэтому я не знал, как это сделать лучше всего. Я обновил вышеизложенное соответствующим образом и ценю любые другие комментарии, которые у кого-либо есть.
флаг ro
Я смог подтвердить, что как ручной поток, так и поток menuconfig работают! Мне пришлось установить libncurses, но в остальном все работало отлично.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.