Linux: how to make Bluetooth working
This post describes step by step solution of how to make Bluetooth working on Lenovo V580c in linux distributions: Ubuntu 17.10 and Manjero 2017. My Lenovo laptop uses BCM43142
chipset.
Find bluetoth chipset and device ID
First of all we need to make sure that we have appropriate Chipset. Open terminal and enter the following command:
lsusb | grep Bluetooth
The output will look like:
Bus 001 Device 004: ID 105b:e065 Foxconn International, Inc. BCM43142A0 Bluetooth module
We need ID 105b:e065
and BCM43142A0
from the output. Just rememeber or write it down somewhere. We’ll need it in a few seconds later.
Find the reason why bluetooth not working
Now we need to figure out the reason why bluetooth is not working. In my case it was the following error:
bluetooth hci0: Direct firmware load for brcm/BCM.hcd failed with error -2
The following error can be found in the output of the following command:
dmesg | egrep -i 'blue|firm'
Download firmware for our chipset:
There’s very helpful repository on Github for various Broadcom Bluetooth firmware: https://github.com/winterheart/broadcom-bt-firmware This repository provides firmware of Broadcom WIDCOMM® Bluetooth devices (including BCM20702, BCM20703, BCM43142 chipsets and other. Also it contains some other usefull details.
We need download this repository (or we can clone it using git
).
After repository is downloaded, we need to go to broadcom-bt-firmware/brcm
folder and find the file BCM43142A0-105b-e065.hcd
and copy it to /lib/firmware/brcm
with name BCM.hcd
.
Now turn the lap top off and the turn it on.
Verify the output of the command dmesg | egrep -i 'blue|firm'
again. The output should not display the error anymore.
In case when output look like
13.496037] Bluetooth: hci0: BCM: Reading local version info failed (-110)
then we need run the following:
sudo modprobe -r btusb && sudo modprobe btusb
After that our bluetooth should be ready and we can connect devices now. Open Settings -> Bluetooth and turn bluetooth if it was disabled before. Available devices should be displayed.
By default bluetooth will play sound in very poor quality. Sound quality can be changed in sound settings (Settings -> Sound):
Additional packages
In some cases additional packages can (should) be installed:
- bluez
- bluez-tools (bluez-utils for Arch-based linux)
- blueman