Debian 中 BCM43142 蓝牙无法使用问题

Debian 中 BCM43142 蓝牙无法使用问题

判断系统中是否安装了相应的驱动程序

执行 dmesg | grep bluetooth 发现存在下面的错误:

bluetooth hci0: firmware: failed to load brcm/BCM43142A0-04ca-2006.hcd (-2)

hcd 后缀表明缺少主机控制器驱动。这个 hcd 的全称是 “Host Controller Driver” 。从这里我发现我的系统中缺少蓝牙驱动。这时我并不清楚我的系统中是否存在这个文件,无法加载也可能是路径问题。因此我执行 locate BCM43142A0-04ca-2006.hcd 命令在系统中查找该文件,没有查找到文件。于是开始 google 查询。在查询的结果中定位到一个github项目——broadcom-bt-firmware 项目,在该项目中我找到了我缺少的硬件驱动文件,将后缀名为 hcd 的文件下载到了本地。

/lib/firmware 目录中创建 brcm 文件夹,然后将下载的驱动文件复制到该文件夹下并重启电脑。重启后我检查 dmesg 中的信息如下:

bluetooth hci0: firmware: direct-loading firmware brcm/BCM43142A0-04ca-2006.hcd

上面的信息表明系统已经成功加载驱动文件,解决了缺少驱动的问题。

执行 hciconfig 启动 hci0 设备

[longyu@debian:16:47:20] firmware $ sudo hciconfig hci0 up
Can’t init device hci0: Operation not possible due to RF-kill (132)

启动设备失败,google 发现原来要使用 rfkillunblock hci0,以 root 权限执行 rfkill list 发现系统中并未安装此命令。于是通过 apt-get install rfkill 安装这个包。

安装成功后执行命令

sudo rfkill unblock bluetooth
sudo rfkill list

rfkill 的部分输出结果如下:

11: hci0: Bluetooth
Soft blocked: no
Hard blocked: no

从上面的信息中可以发现,bluetooth 的状态已经变为开启。这里需要注意的是,只有当 Soft blockedHard blocked 的状态都解锁后才能正常使用蓝牙设备。

这之后,重新执行 hciconfig hci0 up 命令,成功开启并初始化蓝牙设备。执行 hciconfig -a 命令,输出如下:

[longyu@debian:17:31:36] firmware $ hciconfig -a
hci0: Type: BR/EDR Bus: USB
BD Address: 30:10:B3:1C:EC:03 ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING PSCAN
RX bytes:1237 acl:0 sco:0 events:75 errors:0
TX bytes:1656 acl:0 sco:0 commands:74 errors:0
Features: 0xff 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF
Link mode: SLAVE ACCEPT
Name: ‘debian’
Class: 0x10010c
Service Classes: Object Transfer
Device Class: Computer, Laptop
HCI Version: 4.0 (0x6) Revision: 0x147
LMP Version: 4.0 (0x6) Subversion: 0x210b
Manufacturer: Broadcom Corporation (15)

至此,就解决了bcm43142蓝牙无法使用的问题

Sunday, 26. August 2018 05:47PM

你可能感兴趣的:(Linux)