Expressive improvements for Bluetooth on Fedora 27

Marcelo Barbosa
4 min readJan 22, 2018

Some Bluetooth devices, especially proprietary devices, did not work properly on old versions of Fedora other than this latest version, due to the great improvements coming from the low level and from the user level showing a more stable support.
I believe that much of this effort comes from the impressive community that Fedora has. This shows how the distribution can focus on innovation and at the same time stabilize resources requested by users.

In my environment has a “Lenovo ThinkPad T460p” laptop where I use daily the bluetooth devices “Logitech Keyboard Model K810” and “Beats Studio Wireless Model B0501”.
I am running the version 27 of Fedora with all the updated packages. At this point I have the “4.14.13–300.fc27.x86_64 kernel with the following Bluetooth packages:

# rpm -qa | grep bluez
bluez-hid2hci-5.48–1.fc27.x86_64
bluez-5.48–1.fc27.x86_64
bluez-libs-devel-5.48–1.fc27.x86_64
bluez-tools-0.2.0–0.5.git20161212.97efd29.fc27.x86_64
bluez-obexd-5.48–1.fc27.x86_64
bluez-cups-5.48–1.fc27.x86_64
bluez-hcidump-2.5–10.fc27.x86_64
bluez-libs-5.48–1.fc27.x86_64

The main improves to made my devices work correctly were the latest improvements in the bluez main package that added the stability so desired to the bluetooth connections of my devices . Congratulations to packager Pete Walter aka pwalter for his excellent work on this package.

This is part of effort from everyone who posted Fedora Bugzilla bugs, without this feedback it’s almost impossible to know how the features of the distribution work with the most diverse devices, makes and models . If you have a problem with your Fedora please create a non-Bugzilla account and send your problem as detailed as possible, this is one of the most primary ways to contribute to open source.

| NOTE | If you have Gnome as the main interface or any other graphical interface do not worry, the tips below are for independent of any interface.

You should perform some checks to make sure your system is ready to accept your Bluetooth devices:

# systemctl status bluetooth

Make sure the bluetooth modules of your kernel are loaded:

# lsmod | grep bluetooth
bluetooth 516096 44 btrtl,hidp,btintel,bnep,btbcm,rfcomm,btusb
ecdh_generic 24576 1 bluetooth
rfkill 28672 9 bluetooth,thinkpad_acpi,cfg80211

In the main configuration of the bluetooth service do you can configure this option as active:

# cat /etc/bluetooth/main.conf | grep -v ‘#’

[General]

[GATT]

[Policy]

AutoEnable=true

This option enabled permit any bluetooth controller that has support on your computer could turn active.

After checking the support on your computer, we will configure your devices using the tool bluetoothctl:

# bluetoothctl
[NEW] Controller 44:85:00:66:EA:26 firemanxbr.usersys.redhat.com [default]
[NEW] Device 34:88:5D:3E:2D:BA k810
[NEW] Device 4C:32:75:CC:04:E9 BeatsStudio Wireless
Agent registered

Displays all bluetooth controllers that you have available in your system:

[k810]# list
Controller 44:85:00:66:EA:26 firemanxbr.usersys.redhat.com [default]

Show the Information of this controller:

[k810]# show
Controller 44:85:00:66:EA:26 (public)
Name: firemanxbr.usersys.redhat.com
Alias: firemanxbr.usersys.redhat.com
Class: 0x000c010c
Powered: yes
Discoverable: no
Pairable: yes
UUID: Headset AG (00001112–0000–1000–8000–00805f9b34fb)
UUID: Generic Attribute Profile (00001801–0000–1000–8000–00805f9b34fb)
UUID: A/V Remote Control (0000110e-0000–1000–8000–00805f9b34fb)
UUID: Generic Access Profile (00001800–0000–1000–8000–00805f9b34fb)
UUID: PnP Information (00001200–0000–1000–8000–00805f9b34fb)
UUID: A/V Remote Control Target (0000110c-0000–1000–8000–00805f9b34fb)
UUID: Audio Source (0000110a-0000–1000–8000–00805f9b34fb)
UUID: Audio Sink (0000110b-0000–1000–8000–00805f9b34fb)
UUID: Headset (00001108–0000–1000–8000–00805f9b34fb)
Modalias: usb:v1D6Bp0246d0530
Discovering: no

If you have more than one controller, do you can use the ‘select’ command to set the main.

To list the devices you can use the command below:

[k810]# devices
Device 34:88:5D:3E:2D:BA k810
Device 4C:32:75:CC:04:E9 BeatsStudio Wireless

If the desired device is not listed, use the command:

[k810]# scan on
Discovery started
[CHG] Controller 44:85:00:66:EA:26 Discovering: yes
[NEW] Device E4:7D:BD:D4:AE:65 [TV] Samsung 5 Series (55)
[NEW] Device 69:71:A0:E1:9C:CA 69–71-A0-E1–9C-CA
[NEW] Device AC:BC:32:85:BB:DE AC-BC-32–85-BB-DE

You can stop the scan by changing the argument to ‘off’.

If your previous command doesn’t works do you can check if the bluetooth agent are registered and active:

[k810]# agent on
Agent is already registered

[k810]# default-agent
Default agent request successful

Make sure you are running the latest stable version:

[k810]# version
Version 5.48

Pairing a device, in my case it was paired. All communication with the devices via these mac address:

[k810]# devices
Device 34:88:5D:3E:2D:BA k810
Device 4C:32:75:CC:04:E9 BeatsStudio Wireless

[k810]# pair 34:88:5D:3E:2D:BA
Attempting to pair with 34:88:5D:3E:2D:BA
Failed to pair: org.bluez.Error.AlreadyExists

[k810]# connect 34:88:5D:3E:2D:BA
Attempting to connect to 34:88:5D:3E:2D:BA
Connection successful

Set up your device as trusted:

[k810]# trust 34:88:5D:3E:2D:BA
Changing 34:88:5D:3E:2D:BA trust succeeded

Depending on your device, you may need to enter a PIN code or password to validate the connection.

Now your favorite devices will remain active and configured on your Fedora 27, if necessary, you can use the tool whenever you have any disconnection or failure with your devices.
Enjoy!

--

--