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, 2021 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, 2021 at 14:09

1 Answer 1

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, 2021 at 21:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .