Bluetooth
This material is work-in-progress ... work in progress |
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 bluez package.
This article describes the basic installation of Bluetooth controllers and devices.
Prerequisites and Basic Installation
Prerequisites
eudev should be installed and setup:
# setup-devd udev
Basic Installation
Basic installation is as follows:
- Install bluez
- Optionally install bluez-deprecated if you need deprecated tools like
hcitool
- Optionally install bluez-deprecated if you need deprecated tools like
- Load the
btusb
kernel module - Add user to the
lp
group - Start and enable the Bluetooth service
# apk add bluez # apk add bluez-deprecated # modprobe btusb # adduser $USER lp # rc-service bluetooth start # rc-update add bluetooth default
Now, check the state of the Bluetooth radio transmitter using rfkill
:
$ rfkill list bluetooth
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:
# rfkill unblock bluetooth
Front-ends
There are several front-ends available:
- The bluez comes with the
bluetoothctl
front-end - blueman: a full-featured Bluetooth manager
- bluedevil: the KDE Bluetooth manager
- gnome-bluetooth: the Gnome Bluetooth manager
Pairing
Using bluetoothctl
Begin by starting bluetoothctl
and follow these basic steps:
$ bluetoothctl
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:
Contents of /etc/bluetooth/main.conf
Battery Reporting
An experimental feature can be enabled in order to report device battery level:
Contents of /etc/bluetooth/main.conf
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:
# dmesg | grep -i bluetooth | grep -i firmware
There are many firmware packages available that could likely solve the this problem (see linux-firmware-*).
Another possible solution is to install hidapi and add load the module:
# apk add hidapi # modprobe uhid