Important Notes About Bluetooth
Bluetooth is a bit odd. There are a lot of factors that go into whether Bluetooth devices work together as expected.
Bluetooth 5.0 is backwards compatible with older Bluetooth versions, but older bluetooth versioned devices are not always compatible with newer versions or devices.
Bluetooth uses the same bandwidth as the 2.4Ghz Wi-Fi band, and in most of our machines it is on the same chip as the Wi-Fi module. They usually have two antennae, one for Bluetooth, and one for Wi-Fi, but it is possible for other Wi-Fi or Bluetooth devices signals to cross and to cause connection issues. If users are in an area crowded with other Wi-Fi networks or devices, the interference from these outside sources can impact performance and range.
Device Specific Differences
Every Bluetooth device is different. They use the same or similar protocols, but the printed circuit boards (PCBs), are specific to each device, and the firmware they are running is often custom designed, and closed-source.
Some of the code and technologies that make Bluetooth work reliably are patented, and only device vendors who have licensed the permission to use that patented technology will be able to experience the full benefits (for more information see the "Audio Input/Output" section below.)
NOTE: Some devices, such as Apple or Sony headphones, particularly take advantage of these patents and technologies to ensure they work well with similar devices. Often these devices are not tested against Linux machines. That doesn't mean these devices will not work, only that behavior or performance may vary.
As the Linux kernel develops, support for more devices are added. Sometimes Bluetooth devices will work better in a different kernel version.
Similar to the kernel versions. Improvements are often made in newer versions of Ubuntu and Pop!_OS. Running software updates is always a good idea, followed by a reboot.
Sometimes Bluetooth devices are working correctly, but something in settings needs to be reset.
The easiest way to test this is to "forget" the paired Bluetooth device, and pair it again.
A more thorough way of testing this would be to create a test user, or boot from a Live Disk to see if Bluetooth works in either case. If it does, config files may need deleted. If it doesn't (especially in the Live Disk), reinstalling the OS may solve the problem. Reinstalling the OS won't affect Bluetooth hardware directly, but resetting and starting with a clean slate can solve a slew of problems and save time hunting for a specific file or bug.
Because of all of these factors, if the steps outlined in the Bluetooth troubleshooting article, and the previous troubleshooting steps don't resolve the issue, the issue may not be resolved at all. Or, in a future update or change to the system, the devices may start working again. In some cases (many cases) users will not experience any issue with Bluetooth at all.
Bluetooth audio devices, such as headphones and speakers, usually default to the A2DP protocol, which works effectively as an audio output source.
Bluetooth devices with microphones built in, can be used if the device supports HFP/HSP. However, without the technology that companies like Sony have patented, the solution is to divide up the audio stream so that some of it is used for audio out and some for audio in. This process lowers the sound quality of the stream when in HSP/HFP mode, so audio may be "tinny," compressed (lower-fidelity), or at a lower volume. That is expected behavior.
Bluetooth issues can be troubleshooted in several ways. The first thing to check is toggling airplane mode which will sometimes get Bluetooth functioning again. Next, make sure Bluetooth is enabled in the top bar, or in the Bluetooth system settings.
Then, try reinstalling Bluetooth related software with this command, depending on the verison of Pop!_OS you're using.
For Pop!_OS 22.04 or higher:
sudo apt reinstall --purge bluez gnome-bluetooth
For Pop!_OS 21.10 or 20.04:
sudo apt install --reinstall bluez gnome-bluetooth indicator-bluetooth pulseaudio-module-bluetooth
NOTE: After reinstalling the above packages, fully shut down the machine and then power it back on, rather than rebooting. This ensures the hardware completely resets.
tlp is installed, then there may be settings interfering with Bluetooth functionality. Edit this file and disable Wifi and Bluetooth power saving features:
sudo gedit /etc/default/tlp
There is a program called Bluetooth Manager which is included with XFCE. It can sometimes pair and trust Bluetooth devices better than the default Bluetooth settings. Install it with:
sudo apt install blueman
Then, run Bluetooth Manager. Check for the device being trusted, and also try re-pairing in that program.
lsmod | grep bluetooth dmesg | grep Bluetooth
These will show if the Bluetooth module (driver) is loaded, and what the system messages are.
sudo systemctl status bluetooth
This will check to see if the service that handles Bluetooth is running.
rfkill list sudo rfkill unblock bluetooth
If both Bluetooth and Wireless are soft blocked or if the Wireless is soft blocked run this command to unblock:
sudo rfkill unblock all
This will check to see Bluetooth is blocked, and if so, unblock it.
For Pop!_OS 21.10 or 20.04:
pactl load-module module-bluetooth-discover
This will load the PulseAudio module responsible for Bluetooth Audio. Typically, it's loaded by default, but sometimes a manual loading can get Bluetooth headsets working again. This module is no longer used on Pop!_OS 22.04 or higher.
This will show all Bluetooth related messages. Try leaving this command running while pairing or using a device to see any error messages or failures.
sudo rm -r /var/lib/bluetooth/
This will reset the Bluetooth device profiles and require re-pairing all devices. This can help if your Bluetooth audio device is stuck in an HSP/HFP profile and will not switch to A2DP mode after updates 1.
Here are a few additional tidbits about the Bluetooth system that may help with troubleshooting.
Once you are connected to a Bluetooth speaker, you may need to change where your current audio is "routed". You can get a more advanced interface to settings on audio with the program called PulseAudio Volume Control. To install, run this command:
sudo apt install pavucontrol
There will be a drop-down in the Playback tab for each of your applications that is outputting sound that you should be able to change to your Bluetooth speaker.
Occasionally the kernel and/or Linux firmware will have problems. Sometimes, newer Linux firmware packages will have fixed bugs that aren't yet in the repositories. They can be downloaded from here:
Then they can be installed with this command:
sudo dpkg -i linux-firmware_#.###.#_all.deb
NOTE: You'll need to replace the numbers/file name with the most current version after downloading it.
Sometimes, additional programs need to be installed for mobile equipment file transfer. Please install the transfer tool with this command:
sudo apt install obexfs obexftp
Then connect (pair) to the device and see if send files works. To receive files over Bluetooth you will need to enable the option in Personal File Sharing.