Linux で Bluetooth ヘッドセットの電池残量を調べる方法

2022年10月19日 水曜日


【この記事を書いた人】
古賀 勇

IIJ ネットワーク本部アプリケーションサービス部・(兼)社長室所属。 メールサービスの運用業務に従事し、日々世界の悪と戦う一児の父親。社内 Power Automate エバンジェリスト(自称)。M3AAWG member / openSUSE Users / WIDE Project メンバー。趣味は大喜利。はがき職人。

「Linux で Bluetooth ヘッドセットの電池残量を調べる方法」のイメージ

デバイスと Linux デスクトップ環境の組み合わせによっては、標準でバッテリ残量が表示されるものもあるようですが、私の所有するデバイスと環境では表示されませんでした。そうした環境下でもバッテリ残量を調べる方法がありましたので紹介いたします。

環境

  • openSUSE Leap 15.4
  • エレコム製 Bluetooth アダプタ LBT-UAN05C2/N(※1)
    • ちなみにこのアダプタ、Linux に挿すだけで自動認識して使えました。Bluetooth 通信時に LED が点灯するので、ちゃんとペアリングできているのか視覚的に分かりやすくてオススメです。
  • Bose Quiet Comfort 35 wireless headphones II
    • 少々値が張るのですが、長時間つけていても全く疲れず、ノイズキャンセリング機能で周囲の音がカットされるので会議に集中できます。そして自宅でリモートワークをしていると、妻と学校から帰ってきた子どもがケンカを始めて仕事にならないときがあるのですが、そんなとき、このヘッドセットが本領を発揮します。

インストール

https://github.com/TheWeirdDev/Bluetooth_Headset_Battery_Level を利用します。

# zypper in bluez bluez-devel python3-devel python3-pybluez
# pip3 install bluetooth_battery
$ git clone https://github.com/TheWeirdDev/Bluetooth_Headset_Battery_Level
$ cd Bluetooth_Headset_Battery_Level

使いかた

Bluetooth でペアリング済みのヘッドセットの MAC アドレスを調べます。

$ bluetoothctl devices
Device 4C:87:5D:54:E4:1C LE-会社の Bose QC35 II

4C:87:5D:54:E4:1C だと分かります。

 

$ ./bluetooth_battery.py 4C:87:5D:54:E4:1C
Battery level for 4C:87:5D:54:E4:1C is 60%

やったね!

注意

すでに PC と Bluetooth 接続済みだと、割り込めないのかこのような表示になりますので注意です。
(最初、なんだこれ使えないのか、と思ってハマりました)

4C:87:5D:54:E4:1C is offline [Errno 111] Connection refused

 

追加情報

  1. LBT-UAN05C2/N の認識状況は次のとおりです。[↑]
    Sep 29 20:36:47 tail systemd[1]: systemd-rfkill.service: Deactivated successfully.
    Sep 29 20:36:48 tail kernel: usb 5-3.3: new full-speed USB device number 8 using xhci_hcd
    Sep 29 20:36:48 tail kernel: usb 5-3.3: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=88.91
    Sep 29 20:36:48 tail kernel: usb 5-3.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
    Sep 29 20:36:48 tail kernel: usb 5-3.3: Product: CSR8510 A10
    Sep 29 20:36:48 tail rtkit-daemon[3017]: Supervising 15 threads of 10 processes of 1 users.
    Sep 29 20:36:48 tail rtkit-daemon[3017]: Supervising 15 threads of 10 processes of 1 users.
    Sep 29 20:36:48 tail systemd[1]: Starting Load/Save RF Kill Switch Status...
    Sep 29 20:36:48 tail upowerd[16564]: treating change event as add on /sys/devices/pci0000:00/0000:00:08.1/0000:0b:00.3/usb5/5-3/5-3.3
    Sep 29 20:36:48 tail systemd[1]: Started Load/Save RF Kill Switch Status.
    Sep 29 20:36:48 tail systemd[1]: Reached target Bluetooth Support.
    Sep 29 20:36:48 tail systemd[2634]: Reached target Bluetooth.
    Sep 29 20:36:48 tail bluetoothd[10405]: Admin Policy Set interface registered
    Sep 29 20:36:48 tail bluetoothd[10405]: Admin Policy Status interface registered
    Sep 29 20:36:48 tail bluetoothd[10405]: src/profile.c:ext_start_servers() RFCOMM server failed for Headset unit: rfcomm_bind: Address already in use (98)
    Sep 29 20:36:48 tail bluetoothd[10405]: src/profile.c:ext_start_servers() RFCOMM server failed for Hands-Free Voice gateway: rfcomm_bind: Address already in use (98)
    Sep 29 20:36:49 tail bluetoothd[10405]: Player registered: sender=:1.46 path=/media_player3
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.50 path=/MediaEndpoint/A2DPSink/sbc
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.50 path=/MediaEndpoint/A2DPSource/sbc
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.50 path=/MediaEndpoint/A2DPSink/sbc_xq_453
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.50 path=/MediaEndpoint/A2DPSource/sbc_xq_453
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.50 path=/MediaEndpoint/A2DPSink/sbc_xq_512
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.50 path=/MediaEndpoint/A2DPSource/sbc_xq_512
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.50 path=/MediaEndpoint/A2DPSink/sbc_xq_552
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.50 path=/MediaEndpoint/A2DPSource/sbc_xq_552
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.46 path=/MediaEndpoint/A2DPSource/ldac
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.46 path=/MediaEndpoint/A2DPSource/aac
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.46 path=/MediaEndpoint/A2DPSink/sbc
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.46 path=/MediaEndpoint/A2DPSource/sbc
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.46 path=/MediaEndpoint/A2DPSink/sbc_xq
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.46 path=/MediaEndpoint/A2DPSource/sbc_xq
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.46 path=/MediaEndpoint/A2DPSource/faststream
    Sep 29 20:36:49 tail bluetoothd[10405]: Endpoint registered: sender=:1.46 path=/MediaEndpoint/A2DPSource/faststream_duplex

     

古賀 勇

2022年10月19日 水曜日

IIJ ネットワーク本部アプリケーションサービス部・(兼)社長室所属。 メールサービスの運用業務に従事し、日々世界の悪と戦う一児の父親。社内 Power Automate エバンジェリスト(自称)。M3AAWG member / openSUSE Users / WIDE Project メンバー。趣味は大喜利。はがき職人。

Related
関連記事