我的笔记本电脑有一个 Broadcom BCM43242A0 蓝牙适配器,它不适用于 Kubuntu 18.04。
lsusb | grep Bluetooth
Bus 002 Device 004: ID 0a5c:216c Broadcom Corp. BCM43142A0 Bluetooth Device
我已经尝试通过从下载固件来修复它 https://github.com/winterheart/broadcom-bt-firmware/tree/master/brcm 并将其复制到 /lib/firmware/brcm/BCM.hcd 因为输出
dmesg | grep bluetooth
曾是
[ 12.314809] bluetooth hci0: Direct firmware load for brcm/BCM.hcd failed with error -2
此后,蓝牙适配器在系统设置 -> 蓝牙中不再被识别,并且dmesg | grep bluetooth
没有返回。输出
uname -r; lsusb; lspci -nnk | grep -iA2 net; rfkill list all; hciconfig -a; dmesg | egrep -i 'blue|firm'
是
4.15.0-22-generic
Bus 001 Device 002: ID 8087:8001 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 004: ID 0a5c:216c Broadcom Corp. BCM43142A0 Bluetooth Device
Bus 002 Device 003: ID 04f2:b40e Chicony Electronics Co., Ltd HP Truevision HD camera
Bus 002 Device 002: ID 046d:c00c Logitech, Inc. Optical Wheel Mouse
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
08:00.0 Network controller [0280]: Broadcom Limited BCM43142 802.11b/g/n [14e4:4365] (rev 01)
Subsystem: Hewlett-Packard Company BCM43142 802.11b/g/n [103c:2230]
Kernel driver in use: wl
--
09:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8101/2/6E PCI Express Fast/Gigabit Ethernet controller [10ec:8136] (rev 08)
Subsystem: Hewlett-Packard Company RTL810xE PCI Express Fast Ethernet controller [103c:2297]
Kernel driver in use: r8169
Kernel modules: r8169
0: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
2: brcmwl-0: Wireless LAN
Soft blocked: no
Hard blocked: no
hci0: Type: Primary Bus: USB
BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0
DOWN
RX bytes:312 acl:0 sco:0 events:7 errors:0
TX bytes:37 acl:0 sco:0 commands:9 errors:0
Features: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Packet type: DM1 DH1 HV1
Link policy:
Link mode: SLAVE ACCEPT
[ 0.000000] [Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x25 (or later)
[ 0.049786] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[ 1.167623] [Firmware Bug]: Invalid critical threshold (0)
[ 2.822033] [Firmware Bug]: ACPI(PXSX) defines _DOD but not _DOS
[ 21.550566] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 21.611269] Bluetooth: Core ver 2.22
[ 21.611297] Bluetooth: HCI device and connection manager initialized
[ 21.611302] Bluetooth: HCI socket layer initialized
[ 21.611306] Bluetooth: L2CAP socket layer initialized
[ 21.611316] Bluetooth: SCO socket layer initialized
[ 21.749781] Bluetooth: hci0: BCM: chip id 70
[ 21.750785] Bluetooth: hci0: BCM: features 0x06
[ 21.766795] Bluetooth: hci0: BCM43142A
[ 21.766798] Bluetooth: hci0: BCM (001.001.011) build 0000
[ 23.900113] Bluetooth: hci0: command 0x0a0a tx timeout
[ 27.050123] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 27.050125] Bluetooth: BNEP filters: protocol multicast
[ 27.050128] Bluetooth: BNEP socket layer initialized
[ 31.964068] Bluetooth: hci0: BCM: Patch command 0a0a failed (-110)
[ 34.076050] Bluetooth: hci0: command 0x1001 tx timeout
[ 42.204067] Bluetooth: hci0: BCM: Reading local version info failed (-110)
我不知道这意味着什么,但是https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1483101据我所知,这个错误已在较新的 Linux 内核中得到修复。我的内核版本是 4.15.0-22-generic,但问题仍然存在。我该如何让蓝牙正常工作?
答案1
修复步骤:
- 前往仓库winterheart/broadcom-bt-固件并下载文件 BCM43142A0-0a5c-216c.hcd(根据您的蓝牙芯片组)。
- 将该文件移动到
/lib/firmware/brcm
(如果不行:将文件重命名为BCM.hcd
) - 关闭并打开电脑
附言这也适用于其他博通适配器,只需要得到正确的.hcd
文件:grep蓝牙设备和ID使用命令lsusb | grep Bluetooth
。
已编辑此蓝牙问题解决方案也适用于 Ubuntu 20.04。
答案2
经过五天的尝试,我终于让它发挥作用了。
我首先所做的是,从 /lib/firmware/brcm 中删除所有 .hcd 文件(使用 sudo nautilus 文件管理器),然后从给定的链接下载正确的文件(非常重要)。
前往 repo winterheart/broadcom-bt-firmware 并下载文件 BCM43142A0-0a5c-216c.hcd(根据您的蓝牙芯片组)。
将该文件移动到 /lib/firmware/brcm(如果不起作用:将文件重命名为 BCM.hcd)非常重要。
PS 这也可以适用于其他博通适配器,只需要获取正确的.hcd 文件:使用命令 lsusb | grep Bluetooth 获取蓝牙设备和 ID。
下载.hcd 文件后,我使用此命令将其复制到 /lib/firmware/brcm:sudo cp BCM20702A0-0a5c-216f.hcd /lib/firmware/brcm(需要根据下载的内容更改 hcd 文件名)。
此后我使用此命令重新启动我的蓝牙服务。
sudo modprobe -r btusb 然后 sudo modprobe btusb
就是这样,现在一切正常。