Проверьте уровень заряда батареи подключенных bluetooth-наушников из командной строки.

Я пытаюсь проверить уровень заряда батареи моих беспроводных наушников из командной строки. Я наткнулся на несколько обсуждений , и кажется, все, что мне нужно сделать, это ввести следующее:

ioreg -c 'deviceName' |grep -i batterypercent

Я попробовал эту команду, используя «Powerbeats Wireless» и «bluetoothaudiod» для 'deviceName', но ни один из них не вернул файл batterypercent. Я попытался ioreg -c bluetoothaudiod |grep -i batteryполучить общую информацию о батарее и получил в ответ следующее:

| |   +-o AppleSmartBatteryManager  <class AppleSmartBatteryManager, id 0x100000250, registered, matched, active, busy 0 (0 ms), retain 7>
| |     +-o AppleSmartBattery  <class AppleSmartBattery, id 0x100000252, registered, matched, active, busy 0 (0 ms), retain 6>

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

Как я могу проверить уровень заряда батареи наушников, подключенных через Bluetooth?

Редактировать:

Изначально я думал, что проблема в названии устройства, но, похоже, они "Powerbeats Wireless"работают bluetoothaudiodвзаимозаменяемо. Просто не могу понять, как получить доступ к batterypercentпараметру.

Редактировать 2:

Глядя на документы Bluetooth, кажется, что есть служба батареи, которая показывает состояние батареи и уровень заряда батареи . Уровень заряда батареи можно прочитать с помощью подпроцедуры GATT Read Characteristic Value , поэтому мне нужно найти способ взаимодействия с этой службой из командной строки. У меня есть ощущение batterypercent, что код может быть закодирован только для стандартных периферийных устройств (трекпад, мышь, клавиатура), так как все виджеты мониторинга батареи, которые я пробовал, совместимы только с такими устройствами.

Редактировать 3:

Пересматриваю это почти год спустя. Я знаю, что у меня есть беспроводной трекпад и клавиатура, и я прекрасно вижу уровень заряда батареи (как на панели инструментов, так и в командной строке). Тем не менее, я все еще не могу получить уровень заряда батареи в наушниках, и не знаю, почему :/

ioreg -c "Powerbeats Wireless" |grep -i batteryтакже возвращает общую информацию о батарее, поэтому я думаю, что у меня есть правильное имя устройства. Но почему batterylevelкоманда не работает!! смш
Пожалуйста, отредактируйте свой вопрос вместо того, чтобы комментировать свой собственный вопрос.
Редактирование @IronCraftMan завершено. Думаешь, ты мог бы предложить какую-нибудь помощь?
Привет - мне интересно услышать, есть ли у вас что-то еще. Я хочу увеличить время автономной работы контроллеров PS4, подключенных по Bluetooth к моему iMac.
Не работает и с моими bluetooth-наушниками JVC. Странно, потому что мой 5-летний iPhone 4S без проблем сообщает мне уровень заряда батареи при подключении.
Похоже, что некоторые устройства и Mac не работают хорошо --- либо аппаратное обеспечение BT на Mac не может этого сделать, либо (что более вероятно) программное обеспечение Mac не реализует некоторые версии стандарта. Если бы мы могли получить прямой доступ к оборудованию BT, возможно, была бы надежда? Сегодня это немного выходит за рамки ;-) Может быть, это?: github.com/toy/blueutil

Ответы (5)

На моем iMac (macOS 10.12.6) ни одно из упомянутых выше решений не работает. После прочтения справочной страницы ioreg . Решение, которое работает на моем компьютере:

// the -r option is used to reduce output
// the -l option is used to display properties for all object
// by default some object properties are not shown
// the -c specify device class, the class could be specific or general
ioreg -c AppleDeviceManagementHIDEventService -r -l
ioreg -c AppleDeviceManagementHIDEventService -r -l | grep -i battery

// instead of using device io class, you could also use a property key to query
// you need to know one of target device's property key(-k), for example it is BatteryPercent for Bluetooth keyboard and mouse
// any device with this property will be listed
ioreg -r -l -k "BatteryPercent"
ioreg -r -l -k "BatteryPercent" | grep -i battery

Есть и другие классы устройств, которые можно использовать для аргумента -c: AppleHSBluetoothDevice AppleHSBluetoothHIDDriver AppleMultitouchMouseHIDEventDriver AppleHIDKeyboardEventDriverV2 , они дают другой результат.

Ни один из ответов не работает для меня.

Это приложение работает для меня:

https://github.com/jariz/Akku/ (примечание: этот инструмент больше не разрабатывается и не будет работать в Монтеррее или позже)

Это с открытым исходным кодом и бесплатно.

Не забудьте скачать версию 0.1.0-beta.10.

введите описание изображения здесь

Давно искал подобное приложение. Большое спасибо!
В настоящее время с уведомлениями возникла проблема. Кроме того, я проверил на 2 устройствах, и все работало отлично. :)
У меня работало с JBL T460BT. Спасибо.
Хорошее приложение, но не работало с QC 35 II :( (нет сообщения о состоянии батареи...)
Мои наушники не сообщают о состоянии батареи без явного запроса, и это приложение не запрашивает его. Мне также пришлось подключить наушники к телефону, чтобы он мог выдать отчет, и это приложение ДЕЙСТВИТЕЛЬНО его перехватило и показало.

Вам нужно использовать ioreg. Вам нужно знать имя устройства. Просто следуйте этому руководству.

Короче говоря, руководствоioreg -c <devicename> |grep '"BatteryPercent" ='

Пример:

ioreg -c BeatsBluetoothHeadset |grep '"BatteryPercent" ='

введите описание изображения здесь

Кроме того, вы можете получить более широкую информацию об аккумуляторе с помощью:

ioreg -c BeatsBluetoothHeadset |grep Battery
Эй, спасибо за ваш ответ! Эта проблема, по-видимому, характерна для наушников Beats, поскольку я могу получить доступ к уровням заряда батареи для своей беспроводной клавиатуры и трекпада. Обновлю исходный вопрос!
это не работает для меня
Это руководство не говорит нам, как найти имя устройства.

Я только что обнаружил, что, чтобы проверить уровень заряда батареи моего powerbeats 3 на моем Mac, я просто захожу в меню Bluetooth в области значков в правом верхнем углу экрана, наводит курсор на подключенные powerbeats, и тогда он показывает уровень заряда батареи прямо там. Надеюсь, это поможет.

Этот набор флагов сводит вывод к минимуму, а следующий код дает вам просто процент в виде числа.

ioreg -r -n AppleDeviceManagementHIDEventService -k BatteryPercent | perl -nE '/"BatteryPercent" = (\d++)/ && say $1'

Я использую это с BetterTouchTool.