Pairing Bose QC 35 over Bluetooth on Fedora

30,386

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, so modprobe 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 like systemctl 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
      #ControllerMode = dual
      
      and change it to:
      ControllerMode = bredr
      
      or create a new file containing just:
      [General]
      ControllerMode = bredr
      
      Then restart bluetooth and pair/connect (systemctl restart bluetooth.service or using some GUI frontend, turning it off and on)

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.

Share:
30,386

Related videos on Youtube

Laurent
Author by

Laurent

I run some businesses: https://contentshowcase.app https://medicalid.app https://noticeable.io

Updated on September 18, 2022

Comments

  • Laurent
    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:

    https://youtu.be/eUZ9D9rGUZY

    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
    phk almost 8 years
    It pairs, but does the connection also stay for a long time?
  • Tam Borine
    Tam Borine almost 8 years
    @phk - yes. It works like a charm
  • forgotstackxpassword
    forgotstackxpassword almost 8 years
    can 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
    Tam Borine almost 8 years
    @forgotstackxpassword - as I said in my original post, i am using bluez 4.x (specifically version 4.99) and blueman as a gui.
  • forgotstackxpassword
    forgotstackxpassword almost 8 years
    4.99 is a bit more specific, thanks. that was default on Wheezy so also I guess you are on old stable.
  • forgotstackxpassword
    forgotstackxpassword almost 8 years
    So, 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
    Laurent almost 8 years
    Unfortunately packages, groups, etc. are not the same on Fedora.
  • Laurent
    Laurent almost 8 years
    downgrading 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
    Laurent almost 8 years
    I 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
    Laurent almost 8 years
    I had to add the group [General] on the line before. After restarting everything is working smoothly. Thank you a lot!
  • forgotstackxpassword
    forgotstackxpassword almost 8 years
    I 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
    forgotstackxpassword almost 8 years
    Ah this is great Jason Tibbitts answer, above, glad you got it working & he had the headphones & system nearby.
  • Jason Tibbitts
    Jason Tibbitts almost 8 years
    Ah, 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
    thrau over 7 years
    This worked for me, I'm on Xubuntu 16.04
  • Renato Mefi
    Renato Mefi over 7 years
    Also 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
    Laurent over 7 years
    Fail with "Ubuntu encountered an internal error" for me.
  • Laurent
    Laurent over 7 years
    Have you tried to increase the volume directly on the headset?
  • phk
    phk over 7 years
    What about the buttons BTW? Do they also work?
  • Maxim
    Maxim about 7 years
    This solved my pairing issues with Logitech UE Boom 2 speakers. Amazing!
  • Hanno
    Hanno almost 7 years
    @Laurent I'm having the same issues as you had originally. However, when I switch to bredr and restart bluetooth and bluetoothctl, scanning won't find the QC35 anymore. Did you experience anything similar?
  • Laurent
    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
    Diego Mora Cespedes almost 7 years
    This broke my Fedora 26, thank you! :'(
  • DjebbZ
    DjebbZ over 6 years
    This 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
    Victor Lamoine about 6 years
    This is ridiculous we have to do such things to get a bluetooth headset connected in 2018 on Linux/Ubuntu!
  • Kaspar
    Kaspar about 6 years
    Is there any roadmap on the BlueZ project to make LE pairing work in near future?
  • Timmah
    Timmah about 6 years
    This worked for me on Ubuntu 16.04, also all functions of the buttons work except pausing a song (strange as skipping works)
  • Laurent
    Laurent almost 6 years
    FYI, I had to set ControllerMode value to dual on Fedora 28.
  • Rachel Frei
    Rachel Frei almost 4 years
    FYI, I had to set ControllerMode to bredr to get my QC 35 II to pair. The pair was successful, but it then immediately disconnects. I then had change it back to dual 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
    l0b0 over 3 years
    This 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.