Check Bluetooth headphones battery status in Linux

Solution 1:

I wrote a simple python script that does the job. It uses AT commands to communicate with the device via RFCOMM and prints the battery level if the device is supported.

https://github.com/TheWeirdDev/Bluetooth_Headset_Battery_Level

(You need Python 3.6.0 or newer to run the script)

It might not work with all bluetooth headsets but I've provided a couple of workarounds in the 'Issues' page that might help.

Solution 2:

In ubuntu you can go simply to settings->power to see the battery status of system and connected devices.

enter image description here

Yes, I know it's a Microsoft Bluetooth mouse on a Linux System ... but hey, Microsoft is the new cool company now ;)

This is what: systemctl status bluetooth

enter image description here

This is what: bluetoothctl devices shows:

enter image description here

The JBL was disconnected and the Creative speaker is connected with power. So the resulting ones with batteries (Keychron and Mouse) show up in the settings->power dialog.

NOTE: If upower -d not show the device, It's power level may not display in settings .
// I had a mouse shown, but a headphone not.

Solution 3:

upower can be used from a terminal to list power devices, listening to device events and querying history and statistics.

If your device is listed by upower -e you can run upower --dump to retrieve the battery level of your device.

Here is a sample output:

$ upower --dump
...
Device: /org/freedesktop/UPower/devices/mouse_dev_C1_FC_26_13_A9_58
  native-path:          /org/bluez/hci0/dev_C1_FC_26_13_A9_58
  model:                MX Anywhere 2S
  serial:               C1:FC:26:13:A9:58
  power supply:         no
  updated:              Wed 31 Dec 1969 06:00:00 PM CST (1550719462 seconds ago)
  has history:          yes
  has statistics:       no
  mouse
    present:             yes
    rechargeable:        no
    state:               unknown
    warning-level:       none
    percentage:          50%
    icon-name:          'battery-missing-symbolic'
...

src reddit

Solution 4:

For Airpods devices download and run https://github.com/delphiki/AirStatus with:

git clone [email protected]:delphiki/AirStatus.git
cd AirStatus
pip3 install bleak
python3 main.py