REPRODUCIBILITY: 100%
OS VERSION: 5.2.0.16
HARDWARE: Jolla Phone (2026) (jp2601)
UI LANGUAGE: English (US)
REGRESSION: has not been working ever since I got the device
DESCRIPTION:
Bluetooth LE HID peripherals (HID-over-GATT / HoG) pair, bond, connect and report battery
level correctly, but no evdev node is ever created for them, so they produce no input at
all. Bluetooth is otherwise fully functional: A2DP over BR/EDR works, and non-HID GATT
devices work. The failure is specific to the HoG path.
PRECONDITIONS:
Any Bluetooth LE keyboard or mouse exposing the HID service (UUID 0x1812). Developer mode is needed only to observe the cause, not to trigger the bug.
STEPS TO REPRODUCE:
- Pair a Bluetooth LE keyboard or mouse from Settings > Bluetooth.
- Confirm it connects:
bluetoothctl info <MAC>reportsConnected: yes, LE.Connected:yes, and a valid battery percentage. - Type on the keyboard / move the mouse.
- Compare
ls -l /dev/input/before and after connecting.
EXPECTED RESULT:
A new /dev/input/eventN node appears on connection and the device generates input.
ACTUAL RESULT:
No new node appears. No input is received. bluetoothd logs “input-hog profile accept failed” for the device.
MODIFICATIONS:
- Developer mode enabled
- libpebble3d installed. It ships
/etc/systemd/system/bluetooth.service.d/50-libpebble3d.conf, which setsEnvironment=TRACING=-E(exposing bluetoothd’s experimental D-Bus APIs), but the bug reproduces identically with this drop-in removed and bluetoothd running without -E, so it is not a factor. - /etc/systemd/system/bluetooth.service.d/99-uhid-fix.conf added as a workaround while
investigating (see below). The bug reproduces with this file absent. - Chum, Storeman, but just for user facing applications
ADDITIONAL INFORMATION:
Devices tested:
| Device | Transport | Result |
|---|---|---|
| Clicks Power Keyboard (Appearance 0x03c1, icon input-keyboard) | HoG | connects, bonds, battery OK, no input |
| BLE mouse (Appearance 0x03c2, icon input-mouse) | HoG | connects, bonds, battery OK, no input |
| Sony WF-1000XM5 | BR/EDR (A2DP) | works |
| Pebble smartwatch | BLE / GATT, non-HID | works |
bluez version: bluez5-5.87+git1-1.16.1.jolla.aarch64
Running the identical binary with identical arguments manually from a root shell makes the keyboard work immediately.
Temporarily relaxing the node permissions also resolves it:
chmod 0666 /dev/uhid && systemctl restart bluetooth
After reconnecting, a new /dev/input/eventN appears and both devices work normally.
Workaround (confirmed working):
A minimal drop-in granting the intended group access without weakening the rest of the
unit’s hardening:
/etc/systemd/system/bluetooth.service.d/99-uhid-fix.conf
[Service]
SupplementaryGroups=uhid