GNU/Linux >> Tutoriels Linux >  >> Linux

Vérifiez le niveau de la batterie de l'appareil Bluetooth connecté sous Linux

Pour moi, exécuter ceci dans le terminal a fonctionné :

upower --dump

Vous ne voyez pas le niveau de batterie dans la liste des caractéristiques GATT depuis Bluez v5.48 car cette caractéristique spécifique du GATT a été déplacée dans DBUS org.bluez.Battery1 interface.

Depuis la ligne de commande :

  1. Connectez-vous à votre appareil BLE cible avec bluetoothctl
  2. Puis demandez DBUS en exécutant :dbus-send --print-reply=literal --system --dest=org.bluez /org/bluez/hci0/dev_<mac_address_of_your_ble_peripheral> org.freedesktop.DBus.Properties.Get string:"org.bluez.Battery1" string:"Percentage"

Dans mon cas avec mon périphérique BLE avec l'adresse MAC suivante C3:41:A6:C8:93:42 :

$ dbus-send --print-reply=literal --system --dest=org.bluez \
    /org/bluez/hci0/dev_C3_41_A6_C8_93_42 org.freedesktop.DBus.Properties.Get \
    string:"org.bluez.Battery1" string:"Percentage"
   variant       byte 94

Remarque :Vous pouvez potentiellement scanner et vous connecter à votre appareil à l'aide de l'API Bluez DBUS.


C'est une si grande question, en avance sur le développement et les outils qui sont disponibles pour le moment.

La réponse courte (en octobre 2018)

vous devez l'écrire vous-même! Ce ne sera pas une seule ligne dans le terminal. Je vais écrire ceci pour moi-même en Python, mais C a un peu plus de documentation, donc si vous êtes doué avec C, allez-y.

La réponse longue , mais c'est plutôt un point de départ recommandé :

  1. Tony D :https://youtu.be/5fQR2PHMDWE?t=4644 a réussi à utiliser bluetoothctl pour lire les attributs et envoyer des données à un appareil Bluetooth. Vérifiez certainement les informations vidéo, vous trouverez d'excellents liens et références :https://learn.adafruit.com/introduction-to-bluetooth-low-energy/gatt
  2. Szymon Janc :https://youtu.be/VMDyebKT5c4 développeur et contributeur à la pile Bluetooth LINUX
  3. Certainement Découvrez comment cette question est répondue sur les appareils mobiles. Pour Android c'est le BAS (Battery Service) :https://android.stackexchange.com/questions/106073/displaying-bluetooth-gadgets-battery-status-on-the-phone


C'est peut-être un peu tard pour la fête, mais pour moi, ce projet Python a bien fonctionné :

https://github.com/TheWeirdDev/Bluetooth_Headset_Battery_Level

Je n'ai eu qu'à changer le port de la ligne 57 en 3 pour mon casque sans nom X5. En cas de blocage ou d'erreurs avec "connexion refusée", essayez un autre port.

Le programme Python utilise les commandes AT via RFCOMM et devrait fonctionner pendant que Pulseaudio utilise le récepteur A2DP (le mien se reconnecte). Python 3 est nécessaire car 2 n'a pas de sockets BT-Serial. Windows ne fonctionnera probablement pas car il manque de bluez. Il fait essentiellement la même chose que le hack Pulseaudio ici :https://stackoverflow.com/a/56390625/920122

Si vous voulez regarder les commandes au fur et à mesure qu'elles sont échangées, essayez mon fork de débogage :https://github.com/clst/Bluetooth_Headset_Battery_Level


Linux
  1. Comment installer un pilote de périphérique sous Linux

  2. Comment vérifier le fuseau horaire sous Linux

  3. Ligne de commande Linux comment accepter le couplage pour un périphérique Bluetooth sans code PIN

  4. Comment effectuer des E/S de bas niveau sur un fichier de périphérique Linux en Python ?

  5. Comment monter un appareil sous Linux ?

Comment vérifier la version de Kali Linux

Comment vérifier la version Linux

Comment se connecter via Bluetooth dans GNOME sous Linux

Tout est un fichier sous Linux - Partie 1

Comment vérifier l'état et le niveau de la batterie d'un ordinateur portable dans le terminal sous Linux

Vérifier le fuseau horaire sous Linux