- Saved searches
- Use saved searches to filter your results more quickly
- License
- winterheart/broadcom-bt-firmware
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Поиск и установка драйвера на адаптеры Broadcom BT
- Где найти?
- Поиск информации
- Конвертация
- Важно!!
- Благодарность Broadcom
- Bluetooth Broadcom 43142 isn’t working
- 4 Answers 4
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Repository for various Broadcom Bluetooth firmware
License
winterheart/broadcom-bt-firmware
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Broadcom Bluetooth firmware for Linux kernel
This package intentended to provide firmware of Broadcom WIDCOMM® Bluetooth devices (including BCM20702, BCM20703, BCM43142 chipsets and other) for Linux kernel. Since February 2017, Broadcom ships their drivers directly to Windows Update service. They can be downloaded here.
Recently several vulnerabilities have been discovered in the Bluetooth stack such as CVE-2018-5383, CVE-2019-9506 (KNOB), CVE-2020-10135 (BIAS) and more. Since Broadcom has stopped active support for its consumer devices, your system may be subject to security risks. You will have to use these devices at your own risk. As a repository maintainer, I cannot provide security fixes.
Check your Linux distribution repositories.
There are autogenerated DEB and RPM packages for RedHat and Debian based distributions.
Detection and manual installation
When you inserting Broadcom Bluetooth device you prefered Linux distribution may not load it properly.
You may list all Bluetooth devices like this:
dmesg | grep -i bluetooth # Shows all Bluetooth driver info dmesg | grep -i bluetooth | grep -i firmware # Shows Bluetooth firmware issues
The output may look like this:
Bluetooth: hci1: BCM: chip id 63 Bluetooth: hci1: BCM20702A Bluetooth: hci1: BCM20702A1 (001.002.014) build 0000 bluetooth hci1: Direct firmware load for brcm/BCM20702A1-0b05-17cb.hcd failed with error -2 Bluetooth: hci1: BCM: Patch brcm/BCM20702A1-0b05-17cb.hcd not found
As you can see, you need brcm/BCM20702A1-0b05-17cb.hcd firmware.
Place required .hcd file to /lib/firmware/brcm and reboot your computer. After reboot you will see that firmware successfully loaded:
Bluetooth: hci1: BCM: chip id 63 Bluetooth: hci1: BCM20702A Bluetooth: hci1: BCM20702A1 (001.002.014) build 0000 Bluetooth: hci1: BCM20702A1 (001.002.014) build 1467 Bluetooth: hci1: Broadcom Bluetooth Device
Congratulations, now your bluetooth device successfully loaded. Now go to Bluez for futher configuration.
Incorrect names for devices
There may be incorrect naming between presented firmware name and name requested from Linux kernel. For example, system may request BCM4354A2-13d3-3485.hcd but actually this is BCM4356A2-13d3-3485.hcd . This is happens because incorrect naming in Linux kernel. Just rename file to name that need to kernel. Here quick naming convertion:
Original name | Requested by Linux | Notes |
---|---|---|
BCM4356A2 | BCM4354A2 | Fixed in Linux kernel 5.8 |
Notes about combined WiFi+Bluetooth devices
Some Bluetooth controller (for example, BCM4354 and BCM4356) are integrated to WiFi chipset (this can be BCM43XX 802.11ac Wireless Network Adapter or just simple generic Broadcom PCIE Wireless). These devices requires two kinds of firmware — first for WiFi, and second for Bluetooth. Without WiFi firmware Bluetooth will not initialize and will not work properly. Firmware for WiFi already included to kernel, but you may need to do additional work to place correct NVRAM.
Here example how it can looks (note about brcm/brcmfmac4356-pcie.txt loading — this is your customized NVRAM):
usbcore: registered new interface driver brcmfmac brcmfmac 0000:02:00.0: firmware: direct-loading firmware brcm/brcmfmac4356-pcie.bin brcmfmac 0000:02:00.0: firmware: direct-loading firmware brcm/brcmfmac4356-pcie.txt Bluetooth: hci0: BCM: chip id 101 Bluetooth: hci0: N360-11 Bluetooth: hci0: BCM4354A2 (001.003.015) build 0000 bluetooth hci0: firmware: direct-loading firmware brcm/BCM4354A2-13d3-3485.hcd
Firmware files are licensed under Broadcom WIDCOMM Bluetooth Software License Agreement. Other parts of project are licensed under standard MIT license.
Поиск и установка драйвера на адаптеры Broadcom BT
Данная статья посвящeна установке драйвера на «синезубый» адаптер Broadcom BT.
Сама лицензия Broadcom не позволяет заниматься распростронением драйвера для данного адаптера, поэтому мы соберём его сами.
Где найти?
Нам необходим сам драйвер, который можно скачать по нижеприведённым ссылкам:
первая ссылка
вторая ссылка
B случае, если у приведённых ссылок будут изменены адреса, придётся пользоваться поиском по сайту производителя.
Поиск информации
Oткройте архив в менеджере архивов и найдите файл bcbtums-win8x86-brcm.inf, oткройте его в текстовом редакторе.
Может быть напpимер bcbtums.inf, но все они расположены в директории Win32 или Win64, разрядность не важна.
Используя системную утилиту lsusb, мы можем получить нужную информацию для последующего определения необходимого файла в архиве драйвера.
Предположим, что по запросу , мы узнали, что — 0A5C и — 21D7.
Полный вывод по нашему/вашему адаптеру будет содержать примерно такую строку:
0a5c:21d7 Broadcom Corp. BCM43142 Bluetooth 4.0
Запись в файле bcbtums-win8x86-brcm.inf будет иметь формат VID_0A5C&PID_21D7, её-то и нужно вбить в строке поиска по файлу .inf
Если Вы не уверены которым из увиденных устройств является Ваш адаптер BT, используйте команду , тем самым можно получить более детальную информацию.
По выводу этой команды можно узнать ID продукта и вендора.
Итак, мы увидим строку, заканчивающуюся записью .
В таком случае, мы можем произвести поиск по файлу .inf, имея эту информацию.
Секция файла .inf, которая нас интересует, имеет следующие записи:
[RAMUSB21D7.CopyList] bcbtums.sys btwampfl.sys BCM43142A0_001.001.011.0122.0126.hex
Bingo!!
BCM43142A0_001.001.011.0122.0126.hex — это наше искомое!
Распакуйте из архива именно этот файл.
Конвертация
Далее, нам нужно переконвертировать из формата hex в формат hcd, для этого нам понадобится конвертор hex2hcd.
Скачиваем и устанавливаем:
git clone git://github.com/jessesung/hex2hcd.git cd hex2hcd make
После чего у Вас появится каталог hex2hcd в домашней директории.
Как видите, в названии файла обязательно должны присутствовать ID-шки Вашего адаптера из вывода команды
~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM43142A0-0a5c-21d7.hcd
T.е., команда конвертации будет выглядеть так:
~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM.hcd
Для ядер 4.8+ имя файла прошивки должно иметь следующий вид BCM—.hcd, т.е., в нашем случае это
BCM-0a5c-21d7.hcd
Теперь просто скопируйте сконвертированный файл прошивки с названием в соответствии с версией Вашего ядра в директорию /lib/firmware/brcm.
Eсли имя файла прошивки — BCM43142A0-0a5c-21d7.hcd, то:
sudo cp ~/BCM43142A0-0a5c-21d7.hcd /lib/firmware/brcm
Важно!!
Для ядер 4.2+ это будет выглядеть как:
sudo cp ~/BCM.hcd /lib/firmware/brcm
sudo cp ~/BCM-0a5c-21d7.hcd /lib/firmware/brcm
Для последующих ядер название может опять измениться. Для ядра 5.0 название файла может быть опять BCM43142A0-0a5c-21d7.hcd Правильное название всегда можно узнать выполнив
Если имя прошивки неверно, то появится ошибка ввода, сообщающая, что файл не найден. В таком случае нужно переименовать файл.
Выключите компьютер и включите снова.
Адаптер подхватит прошивку и соединение будет установлено.
Благодарность Broadcom
Конечно, данная инструкция выглядит немного сложноватой для начинающего linux-user’а, но во всех этих сложностях стоит винить только лишь юристов компании Broadcom.
Большинство производителей оборудования позволяют распространять прошивки в соответствии с лицензиями. А сейчас они запрещают «распространять» свои прошивки, поэтому никто не может легально поставлять уже сконвертированные прошивки для дистрибутивов, включая Ubuntu.
Bluetooth Broadcom 43142 isn’t working
Bluetooth is on but can’t find or be found by any other devices. Output of 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
Bus 003 Device 005: ID 0a5c:21d7 Broadcom Corp. BCM43142 Bluetooth 4.0
4 Answers 4
You need to install firmware.
Distribution of Broadcom firmware is not allowed by Broadcom license. So you need to get it yourself. It is a bit complex, but there is no other legal way.
- Download Broadcom Windows 8 driver or FROM HERE. If your device is not listed in these drivers, you’ll need to find a newer version of it somewhere. Broadcom removed the latest drivers from their site to make it more difficult. Some laptop vendors have Bluetooth drivers on their sites, but some of them are not unzippable. So it is some quest. I could download the latest Broadcom drivers from their site, but it is not there any more.
- Open this file by Archive Manager and find there bcbtums-win8x86-brcm.inf file. Name of the file may differ in some drivers. It can be bcbtums.inf located at Win32 or Win64 directory. It does not matter 32 or 64 bit to download.
- Search this file for VID_0A5C&PID_21D7. These numbers are from your lsusb output 0a5c:21d7 Broadcom Corp. BCM43142 Bluetooth 4.0. Comment: Some devices are not recognized as Broadcom BT in lsusb . If you are unsure which one is your BT device, run usb-devices command, it will give more detailed information. There you can find product and vendor IDs. You will see some line ending with RAMUSB21D7 Search this file for RAMUSB21D7. You will find a section there like that:
[RAMUSB21D7.CopyList] bcbtums.sys btwampfl.sys BCM43142A0_001.001.011.0122.0126.hex
git clone git://github.com/jessesung/hex2hcd.git cd hex2hcd make
~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM43142A0-0a5c-21d7.hcd
You see that 0a5c-21d7 is id of your adapter from lsusb. Important: For kernels 4.2+ you call this file as BCM.hcd instead.
~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM.hcd
For kernels 4.8+ name of the file should be BCM-
sudo cp ~/BCM43142A0-0a5c-21d7.hcd /lib/firmware/brcm
sudo cp ~/BCM.hcd /lib/firmware/brcm
sudo cp ~/BCM-0a5c-21d7.hcd /lib/firmware/brcm
All this looks complicated, but it is Broadcom lawyers to blame for that. Most of other vendors allow to re-distribute firmware under condition that it is done accompanied with the license.
That allows Linux maintainers to include firmware in distributions.
But not in case of Broadcom. That’s why it is not done an easy way.
Many people could convert all hex files to hcd and make them available. Or just add them to the linux-firmware package of Ubuntu.
But it is not legal :-((