Multiple HID services Device (HOGP - BLE) makes the bluetoothd crash
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
snappy-hwe-snaps |
Invalid
|
Undecided
|
Unassigned |
Bug Description
When trying to connect to Ubuntu (18.04) a HID BLE Peripheral device (HOGP) that has implemented two full instances of the HID service separately (one for a kbd,another for a mouse, in this example). This is permitted by the BTLE-HOGP spec (see note in chapter 2.5, page 11). Note that this same device is correctly connecting and fully functioning on Win10 and MacOSX.
On Ubuntu: the device would start to pair ,then connect (shows briefly as connected in the bluetooth settings) before crashing the Bluetoothd (daemon) with a Segfault (see details in Dmesg log). Another symptom of that is that the Bluetooth settings panel UI "turns off" by itself.
Bluetooth air traces (taken with a BTLE air sniffer, Ellisys BEX400) show that it seems that the crash happens while parsing the report map (report descriptor) of the device.
I've also included some other traces that might be useful to understand,such as:
1) raw descriptor of both the mouse hid service and the keyboard one (that also includes consumer key, power, and vendor interfaces)
2) gdb bluetoothd backtrace of the crash (note: this trace was taken on a different Ubuntu, running on a VM)
3) verbosedebug_ syslog. this also was taken by replacing the bluez with a debug version of it (and started with -d option). It shows the crash at some point while parsing part of the mouse report descriptor.