Pairing Bose QC 35 over Bluetooth on Fedora
Solution 1
I have these headphones as well, along with a handy laptop running Fedora 24. After chatting with one of the Bluez developers on IRC, I have things working. Below is what I've found. (Note that I know very little about Bluetooth so I may be using incorrect terminology for some of this.)
The headphones support (or at least say they support) bluetooth LE but don't support LE for pairing. Bluez does not yet support this and has no way to set the supported BT mode except statically in the configuration file. You can use the headphones over regular bluetooth just fine, though. This happens to be the reason Bluez 4 works; it doesn't really support LE.
So, create /etc/bluetooth/main.conf. Fedora 24 doesn't come with this file so either fetch a copy from Upstream, find the line containing
#ControllerMode = dual
and change it to:
ControllerMode = bredr
or create a new file containing just:
[General]
ControllerMode = bredr
Then restart bluetooth and pair. (I did this manually via bluetoothctl, but just using the bluetooth manager should work.)
Now, this got things working for me, though if you don't force pulseaudio to use the A2DP-Sink protocol, the headphones will announce that you have an incoming call for some reason. However, my mouse requires Bluetooth LE, so I went in and removed the ControllerMode line. And... the headphones still work, as well as the mouse. I guess that once they are paired everything is OK.
Solution 2
I read up on your specific headphones, and they use Near Field Communication (NFC) to facilitate pairing, and this was mentioned as specifically added in Bluez 5.3, although, it mentioned on at least one blog "NFC comes built in to the new keyboard, but unfortunately Gnu/Linux doesn’t support NFC well yet. Although NFC support is built in to the Linux Kernel, neither Gnome nor KDE have any support for it, and the number of NFC enabled apps in my Fedora 20 repository is princely zero. NFC won’t help me out pairing my device, so we need to do it the old fashioned way instead..." So then, that puts us back to your approach.
However, Bluez 5.3 did not have support for pairing with devices (such as Bose your headphones) that use a PIN code for pairing.
There is a bug report from the previous verions, on another distribution. So although this is not specifically reported on Fedora, the official Bluez site does not specifically mention a fix, at least from what I can see.
So this feature is not supported; and at least for now that is the answer.
As well, as you suspected, there could be other issues, like needing a specific proprietary drvier, unless you have already ruled that out (i.e. by testing the headphones class-compliant on OSX or Windows or whatever they support). I really highly suspect that is the case, or it gives you or another something to springboard off of.
Solution 3
If this could be of help for someone, after try practicly everything described above in my ubuntu 16.04, at last, it was so easy as connect through the "Bose Connect App" (in my case for Android). I used blueman to do it, and finally I was able to pair the headsets.
In my case, I've got bluez 5.37v, blueman 2.0.4, and finally I haven't needed to make any change to the default /etc/bluetooth/main.conf, with the default "ControllerMode" set to dual it worked.
The steps that worked for me were:
1.- Open the app and select the option connect a new device or similar. (I don't remember exactly the name) 2.- From blueman search for a new device. 3.- Once the headsets have been found, I was able to pair them without any problem and select the working mode.
Without the first step, I was not able to pair them.
I took me a lot the way to find how doing it, but once you know how to do it, it quite easy to do it.
Solution 4
I've had the same problem on Arch Linux and these are things I had to do, it's not unlikely that running 'equivalent' commands will be helpful for a lot of other people on Linux distros:
-
Install the packages
pulseaudio-bluetooth pulseaudio-alsa bluez bluez-libs bluez-utils
and restart Pulseaudio (in case it was already running when bluetooth was installed):pulseaudio -k pulseaudio --start
If you get an error message
XDG_RUNTIME_DIR (/var/snips-audio-server) is not owned by us (uid 0), but by uid <some UID (probably yours)>!
then you have to run these commands as non-root/without
sudo
. The module
btusb
had to be loaded in my case, somodprobe btusb
each time you need the headphones, or load the module on startup- Run
rfkill
to see if your Bluetooth device is soft-/hardblocked and unblock if it is blocked Check if the bluetooth service is running (i.e. with
systemd
, the command will probably be something likesystemctl status bluetooth.service
digital stereo output for built-in audio high fidelity... (a2dp sink) for headphones-
As referred to by OP, configuration may have to be adapted as suggested in an answer to this SE question, where you can read up on explanations:
- Edit
/etc/bluetooth/main.conf
: Find the line containing
and change it to:#ControllerMode = dual
or create a new file containing just:ControllerMode = bredr
Then restart bluetooth and pair/connect ([General] ControllerMode = bredr
systemctl restart bluetooth.service
or using some GUI frontend, turning it off and on)
- Edit
There are also instructions from someone on GitHub (NOTE: I'm not entirely sure what these changes from the GitHub repository do (I've spent enough time trying to get things to work), so use with caution... I assume the group changes probably just enable Bluetooth control from user space or something among these lines):
In order to work the Bose QC35 Headset Bluetooth do the following:
sudo pacman -Syu pulseaudio-alsa pulseaudio-bluetooth bluez bluez-libs bluez-utils
turn off bluetooth from your computer
sudo btmgmt ssp of
gpasswd -a YOUR_USER lp
If you want the group changes without reboot, you can run (as stated here on SE):
exec su -l $USER
to make group changes effective immediately without a reboot.
Related videos on Youtube
Laurent
I run some businesses: https://contentshowcase.app https://medicalid.app https://noticeable.io
Updated on September 18, 2022Comments
-
Laurent over 1 year
I am running Fedora 24 with Gnome Shell. I try to pair my new Bose QuietComfort 35 over Bluetooth.
I started using the Gnome interface. Unfortunately, the connection seems not to hold. It appears as constantly connecting/disconnecting:
My next step was to perform some checks using the command-line. First, I checked that the bluetooth service is running:
$ sudo systemctl status bluetooth ● bluetooth.service - Bluetooth service Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled) Active: active (running) since dim. 2016-06-26 11:19:24 CEST; 14min ago Docs: man:bluetoothd(8) Main PID: 932 (bluetoothd) Status: "Running" Tasks: 1 (limit: 512) Memory: 2.1M CPU: 222ms CGroup: /system.slice/bluetooth.service └─932 /usr/libexec/bluetooth/bluetoothd juin 26 11:19:24 leonard systemd[1]: Starting Bluetooth service... juin 26 11:19:24 leonard bluetoothd[932]: Bluetooth daemon 5.40 juin 26 11:19:24 leonard bluetoothd[932]: Starting SDP server juin 26 11:19:24 leonard bluetoothd[932]: Bluetooth management interface 1.11 initialized juin 26 11:19:24 leonard bluetoothd[932]: Failed to obtain handles for "Service Changed" characteristic juin 26 11:19:24 leonard systemd[1]: Started Bluetooth service. juin 26 11:19:37 leonard bluetoothd[932]: Endpoint registered: sender=:1.68 path=/MediaEndpoint/A2DPSource juin 26 11:19:37 leonard bluetoothd[932]: Endpoint registered: sender=:1.68 path=/MediaEndpoint/A2DPSink juin 26 11:20:26 leonard bluetoothd[932]: No cache for 08:DF:1F:DB:A7:8A
Then, I have tried to follow some explanations from Archlinux wiki with no success. The pairing is failing Failed to pair: org.bluez.Error.AuthenticationFailed:
$ sudo bluetoothctl [NEW] Controller 00:1A:7D:DA:71:05 leonard [default] [NEW] Device 08:DF:1F:DB:A7:8A Bose QuietComfort 35 [NEW] Device 40:EF:4C:8A:AF:C6 EDIFIER Luna Eclipse [bluetooth]# agent on Agent registered [bluetooth]# scan on Discovery started [CHG] Controller 00:1A:7D:DA:71:05 Discovering: yes [CHG] Device 08:DF:1F:DB:A7:8A RSSI: -77 [CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000febe-0000-1000-8000-00805f9b34fb [CHG] Device 08:DF:1F:DB:A7:8A RSSI: -69 [CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000febe-0000-1000-8000-00805f9b34fb [CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000110d-0000-1000-8000-00805f9b34fb [CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000110b-0000-1000-8000-00805f9b34fb [CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000110e-0000-1000-8000-00805f9b34fb [CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000110f-0000-1000-8000-00805f9b34fb [CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 00001130-0000-1000-8000-00805f9b34fb [CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000112e-0000-1000-8000-00805f9b34fb [CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000111e-0000-1000-8000-00805f9b34fb [CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 00001108-0000-1000-8000-00805f9b34fb [CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 00001131-0000-1000-8000-00805f9b34fb [CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 00000000-deca-fade-deca-deafdecacaff [bluetooth]# devices Device 08:DF:1F:DB:A7:8A Bose QuietComfort 35 Device 40:EF:4C:8A:AF:C6 EDIFIER Luna Eclipse [CHG] Device 08:DF:1F:DB:A7:8A RSSI: -82 [CHG] Device 08:DF:1F:DB:A7:8A RSSI: -68 [CHG] Device 08:DF:1F:DB:A7:8A RSSI: -79 [bluetooth]# trust 08:DF:1F:DB:A7:8A Changing 08:DF:1F:DB:A7:8A trust succeeded [bluetooth]# pair 08:DF:1F:DB:A7:8A Attempting to pair with 08:DF:1F:DB:A7:8A [CHG] Device 08:DF:1F:DB:A7:8A Connected: yes Failed to pair: org.bluez.Error.AuthenticationFailed [CHG] Device 08:DF:1F:DB:A7:8A Connected: no
I tried to disable SSPMode but it seems to have no effect:
$ sudo hciconfig hci0 sspmode 0
When I use bluetoothctl, journalctl logs the following:
juin 26 11:37:21 leonard sudo[4348]: lpellegr : TTY=pts/2 ; PWD=/home/lpellegr ; USER=root ; COMMAND=/bin/bluetoothctl juin 26 11:37:21 leonard audit[4348]: USER_CMD pid=4348 uid=1000 auid=4294967295 ses=4294967295 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='cwd="/home/lpellegr" cmd="bluetoothctl" terminal=pt juin 26 11:37:21 leonard audit[4348]: CRED_REFR pid=4348 uid=0 auid=4294967295 ses=4294967295 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:setcred grantors=pam_env,pam_fprintd acct="roo juin 26 11:37:21 leonard sudo[4348]: pam_systemd(sudo:session): Cannot create session: Already occupied by a session juin 26 11:37:21 leonard audit[4348]: USER_START pid=4348 uid=0 auid=4294967295 ses=4294967295 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:session_open grantors=pam_keyinit,pam_limits, juin 26 11:37:21 leonard sudo[4348]: pam_unix(sudo:session): session opened for user root by (uid=0) juin 26 11:38:06 leonard bluetoothd[932]: No cache for 08:DF:1F:DB:A7:8A
Unfortunately, I don't understand the output. Any idea or help is welcome. I am pretty lost.
The bluetooth receiver I use is a USB dongle from CSL-Computer. Bluetoothctl version is 5.40. I am running kernel 4.5.7-300.fc24.x86_64.
Below are the features supported by my bluetooth adapter:
hciconfig -a hci0 features hci0: Type: BR/EDR Bus: USB BD Address: 00:1A:7D:DA:71:05 ACL MTU: 310:10 SCO MTU: 64:8 Features page 0: 0xff 0xff 0x8f 0xfe 0xdb 0xff 0x5b 0x87 <3-slot packets> <5-slot packets> <encryption> <slot offset> <timing accuracy> <role switch> <hold mode> <sniff mode> <park state> <RSSI> <channel quality> <SCO link> <HV2 packets> <HV3 packets> <u-law log> <A-law log> <CVSD> <paging scheme> <power control> <transparent SCO> <broadcast encrypt> <EDR ACL 2 Mbps> <EDR ACL 3 Mbps> <enhanced iscan> <interlaced iscan> <interlaced pscan> <inquiry with RSSI> <extended SCO> <EV4 packets> <EV5 packets> <AFH cap. slave> <AFH class. slave> <LE support> <3-slot EDR ACL> <5-slot EDR ACL> <sniff subrating> <pause encryption> <AFH cap. master> <AFH class. master> <EDR eSCO 2 Mbps> <EDR eSCO 3 Mbps> <3-slot EDR eSCO> <extended inquiry> <LE and BR/EDR> <simple pairing> <encapsulated PDU> <non-flush flag> <LSTO> <inquiry TX power> <EPC> <extended features> Features page 1: 0x03 0x00 0x00 0x00 0x00 0x00 0x00 0x00
The pairing works well with EDIFIER Luna Eclipse speakers. I suspect the issue is really related to the headset I am trying to configure.
-
phk almost 8 yearsIt pairs, but does the connection also stay for a long time?
-
Tam Borine almost 8 years@phk - yes. It works like a charm
-
forgotstackxpassword almost 8 yearscan you list which GUI you are using, also your version number of bluez (for example in jessie [current stable] it is 5.23-2+b1. it might help port the solution over to his fedora setup
-
Tam Borine almost 8 years@forgotstackxpassword - as I said in my original post, i am using
bluez 4.x
(specifically version 4.99) andblueman
as a gui. -
forgotstackxpassword almost 8 years4.99 is a bit more specific, thanks. that was default on Wheezy so also I guess you are on old stable.
-
forgotstackxpassword almost 8 yearsSo, some other answers here have verified at least one working setup, on an older OS and/or backported versions of bluez (4.99), which may also contain packages from the non-default "non-free" Debian repos. You can try this on Fedora here, in Fedora-land that was 4 years ago :)
-
Laurent almost 8 yearsUnfortunately packages, groups, etc. are not the same on Fedora.
-
Laurent almost 8 yearsdowngrading to the version you mention seems to be a nightmare. I tried to downgrade to 5.39-1.fc24 using
sudo dnf downgrade bluez --allowerasing
but it changes nothing. -
Laurent almost 8 yearsI have added the line you mention in the specified file but when I restart bluetooth daemon I get "Parsing /etc/bluetooth/main.conf failed: Key file does not start with a group". Are you using version 5.40 of bluetooth daemon? do you have a single line in
/etc/bluetooth/main.conf
? -
Laurent almost 8 yearsI had to add the group
[General]
on the line before. After restarting everything is working smoothly. Thank you a lot! -
forgotstackxpassword almost 8 yearsI had just mentioned that because it was mentioned below that on Debian 4.99 was compatible; I wouldn't otherwise really recommend that at all, like you said Fedora is completely different. I stick by that it would only work if manually paired, plus I don't have the right hardware handy (like these headphones), and NFC and other blobs of this may be unsupported.
-
forgotstackxpassword almost 8 yearsAh this is great Jason Tibbitts answer, above, glad you got it working & he had the headphones & system nearby.
-
Jason Tibbitts almost 8 yearsAh, sorry, Fedora didn't come with that file at all so I pulled it straight from upstream git and changed the one line. I didn't even think to look closely for ther context that needed to be there; it just looked like a sea of comments. I'll edit the answer.
-
thrau over 7 yearsThis worked for me, I'm on Xubuntu 16.04
-
Renato Mefi over 7 yearsAlso worked for me on Fedora 23, still my issue is the volume, it's too much lower than compared to my phone, any of you had that? I also had to change the audio mode to A2DP sink, other than that I was having weird interference on my headphone. I appreciate any help on that, maybe @JasonTibbitts has something about that
-
Laurent over 7 yearsFail with "Ubuntu encountered an internal error" for me.
-
Laurent over 7 yearsHave you tried to increase the volume directly on the headset?
-
phk over 7 yearsWhat about the buttons BTW? Do they also work?
-
Maxim about 7 yearsThis solved my pairing issues with Logitech UE Boom 2 speakers. Amazing!
-
Hanno almost 7 years@Laurent I'm having the same issues as you had originally. However, when I switch to
bredr
and restartbluetooth
andbluetoothctl
, scanning won't find the QC35 anymore. Did you experience anything similar? -
Laurent almost 7 years@HannoBecker I haven't experienced such a problem. However, I noticed that after reinstalling my system, defining the
ControllerMode
is no longer required on Fedora 25 with bluetoothctl version 5.44. Instead, the default configuration (gist.github.com/lpellegr/e99620e8a72b2f1d08fc1cab446fcfed) works out of the box. -
Diego Mora Cespedes almost 7 yearsThis broke my Fedora 26, thank you! :'(
-
DjebbZ over 6 yearsThis is the method that worked for me. I'm using Arch Linux, with blueman and PulseAudio/pavucontrol. I followed the normal step in the Arch wiki to install and troubleshoot, and your technique made it for me. Thank you !
-
Victor Lamoine about 6 yearsThis is ridiculous we have to do such things to get a bluetooth headset connected in 2018 on Linux/Ubuntu!
-
Kaspar about 6 yearsIs there any roadmap on the BlueZ project to make LE pairing work in near future?
-
Timmah about 6 yearsThis worked for me on Ubuntu 16.04, also all functions of the buttons work except pausing a song (strange as skipping works)
-
Laurent almost 6 yearsFYI, I had to set
ControllerMode
value todual
on Fedora 28. -
Rachel Frei almost 4 yearsFYI, I had to set
ControllerMode
tobredr
to get my QC 35 II to pair. The pair was successful, but it then immediately disconnects. I then had change it back todual
to get it to connect and stay connected. I think the pairing has to be done over BR/EDR, and the actual connection done over LE. -
l0b0 over 3 yearsThis no longer seems necessary: after reverting to
auto
and restarting the Bluetooth service I can still pair these headphones on up-to-date Arch Linux.