- PVSM.RU - https://www.pvsm.ru -

Как заставить китайскую механическую клавиатуру работать в Linux

Предыстория

Мне подарили компактную механическую клавиатуру CYBERLYNX ZA63 [1] с подсветкой — выглядит стильно, клавиши приятно щёлкают. До этого дел с механникой не имел. Подключил к домашнему ПК. На Windows всё работало идеально: настроил подсветку под себя, привык к расположению клавиш. Данная модель работает только по проводу (USB Type-C). Есть еще Pro версия с беспроводным подключением. Но это подарок, провод так провод.

CYBERLYNX ZA63

CYBERLYNX ZA63

В один момент мне понадобилось подключить её к рабочему ноутбуку с Ubuntu. "Что может быть проще?" Подключил монитор, подключил клавиатуру и продолжил работать. Подключил кабель... подсветка загорелась, а вот клавиши — молчали. Вообще. Ни одна не работала.

Поиски причины

Сначала грешил на переключение с Win-режима на Mac - не помогло. На драйверы, но в Linux-то HID-устройства обычно работают из коробки. Открыл инструкцию (если можно так назвать листок-вкладыш). Заявлена поддержка Win, MacOS, Android.

Инструкция из комплекта

Инструкция из комплекта

Нашел несколько топиков, в том числе на qna.habr [2]. И ответы вроде, любая клава должна работать в Linux, явно не бились с моей ситуацией.

Ну что ж, вначале диагностика ситуации.

1.lsusb показывала все устройства, кроме моей клавиатуры. Как будто её и не было.

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 0cf3:e300 Qualcomm Atheros Communications QCA61x4 Bluetooth 4.0
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 5986:2137 Acer, Inc Integrated Camera
Bus 001 Device 002: ID 2717:5013 Xiaomi Inc. Mi Wireless Mouse
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

2.  В логах ядра (dmesg) ошибки:

usb 1-4: unable to read config index 0 descriptor/start: -71
usb 1-4: can't read configurations, error -71

Система видела, что что-то подключено (питание-то шло — подсветка работала), но не могла прочитать "паспорт" устройства.

Открытие: я не один такой

Погуглив (именно, нейросеть помочь тут не смогла), я обнаружил таких же "счастливчиков". Оказалось, многие китайские механические клавиатуры (Zifriend, SAMA, Gamestop, Cyberlinx — это всё переименованные версии одной и той же железки) имеют эту проблему.

Производители честно пишут в мануалах: "только Windows и MacOS".

Особенно обидно было читать, что в беспроводном режиме клавиатуры работают, а в проводном — нет. У меня как раз был проводной вариант.

Решение

Ключ к решению нашёлся в параметрах ядра usbcore.quirks [3]. Грубо говоря, это способ сказать системе: "это устройство ведёт себя странно, обращайся с ним по-особому".

Шаг 1: Находим VendorID и ProductID клавиатуры

Поскольку в Linux клавиатура не определялась, пришлось на время вернуться к Windows. В диспетчере устройств нашёл свою клавиатуру и посмотрел её ID: VID 5566 и PID 0008.

Совет: если в диспетчере устройств не видно названия, можно использовать PowerShell:

Get-PnpDevice -PresentOnly | Where-Object { $_.InstanceId -match '^USB' }

Искать нужно устройство с VID, отличным от 3151 — это стандартные Windows-устройства.

Шаг 2: Меняем параметры ядра [4]

Редактируем конфигурацию GRUB:

sudo nano /etc/default/grub

Добавляем наш параметр (подставьте свои VID и PID):

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.quirks=5566:0008:gki"

Флаг gki — это как раз то, что заставляет систему работать с "нестандартными" устройствами.

Обновляем конфигурацию:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Перезагружаемся... и о чудо! Клавиатура заработала!

Почему это сработало?

Оказалось, эти клавиатуры используют чипы, которые не совсем корректно следуют стандартам USB.

По сути, мы говорим системе: «работай с этим устройством в простом, базовом режиме». Теперь клавиатура прекрасно работает и в Linux.

Вероятно, решить проблему можно было и иначе, но рабочий способ найден, я доволен :-)

P.S. Первая статья, не закидайте сразу :-)

Автор: gesserwy

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/ubuntu-2/440904

Ссылки в тексте:

[1] CYBERLYNX ZA63: https://cyber-lynx.ru/products/za63-%D0%BC%D0%B8%D0%BD%D0%B8-%D0%B8%D0%B3%D1%80%D0%BE%D0%B2%D0%B0%D1%8F-%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D0%B0-%D0%BC%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F-%D1%81-%D0%BF%D0%BE%D0%B4%D1%81%D0%B2%D0%B5%D1%82%D0%BA%D0%BE%D0%B9-60

[2] qna.habr: https://qna.habr.com/q/1195014

[3] usbcore.quirks: https://www.kernel.org/doc/html/v5.0/admin-guide/kernel-parameters.html

[4] ядра: https://wiki.archlinux.org/title/kernel_parameters

[5] Источник: https://habr.com/ru/articles/982984/?utm_source=habrahabr&utm_medium=rss&utm_campaign=982984