Это известная проблема для клавиатуры Ajazz AK820 Pro (и похожих беспроводных клавиатур) в Linux. Клавиатуры отлично работает, но после пары минут бездействия «засыпает» и не просыпается, пока донгл не переподключить.

Причина почти наверняка не в самой клавиатуре, а в том, как Linux управляет питанием USB-порта, к которому подключен донгл.

Почему это происходит: Автоприостановка USB

Чтобы экономить энергию на ноутбуках (и даже десктопах), ядро Linux по умолчанию переводит неактивные USB-устройства в «спящий» режим — это называется autosuspend. Вот что идет не так:

  1. Вы перестаете печатать на несколько минут.
  2. Система видит, что донгл неактивен, и отправляет его в режим энергосбережения.
  3. Вы снова начинаете печатать, клавиатура «будит» донгл, но происходит сбой — донгл не может корректно выйти из этого состояния.

В отличие от мыши или флешки, донгл данной клавиатуры не умеет правильно просыпаться по этой команде, и его приходится перезапускать физически.

Важный нюанс: Дело не в самой клавиатуре. Та же проблема возникает и у пользователей других брендов (Royal Kludge, XVX). На Windows или Mac такого может не быть, потому что там драйверы USB работают по-другому.

🛠️ Как это исправить

Есть два способа. Первый — точечный и правильный, второй — грубый, но эффективный.

Способ 1: Правило для udev (рекомендуется)

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

  1. Найдите ID вашего донгла. Откройте терминал и выполните:
lsusb

Найдите строку, похожую на эту (чаще всего это 0c45):

Bus 001 Device 003: ID 0c45:fdfd 2.4G Dongle
  1. Вам нужны цифры после ID — это vendor:product (например, 0c45:fdfd).
  2. Создайте правило. Создайте новый файл в папке /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

Перезагрузитесь или отключите и снова подключите донгл.

Добавить комментарий