I'm trying to pair a SRS-XB40 portable speaker with my Debian Stretch desktop.
The speaker works fine on a Mint laptop using the setup GUI.
I installed blueman. Since it didn't work I also upgraded firmware-linux to the backport version (20170823).
The machine is a Dell XPS 630i.
hciconfig -a hci0: Type: Primary Bus: USB BD Address: 00:1C:26:DD:18:A9 ACL MTU: 1017:7 SCO MTU: 64:1 UP RUNNING PSCAN RX bytes:2607 acl:0 sco:0 events:153 errors:0 TX bytes:1739 acl:0 sco:0 commands:125 errors:0 Features: 0xff 0xfe 0x8d 0xfe 0x9b 0xf9 0x00 0x80 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 Link policy: RSWITCH HOLD SNIFF Link mode: SLAVE ACCEPT Name: 'ChromeLinux_6529' Class: 0x1c0104 Service Classes: Rendering, Capturing, Object Transfer Device Class: Computer, Desktop workstation HCI Version: 2.0 (0x3) Revision: 0x214c LMP Version: 2.0 (0x3) Subversion: 0x41f4 Manufacturer: Broadcom Corporation (15)
Linux 4.15.0-0.bpo.2-amd64 #1 SMP Debian 4.15.11-1~bpo9+1 (2018-04-07) x86_64 GNU/Linux firmware-amd-graphics 20170823-1~bpo9+1 firmware-linux 20170823-1~bpo9+1 firmware-linux-nonfree 20170823-1~bpo9+1 firmware-misc-nonfree 20170823-1~bpo9+1 bluez 5.43-2+deb9u1 bluez-obexd 5.43-2+deb9u1 blueman 2.0.4-1
bluetooth service startup
The bluetooth service starts correctly.
# systemctl status bluetooth ● bluetooth.service - Bluetooth service Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-05-07 13:47:15 CEST; 33min ago Docs: man:bluetoothd(8) Main PID: 679 (bluetoothd) Status: "Running" Tasks: 1 (limit: 4915) CGroup: /system.slice/bluetooth.service └─679 /usr/lib/bluetooth/bluetoothd --noplugin=sap mai 07 13:47:15 bouzin bluetoothd: Excluding (cli) sap mai 07 13:47:15 bouzin systemd: Started Bluetooth service. mai 07 13:47:15 bouzin bluetoothd: Bluetooth management interface 1.14 initialized mai 07 13:47:15 bouzin bluetoothd: Failed to obtain handles for "Service Changed" characteristic mai 07 13:50:14 bouzin bluetoothd: Endpoint registered: sender=:1.41 path=/MediaEndpoint/A2DPSource mai 07 13:50:14 bouzin bluetoothd: Endpoint registered: sender=:1.41 path=/MediaEndpoint/A2DPSink
From what I gathered, the
Failed to obtain handles for "Service Changed" characteristic
warning should be harmless.
I can "setup" the speaker in blueman applet but I can't pair with it.
To pair, I push the "pairing" button on the speaker to put it in pairing mode, then ask the applet to pair. I get an error.
Using bluetoothctl, it says:
Failed to pair: org.bluez.Error.AuthenticationFailed
Old blueman bug
I got those errors in the logs:
mai 07 14:23:30 bouzin bluetoothd: vendor 0x0 product: 0x0 mai 07 14:23:30 bouzin bluetoothd: Agent /org/blueman/agent/global replied with an error: org.freedesktop.DBus.Python.KeyError, Traceback (most recent call last): File "/usr/lib/python3/dist-packages/dbus/service.py", line 707, in _message_cb retval = candidate_method(self, *args, **keywords) File "/usr/lib/python3/dist-packages/blueman/main/applet/BluezAgent.py", line 167, in RequestPinCode self.ask_passkey(device, dialog_msg, notify_msg, False, self.notifications, ok, err) File "/usr/lib/python3/dist-packages/blueman/main/applet/BluezAgent.py", line 122, in ask_passkey alias = self.get_device_alias(device_path) File "/usr/lib/python3/dist-packages/blueman/main/applet/BluezAgent.py", line 95, in get_device_alias name = props["Name"] KeyError: 'Name'
This is a bug in blueman that was fixes in this commit. I can't upgrade to the testing/unstable version as it relies on Python 3.6, so I apply the fix to
No agent available
Now, I get:
mai 07 14:30:30 bouzin bluetoothd: vendor 0x0 product: 0x0 mai 07 14:30:30 bouzin bluetoothd: No agent available for request type 0 mai 07 14:30:30 bouzin bluetoothd: device_request_pin: Operation not permitted
From this answer, I try to launch
This gets me a little further.
pair B8:D5:0B:05:A1:62 Attempting to pair with B8:D5:0B:05:A1:62 Request PIN code [agent] Enter PIN code: 1324 Failed to pair: org.bluez.Error.AuthenticationFailed
I'm asked for a PIN code.
From this answer and comments, I must enter 0000.
I get a succesful pairing.
In the GUI, I set "trust" on the device and now it apparently pairs automatically when the speaker is switched on.
From blueman, I click "audio sink" and I can hear a check sound coming from the speaker. blueman displays stats about the connection quality, which is excellent.
For a few tens of seconds, the "audio profile" menu is not greyed out. I click "High fidelity playback (A2DP sink)".
I get an error message
Failed to change profile to a2dp_sink
I saw this Debian bug but I don't think it is the same issue. I'm not using gdm but lightdm, and all pulseaudio processes belong to my user.
Of course, I don't see the speaker in the list of audio output devices.
I don't know where to go from here.
I know most paragraphs above are unrelated to this last issue, but I'd like to keep them here hoping they provide useful information to people with the same issues.