1

Device description

I just got myself a new gamepad, which is a wirless xbox one controller. I don't know how to name the exact variant, but it's an original product, not the pro one, has a filled-in dpad and has a USB-C port. I suspect it's a pretty recent model.

The old controller worked great. I have no idea what particular controller it is, but it also a wireless xbox controller. Dpad is not filled-in and it has a micro usb port.

The problem

With the new controller, if I attempt to pair and connect, I get error messages from bluetoothd and the connection either never happens or gets broken immediately after it is made.

bluetoothctl commands I am using:

[bluetooth]# power on
Changing power on succeeded
[bluetooth]# scan on
Discovery started
[CHG] Controller 00:1A:7D:DA:71:13 Discovering: yes
[NEW] Device 44:16:22:7A:58:B3 Xbox Wireless Controller
[CHG] Device 44:16:22:7A:58:B3 ManufacturerData Key: 0x0006
[CHG] Device 44:16:22:7A:58:B3 ManufacturerData Value:
  03 00 80                                         ...             
[CHG] Device 44:16:22:7A:58:B3 ManufacturerData Key: 0x0006
[CHG] Device 44:16:22:7A:58:B3 ManufacturerData Value:
  00                                               .               
[bluetooth]# scan off
Discovery stopped
[CHG] Device 44:16:22:7A:58:B3 TxPower is nil
[CHG] Device 44:16:22:7A:58:B3 RSSI is nil
[CHG] Controller 00:1A:7D:DA:71:13 Discovering: no
[Xbox Wireless Controller]# pair 44:16:22:7A:58:B3
Attempting to pair with 44:16:22:7A:58:B3
[CHG] Device 44:16:22:7A:58:B3 Paired: yes
Pairing successful
[CHG] Device 44:16:22:7A:58:B3 Connected: no
[bluetooth]# trust 44:16:22:7A:58:B3
[CHG] Device 44:16:22:7A:58:B3 Trusted: yes
Changing 44:16:22:7A:58:B3 trust succeeded
[bluetooth]# connect 44:16:22:7A:58:B3
Attempting to connect to 44:16:22:7A:58:B3
Failed to connect: org.bluez.Error.Failed

Errors that bluetoothd outputs (started with /usr/lib/bluetooth/bluetoothd -n:

bluetoothd[354718]: profiles/deviceinfo/deviceinfo.c:read_pnpid_cb() Error reading PNP_ID value: Request attribute has encountered an unlikely error
bluetoothd[354718]: profiles/input/hog-lib.c:info_read_cb() HID Information read failed: Request attribute has encountered an unlikely error
bluetoothd[354718]: profiles/input/hog-lib.c:report_map_read_cb() Report Map read failed: Request attribute has encountered an unlikely error
bluetoothd[354718]: profiles/input/hog-lib.c:report_reference_cb() Read Report Reference descriptor failed: Request attribute has encountered an unlikely error
bluetoothd[354718]: profiles/input/hog-lib.c:report_reference_cb() Read Report Reference descriptor failed: Request attribute has encountered an unlikely error
bluetoothd[354718]: src/service.c:service_accept() input-hog profile accept failed for 44:16:22:7A:58:B3
bluetoothd[354718]: profiles/input/hog-lib.c:info_read_cb() HID Information read failed: Encryption required before read/write
bluetoothd[354718]: profiles/input/hog-lib.c:report_map_read_cb() Report Map read failed: Encryption required before read/write
bluetoothd[354718]: profiles/input/hog-lib.c:report_map_read_cb() Report Map read failed: Request attribute has encountered an unlikely error
bluetoothd[354718]: profiles/input/hog-lib.c:report_reference_cb() Read Report Reference descriptor failed: Request attribute has encountered an unlikely error
bluetoothd[354718]: profiles/input/hog-lib.c:report_reference_cb() Read Report Reference descriptor failed: Request attribute has encountered an unlikely error
bluetoothd[354718]: profiles/battery/battery.c:batt_io_ccc_written_cb() Battery Level: notifications not enabled Request attribute has encountered an unlikely error

The log is basically spammed with these and similar error messages.

Full bluetoothctl session log: http://tcp.st/eaesd
Full bluetoothd output (I added a couple newlines before trying to pair): http://tcp.st/vx933
(links valid till 2021-11-20)

I have tried this on two different Arch Linux machines and the results were similar. Pairing it with an Android device, however, works flawlessly, so I assume the controller itself is working fine.

The actual question

What do those errors actually mean? "Unlikely error" is not exactly the most descriptive error message - how would I go about finding out more? There are also some errors saying "Encryption required before read/write". If this is necessary, why isn't bluetoothd doing the encryption? Can you turn off this requirement, or is it part of the protocol?

Ideally, my question would be "how do I fix this?", but I am not sure anyone is going the have the answer to that, so some hints on how to debug this would be greatly appreciated already.

2
  • I have the same issue, no resolution so far. :( Please add an answer if you have figured it out in the mean time.
    – intgr
    Mar 13 at 15:11
  • 1
    I did indeed end up getting it to work and added an answer with what I did. I'm fairly certain I had tried this previously and it didn't help, but it does work now...
    – Xandaros
    Mar 14 at 14:09
1

So I did actually get it to work eventually. The solution was to add this line to /etc/bluetooth/main.conf in the [General] section:
Privacy = device

It still does not work perfectly - there is a noticeable delay between pressing a button and the action registering, but the connection is made.

1
  • Thanks! Unfortunately this does not solve my problem. If I use Privacy = device, I am unable to pair/connect at all. With the default Privacy mode, at least Linux thinks it's paired and the /dev/input/js0 device successfully appears, but never receives any events.
    – intgr
    Mar 14 at 21:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.