DevBug blog

О Linux, Java, разработке ПО и не только

Linux: чиним bluetooth

Данная статья описывает подробную инструкцию о том, как починить Bluetooth в линуксе на примере ноутбука Lenovo V580c с чипсетом BCM43142. Данный способ проверялся на Ubuntu 17.10 и Manjaro 2017.

Определяем чипсет и ID устройства

Для начала нам нужно определить какой чипсет установлен в нашем ноутбуке. Для этого в терминале вводим команду:
lsusb | grep Bluetooth
Вывод в консоли должен быть примерно таким:
Bus 001 Device 004: ID 105b:e065 Foxconn International, Inc. BCM43142A0 Bluetooth module
нам понадобятся BCM43142A0 и ID 105b:e065

Определяем причину по которой не работает Bluetooth

Для определения причины, по которой не работает Bluetooth, в терминале вводим команду:
dmesg | egrep -i 'blue|firm'
В моем случае вывод данной команды был примерно таким:
bluetooth hci0: Direct firmware load for brcm/BCM.hcd failed with error -2

 Скачиваем прошивку для нашего чипсета

 На гитхабе есть очень полезный репозиторий с различными прошивками для Broadcom чипсетов: https://github.com/winterheart/broadcom-bt-firmwareДанный репозиторий содержит прошивки для таких чипсетов, как BCM20702, BCM20703, BCM43142.Скачать репозиторий можно по данной ссылке: https://codeload.github.com/winterheart/broadcom-bt-firmware/zip/master либо используя гит:
git clone https://github.com/winterheart/broadcom-bt-firmware.git
Из всех файлов данного репозитория нам нужен BCM43142A0-105b-e065.hcd, который находится в папке broadcom-bt-firmware/brc. Данный файл нам нужно скопировать в /lib/firmware/brcm с именем BCM.hcd:
cd broadcom-bt-firmwaresudo cp brcm/BCM43142A0-105b-e065.hcd /lib/firmware/brcm/BCM.hcd
После копирования данного файла, ноутбук нужно выключить и заново включить. Именно выключить, а не перезагрузить: в некоторых источниках встречал информацию о том, что во время обычной перезагрузки устройство Bluetooth может оставаться занятым и прошивка может не подгрузится.Проверяем систему на наличие ошибок Bluetooth:
dmesg | egrep -i 'blue|firm'
Если в выводе команды присутствует ошибка вида:
13.496037] Bluetooth: hci0: BCM: Reading local version info failed (-110)
то в терминале необходимо ввести команду:
sudo modprobe -r btusb && sudo modprobe btusb
После этого Bluetooth должен заработать. Не забываем включить его, если он был выключен до этого. Сделать это можно в настройках системы (в Gnome 3: Settings -> Bluetooth).По умолчанию в Gnome звук через Bluetooth будет передаваться в плохом качестве. Для изменения качества звука переходим в  Settings -> Sound и меняем профиль на High Fidelity Playback (A2DP):
Изменение профиля звука

Дополнительные пакеты

В некоторых случаях для корректной работы Bluetooth могут понадобиться следующие пакеты:
  • bluez
  • bluez-tools (bluez-utils for Arch-подобных дистрибутивов)
  • blueman
comments powered by Disqus