Инструменты15 июля 2026 г., 16:17 МСК🤖 Auto

Linux: Мониторинг заряда Apple Magic Mouse/Keyboard по Bluetooth

Разработчик Alec Hall отправил в мейнстрим патчи, позволяющие ядру Linux корректно отображать уровень заряда периферии Apple (Magic Mouse 2, Magic Keyboard, Magic Trackpad 2) при подключении через Bluetooth, а не только по USB.

Баннер новости 3632

Проблема: 0% заряда в беспроводном режиме

До сих пор в Linux поддержка периферии Apple была «смешанной»: устройства распознавались, но мониторинг батареи работал только при проводном подключении через USB. При использовании Bluetooth, которое является основным сценарием для Magic Mouse 2, Magic Keyboard и Magic Trackpad 2, драйверы hid-magicmouse и hid-apple возвращали значение 0%, что делало невозможным планирование зарядки.

Техническая суть исправления

Разработчик Alec Hall выявил корень проблемы: драйверы уже умеют запрашивать отчет о батарее (GET_REPORT для input report 0x90), но реализация вызывала deadlock (взаимную блокировку) при попытке сделать это по Bluetooth. Запрос выполнялся в таймерном колбэке (atomic context), где транспорт uhid пытался выполнить спящую операцию hid_hw_request().

Решение заключается в переносе запроса в workqueue (очередь рабочих задач), что позволяет безопасно выполнять спящие вызовы. Также добавлена интерпретация байта статуса от производителя для определения состояния зарядки.

Сравнение функциональности

Параметр Подключение по USB Подключение по Bluetooth (до патчей) Подключение по Bluetooth (после патчей)
Мониторинг заряда Работает Возвращает 0% Работает корректно
Определение статуса зарядки Частично Недоступно Определяется через vendor status byte
Стабильность системы Стабильно Риск hard-lock при запросе Стабильно (запрос через workqueue)

Статус и тестирование

Патчи протестированы на Magic Keyboard 2021 и Magic Trackpad 2 в среде BlueZ (uhid). На данный момент серия патчей находится на стадии ревью в мейнстриме ядра Linux. Успешное слияние исправит критический недостаток UX для пользователей Apple-периферии в Linux-окружении.

Источник: Phoronix ↗