Это известная проблема для клавиатуры Ajazz AK820 Pro (и похожих беспроводных клавиатур) в Linux. Клавиатуры отлично работает, но после пары минут бездействия «засыпает» и не просыпается, пока донгл не переподключить.
Причина почти наверняка не в самой клавиатуре, а в том, как Linux управляет питанием USB-порта, к которому подключен донгл.
Почему это происходит: Автоприостановка USB
Чтобы экономить энергию на ноутбуках (и даже десктопах), ядро Linux по умолчанию переводит неактивные USB-устройства в «спящий» режим — это называется autosuspend. Вот что идет не так:
- Вы перестаете печатать на несколько минут.
- Система видит, что донгл неактивен, и отправляет его в режим энергосбережения.
- Вы снова начинаете печатать, клавиатура «будит» донгл, но происходит сбой — донгл не может корректно выйти из этого состояния.
В отличие от мыши или флешки, донгл данной клавиатуры не умеет правильно просыпаться по этой команде, и его приходится перезапускать физически.
Важный нюанс: Дело не в самой клавиатуре. Та же проблема возникает и у пользователей других брендов (Royal Kludge, XVX). На Windows или Mac такого может не быть, потому что там драйверы USB работают по-другому.
🛠️ Как это исправить
Есть два способа. Первый — точечный и правильный, второй — грубый, но эффективный.
Способ 1: Правило для udev (рекомендуется)
Этот метод отключает энергосбережение только для вашего донгла, не трогая остальную систему. Это самый надежный способ .
- Найдите ID вашего донгла. Откройте терминал и выполните:
lsusb
Найдите строку, похожую на эту (чаще всего это 0c45):
Bus 001 Device 003: ID 0c45:fdfd 2.4G Dongle
- Вам нужны цифры после
ID— этоvendor:product(например,0c45:fdfd). - Создайте правило. Создайте новый файл в папке
/etc/udev/rules.d/(назовите его, например,50-ajazz-dongle.rules):
sudo nano /etc/udev/rules.d/50-ajazz-dongle.rules
Вставьте туда этот текст, заменив 0c45:fdfd на свои ID, если они отличаются:
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0c45", ATTR{idProduct}=="fdfd", TEST=="power/control", ATTR{power/control}="on"
Расшифровка команды:
Это правило udev. Оно работает по принципу «ЕСЛИ (условия совпали) ТО (сделать действие)».
Вот полная разбивка:
1. ACTION=="add" — Что произошло?
- Значение: Это условие проверяет событие (event).
addозначает, что устройство только что было подключено к системе (физически воткнули донгл или система загрузилась и обнаружила его).- Зачем: Мы хотим применить настройку один раз в момент подключения, а не трогать устройство, когда оно уже работает или отключается.
2. SUBSYSTEM=="usb" — К какому типу относится?
- Значение: Проверяет, к какой подсистеме ядра принадлежит устройство.
usb— это вся USB-шина.- Зачем: В Linux есть куча подсистем (pci, scsi, input, net). Нас интересуют только USB-устройства, чтобы случайно не применить правило к жесткому диску SATA или сетевой карте.
3. ATTR{idVendor}=="0c45" — Кто производитель?
- Значение: Проверяет атрибут устройства
idVendor(ID производителя). 0c45(шестнадцатеричный код) — это код компании, которой принадлежит чип внутри вашего донгла. В данном случае это часто чипы от компании Sonix или похожих OEM-производителей бюджетных клавиатур.- Зачем: Чтобы отличить ваш донгл от любого другого USB-устройства (например, флешки Kingston или мыши Logitech).
4. ATTR{idProduct}=="fdfd" — Какая модель?
- Значение: Проверяет атрибут
idProduct(ID продукта). fdfd— это конкретная модель чипа (в данном случае, 2.4G донгл для Ajazz AK820 Pro).- Зачем: У одного производителя (
0c45) может быть 100 разных устройств (веб-камеры, Bluetooth-адаптеры, донглы). Этот код идентифицирует именно ваше устройство.
Как узнать свои ID: Выполните
lsusb. СтрокаID 0c45:fdfd— это и естьidVendor:idProduct.
5. TEST=="power/control" — А точно ли это работает?
- Значение: Проверяет существует ли файл
controlвнутри папкиpowerвашего устройства в виртуальной файловой системе (/sys). - Зачем: Это «защита от дурака» (safety check). В старых ядрах или на некоторых USB-хабах файла управления питанием может не быть. Команда говорит: «Применяй правило только если этот файл существует, иначе не ругайся».
6. ATTR{power/control}="on" — САМОЕ ГЛАВНОЕ (действие)
Зачем: Именно эта команда решает вашу проблему. Вы вручную говорите ядру: «С ЭТИМ конкретным донглом НИКОГДА не применяй энергосбережение».
Значение: Устанавливает атрибут control в значение "on". Это действие, которое выполняется ВНУТРИ устройства.
Различие:
"on" — ЗАПРЕЩАЕТ автоприостановку. Устройство всегда активно (активно = оно готово проснуться по сигналу с клавиатуры).
"auto" (значение по умолчанию) — РАЗРЕШАЕТ ядру усыплять устройство.
Примените правило: Сохраните файл (Ctrl+O, Enter, Ctrl+X в nano), а затем выполните:
sudo udevadm control --reload-rules && sudo udevadm trigger
Перезагрузитесь или отключите и снова подключите донгл.