我有一台联想 B590 笔记本电脑。这台笔记本电脑经过 Ubuntu 12.04 64 位认证,所以我没想到会有什么问题。首先,我尝试让 Broadcom 43142 wifi/蓝牙模块在 Ubuntu 12.10 64 位上运行,但失败了。因此,我昨天重新安装了 Ubuntu 13.10 64 位。这里 wifi 模块开箱即用。我唯一要做的就是启用受限驱动程序。蓝牙模块也被识别,但是不起作用。
问题是:我还有另外两个蓝牙设备放在靠近笔记本电脑的地方,没有配对,每个设备都可以分别发现对方。它们都无法发现笔记本电脑,也找不到hcitool scan
任何设备。但它没有给出任何错误。
lspci | grep -i broadcom:
02:00.0 Network controller: Broadcom Corporation BCM43142 802.11b/g/n (rev 01)1
dmesg | grep -i 蓝色:
[ 8.023496] thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is unblocked
[ 8.384905] Bluetooth: Core ver 2.16
[ 8.384936] Bluetooth: HCI device and connection manager initialized
[ 8.384943] Bluetooth: HCI socket layer initialized
[ 8.384944] Bluetooth: L2CAP socket layer initialized
[ 8.384959] Bluetooth: SCO socket layer initialized
[ 8.721266] Bluetooth: can't load firmware, may not work correctly
[ 11.274285] Bluetooth: RFCOMM TTY layer initialized
[ 11.274298] Bluetooth: RFCOMM socket layer initialized
[ 11.274299] Bluetooth: RFCOMM ver 1.11
[ 11.283683] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 11.283686] Bluetooth: BNEP filters: protocol multicast
[ 11.283696] Bluetooth: BNEP socket layer initialized
[ 13.417478] Bluetooth: hci0 command 0x1003 tx timeout
hci配置:
hci0: Type: BR/EDR Bus: USB
BD Address: 1C:3E:84:E8:81:98 ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING PSCAN ISCAN
RX bytes:1265 acl:0 sco:0 events:84 errors:0
TX bytes:3794 acl:0 sco:0 commands:81 errors:0
bluez-简单代理 hci# 1C:3E:84:E8:81:98:
Creating device failed: org.bluez.Error.ConnectionAttemptFailed: Page Timeout
rfkill 列表:
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
1: brcmwl-0: Wireless LAN
Soft blocked: no
Hard blocked: no
2: tpacpi_bluetooth_sw: Bluetooth
Soft blocked: no
Hard blocked: no
3: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
uname -a:
Linux B590 3.11.0-14-generic #21-Ubuntu SMP Tue Nov 12 17:04:55 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
最后,这是扫描尝试的输出,没有给出任何结果:
hcitool 扫描:
Scanning...
我错过了什么?我该如何让蓝牙设备工作?
答案1
我正在使用 Broadcom 的驱动程序 wl 驱动程序http://www.broadcom.com/support/802.11/linux_sta.php驱动程序需要修补,我从一个 arch linux 论坛获取了修补文件。制作并安装 wl.ko,并记得加载 btusb 模块以使蓝牙正常工作
答案2
Linux内核支持Broadcom 43142蓝牙,但它需要一个二进制固件文件,但由于许可问题,发行版无法包含该文件。
如果您查看系统日志,您可能会看到内核尝试从名为的文件加载固件BCM43142A0-04ca-2007.hcd
但失败了。
获取文件需要下载芯片的 Windows 驱动程序,找到文件名称BCM43142A0_001.001.011.0122.0153.hex
,然后使用以下命令将其转换为 hcd 格式hex2hcd. 转换后的文件应放置在 中/lib/firmware/brcm/BCM43142A0-04ca-2007.hcd
。
可以使用 wine 解压 Windows 驱动程序 EXE 安装程序 - 安装程序将创建一个文件夹,drive_c
您可以在该文件夹中找到所需的 .hex 文件。B590 的当前驱动程序显然已更改 .hex 文件的名称,因此我不得不额外进行谷歌搜索,以从另一个型号的安装程序中获取文件。
如果你不想自己进行转换,可以使用BCM43142A0-04ca-2007.hcd我制作的文件应该被复制到内核将搜索它的位置:
sudo cp BCM43142A0-04ca-2007.hcd /lib/firmware/brcm/
这是原文BCM43142A0_001.001.011.0122.0153.hex取自 Windows 安装程序,以防您需要它。