Аннотация:
Команда разработчиков ядра Linux объединила новый раунд обновлений подсистемы HID с разрабатываемым ядром Linux 7.4. Одним из основных моментов этого обновления является добавление предварительной поддержки драйверов для контроллера Nintendo Switch 2. Соответствующую работу выполнила разработчик Вики Пфау по поручению Valve. После 16 модификаций патчей он наконец вошел в основное ядро Linux. Кроме того, в новую версию добавлен драйвер игровой мыши Pulsar и улучшена аппаратная поддержка некоторых процессоров AMD, Apple Touch Bar и портативных консолей ASUS ROG Ally.


HID — это аббревиатура от Human Interface Device, которая в основном отвечает за обработку входной информации с аппаратного обеспечения, такого как клавиатуры, мыши, игровые контроллеры и сенсорные устройства. Подсистема HID в ядре Linux не только должна идентифицировать устройства разных производителей, но также должна обрабатывать уникальные протоколы связи различных устройств. Поскольку игровые консоли и беспроводные контроллеры становятся все более популярными, улучшение драйверов HID имеет большое значение для улучшения игрового процесса в Linux.
Наиболее важным изменением на этот раз является то, что в Linux 7.4 впервые представлен специальный драйвер для контроллера Nintendo Switch 2. Контроллер Switch 2 имеет относительно специальную конструкцию интерфейса: функции ввода клавиш и вибрации в основном обрабатываются через основной интерфейс HID, в то время как другие операции связи выполняются через независимые интерфейсы конфигурации. Независимо от того, используется ли соединение USB или соединение Bluetooth, такая отдельная конструкция усложнит разработку драйверов.
Чтобы решить эту проблему, новый драйвер использует структуру драйвера, разделенную главным и подчиненным. Интерфейс HID служит основным драйвером, отвечающим за обработку базового ввода и функций, связанных с вибрацией; интерфейс конфигурации служит вспомогательным драйвером, разделяя необходимые ресурсы устройства с основным интерфейсом. Эта конструкция может адаптироваться к специальной структуре связи контроллера Switch 2, а также закладывает основу для добавления дополнительных функций в будущем.
В настоящее время предварительный драйвер поддерживает общие функции ввода Joy-Con 2, Pro Controller 2 и контроллера GameCube в сервисе Nintendo Switch Online. Однако это не означает, что все функции контроллера Switch 2 полностью доступны под Linux.
Разработчики отметили, что, поскольку Switch 2 использует нестандартный интерфейс сопряжения, а существующий механизм связи Bluetooth ядра Linux также имеет определенные ограничения, все равно необходимо спроектировать выделенный интерфейс связи между ядром и пользовательским пространством и выполнить соответствующую адаптацию в стеке протоколов Bluetooth BlueZ. Таким образом, это слияние в основном решает проблему универсальных драйверов интерфейса конфигурации HID и USB. Сопряжение Bluetooth и другие расширенные функции все еще нуждаются в разработке.
Стоит отметить, что данную работу выполнила Вики Пфау по поручению Valve. Valve уже давно способствует развитию игровой экосистемы Linux и улучшению совместимости игр на платформе Linux посредством SteamOS, Steam Deck, а также вклада в ядра и графические драйверы основной разработки. Разработка драйверов для контроллера игровой консоли нового поколения Nintendo также показывает, что соответствующая работа не ограничивается собственными аппаратными продуктами Valve.
В дополнение к контроллерам Nintendo в Linux 7.4 также добавлен новый драйвер hid-pulsar для поддержки нескольких игровых мышей марки Pulsar. Среди протестированных моделей — беспроводные игровые мыши X2 V2, X2H, X2A и Xlite V3. Новый драйвер может считывать такую информацию, как заряд батареи, напряжение батареи и состояние зарядки, а также поддерживает проводные соединения, а также режимы подключения с частотой опроса 1000 Гц и 4000 Гц через беспроводные приемники.
Драйвер также совместим с продуктами некоторых других брендов, использующими тот же протокол связи, включая Kysona M600, ATK и R1 SE+ от VXE, Dragonfly R1 Pro и другие модели. Это означает, что благодаря поддержке унифицированного протокола некоторые мыши других марок, отличных от Pulsar, также могут получить соответствующую совместимость с Linux.
Это обновление HID также расширяет поддержку драйвера AMD Sensor Fusion Hub (SFH) для новых процессоров Ryzen SoC, использующих архитектуру AMD Zen 6. SFH отвечает за обработку некоторых функций, связанных с датчиками, и может использоваться на устройствах, оснащенных соответствующим оборудованием. Новая поддержка поможет будущим ноутбукам, оснащенным процессорами AMD нового поколения, лучше использовать соответствующие возможности датчиков, однако конкретные функции по-прежнему зависят от общей конфигурации оборудования.
Для устройств Apple в Linux 7.4 устранена проблема с управлением питанием сенсорной панели. Портативная консоль ASUS ROG Ally также получила исправления в управлении питанием. Хотя эти изменения не так привлекательны, как новый драйвер игрового контроллера, они помогут повысить надежность работы Linux на различных устройствах.
В целом обновление подсистемы HID в Linux 7.4 направлено на расширение диапазона совместимости игровых контроллеров и мышей, а также на устранение проблем с управлением питанием существующего оборудования. Объединение драйверов контроллера Nintendo Switch 2 особенно примечательно, поскольку оно обеспечивает базовую поддержку для пользователей Linux, использующих контроллеры Nintendo нового поколения. Тем не менее, он все еще находится на предварительной стадии, сопряжение Bluetooth и некоторые расширенные функции еще не завершены, а окончательный результат зависит от дальнейшего совершенствования последующего программного обеспечения ядра и пользовательского пространства.
Комментарии