Управление светодиодами в WSL

Управление светодиодами в WSL

Я следовал уроку из книги «Пропущенный семестр».здесь(в ссылке указана временная метка). Предполагалось, что ledв /sys/class. Я использую WSL2 и не могу найти такой каталог. Скрывает ли WSL некоторые расположения /sys/class? И есть ли способ получить к ним доступ без необходимости двойной загрузки моей машины?

решение1

Ну, возможно,еслиВаша клавиатура USB, но, похоже, даже в этом случае придется приложить некоторые усилия. Если это ноутбук с клавиатурой, которая подключается внутри через не-USB шину, то, насколько мне известно, это невозможно.

Существует две версии WSL, и ни одна из них не позволяет сделать это «из коробки».

  • На высоком уровне WSL1 "конвертирует/транслирует" системные вызовы Linux в эквивалент Windows. Это своего рода "обратный WINE" в этом смысле. С положительной стороны, этоделаетпозволяют ему напрямую обращаться к некоторому физическому оборудованию, но, как правило, лишь ограниченным образом.

    Например, ip linkв WSL1 будут показаны все доступные сетевые интерфейсыОкна, но вы не можете их поднять или опустить или как-то иначе их контролировать.

    На WSL1 у меня есть /sys/class/backlight(упоминается прямо перед меткой времени в видео), но там нет . И на WSL1 brightnessу меня тоже нет ./sys/class/backlight/led

    В WSL1 компания Microsoft сосредоточилась на85% системных вызовов Linuxчто позволило бы разработчикам достичь99% их обычной деятельности. К сожалению, сюда не входят некоторые более «специальные» вещи, такие как настройка светодиодов клавиатуры.

  • WSL2 использует настоящее ядро ​​Linux с небольшими изменениями (внесенными в апстрим, насколько мне известно) для поддержки взаимодействия между Windows и Linux. Вы можете найти репозиторийздесь.

    Проблема с реализацией этого в WSL2 заключается в том, что Ubuntu по сути работает как контейнер в наборе пространств имен.внутриWSL2 VM (к которой у вас нет доступа). Внутри этой VM есть ограниченный доступ к физическому оборудованию, включая, конечно, вашу клавиатуру и связанные с ней светодиоды. Сама Windows предоставляет ввод с клавиатуры в Ubuntu через [Консоль / Терминал Windows / WSLg / сторонний X-сервер / и т. д. ]. Ubuntu не видит клавиатурное устройство или светодиоды.

    Однако, как упоминает @muru по ссылке в комментариях, WSL2 имеет возможностьподключайтесь к USB-устройствам через USB/IP. По сути, вы устанавливаетеusbipd-winв Windows, расшарить устройство там, и подключиться к нему через usbipв Ubuntu. Это все довольно автоматизировано, так что вы обычно можете сделать это с помощью одной команды в Windows/PowerShell, которая затем настраиваетобазаканчивает соединение для вас.

    К сожалению, даже при этом (у меня уже настроен USB/IP) и при предоставлении общего доступа к моей USB-клавиатуре в Ubuntu, файла /sys/class/led.

    Я верю в этоможетбыть потому, что ядро ​​WSL2 не настроено сCONFIG_NEW_LEDS.

    Вы можете настроить и скомпилировать собственное ядро ​​WSL2, используя эти исходники, но я не могу сказать наверняка, что это позволит вам управлять светодиодами на вашей USB-клавиатуре через USB/IP.

Также (важный) примечание: если вы делитесь клавиатурой через USB/IP, вы можете потерять к ней доступ в Windows, что означает, что у вас больше не будет возможности печатать. Сначала я этого не заметил, так как был подключен через удаленный рабочий стол к системе с помощью своей USB-клавиатуры, но когда я вернулся, я обнаружил, что в какой-то степени "заблокирован". Просто убедитесь, что у вас есть экранная клавиатура Windows (включите "Touch keyboard" в настройках панели задач), чтобы у вас был запасной ввод, с помощью которого впоследствииотсоединятьклавиатура с USB/IP.

Связанный контент