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

24

Estoy tratando de verificar 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 necesito hacer es ingresar lo siguiente:

ioreg -c 'deviceName' |grep -i batterypercent

Probé este comando usando "Powerbeats Wireless" y "bluetoothaudiod" para los '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 obtener 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 verificar el nivel de batería de mis auriculares con conexión Bluetooth?

Editar:

Al principio pensé que el problema fue con el nombre del dispositivo, pero parece "Powerbeats Wireless"y bluetoothaudiodel trabajo de manera intercambiable. 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 batería se puede leer usando el subprocedimiento de valor característico de lectura GATT , por lo que necesito encontrar una manera de interactuar con este servicio desde la línea de comandos. Tengo la sensación de que solo se puede codificar para periféricos estándar (trackpad, mouse, teclado), ya que todos los widgets de monitoreo de batería que he probado solo son compatibles con dichos dispositivos.batterypercent

Edición 3:

Revisando esto casi un año después. Sé que tengo un trackpad inalámbrico y teclado, 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é:

pingo
fuente
ioreg -c "Powerbeats Wireless" |grep -i batteryTambién devuelve la información general de la batería, así que creo que tengo el nombre correcto del dispositivo. ¡Pero por qué el batterylevelcomando no funciona! Smh
pingo
Edite su pregunta en lugar de comentar su propia pregunta.
At0mic
Las ediciones de @IronCraftMan ahora están completas. ¿Crees que podrías ofrecer alguna ayuda?
pingo
Hola, estoy interesado en saber si tienes más. Quiero obtener la duración de la batería de los controladores PS4 conectados por BlueTooth a mi iMac.
dunxd
Tampoco funciona para mis auriculares bluetooth JVC. Extraño, porque mi iPhone 4S de 5 años no tiene problemas para decirme su nivel de batería cuando está conectado.
John Smith

Respuestas:

8

En mi iMac (macOS 10.12.6), ninguna de las soluciones mencionadas anteriormente funciona. Después de leer la página de manual 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.

Minghao Ni
fuente
7

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

La guía, en resumen, básicamente te hace ejecutar el ioreg -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
Wynshaft
fuente
2
Hola, 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 y trackpad inalámbricos. Se actualizará la pregunta original!
pingo
no funciona para mí
Jadda
1

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

Keaton
fuente