Skip to contentSkip to conversation

Bose Quiet Comfort 35 Remaining Battery Reporting

DISCUSSION Hugues 4 participants 12 messages Feb 6, 2017 – Feb 14, 2018 Bluetooth drivers

lore
Share & tools
lore

Hugues

author
#0 lore raw

Hello,

I own a Bose QC35 bluetooth headset, sound is working great with pulseaudio, but the battery reporting does not, I believe it is a bluetooth issue because the device info doesn't say anything about battery or power.
Any idea how I can make it report the remaining battery to upower so it appears in my DE ?

The device info from bluetoothctl
info 04:52:C7:33:23:6E
Device 04:52:C7:33:23:6E
Name: BQ35 Hugues
Alias: BQ35 Hugues
Class: 0x240418
Icon: audio-card
Paired: yes
Trusted: yes
Blocked: no
Connected: yes
LegacyPairing: no
UUID: Vendor specific
(00000000-deca-fade-deca-deafdecacaff)
UUID: Serial Port
(00001101-0000-1000-8000-00805f9b34fb)
UUID: Headset
(00001108-0000-1000-8000-00805f9b34fb)
UUID: Audio Source
(0000110a-0000-1000-8000-00805f9b34fb)
UUID: Audio Sink
(0000110b-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control Target
(0000110c-0000-1000-8000-00805f9b34fb)
UUID: Advanced Audio Distribu..
(0000110d-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control
(0000110e-0000-1000-8000-00805f9b34fb)
UUID: Handsfree
(0000111e-0000-1000-8000-00805f9b34fb)
UUID: PnP Information
(00001200-0000-1000-8000-00805f9b34fb)

        Modalias: bluetooth:v009Ep400Cd0129

Regards,
Hugues

author
#1 lore raw

If this isn't the right place, where should I seek for more information ?

Quoted 46 lines · Hugues

Hello,

I own a Bose QC35 bluetooth headset, sound is working great with pulseaudio, but the battery reporting does not, I believe it is a bluetooth issue because the device info doesn't say anything about battery or power.
Any idea how I can make it report the remaining battery to upower so it appears in my DE ?

The device info from bluetoothctl
info 04:52:C7:33:23:6E
Device 04:52:C7:33:23:6E
Name: BQ35 Hugues
Alias: BQ35 Hugues
Class: 0x240418
Icon: audio-card
Paired: yes
Trusted: yes
Blocked: no
Connected: yes
LegacyPairing: no
UUID: Vendor specific
(00000000-deca-fade-deca-deafdecacaff)
UUID: Serial Port
(00001101-0000-1000-8000-00805f9b34fb)
UUID: Headset
(00001108-0000-1000-8000-00805f9b34fb)
UUID: Audio Source
(0000110a-0000-1000-8000-00805f9b34fb)
UUID: Audio Sink
(0000110b-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control Target
(0000110c-0000-1000-8000-00805f9b34fb)
UUID: Advanced Audio Distribu..
(0000110d-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control
(0000110e-0000-1000-8000-00805f9b34fb)
UUID: Handsfree
(0000111e-0000-1000-8000-00805f9b34fb)
UUID: PnP Information
(00001200-0000-1000-8000-00805f9b34fb)

        Modalias: bluetooth:v009Ep400Cd0129

Regards,
Hugues

#2 lore raw

Hi,

Quoted 45 lines · Hugues

If this isn't the right place, where should I seek for more information ?

Quoted 42 lines · Hugues

Hello,

I own a Bose QC35 bluetooth headset, sound is working great with pulseaudio, but the battery reporting does not, I believe it is a bluetooth issue because the device info doesn't say anything about battery or power.
Any idea how I can make it report the remaining battery to upower so it appears in my DE ?

The device info from bluetoothctl
info 04:52:C7:33:23:6E
Device 04:52:C7:33:23:6E
Name: BQ35 Hugues
Alias: BQ35 Hugues
Class: 0x240418
Icon: audio-card
Paired: yes
Trusted: yes
Blocked: no
Connected: yes
LegacyPairing: no
UUID: Vendor specific
(00000000-deca-fade-deca-deafdecacaff)
UUID: Serial Port
(00001101-0000-1000-8000-00805f9b34fb)
UUID: Headset
(00001108-0000-1000-8000-00805f9b34fb)
UUID: Audio Source
(0000110a-0000-1000-8000-00805f9b34fb)
UUID: Audio Sink
(0000110b-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control Target
(0000110c-0000-1000-8000-00805f9b34fb)
UUID: Advanced Audio Distribu..
(0000110d-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control
(0000110e-0000-1000-8000-00805f9b34fb)
UUID: Handsfree
(0000111e-0000-1000-8000-00805f9b34fb)
UUID: PnP Information
(00001200-0000-1000-8000-00805f9b34fb)

        Modalias: bluetooth:v009Ep400Cd0129

None of these services are specific for fetching battery power, AVRCP and HFP do have commands for it but they are very rarely implemented but we could indeed use upower to attach the battery information if that is implemented.

Quoted 8 lines
Quoted 3 lines

Regards,
Hugues

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Signature · 1 line
Luiz Augusto von Dentz
author
#3 lore raw
Quoted 49 lines · Luiz Augusto von Dentz

Hi,

Quoted 45 lines · Hugues

If this isn't the right place, where should I seek for more information ?

Quoted 42 lines · Hugues

Hello,

I own a Bose QC35 bluetooth headset, sound is working great with pulseaudio, but the battery reporting does not, I believe it is a bluetooth issue because the device info doesn't say anything about battery or power.
Any idea how I can make it report the remaining battery to upower so it appears in my DE ?

The device info from bluetoothctl
info 04:52:C7:33:23:6E
Device 04:52:C7:33:23:6E
Name: BQ35 Hugues
Alias: BQ35 Hugues
Class: 0x240418
Icon: audio-card
Paired: yes
Trusted: yes
Blocked: no
Connected: yes
LegacyPairing: no
UUID: Vendor specific
(00000000-deca-fade-deca-deafdecacaff)
UUID: Serial Port
(00001101-0000-1000-8000-00805f9b34fb)
UUID: Headset
(00001108-0000-1000-8000-00805f9b34fb)
UUID: Audio Source
(0000110a-0000-1000-8000-00805f9b34fb)
UUID: Audio Sink
(0000110b-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control Target
(0000110c-0000-1000-8000-00805f9b34fb)
UUID: Advanced Audio Distribu..
(0000110d-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control
(0000110e-0000-1000-8000-00805f9b34fb)
UUID: Handsfree
(0000111e-0000-1000-8000-00805f9b34fb)
UUID: PnP Information
(00001200-0000-1000-8000-00805f9b34fb)

        Modalias: bluetooth:v009Ep400Cd0129
Quoted 16 lines

None of these services are specific for fetching battery power, AVRCP and HFP do have commands for it but they are very rarely implemented but we could indeed use upower to attach the battery information if that is implemented.

Quoted 8 lines
Quoted 3 lines

Regards,
Hugues

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Thanks for the reply, I know the bose android application do report the battery power of the headset, but I don't know if it is done in a propitiatory manner. How could I check that ?

#4 lore raw

Hi,

Quoted 66 lines · Hugues
Quoted 49 lines · Luiz Augusto von Dentz

Hi,

Quoted 45 lines · Hugues

If this isn't the right place, where should I seek for more information ?

Quoted 42 lines · Hugues

Hello,

I own a Bose QC35 bluetooth headset, sound is working great with pulseaudio, but the battery reporting does not, I believe it is a bluetooth issue because the device info doesn't say anything about battery or power.
Any idea how I can make it report the remaining battery to upower so it appears in my DE ?

The device info from bluetoothctl
info 04:52:C7:33:23:6E
Device 04:52:C7:33:23:6E
Name: BQ35 Hugues
Alias: BQ35 Hugues
Class: 0x240418
Icon: audio-card
Paired: yes
Trusted: yes
Blocked: no
Connected: yes
LegacyPairing: no
UUID: Vendor specific
(00000000-deca-fade-deca-deafdecacaff)
UUID: Serial Port
(00001101-0000-1000-8000-00805f9b34fb)
UUID: Headset
(00001108-0000-1000-8000-00805f9b34fb)
UUID: Audio Source
(0000110a-0000-1000-8000-00805f9b34fb)
UUID: Audio Sink
(0000110b-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control Target
(0000110c-0000-1000-8000-00805f9b34fb)
UUID: Advanced Audio Distribu..
(0000110d-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control
(0000110e-0000-1000-8000-00805f9b34fb)
UUID: Handsfree
(0000111e-0000-1000-8000-00805f9b34fb)
UUID: PnP Information
(00001200-0000-1000-8000-00805f9b34fb)

        Modalias: bluetooth:v009Ep400Cd0129
Quoted 16 lines

None of these services are specific for fetching battery power, AVRCP and HFP do have commands for it but they are very rarely implemented but we could indeed use upower to attach the battery information if that is implemented.

Quoted 8 lines
Quoted 3 lines

Regards,
Hugues

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Quoted 3 lines

Thanks for the reply, I know the bose android application do report the battery power of the headset, but I don't know if it is done in a propitiatory manner. How could I check that ?

It is probably the 00000000-deca-fade-deca-deafdecacaff service, Ive also seem some bose devices that are dual-mode so they have a GATT service over LE that might expose these details.

Signature · 1 line
Luiz Augusto von Dentz
maintainer
#5 lore raw

Hi Luiz,

Quoted 7 lines
Quoted 3 lines

Thanks for the reply, I know the bose android application do report the battery power of the headset, but I don't know if it is done in a propitiatory manner. How could I check that ?

It is probably the 00000000-deca-fade-deca-deafdecacaff service, Ive also seem some bose devices that are dual-mode so they have a GATT service over LE that might expose these details.

or it uses the Apple HFP extensions they defined to get battery status. Also 00000000-deca-fade-deca-deafdecacaff should be the wireless version of Apple’ iAP (iPod Accessory Protocol).

Regards

Marcel

author
#6 lore raw
Quoted 10 lines · Marcel Holtmann

Hi Luiz,

Quoted 7 lines
Quoted 3 lines

Thanks for the reply, I know the bose android application do report the battery power of the headset, but I don't know if it is done in a propitiatory manner. How could I check that ?

It is probably the 00000000-deca-fade-deca-deafdecacaff service, Ive also seem some bose devices that are dual-mode so they have a GATT service over LE that might expose these details.

Quoted 7 lines

or it uses the Apple HFP extensions they defined to get battery status. Also 00000000-deca-fade-deca-deafdecacaff should be the wireless version of Apple’ iAP (iPod Accessory Protocol).

Regards

Marcel

This headset do have dual mode, I searched around using gatttool ant the gatt specification but I find nothing about Battery Level (org.bluetooth.characteristic.battery_level.xml) or Battery Service (org.bluetooth.service.battery_service.xml). How could I read what's in the APple HFP extensions ?

maintainer
#7 lore raw

Hi Hugues,

Quoted 8 lines
Quoted 8 lines
Quoted 7 lines
Quoted 3 lines

Thanks for the reply, I know the bose android application do report the battery power of the headset, but I don't know if it is done in a propitiatory manner. How could I check that ?

It is probably the 00000000-deca-fade-deca-deafdecacaff service, Ive also seem some bose devices that are dual-mode so they have a GATT service over LE that might expose these details.

Quoted 7 lines
Quoted 1 line

or it uses the Apple HFP extensions they defined to get battery status. Also 00000000-deca-fade-deca-deafdecacaff should be the wireless version of Apple’ iAP (iPod Accessory Protocol).

This headset do have dual mode, I searched around using gatttool ant the gatt specification but I find nothing about Battery Level (org.bluetooth.characteristic.battery_level.xml) or Battery Service (org.bluetooth.service.battery_service.xml). How could I read what's in the APple HFP extensions ?

Start with this one. It describes the extra HFP AT commands that iOS uses:

https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf

Regards

Marcel

#8 lore raw

Hi,

FWIW I was also interested in battery level of my Bose QC35 and checked this some time ago. That time I only checked the low energy stuff, since the Android application seems to know the battery status with only LE being connected.

Quoted 4 lines · Marcel Holtman
Quoted 4 lines

This headset do have dual mode, I searched around using gatttool ant the gatt specification but I find nothing about Battery Level (org.bluetooth.characteristic.battery_level.xml) or Battery Service (org.bluetooth.service.battery_service.xml).

Bose QC35 does not expose battery status through standard battery_level characteristic. There is a proprietary primary service 0xfebe (which is assigned to Bose) with a couple of custom services. I assume battery level can be read through them, but the required commands are unknown.

Quoted 5 lines
Quoted 1 line

How could I read what's in the Apple HFP extensions?

Start with this one. It describes the extra HFP AT commands that iOS uses:

https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf

Thanks for the documentation link! That is actually implemented for the Bose QC35. Here is a quick hack providing battery status info in pulseaudio log:

https://github.com/sre/pulseaudio/commit/d66b66d20e9bc73e6d0ca89283cf2b5675304b00

-- Sebastian

author
#9 lore raw

Hello,
Thanks a lot!
I tried to connect to the headset through dbus to make the AT commands, but failed.
So what's the services/program where this should be implemented so it can be exposed on dbus and picked up by the Desktop Environment?

Regards,
Hugues

Quoted 32 lines · Sebastian Reichel

Hi,

FWIW I was also interested in battery level of my Bose QC35 and checked this some time ago. That time I only checked the low energy stuff, since the Android application seems to know the battery status with only LE being connected.

Quoted 4 lines · Marcel Holtman
Quoted 4 lines

This headset do have dual mode, I searched around using gatttool ant the gatt specification but I find nothing about Battery Level (org.bluetooth.characteristic.battery_level.xml) or Battery Service (org.bluetooth.service.battery_service.xml).

Bose QC35 does not expose battery status through standard battery_level characteristic. There is a proprietary primary service 0xfebe (which is assigned to Bose) with a couple of custom services. I assume battery level can be read through them, but the required commands are unknown.

Quoted 5 lines
Quoted 1 line

How could I read what's in the Apple HFP extensions?

Start with this one. It describes the extra HFP AT commands that iOS uses:

https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf

Thanks for the documentation link! That is actually implemented for the Bose QC35. Here is a quick hack providing battery status info in pulseaudio log:

https://github.com/sre/pulseaudio/commit/d66b66d20e9bc73e6d0ca89283cf2b5675304b00

-- Sebastian

author
#10 lore raw

Hello,
Sebastian code works great!
But how can I proceed so the remaining battery is exposed over upower?

Greping through pulseaudio sources
(git://anongit.freedesktop.org/pulseaudio/pulseaudio) for 'battery' doesn't return anything, so anything about battery power seems unlikely to be merged into pulseaudio.

upower already expose batteries from bluez through dbus
(git://anongit.freedesktop.org/upower:src/linux/up-device-bluez.c)

So is it possible to do the AT commands at the bluez level and expose the infos through dbus, so upower expose it to the rest of the system?

Thanks,
Hugues

Quoted 44 lines · Hugues

Hello,
Thanks a lot!
I tried to connect to the headset through dbus to make the AT commands, but failed.
So what's the services/program where this should be implemented so it can be exposed on dbus and picked up by the Desktop Environment?

Regards,
Hugues

Quoted 32 lines · Sebastian Reichel

Hi,

FWIW I was also interested in battery level of my Bose QC35 and checked this some time ago. That time I only checked the low energy stuff, since the Android application seems to know the battery status with only LE being connected.

Quoted 4 lines · Marcel Holtman
Quoted 4 lines

This headset do have dual mode, I searched around using gatttool ant the gatt specification but I find nothing about Battery Level (org.bluetooth.characteristic.battery_level.xml) or Battery Service (org.bluetooth.service.battery_service.xml).

Bose QC35 does not expose battery status through standard battery_level characteristic. There is a proprietary primary service 0xfebe (which is assigned to Bose) with a couple of custom services. I assume battery level can be read through them, but the required commands are unknown.

Quoted 5 lines
Quoted 1 line

How could I read what's in the Apple HFP extensions?

Start with this one. It describes the extra HFP AT commands that iOS uses:

https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf

Thanks for the documentation link! That is actually implemented for the Bose QC35. Here is a quick hack providing battery status info in pulseaudio log:

https://github.com/sre/pulseaudio/commit/d66b66d20e9bc73e6d0ca89283cf2b5675304b00

-- Sebastian

#11 lore raw

Hi Hugues,

I agree, that this should be handled in bluez instead of pulseaudio. I only implemented the proof of concept in pulseaudio, since it was not easily possible in bluez and easy to do in pulseaudio. I think some restructuring of bluez/pulseaudio rfcomm handling is required, but I don't plan to take care of this.

-- Sebastian

Quoted 64 lines · Hugues

Hello,
Sebastian code works great!
But how can I proceed so the remaining battery is exposed over upower?

Greping through pulseaudio sources
(git://anongit.freedesktop.org/pulseaudio/pulseaudio) for 'battery' doesn't return anything, so anything about battery power seems unlikely to be merged into pulseaudio.

upower already expose batteries from bluez through dbus
(git://anongit.freedesktop.org/upower:src/linux/up-device-bluez.c)

So is it possible to do the AT commands at the bluez level and expose the infos through dbus, so upower expose it to the rest of the system?

Thanks,
Hugues

Quoted 44 lines · Hugues

Hello,
Thanks a lot!
I tried to connect to the headset through dbus to make the AT commands, but failed.
So what's the services/program where this should be implemented so it can be exposed on dbus and picked up by the Desktop Environment?

Regards,
Hugues

Quoted 32 lines · Sebastian Reichel

Hi,

FWIW I was also interested in battery level of my Bose QC35 and checked this some time ago. That time I only checked the low energy stuff, since the Android application seems to know the battery status with only LE being connected.

Quoted 4 lines · Marcel Holtman
Quoted 4 lines

This headset do have dual mode, I searched around using gatttool ant the gatt specification but I find nothing about Battery Level (org.bluetooth.characteristic.battery_level.xml) or Battery Service (org.bluetooth.service.battery_service.xml).

Bose QC35 does not expose battery status through standard battery_level characteristic. There is a proprietary primary service 0xfebe (which is assigned to Bose) with a couple of custom services. I assume battery level can be read through them, but the required commands are unknown.

Quoted 5 lines
Quoted 1 line

How could I read what's in the Apple HFP extensions?

Start with this one. It describes the extra HFP AT commands that iOS uses:

https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf

Thanks for the documentation link! That is actually implemented for the Bose QC35. Here is a quick hack providing battery status info in pulseaudio log:

https://github.com/sre/pulseaudio/commit/d66b66d20e9bc73e6d0ca89283cf2b5675304b00

-- Sebastian