├── .github └── FUNDING.yml ├── pulseaudio.socket ├── LICENSE └── README.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [Goldweavers] 4 | custom: [paypal.me/goldweavers] 5 | -------------------------------------------------------------------------------- /pulseaudio.socket: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Sound System 3 | 4 | [Socket] 5 | Priority=6 6 | Backlog=5 7 | ListenStream=%t/pulse/native 8 | 9 | [Install] 10 | WantedBy=sockets.target 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Julien Sarriot 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pair Bose QuietComfort 35 with Ubuntu over Bluetooth 2 | 3 | This project is aiming to resolve problems that you can encounter when pairing your headphone. 4 | 5 | #### Compatible products: 6 | * Bose QuietComfort 35 7 | * Bose QuietComfort 35 II 8 | 9 | If this project has helped you, please consider making a [donation](https://github.com/sponsors/Goldweavers). 10 | 11 | ## 1) Get back to a clean state 12 | 13 | * On Ubuntu, remove the headphones from the Bluetooth paired list. 14 | 15 | * On the headphones, hold the switch in Bluetooth pairing position for 10 seconds to delete all paired devices (You'll get a voice confirmation). 16 | 17 | ## 2) Desactivate Bluetooth LE (Low Energy) 18 | 19 | Edit bluetooth configuration file: 20 | ```bash 21 | sudo nano /etc/bluetooth/main.conf 22 | ``` 23 | 24 | Replace the following (remove the "#" symbol at beginning of the line if it exist): 25 | ```text 26 | ControllerMode = dual 27 | ``` 28 | With: 29 | ```text 30 | ControllerMode = bredr 31 | ``` 32 | 33 | Restart bluetooth service: 34 | ```bash 35 | sudo service bluetooth restart 36 | ``` 37 | 38 | ## 3) Enable A2DP sink for stereo sound 39 | 40 | > Note: do this step only if you're using **gdm3** 41 | 42 | Edit or create this file: 43 | ```bash 44 | sudo nano /var/lib/gdm3/.config/pulse/client.conf 45 | ``` 46 | Insert these following lines in this file: 47 | ```text 48 | autospawn = no 49 | daemon-binary = /bin/true 50 | ``` 51 | 52 | Grant access to GDM user: 53 | ```bash 54 | sudo chown gdm:gdm /var/lib/gdm3/.config/pulse/client.conf 55 | ``` 56 | 57 | Disable pulseaudio startup: 58 | ```bash 59 | sudo rm /var/lib/gdm3/.config/systemd/user/sockets.target.wants/pulseaudio.socket 60 | ``` 61 | 62 | ## 4) Optional: Use hot-plugged devices like Bluetooth or USB automatically 63 | 64 | This step aim to enable your headphone to auto-connect to your computer when you start it. Check if it is already configured with: 65 | 66 | ```bash 67 | cat /etc/pulse/default.pa | grep -B 1 -A 3 'ifexists module-switch-on-connect.so' 68 | ``` 69 | 70 | If there are no matches for it, start configuring Auto-connect For A2DP editing this file: 71 | 72 | ```bash 73 | sudo nano /etc/pulse/default.pa 74 | ``` 75 | 76 | Then insert following lines at the end: 77 | ```text 78 | .ifexists module-switch-on-connect.so 79 | load-module module-switch-on-connect 80 | .endif 81 | ``` 82 | 83 | After saving these changes, you must **reboot now**. 84 | 85 | ## 5) Optional: Install Blueman manager 86 | 87 | > Note: I only tested this GUI but feel free to use whatever you want. 88 | 89 | via package manager: 90 | ```bash 91 | sudo apt install blueman 92 | ``` 93 | 94 | To pair your headphone: 95 | 96 | 1) Open blueman 97 | 2) Right click on your headphone 98 | 3) select "headset" 99 | 4) hover "Audio profile" and select "A2DP" 100 | 101 | # Undo this configuration 102 | 103 | If you want to reverse this configuration, you just need to follow steps in reverse order. 104 | 105 | > Note: Thanks to issue [#2](https://github.com/Goldweavers/bose_qc35-ubuntu/issues/2), I added to repository ```pulseaudio.socket``` file which is removed at the end of step 3. 106 | 107 | # Buy me a coffee 108 | 109 | [![](https://img.shields.io/static/v1?label=Donate&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/Goldweavers) 110 | --------------------------------------------------------------------------------