Verifique o nível da bateria dos fones de ouvido bluetooth conectados na linha de comando

24

Estou tentando verificar o nível da bateria dos meus fones de ouvido sem fio na linha de comando. Me deparei com algumas discussões e parece que tudo o que preciso fazer é inserir o seguinte:

ioreg -c 'deviceName' |grep -i batterypercent

Eu tentei este comando usando "Powerbeats Wireless" e "bluetoothaudiod" para os 'deviceName', mas nenhum deles retornou batterypercent. Tentei ioreg -c bluetoothaudiod |grep -i batteryobter informações gerais sobre a bateria e obtive isso como resposta:

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

Se eu conectar os fones de ouvido ao meu iPhone , o nível da bateria será exibido imediatamente na barra de ferramentas. Isso me leva a acreditar que o dispositivo está transmitindo o nível da bateria e que devo poder acessar essas informações no meu computador.

Como posso verificar o nível da bateria dos meus fones de ouvido conectados por bluetooth?

Editar:

Inicialmente, pensei que o problema era com o nome do dispositivo, mas parece "Powerbeats Wireless"e bluetoothaudiodfunciona de forma intercambiável. Só não consigo descobrir como acessar o batterypercentparâmetro.

Edição 2:

Observando os documentos do Bluetooth, parece que existe um Serviço de bateria que expõe o estado e o nível da bateria . O nível da bateria pode ser lido usando o sub-procedimento GATT Read Characteristic Value , portanto, preciso descobrir uma maneira de fazer interface com esse serviço na linha de comando. Sinto que batterypercentsó pode ser codificado para periféricos padrão (trackpad, mouse, teclado), pois todos os widgets de monitoramento de bateria que experimentei são compatíveis apenas com esses dispositivos.

Edição 3:

Revisitando isso quase um ano depois. Sei que tenho um trackpad e teclado sem fio e posso ver os níveis de bateria perfeitamente bem (na barra de ferramentas ou na linha de comando). Ainda não consigo obter o nível da bateria dos meus fones de ouvido e não sei por que: /

pingo
fonte
ioreg -c "Powerbeats Wireless" |grep -i batterytambém retorna as informações gerais da bateria, então acho que tenho o nome correto do dispositivo. Mas por que o batterylevelcomando não está funcionando !! Smh
pingo
Edite sua pergunta em vez de comentar sobre sua própria pergunta.
At0mic
As edições do @IronCraftMan estão concluídas. Você acha que poderia oferecer alguma ajuda?
Pingo
Oi - Estou interessado em saber se você tem mais. Quero tirar a vida da bateria dos controladores PS4 conectados pelo BlueTooth ao meu iMac.
dunxd
Também não funciona nos meus fones de ouvido bluetooth JVC. Estranho, porque meu iPhone 4S de 5 anos não tem nenhum problema em me dizer o nível de carga da bateria quando conectado.
John Smith

Respostas:

8

No meu iMac (macOS 10.12.6), nenhuma das soluções mencionadas acima funciona. Depois de ler a página de manual do ioreg . A solução que funciona no meu computador é:

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

Existem algumas outras classes de dispositivo para tentar o argumento -c: AppleHSBluetoothDevice AppleHSBluetoothHIDDriver AppleMultitouchMouseHIDEventDriver AppleHIDKeyboardEventDriverV2 , fornecem resultados diferentes.

Minghao Ni
fonte
7

Você precisa usar ioreg. Você precisará saber o nome do dispositivo. Basta seguir este guia.

O guia, em suma, basicamente você executa o ioreg -c <devicename> |grep '"BatteryPercent" ='

Exemplo:

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

insira a descrição da imagem aqui

Além disso, você pode recuperar informações mais amplas da bateria com:

ioreg -c BeatsBluetoothHeadset |grep Battery
wynshaft
fonte
2
Ei, obrigado pela sua resposta! Esse problema parece ser específico dos fones de ouvido Beats, pois posso acessar os níveis de bateria do teclado e do trackpad sem fio. Atualizará a pergunta original!
pingo
ele não está funcionando para mim
Jåddå
1

Acabei de descobrir que, para verificar o nível da bateria do meu powerbeats 3 no meu Mac, basta ir ao menu bluetooth na área de ícones no canto superior direito da tela, passar o mouse sobre os powerbeats conectados e mostrar o nível da bateria ali. Espero que ajude.

Keaton
fonte