Bug 452244 - Isn't shown battery level for my headset (ATH-ANC900BT)
Summary: Isn't shown battery level for my headset (ATH-ANC900BT)
Status: RESOLVED FIXED
Alias: None
Product: Bluedevil
Classification: Unmaintained
Component: system tray (other bugs)
Version First Reported In: 5.24.4
Platform: Arch Linux Linux
: NOR normal
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-04-03 23:23 UTC by Piotr Mierzwinski
Modified: 2022-04-06 20:18 UTC (History)
6 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
bluetooth_connection_made_by_kde (87.04 KB, image/png)
2022-04-04 00:17 UTC, Piotr Mierzwinski
Details
bluetooth_connection_made_manually (83.15 KB, image/png)
2022-04-04 00:17 UTC, Piotr Mierzwinski
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Piotr Mierzwinski 2022-04-03 23:23:55 UTC
SUMMARY
I have headset Audio Technica model ANC900BT connecting to my PC via Bluetooth. Unfortunately after proper connection (I can listen sound via this device) I don't see battery level in applet of system tray. It is is connected by BLE_ATH-ANC900BT (Bluetooth Low Energy way).

STEPS TO REPRODUCE
1.  Pair headset ATH-ANC900BT
2. Connect it to host
3. Open Bluetooth and unfold entry: BLE_ATH-ANC900BT

OBSERVED RESULT
No battery level

EXPECTED RESULT
Battery level should appear

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: 
(available in About System)
KDE Plasma Version:  5.24.4
KDE Frameworks Version: 5.92
Qt Version: 5.15.3 (with recent kde patches)

ADDITIONAL INFORMATION
Comment 1 Piotr Mierzwinski 2022-04-03 23:51:37 UTC
ADDITIONAL INFORMATION
$ pacman -Q | grep pulse
libpulse 15.0-4
projectm-pulseaudio 3.1.12-3
pulseaudio 15.0-4
pulseaudio-alsa 1:1.2.6-3
pulseaudio-bluetooth 15.0-4
pulseaudio-equalizer 15.0-4
pulseaudio-qt 1.3-1
pulsemixer 1.5.1-3

$ lsmod | grep bt
btusb                  65536  0
btrtl                  28672  1 btusb
btbcm                  20480  1 btusb
btintel                45056  1 btusb
btmtk                  16384  1 btusb
bluetooth             851968  59 btrtl,hidp,btmtk,btintel,btbcm,bnep,btusb,rfcomm

$ pacman -Q | grep blue
bluedevil 1:5.24.4-1
bluez 5.64-2
bluez-hid2hci 5.64-2
bluez-libs 5.64-2
bluez-qt 5.92.0-1
bluez-tools 0.2.0-5
bluez-utils 5.64-2
gnome-bluetooth 3.34.5-2
pulseaudio-bluetooth 15.0-4
python-pybluez 0.23-4

Not sure if this is related, because I use  Bluez, but I tried  also this (without success):
I start daeamon with experimental function like this:
ExecStart=/usr/lib/bluetooth/bluetoothd -E

And in configuration file: /etc/bluetooth/main.conf I have line:
Experimental = true
in section "General"
Comment 2 Piotr Mierzwinski 2022-04-04 00:17:14 UTC
Created attachment 147948 [details]
bluetooth_connection_made_by_kde
Comment 3 Piotr Mierzwinski 2022-04-04 00:17:45 UTC
Created attachment 147949 [details]
bluetooth_connection_made_manually
Comment 4 Piotr Mierzwinski 2022-04-04 00:18:12 UTC
ADDITIONAL INFORMATION
$ pacman -Q bluez
bluez 5.64-2

UPDATE of DESCRIPTION
The issue is that when I connect my headset manually using bluetoothctl then I get battery level, but using kde wizard, doesn't.
Please check attached screenshots.

Manually I do it like this:
bluetoothctl
Agent registered
AdvertisementMonitor path registered
[bluetooth]# power on
Changing power on succeeded
[bluetooth]# agent on
Agent is already registered
[bluetooth]# default-agent
Default agent request successful
[bluetooth]# scan on
...
[CHG] Device 00:0A:45:0D:F0:6B Name: BLE_ATH-ANC900BT
[CHG] Device 00:0A:45:0D:F0:6B Alias: BLE_ATH-ANC900BT
..
[bluetooth]# pair 00:0A:45:0D:F0:6B
Attempting to pair with 00:0A:45:0D:F0:6B
[CHG] Device 00:0A:45:0D:F0:6B Connected: yes
[CHG] Device 00:0A:45:0D:F0:6B Name: BLE_ATH-ANC900BT
[CHG] Device 00:0A:45:0D:F0:6B Alias: BLE_ATH-ANC900BT
[NEW] Primary Service (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0001
00001801-0000-1000-8000-00805f9b34fb
Generic Attribute Profile
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0001/char0002
00002a05-0000-1000-8000-00805f9b34fb
Service Changed
[NEW] Descriptor (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0001/char0002/desc0004
00002902-0000-1000-8000-00805f9b34fb
Client Characteristic Configuration
[NEW] Primary Service (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service000a
00001804-0000-1000-8000-00805f9b34fb
Tx Power
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service000a/char000b
00002a07-0000-1000-8000-00805f9b34fb
Tx Power Level
[NEW] Primary Service (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service000d
00001802-0000-1000-8000-00805f9b34fb
Immediate Alert
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service000d/char000e
00002a06-0000-1000-8000-00805f9b34fb
Alert Level
[NEW] Primary Service (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0010
00001803-0000-1000-8000-00805f9b34fb
Link Loss
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0010/char0011
00002a06-0000-1000-8000-00805f9b34fb
Alert Level
[NEW] Primary Service (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0013
0000180d-0000-1000-8000-00805f9b34fb
Heart Rate
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0013/char0014
00002a37-0000-1000-8000-00805f9b34fb
Heart Rate Measurement
[NEW] Descriptor (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0013/char0014/desc0016
00002902-0000-1000-8000-00805f9b34fb
Client Characteristic Configuration
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0013/char0017
00002a38-0000-1000-8000-00805f9b34fb
Body Sensor Location
[NEW] Primary Service (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0019
0000180a-0000-1000-8000-00805f9b34fb
Device Information
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0019/char001a
00002a29-0000-1000-8000-00805f9b34fb
Manufacturer Name String
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0019/char001c
00002a24-0000-1000-8000-00805f9b34fb
Model Number String
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0019/char001e
00002a25-0000-1000-8000-00805f9b34fb
Serial Number String
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0019/char0020
00002a27-0000-1000-8000-00805f9b34fb
Hardware Revision String
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0019/char0022
00002a26-0000-1000-8000-00805f9b34fb
Firmware Revision String
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0019/char0024
00002a28-0000-1000-8000-00805f9b34fb
Software Revision String
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0019/char0026
00002a23-0000-1000-8000-00805f9b34fb
System ID
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0019/char0028
00002a2a-0000-1000-8000-00805f9b34fb
IEEE 11073-20601 Regulatory Cert. Data List
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0019/char002a
00002a50-0000-1000-8000-00805f9b34fb
PnP ID
[NEW] Primary Service (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service002c
00001100-d102-11e1-9b23-00025b00a5a5
Vendor specific
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service002c/char002d
00001101-d102-11e1-9b23-00025b00a5a5
Vendor specific
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service002c/char002f
00001102-d102-11e1-9b23-00025b00a5a5
Vendor specific
[NEW] Descriptor (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service002c/char002f/desc0031
00002902-0000-1000-8000-00805f9b34fb
Client Characteristic Configuration
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service002c/char0032
00001103-d102-11e1-9b23-00025b00a5a5
Vendor specific
[NEW] Primary Service (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0034
0000180f-0000-1000-8000-00805f9b34fb
Battery Service
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0034/char0035
00002a19-0000-1000-8000-00805f9b34fb
Battery Level
[NEW] Descriptor (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0034/char0035/desc0037
00002904-0000-1000-8000-00805f9b34fb
Characteristic Format
[NEW] Descriptor (Handle 0x0000)
/org/bluez/hci0/dev_00_0A_45_0D_F0_6B/service0034/char0035/desc0038
00002902-0000-1000-8000-00805f9b34fb
Client Characteristic Configuration
[CHG] Device 00:0A:45:0D:F0:6B ServicesResolved: yes
Pairing successful
[bluetooth]# scan off
Comment 5 Nicolas Fella 2022-04-04 21:12:07 UTC
There is no relevant difference between what bluetoothctl does and what bluedevil does, so what you are seeing is most likely purely coincidental
Comment 6 Nicolas Fella 2022-04-04 21:19:09 UTC
When the battery info is *not* shown, what does running "qdbus --system org.bluez /org/bluez/hci0/dev_00_0A_45_0D_F0_6B org.bluez.Battery1.Percentage" do?
Comment 7 Piotr Mierzwinski 2022-04-04 22:32:37 UTC
(In reply to Nicolas Fella from comment #6)
> When the battery info is *not* shown, what does running "qdbus --system
> org.bluez /org/bluez/hci0/dev_00_0A_45_0D_F0_6B
> org.bluez.Battery1.Percentage" do?

$ qdbus --system org.bluez /org/bluez/hci0/dev_00_0A_45_0D_F0_6B org.bluez.Battery1.Percentage
Error: org.freedesktop.DBus.Error.UnknownMethod
Method "Percentage" with signature "" on interface "org.bluez.Battery1" doesn't exist

I removed last two words and pressed Tab to get completion. Below please find result:
$ qdbus --system org.bluez /org/bluez/hci0/dev_00_0A_45_0D_F0_6B org.bluez.
org.bluez.Device1.Adapter            org.bluez.Device1.Connected          org.bluez.Device1.RSSI               org.bluez.MediaControl1.Pause
org.bluez.Device1.Address            org.bluez.Device1.ConnectProfile     org.bluez.Device1.ServiceData        org.bluez.MediaControl1.Play
org.bluez.Device1.AddressType        org.bluez.Device1.Disconnect         org.bluez.Device1.ServicesResolved   org.bluez.MediaControl1.Player
org.bluez.Device1.AdvertisingData    org.bluez.Device1.DisconnectProfile  org.bluez.Device1.Trusted            org.bluez.MediaControl1.Previous
org.bluez.Device1.AdvertisingFlags   org.bluez.Device1.Icon               org.bluez.Device1.TxPower            org.bluez.MediaControl1.Rewind
org.bluez.Device1.Alias              org.bluez.Device1.LegacyPairing      org.bluez.Device1.UUIDs              org.bluez.MediaControl1.Stop
org.bluez.Device1.Appearance         org.bluez.Device1.ManufacturerData   org.bluez.Device1.WakeAllowed        org.bluez.MediaControl1.VolumeDown
org.bluez.Device1.Blocked            org.bluez.Device1.Modalias           org.bluez.Input1.ReconnectMode       org.bluez.MediaControl1.VolumeUp
org.bluez.Device1.CancelPairing      org.bluez.Device1.Name               org.bluez.MediaControl1.Connected
org.bluez.Device1.Class              org.bluez.Device1.Pair               org.bluez.MediaControl1.FastForward
org.bluez.Device1.Connect            org.bluez.Device1.Paired             org.bluez.MediaControl1.Next
Comment 8 Piotr Mierzwinski 2022-04-04 22:53:05 UTC
Additional activities I did yesterday was:
1. update service file:   /usr/lib/systemd/system/bluetooth.service
with:  "ExecStart=/usr/lib/bluetooth/bluetoothd -E", so turned on experimental functions
2. update file /etc/bluetooth/main.conf , section General
 with "Experimental = true"
3.  Run commands:
$ sudo systemctl restart bluetooth.service
$ sudo systemctl daemon-reload
4. I did all commands I mentioned below in bluetoothctl 
After pairing I can see Battery level

Today I turned on my  PC and having modified mentioned files  and doing only the things mentioned in point 4, didn't give success, so no  got battery level.
To get battery level I needed restore default values in both mentioned config files, so remove experimental option and restart service and reload daemon. I paired my headset. And again updated  both files with option enabling experimental function and restarted service and reload daemon. After pairing headset by bluetoothctl I got battery level. So I think I paired twice and after second time I got battery level.
Comment 9 Piotr Mierzwinski 2022-04-04 22:57:08 UTC
In moment when battery level is shown then below commands gives works like below
$ qdbus --system org.bluez /org/bluez/hci0/dev_00_0A_45_0D_F0_6B org.bluez.Battery1.Percentage
S

And other results:
$ dbus --system org.bluez /org/bluez/hci0/dev_00_0A_45_0D_F0_6B org.bluez.Battery1.
org.bluez.Battery1.Percentage  org.bluez.Battery1.Source
$ qdbus --system org.bluez /org/bluez/hci0/dev_00_0A_45_0D_F0_6B org.bluez.Battery1.Source
GATT Battery Service
Comment 10 Nicolas Fella 2022-04-04 23:22:31 UTC
> Error: org.freedesktop.DBus.Error.UnknownMethod
Method "Percentage" with signature "" on interface "org.bluez.Battery1" doesn't exist

That's exactly what I expected. bluez does not provide the battery interface so bluedevil cannot display the battery level.

The battery reporting requires the experimental flag, so I'm not sure why you are seeing what you are seeing.

However I'm quite confident that the issue is not related to Plasma since it works as expected when the battery interface is present, and whether or not it is isn't something Plasma has any influence over.

I suggest you report this to bluez directly
Comment 11 Piotr Mierzwinski 2022-04-06 20:18:42 UTC
(In reply to Nicolas Fella from comment #10)
> > Error: org.freedesktop.DBus.Error.UnknownMethod

> However I'm quite confident that the issue is not related to Plasma since it
> works as expected when the battery interface is present, and whether or not
> it is isn't something Plasma has any influence over.
Yes. Seems you are right.
BTW.
When I can see battery level then headset is not discoverable by pulseaudio, so I cannot switch to this device..
It is really annoying.

> I suggest you report this to bluez directly
I will do it. Thanks a lot for checking and suggestions. It was helpful.