Ubuntu 18.04 中无法检测到 Broadcom BCM43242A0 蓝牙适配器

Ubuntu 18.04 中无法检测到 Broadcom BCM43242A0 蓝牙适配器

我的笔记本电脑有一个 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

修复步骤:

  1. 前往仓库winterheart/broadcom-bt-固件并下载文件 BCM43142A0-0a5c-216c.hcd(根据您的蓝牙芯片组)。
  2. 将该文件移动到/lib/firmware/brcm(如果不行:将文件重命名为BCM.hcd
  3. 关闭并打开电脑

附言这也适用于其他博通适配器,只需要得到正确的.hcd文件:grep蓝牙设备ID使用命令lsusb | grep Bluetooth

已编辑此蓝牙问题解决方案也适用于 Ubuntu 20.04。

来源https://dev-pages.info/ubuntu-bluetooth/

答案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

就是这样,现在一切正常。

相关内容