BCM43228 上未找到蓝牙

BCM43228 上未找到蓝牙

我有一块 Broadcom BCM43228 mPCIe 卡,随主板一起提供(华硕 ROG Maximus V Extreme,似乎找不到该卡的链接)目前它对 WiFi 运行良好,但我无法检测到板载蓝牙硬件。在 Windows 中,我拥有完整的蓝牙 4.0 支持。

$ lspci 
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
00:14.0 USB controller: Intel Corporation Panther Point USB xHCI Host Controller (rev 04)
00:16.0 Communication controller: Intel Corporation Panther Point MEI Controller #1 (rev 04)
00:19.0 Ethernet controller: Intel Corporation 82579V Gigabit Network Connection (rev 04)
00:1a.0 USB controller: Intel Corporation Panther Point USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation Panther Point High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation Panther Point PCI Express Root Port 1 (rev c4)
00:1c.4 PCI bridge: Intel Corporation Panther Point PCI Express Root Port 5 (rev c4)
00:1c.6 PCI bridge: Intel Corporation Panther Point PCI Express Root Port 7 (rev c4)
00:1c.7 PCI bridge: Intel Corporation Panther Point PCI Express Root Port 8 (rev c4)
00:1d.0 USB controller: Intel Corporation Panther Point USB Enhanced Host Controller #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation Panther Point LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation Panther Point 6 port SATA Controller [AHCI mode] (rev 04)
00:1f.3 SMBus: Intel Corporation Panther Point SMBus Controller (rev 04)
01:00.0 VGA compatible controller: NVIDIA Corporation Device 1189 (rev a1)
01:00.1 Audio device: NVIDIA Corporation Device 0e0a (rev a1)
0d:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller
0e:00.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
0f:01.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
0f:04.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
0f:05.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
0f:06.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
0f:07.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
0f:08.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
0f:09.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
10:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller
12:00.0 SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 01)
15:00.0 Network controller: Broadcom Corporation BCM43228 802.11a/b/g/n
17:00.0 SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 01)

关键的一行似乎是:

15:00.0 Network controller: Broadcom Corporation BCM43228 802.11a/b/g/n

如果我尝试检测蓝牙卡,我什么也看不到:

$ hcitool dev
Devices:

$ rfkill list all

输出

$ lspci 

输出

$ lsusb

输出

我终于找到了这张卡usb-devices

T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0b05 ProdID=17b5 Rev=01.12
S:  Manufacturer=Broadcom Corp
S:  Product=BCM20702A0
S:  SerialNumber=############
C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I:  If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)

我正在运行内核3.2.0-34-generic

我听说这张卡需要注入固件才能运行。如果是这样,我该怎么做?

答案1

修补内核

根据这个帖子您的特定蓝牙模块无法被当前精确的内核识别。

您的命令usb-devices会显示特定的蓝牙设备 - 供应商和 ProdID 值 -0b05:17b5

补丁已提交至主 Git 存储库。此补丁很可能(但不确定)会包含在下一个内核 - v3.8 中。但是,如果顺利的话,它可能会成为后续模块分期

因此,目前,为了让您的蓝牙设备被识别,您应该在启动板上提交一个错误报告,询问是否可以反向移植此补丁 - 尽可能详细地说明补丁,如果可能的话,也提交补丁。

如果您想自行修补此问题,请遵循以下说明。

修补内核

  • 下载构建环境、内核源代码和头文件
sudo apt-get 安装 build-essential
apt-get 源 linux-source-3.2.0
sudo apt-get 安装 linux-headers-$(uname -r)

即不要使用,sudo apt-get source linux-source-3.2.0因为这将以 root 身份下载源代码 - 如果您以 root 身份下载,这将导致稍后出现编译问题。

  • 复制当前内核配置和源头模块版本文件
cd linux-3.2.0
cp /boot/config-$(uname -r).config
cp /usr/src/linux-headers-$(uname -r)/Module.symvers 。
  • 修补蓝牙模块

上面的 linux 指示补丁应该应用于btusb.c

使用您最喜欢的编辑器打开此内核模块

gedit 驱动程序/蓝牙/btusb.c

搜索并查找包含文本的行BCM20702A0

它看起来像:

/* 博通 BCM20702A0 */
{USB_DEVICE(0x0489,0xe042)},
{USB_DEVICE(0x13d3,0x3388),.driver_info = BTUSB_BCM_PATCHRAM},
{USB_DEVICE(0x13d3,0x3389),.driver_info = BTUSB_BCM_PATCHRAM},
{USB_DEVICE(0x413c,0x8197),.driver_info = BTUSB_BCM_PATCHRAM},

添加以下您的新蓝牙设备 - 即您的供应商和 ProdID{ USB_DEVICE(0x0b05, 0x17b5) },

/* 博通 BCM20702A0 */
{USB_DEVICE(0x0b05,0x17b5)},
{USB_DEVICE(0x0489,0xe042)},
{USB_DEVICE(0x13d3,0x3388),.driver_info = BTUSB_BCM_PATCHRAM},
{USB_DEVICE(0x13d3,0x3389),.driver_info = BTUSB_BCM_PATCHRAM},
{USB_DEVICE(0x413c,0x8197),.driver_info = BTUSB_BCM_PATCHRAM},
  • 现在编译
制作 M=驱动程序/蓝牙模块
  • 这应该可以成功编译包括您新修补的文件在内的内核模块。

  • 最后将内核模块添加到当前内核驱动程序文件夹:

CD 驱动器/蓝牙
sudo cp btusb.ko /lib/modules/$(uname -r)/kernel/drivers/bluetooth
sudo 服务蓝牙停止
sudo modprobe -r btusb
sudo modprobe btusb
sudo 服务蓝牙启动

rfkill list all希望现在你的蓝牙设备已经被识别了——当你跑步时它应该是可见的lsusb

最后……

每次您的内核由 Canonical 更新时,您都需要重新执行上述过程,因为您的新蓝牙模块将被覆盖 - 如果您很幸运,您可能能够使用sudo modprobe带有小内核更新的命令来运行。

答案2

我的 Acer Aspire R7 上的 BCM20702A0 也遇到了同样的问题,刚刚找到了另一个永久解决方案(无需在更新时重新编译驱动程序):

sudo echo btusb >> /etc/modules- 这将强制加载btusb驱动程序;

将该行添加echo 0b05 17b5 > /sys/bus/usb/drivers/btusb/new_id/etc/rc.local之前exit 0- 这将强制驱动程序在启动时与指定的设备一起使用(这04ca 2004在我的系统中,并且也可以工作)。

答案3

參閱WifiDocs/驱动程序/bcm43xx在 Ubuntu wiki 中了解如何为您的芯片组安装正确的驱动程序。

相关内容