Bluetooth

Bluetooth is a standard for the short-range wireless interconnection of cellular phones, computers, and other electronic devices. BlueZ is an implementation of the Bluetooth protocol stack for Linux, and it is provided by the package.
This article describes the basic installation of Bluetooth controllers and devices.
== Prerequisites and Basic Installation ==
=== Prerequisites ===
 should be installed and setup:
=== Basic Installation ===
Basic installation is as follows:
# Install 
#* Optionally install if you need deprecated tools like hcitool
# Load the btusb kernel module
# Add user to the lp group
# Start and enable the Bluetooth service
Now, check the state of the Bluetooth radio transmitter using rfkill:
It should return something similar to:
 0: hci0: Bluetooth
 Soft blocked: no
 Hard blocked: no
If the device is listed as blocked, it can be unblocked using the same tool:
=== Front-ends ===
There are several front-ends available:
* The comes with the bluetoothctl front-end
* : a full-featured Bluetooth manager
* : the KDE Bluetooth manager
* : simple text-based bluetooth management user interface
* : the GNOME Bluetooth manager
== Pairing ==
=== Using bluetoothctl ===
Begin by starting bluetoothctl and follow these basic steps:
The prompt should display:
 [bluetooth]#
List the available controllers:
 [bluetooth]# list
Display information about a controller:
 [bluetooth]# show controller_mac_address
Set the default controller:
 [bluetooth]# select controller_mac_address
Power on the controller:
 [bluetooth]# power on
Enable the agent and set it as default:
 [bluetooth]# agent on
 [bluetooth]# default-agent
Set the controller as discoverable (temporarily for 3 minutes) and pairable:
 [bluetooth]# discoverable on
 [bluetooth]# pairable on
Scan for devices:
 [bluetooth]# scan on
Put the device into pairing mode. This generally involves pressing a button or a combinations of buttons, usually for several seconds.
Discover the device MAC address:
 [bluetooth]# devices
Pair with the device:
 [bluetooth]# pair device_mac_address
Enter the PIN if prompted:
 [agent] PIN code: ####
Trust the device:
 [bluetooth]# #trust device_mac_address
Connect to the device:
 [bluetooth]# connect device_mac_address
Display information about the device:
 [bluetooth]# info device_mac_address
The device is now paired:
 [bluetooth]# quit
== Configuration ==
=== Set adapter power state ===
If you would like the adapter to not be automatically enabled (e.g. on a portable device where you wish to save battery), set AutoEnable=false in /etc/bluetooth/main.conf in the [Policy] section:
=== Battery Reporting ===
An experimental feature can be enabled in order to report device battery level:
== Troubleshooting ==
Due to the variety of available Bluetooth hardware it is possible that you receive errors while attempting to install, activate, or find your Bluetooth device.
=== "No default controller available" error ===
After having followed these instructions, or others, you run bluetoothctl and encounter the following scenario:
 [bluetooth]# list
 [bluetooth]# show
 No default controller available
One possible solution is that you are missing firmware drivers.
Try running the following command to discover the source of the issue:
There are many firmware packages available that could likely solve the this problem (see ).
Another possible solution is to install and add load the module:
It may also be necessary to create configuration to load the uhid and btusb kernel modules on boot:
=== "org.bluez.Error.NotAvailable br-connection-profile-unavailable" ===
The error br-connection-profile-unavailable is sometimes produced when trying to connect a Bluetooth HID device but the uhid kernel module is not loaded. HID devices include keyboards and the volume buttons on headphones (which are sometimes presented to the OS as a keyboard), mice, game controllers, alphanumeric displays, etc.
The uhid kernel module is required for USB HID devices with drivers that are implemented in userspace, when userspace HID support is enabled.
Loading uhid with modprobe after encountering this error does not always fix the problem.
Try setting up uhid to load at boot, and then rebooting:
Alternatively, the userspace HID feature can be disabled entirely in favour of kernel HIDP drivers in /etc/bluetooth/input.conf:
If running pipewire, you may also try installing to see if that solves the issue.
=== Unable to control Bluetooth speaker volume / Bluetooth output is muted (Pulseaudio) ===
It is possible to automatically switch audio output and volume control to last connected device.
This can solve the problem of controlling the speaker volume when switching between Bluetooth devices.
Append the following lines at the end of the :
== See Also ==
* PulseAudio with Bluetooth
* PipeWire with Bluetooth
* Bluetooth entry on PostmarketOS Wiki
* Bluetooth entry on Gentoo Wiki
* Bluetooth entry on ArchWiki
Category:Multimedia
Category:Hardware
Category:Sound
Category:Drivers