Bluetooth Broadcom 43142 не работает
Bluetooth включен, но не может найти или найти другие устройства.
Выход из sudo service bluetooth status
:
● bluetooth.service - Bluetooth service
Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
Active: active (running) since ხუთ 2015-06-04 22:33:18 GET; 13min ago
Main PID: 26678 (bluetoothd)
CGroup: /system.slice/bluetooth.service
└─26678 /usr/sbin/bluetoothd -n
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/HFPAG
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/HFPHS
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/A2DPSource
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/A2DPSink
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/HFPAG
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/HFPHS
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/A2DPSource
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/A2DPSink
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Adapter /org/bluez/26678/hci0 has been enabled
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Adapter /org/bluez/26678/hci0 has been enabled
Выход из lsusb
:
Bus 003 Device 005: ID 0a5c:21d7 Broadcom Corp. BCM43142 Bluetooth 4.0
Как я могу это исправить?
4 ответа
Вам необходимо установить прошивку.
Распространение прошивки Broadcom не разрешено лицензией Broadcom. Так что вам нужно получить это самостоятельно. Это немного сложно, но другого легального пути нет.
- Загрузите драйвер Broadcom для Windows 8 или ЗДЕСЬ.
Если ваше устройство отсутствует в этих драйверах, вам нужно где-то найти его более новую версию. Broadcom удалил последние версии драйверов со своего сайта, чтобы сделать его более сложным.
Некоторые производители ноутбуков имеют на своих сайтах драйверы Bluetooth, но некоторые из них не являются разархивируемыми. Так что это какой-то квест. Я мог бы загрузить последние версии драйверов Broadcom с их сайта, но их там больше нет.
- Откройте этот файл Менеджером архивов и найдите там
bcbtums-win8x86-brcm.inf
файл. Название файла может отличаться в некоторых драйверах. Может бытьbcbtums.inf
находится в каталоге Win32 или Win64. Неважно, 32 или 64 бит для загрузки. Найдите этот файл для VID_0A5C& PID_21D7. Эти цифры от вашего
lsusb
выход0a5c: 21d7 Broadcom Corp. BCM43142 Bluetooth 4.0.
Комментарий: некоторые устройства не распознаются как Broadcom BT в lsusb
, Если вы не уверены, какое устройство является вашим BT, запустите usb-devices
Команда, это даст более подробную информацию. Там вы можете найти идентификаторы продуктов и поставщиков.
Вы увидите строку, оканчивающуюся на RAMUSB21D7
Поиск этого файла для RAMUSB21D7. Там вы найдете такой раздел:
[RAMUSB21D7.CopyList]
bcbtums.sys
btwampfl.sys
BCM43142A0_001.001.011.0122.0126.hex
Это то, что мы ищем. Название файла прошивки. BCM43142A0_001.001.011.0122.0126.hex
Теперь извлеките эту прошивку из того же файла cab.
Затем вам нужно конвертировать этот файл из шестнадцатеричного формата в hcd.
Скачать инструмент для этого
git clone git://github.com/jessesung/hex2hcd.git cd hex2hcd make
Вы получите папку hex2hcd в вашем домашнем каталоге.
Поместите файл прошивки в вашу домашнюю папку и запустите
~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM43142A0-0a5c-21d7.hcd
Вы видите, что 0a5c-21d7 - это идентификатор вашего адаптера из lsusb.
Важно: для ядер 4.2+ этот файл называется BCM.hcd
вместо.
~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM.hcd
Для ядер 4.8+ имя файла должно быть BCM-<VID>-<PID>.hcd
, лайк BCM-0a5c-21d7
,
Теперь просто скопируйте
BCM43142A0-0a5c-21d7.hcd
или другой файл в соответствии с версией ядра/lib/firmware/brcm
каталог поsudo cp ~/BCM43142A0-0a5c-21d7.hcd /lib/firmware/brcm
Для ядер 4.2+
sudo cp ~/BCM.hcd /lib/firmware/brcm
Для ядер 4.8+
sudo cp ~/BCM-0a5c-21d7.hcd /lib/firmware/brcm
Вы всегда можете проверить правильность имени файла, запустив dmesg | grep -i blue
, Там будет сообщение об ошибке, если файл не найден.
Выключите и снова включите компьютер. Не просто перезагрузка!
Ваш адаптер получит прошивку, и Bluetooth должен работать.
Все это выглядит сложно, но в этом виноваты адвокаты Broadcom. Большинство других производителей разрешают перераспределять прошивку при условии, что это сделано в соответствии с лицензией.
Это позволяет сопровождающим linux включать прошивку в дистрибутивы.
Но не в случае с Broadcom. Вот почему это не делается простым способом.
Многие люди могут конвертировать все шестнадцатеричные файлы в hcd и делать их доступными. Или просто добавьте их в пакет linux-firmware Ubuntu.
Но это не законно:-((
Вот проект, который призван немного автоматизировать процесс: https://github.com/winterheart/broadcom-bt-firmware
скопируйте BCM в нужное имя / каталог в зависимости от ядра (как описано выше).
На 4.8 мне не понадобилась перезагрузка, просто в терминале:
sudo modprobe -r btusb
sudo modprobe btusb
dmesg | grep -i blu
должен показать, если он загружен. Убедитесь, что идентификатор оборудования соответствует файлу. Его можно найти с помощью:
lsusb
что показывает это на моем Lenovo (только эта строка):
Bus 001 Device 006: ID 105b:e065 Foxconn International, Inc. BCM43142A0 Bluetooth module
Надеюсь, это поможет:)
Это все, что вам нужно: https://github.com/winterheart/broadcom-bt-firmware
В этом хранилище вы можете найти дополнительную информацию и все необходимые драйверы беспроводных карт Broadcom.
Чтобы быть более конкретным, я даю вам инструкции, которые я написал для себя:
Это руководство предназначено для того, чтобы беспроводная / Bluetooth-сетевая сетевая карта Broadcom Corporation BCM43142 802.11b/g/n (rev 01) (идентификатор устройства: 0a5c:216d) работала в системах Linux (я пробовал ее на Elementary OS 0.4.1 Loki, на основе на Ubuntu 16.04.3 LTS).
Он не может работать для других устройств, но он не должен сильно отличаться от этой процедуры для других устройств Broadcom. Необходимые драйверы Broadcom находятся в этой папке GitHub в формате.hcd.
Введите следующую команду, чтобы узнать, какое имя драйвера ищет ядро при загрузке дисков во время загрузки:
dmesg | grep -i 'firmware load'
Попробуйте этот, если он ничего не находит:
dmesg | grep -i 'bluetooth'
Результат должен быть примерно таким:
bluetooth hci0: Direct firmware load for brcm/BCM.hcd failed with error -2
Пояснение: в моем случае ядро ищет файл
BCM.hcd
под каталогом/lib/firmware/brcm
где драйверы Broadcom должны быть. Если ядро ищет другое имя драйвера, вы должны переименовать файл драйвера (BCM43142A0-0a5c-216c.hcd
в моем случае для BCM43142 (0a5c:216d)) к необходимому имени в ядре.Переместите переименованный драйвер (BCM.hcd) в свой домашний каталог (/home/YourUsername/) и выполните следующую команду, чтобы переместить его в папку, которую просматривает ядро во время загрузки:
sudo mv ~/BCM.hcd /lib/firmware/brcm
Вы должны использовать соответствующий драйвер в зависимости от вашего устройства и переименовать его, если требуется для ядра.
Перезагрузите компьютер, и он должен работать!* (Вы можете ввести
dmesg | grep -i 'bluetooth'
еще раз, чтобы увидеть, был ли загружен драйвер)
Все еще сталкиваетесь с ошибками прошивки?
Попробовав это решение, приведенное выше , много раз отвечайте: «Не удалось создать файл hex2hcd».
Мои ошибки будут такими:
$ dmesg | egrep -i 'blue|firm'
[ 0.108524] Spectre V2 : Enabling Restricted Speculation for firmware calls
[ 0.144995] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[ 4.768278] thinkpad_acpi: ThinkPad firmware release H1EC34WW doesn't match the known patterns
[ 4.808333] thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is unblocked
[ 5.267304] Bluetooth: Core ver 2.22
[ 5.267329] Bluetooth: HCI device and connection manager initialized
[ 5.267333] Bluetooth: HCI socket layer initialized
[ 5.267335] Bluetooth: L2CAP socket layer initialized
[ 5.267339] Bluetooth: SCO socket layer initialized
[ 5.405755] Bluetooth: hci0: BCM: chip id 70
[ 5.406559] Bluetooth: hci0: BCM: features 0x06
[ 5.422570] Bluetooth: hci0: BCM43142A
[ 5.422575] Bluetooth: hci0: BCM43142A0 (001.001.011) build 0000
[ 5.424415] Bluetooth: hci0: BCM: firmware Patch file not found, tried:
[ 5.424420] Bluetooth: hci0: BCM: 'brcm/BCM43142A0-105b-e065.hcd'
[ 5.424421] Bluetooth: hci0: BCM: 'brcm/BCM-105b-e065.hcd'
[ 7.441899] Bluetooth: hci0: command 0x1003 tx timeout
[ 7.443566] Bluetooth: hci0: unexpected event for opcode 0x1003
[ 17.500493] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 17.500496] Bluetooth: BNEP filters: protocol multicast
[ 17.500501] Bluetooth: BNEP socket layer initialized
[ 38.846123] Bluetooth: RFCOMM TTY layer initialized
[ 38.846129] Bluetooth: RFCOMM socket layer initialized
[ 38.846136] Bluetooth: RFCOMM ver 1.11
- Я только что нашел другие методы от услышать
Метод:
- загрузка файла brcm/BCM43142A0-105b-e065.hcd из Broadcom-bt-прошивки
- И вставка в
/lib/firmware/brcm
папка. - Для этого используйте приведенные ниже команды.
КОМАНДА:
sudo apt-get update && sudo apt-get install wget
sudo wget https://github.com/winterheart/broadcom-bt-firmware/raw/master/brcm/BCM43142A0-105b-e065.hcd -P /lib/firmware/brcm
- Перезагрузите компьютер :)