Verifique el nivel de batería de los auriculares bluetooth conectados desde la línea de comando

Estoy intentando comprobar el nivel de batería de mis auriculares inalámbricos desde la línea de comandos. Encontré algunas discusiones , y parece que todo lo que tengo que hacer es ingresar lo siguiente:

ioreg -c 'deviceName' |grep -i batterypercent

Probé este comando usando "Powerbeats Wireless" y "bluetoothaudiod" para el 'deviceName''s, pero ninguno de los dos devolvió el batterypercent. Traté ioreg -c bluetoothaudiod |grep -i batteryde obtener información general sobre la batería y obtuve esto como respuesta:

| |   +-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>

Si conecto los auriculares a mi iPhone , el nivel de batería aparece inmediatamente en la barra de herramientas. Esto me lleva a creer que el dispositivo está transmitiendo el nivel de la batería y que debería poder acceder a esta información desde mi computadora.

¿Cómo puedo comprobar el nivel de batería de mis auriculares conectados por bluetooth?

Editar:

Inicialmente pensé que el problema estaba relacionado con el nombre del dispositivo, pero parece que "Powerbeats Wireless"funciona bluetoothaudiodindistintamente. Simplemente no puedo entender cómo acceder al batterypercentparam.

Edición 2:

Mirando los documentos de Bluetooth, parece que hay un servicio de batería que expone el estado de la batería y el nivel de la batería . El nivel de la batería se puede leer usando el subprocedimiento GATT Read Characteristic Value , por lo que necesito encontrar una forma de interactuar con este servicio desde la línea de comando. Tengo la sensación de batterypercentque solo puede estar codificado para periféricos estándar (panel táctil, mouse, teclado), ya que todos los widgets de monitoreo de batería que he probado solo son compatibles con dichos dispositivos.

Editar 3:

Revisando esto casi un año después. Sé que tengo un panel táctil y un teclado inalámbricos, y puedo ver sus niveles de batería perfectamente bien (tanto en la barra de herramientas como en la línea de comandos). Sin embargo, todavía no puedo obtener el nivel de batería de mis auriculares, y no estoy seguro de por qué :/

ioreg -c "Powerbeats Wireless" |grep -i batterytambién devuelve la información general de la batería, así que creo que tengo el nombre de dispositivo correcto. ¡¡ Pero por qué el batterylevelcomando no funciona!! Smh
Edite su pregunta en lugar de comentar su propia pregunta.
Las ediciones de @IronCraftMan ahora están completas. ¿Crees que podrías ofrecer alguna ayuda?
Hola, me interesa saber si tienes más. Quiero aprovechar la batería de los controladores de PS4 conectados por BlueTooth a mi iMac.
Tampoco funciona para mis auriculares bluetooth JVC. Extraño, porque mi iPhone 4S de 5 años no tiene problemas para decirme el nivel de batería cuando está conectado.
Parece que algunos dispositivos y Mac no funcionan bien --- el hardware BT en la Mac no puede hacerlo o (lo más probable) el software Mac no implementa algunas versiones del estándar. Si pudiéramos acceder directamente al hardware de BT, ¿tal vez habría esperanza? Sin embargo, eso está un poco fuera de alcance hoy ;-) ¿Quizás esto?: github.com/toy/blueutil

Respuestas (5)

En mi iMac (macOS 10.12.6), ninguna de las soluciones mencionadas anteriormente funciona. Después de leer la página man de ioreg . La solución que funciona en mi computadora es:

// 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

Hay algunas otras clases de dispositivos para probar el argumento -c: AppleHSBluetoothDevice AppleHSBluetoothHIDDriver AppleMultitouchMouseHIDEventDriver AppleHIDKeyboardEventDriverV2 , dan una salida diferente.

Ninguna de las respuestas me funciona.

Esta aplicación funciona para mí:

https://github.com/jariz/Akku/ (nota: esta herramienta ya no se trabaja activamente y no funcionará en Monterrey o posterior)

Es de código abierto y gratuito.

Recuerda descargar la versión 0.1.0-beta.10.

ingrese la descripción de la imagen aquí

Llevaba tiempo buscando una aplicación como esta. ¡Muchas gracias!
Actualmente, las notificaciones tienen un problema. Aparte de eso, probé en 2 dispositivos y funcionó perfectamente. :)
Trabajó para mí con JBL T460BT. Gracias.
Buena aplicación, pero no funcionó con QC 35 II :( (no se informó el estado de la batería...)
Mis auriculares no informan el estado de la batería sin que se solicite explícitamente, y esta aplicación no lo solicita. También tuve que conectar mis auriculares a mi teléfono para que pudiera dar un informe, y esta aplicación lo interceptó y lo mostró.

Necesitas usar ioreg. Necesitará saber el nombre del dispositivo. Solo sigue esta guía.

La guía, en resumen, básicamente te hace ejecutar elioreg -c <devicename> |grep '"BatteryPercent" ='

Ejemplo:

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

ingrese la descripción de la imagen aquí

Además, puede recuperar información más amplia sobre la batería con:

ioreg -c BeatsBluetoothHeadset |grep Battery
¡Oye, gracias por tu respuesta! Este problema parece ser específico de los auriculares Beats, ya que puedo acceder a los niveles de batería de mi teclado inalámbrico y trackpad. ¡Actualizaré la pregunta original!
No está funcionando para mi
Esa guía no nos dice cómo encontrar el nombre del dispositivo.

Acabo de descubrir que para verificar el nivel de batería de mis powerbeats 3 en mi Mac, simplemente voy al menú de bluetooth en el área de íconos en la parte superior derecha de la pantalla, desplazo el mouse sobre los powerbeats conectados y luego muestra el nivel de batería allí mismo. Espero que ayude.

Este conjunto de banderas reduce la salida al mínimo y el siguiente código le da solo un porcentaje como un número.

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

Yo uso esto con BetterTouchTool.