ubuntu 14.04 蓝牙 BCM43142 未发现(tx 超时)

ubuntu 14.04 蓝牙 BCM43142 未发现(tx 超时)

我浏览了许多与该问题相关的帖子,但没有找到一个完整的答案。

问题:无法发现\检测其他蓝牙节点。

信息:

$ uname -r
3.13.0-59-generic

$ cat /etc/*release* | grep -i dist
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.2 LTS"

$ lsusb | grep -i bluetooth
Bus 002 Device 003: ID 0a5c:21d7 Broadcom Corp. BCM43142 Bluetooth 4.0

$ sudo lshw -c network
  *-network               
       description: Wireless interface
       product: BCM43142 802.11b/g/n
       vendor: Broadcom Corporation
       physical id: 0
       bus info: pci@0000:01:00.0
       logical name: wlan0
       version: 01
       serial: XX:XX:XX:XX:XX:XX
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=wl0 driverversion=6.30.223.248 (r487574) ip=192.168.1.103 latency=0 multicast=yes wireless=IEEE 802.11abg
       resources: irq:16 memory:d0500000-d0507fff

$ usb-devices

T:  Bus=02 Lev=02 Prnt=02 Port=04 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=0a5c ProdID=21d7 Rev=01.12
S:  Manufacturer=Broadcom Corp
S:  Product=BCM43142A0
S:  SerialNumber=XXXXXXXXXXXXX
C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
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)

$ lsmod | grep -i 'bluetooth\|btusb\|wl'
btusb                  32412  0 
wl                   6367819  0 
cfg80211              484040  1 wl
bluetooth             391136  22 bnep,btusb,rfcomm

$ dmesg | grep -i bluetooth
[    2.964011] Bluetooth: Core ver 2.17
[    2.964049] Bluetooth: HCI device and connection manager initialized
[    2.964056] Bluetooth: HCI socket layer initialized
[    2.964058] Bluetooth: L2CAP socket layer initialized
[    2.964062] Bluetooth: SCO socket layer initialized
[    2.969253] Bluetooth: RFCOMM TTY layer initialized
[    2.969268] Bluetooth: RFCOMM socket layer initialized
[    2.969273] Bluetooth: RFCOMM ver 1.11
[    2.969744] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    2.969746] Bluetooth: BNEP filters: protocol multicast
[    2.969751] Bluetooth: BNEP socket layer initialized
[    3.460974] Bluetooth: can't load firmware, may not work correctly
[    5.462029] Bluetooth: hci0 command 0x1003 tx timeout

正如您在上面的代码片段中看到的,最后两行——似乎驱动程序有问题。

请注意,我们正在谈论组合网卡。即,它是物理网络接口卡上的 wifi 和蓝牙设备。

能否有人解释一下这个问题:

  1. 怎么了?
  2. 有没有什么软件解决方案?(我知道我可以购买不同的硬件)

更新: 我按照 pilot6 链接操作,并针对两种架构执行了那里描述的步骤。即 32 位和 64 位。我已关闭计算机,但问题尚未解决。附上更多信息,如果需要任何其他信息,请告诉我。

$ dmesg | grep -i bluetooth
[    3.137118] Bluetooth: Core ver 2.17
[    3.137138] Bluetooth: HCI device and connection manager initialized
[    3.137145] Bluetooth: HCI socket layer initialized
[    3.137148] Bluetooth: L2CAP socket layer initialized
[    3.137155] Bluetooth: SCO socket layer initialized
[    3.139875] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    3.139878] Bluetooth: BNEP filters: protocol multicast
[    3.139884] Bluetooth: BNEP socket layer initialized
[    3.155867] Bluetooth: RFCOMM TTY layer initialized
[    3.155877] Bluetooth: RFCOMM socket layer initialized
[    3.155881] Bluetooth: RFCOMM ver 1.11
[    3.574991] Bluetooth: can't load firmware, may not work correctly
[    5.583477] Bluetooth: hci0 command 0x1003 tx timeout

我不确定,但看起来好像固件没有加载:

T:  Bus=02 Lev=02 Prnt=02 Port=04 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=0a5c ProdID=21d7 Rev=01.12
S:  Manufacturer=Broadcom Corp
S:  Product=BCM43142A0
S:  SerialNumber=C01885BC70F0
C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
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)

查看底部第 4 行—— Driver=btusb。因此,我不确定复制固件是否有帮助。

更新2: 这正是我所做的:

$ mkdir /tmp/bt && cd /tmp/bt

$ wget http://download.windowsupdate.com/msdownload/update/driver/drvs/2013/07/20573731_e75f2c1244fb153ccc4c1cac0dfbbab030d18543.cab
--2015-07-28 19:00:45--  http://download.windowsupdate.com/msdownload/update/driver/drvs/2013/07/20573731_e75f2c1244fb153ccc4c1cac0dfbbab030d18543.cab
Resolving download.windowsupdate.com (download.windowsupdate.com)... 191.234.4.50
Connecting to download.windowsupdate.com (download.windowsupdate.com)|191.234.4.50|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1134497 (1.1M) [application/octet-stream]
Saving to: ‘20573731_e75f2c1244fb153ccc4c1cac0dfbbab030d18543.cab’

100%[=============================================================================================================>] 1,134,497   2.01MB/s   in 0.5s   

2015-07-28 19:00:46 (2.01 MB/s) - ‘20573731_e75f2c1244fb153ccc4c1cac0dfbbab030d18543.cab’ saved [1134497/1134497]

$ cabextract 20573731_e75f2c1244fb153ccc4c1cac0dfbbab030d18543.cab 
20573731_e75f2c1244fb153ccc4c1cac0dfbbab030d18543.cab: WARNING; possible 16136 extra bytes at end of file.
Extracting cabinet: 20573731_e75f2c1244fb153ccc4c1cac0dfbbab030d18543.cab
  extracting bcbtums-win8x86-brcm.cat
  extracting bcbtums-win8x86-brcm.inf
  extracting bcbtums.sys
  extracting BCM20702A1_001.002.014.0889.0903.hex
  extracting BCM20702A1_001.002.014.0889.0926.hex
  extracting BCM20702A1_001.002.014.1055.1056.hex
  extracting BCM20702A1_001.002.014.1055.1057.hex
  extracting BCM20702A1_001.002.014.1055.1058.hex
  extracting BCM20702A1_001.002.014.1055.1060.hex
  extracting BCM20702A1_001.002.014.1055.1061.hex
  extracting BCM20702A1_001.002.014.1055.1062.hex
  extracting BCM20702A1_001.002.014.1055.1063.hex
  extracting BCM20702A1_001.002.014.1055.1064.hex
  extracting BCM20702A1_001.002.014.1055.1065.hex
  extracting BCM20702A1_001.002.014.1055.1067.hex
  extracting BCM20702A1_001.002.014.1055.1068.hex
  extracting BCM20702A1_001.002.014.1055.1070.hex
  extracting BCM20702A1_001.002.014.1055.1071.hex
  extracting BCM20702A1_001.002.014.1055.1072.hex
  extracting BCM20702A1_001.002.014.1055.1073.hex
  extracting BCM20702A1_001.002.014.1055.1074.hex
  extracting BCM20702A1_001.002.014.1055.1076.hex
  extracting BCM20702A1_001.002.014.1055.1079.hex
  extracting BCM20702A1_001.002.014.1055.1080.hex
  extracting BCM20702A1_001.002.014.1055.1082.hex
  extracting BCM20702A1_001.002.014.1055.1143.hex
  extracting BCM20702A1_001.002.014.1055.1229.hex
  extracting BCM20702A1_001.002.014.1055.1239.hex
  extracting BCM20702A1_001.002.014.1159.1168.hex
  extracting BCM20702A1_001.002.014.1159.1171.hex
  extracting BCM20702A1_001.002.014.1159.1174.hex
  extracting BCM20702A1_001.002.014.1159.1176.hex
  extracting BCM20702A1_001.002.014.1159.1178.hex
  extracting BCM20702A1_001.002.014.1159.1183.hex
  extracting BCM20702A1_001.002.014.1159.1187.hex
  extracting BCM20702A1_001.002.014.1159.1190.hex
  extracting BCM20702A1_001.002.014.1159.1193.hex
  extracting BCM20702A1_001.002.014.1159.1201.hex
  extracting BCM20702A1_001.002.014.1159.1208.hex
  extracting BCM20702A1_001.002.014.1159.1212.hex
  extracting BCM20702A1_001.002.014.1159.1214.hex
  extracting BCM20702A1_001.002.014.1159.1216.hex
  extracting BCM20702A1_001.002.014.1159.1230.hex
  extracting BCM43142A0_001.001.011.0084.0099.hex
  extracting BCM43142A0_001.001.011.0084.0100.hex
  extracting BCM43142A0_001.001.011.0084.0102.hex
  extracting BCM43142A0_001.001.011.0122.0124.hex
  extracting BCM43142A0_001.001.011.0122.0126.hex
  extracting BCM43142A0_001.001.011.0122.0127.hex
  extracting BCM43142A0_001.001.011.0122.0128.hex
  extracting BCM43142A0_001.001.011.0122.0131.hex
  extracting BCM43142A0_001.001.011.0122.0133.hex
  extracting BCM43142A0_001.001.011.0122.0135.hex
  extracting BCM43142A0_001.001.011.0122.0137.hex
  extracting BCM43142A0_001.001.011.0122.0139.hex
  extracting BCM43142A0_001.001.011.0122.0146.hex
  extracting BCM43142A0_001.001.011.0122.0152.hex
  extracting BCM43142A0_001.001.011.0122.0156.hex
  extracting BcmBtRSupport.dll
  extracting btwampfl.sys
  extracting btwdi.dll
  extracting BtwRSupportService.exe

All done, no errors.


$ wget https://github.com/jessesung/hex2hcd/archive/master.zip
--2015-07-28 19:03:56--  https://github.com/jessesung/hex2hcd/archive/master.zip
Resolving github.com (github.com)... 192.30.252.130
Connecting to github.com (github.com)|192.30.252.130|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/jessesung/hex2hcd/zip/master [following]
--2015-07-28 19:03:57--  https://codeload.github.com/jessesung/hex2hcd/zip/master
Resolving codeload.github.com (codeload.github.com)... 192.30.252.146
Connecting to codeload.github.com (codeload.github.com)|192.30.252.146|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/zip]
Saving to: ‘master.zip’

    [ <=>                                                                                                          ] 8,902       --.-K/s   in 0.1s    

2015-07-28 19:03:58 (59.0 KB/s) - ‘master.zip’ saved [8902]

$ unzip master.zip 
Archive:  master.zip
1175dcef12aff35a6ce8d0422c7d811a9a2a8801
   creating: hex2hcd-master/
  inflating: hex2hcd-master/LICENSE  
  inflating: hex2hcd-master/Makefile  
  inflating: hex2hcd-master/hex2hcd.c 

$ lsusb | grep -i bluetooth
Bus 002 Device 003: ID 0a5c:21d7 Broadcom Corp. BCM43142 Bluetooth 4.0
geek@nebula:/tmp/bt$ grep 'VID_0A5C&PID_21D7' bcbtums-win8x86-brcm.inf 
%Dell1704.DeviceDesc%=RAMUSB21D7,           USB\VID_0A5C&PID_21D7       ; BRCM Generic 43142A0 RAMUSB

$ grep RAMUSB21D7 bcbtums-win8x86-brcm.inf -A 3 | grep -i hex
BCM43142A0_001.001.011.0122.0126.hex
HKR,,%RAMPatchFileName%,0x00000, "BCM43142A0_001.001.011.0122.0126.hex"

$ cd hex2hcd-master/

$ make
gcc -O2 -march=native    hex2hcd.c   -o hex2hcd

$ ./hex2hcd ../BCM43142A0_001.001.011.0122.0126.hex ../BCM43142A0-0a5c-21d7.hcd
15, :020000040021D9

bump addr to 0x00210000
281, :8700000001060069999942041FC15E00000014222200001422223B02570258025802590259025A025A025B025B025C025C025D025D025E025E025F025F02600260026102610262026202630263026402640265026502660266026702670268026802690269026A026A026B281F0AFD0400FFFFFFFF400600000000A40100020A008700210000000000000003

411, :C800870041250044656C6C20576972656C657373203137303420426C7565746F6F74682076342E302B485300980100035C01000172060003000708000193040020000000920600A300C80014648F0300020202B209000000008000000000006F210002331F05CF000000AA147F8C00AA00800A9200000000140000000000006C584E6C6A3600018012000000B0000000A0000000431008045310020180000000900000006310040273100402C1000000D000000022000000320000007C0400010A00020A05001C0A200001C463

411, :C8014F0008007800320000030000C30000C0000698F83100FFFFFFFFFF7F00009CF83100FFFFFFFF083B0000A0F83100FFFFFFFF06000000A4F83100FFFFFFFF5C340000A8F83100FFFFFFFF04000000ACF83100FFFFFFFF36300000B0F83100FFFFFFFF09000000B4F83100FFFFFFFFF5330000B8F83100FFFFFFFFC5C40000C0F83100FFFFFFFF00000000C4F83100FFFFFFFF35C90000ECF83100FFFFFFFF28C9000038F93100FFFFFFFF320000003CF93100FFFFFFFF2805000040F93100FFFFFFFF1705000044F931001D

411, :C8021700FFFFFFFF0C09000048F93100FFFFFFFF300500004CF93100FFFFFFFF0C08000050F93100FFFFFFFF160700005CF93100FFFFFFFF1509000060F93100FFFFFFFF0809000064F93100FFFFFFFF170A00006CF93100FFFFFFFF9C05000070F93100FFFFFFFFED01000030FC3100FFFFFFFF6A0400005CFC3100FFFFFFFF0200000070FC3100FFFFFFFF0B09000094FC3100FFFFFFFF5E000000C0FC3100FFFFFFFF02800000C8FC3100FFFFFFFF48850000CCFC3100FFFFFFFF37450000D0FC3100FFFFFFFF2DC900001A

... TRUNCATED

27, :0860D0000000000000000000C8

43, :1063000028000000C8E00E39F0000000020303007E

11, :00000001FF

$ sudo cp -v ../BCM43142A0-0a5c-21d7.hcd /lib/firmware/brcm
‘../BCM43142A0-0a5c-21d7.hcd’ -> ‘/lib/firmware/brcm/BCM43142A0-0a5c-21d7.hcd’

更新 3: 安装内核3.19后:

$ dmesg | grep -i bluetooth
[    2.985774] Bluetooth: Core ver 2.20
[    2.985802] Bluetooth: HCI device and connection manager initialized
[    2.985806] Bluetooth: HCI socket layer initialized
[    2.985809] Bluetooth: L2CAP socket layer initialized
[    2.985816] Bluetooth: SCO socket layer initialized
[    2.992686] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    2.992689] Bluetooth: BNEP filters: protocol multicast
[    2.992694] Bluetooth: BNEP socket layer initialized
[    2.995595] Bluetooth: RFCOMM TTY layer initialized
[    2.995602] Bluetooth: RFCOMM socket layer initialized
[    2.995607] Bluetooth: RFCOMM ver 1.11
[    3.521077] Bluetooth: hci0: BCM: patching hci_ver=06 hci_rev=007e lmp_ver=06 lmp_subver=210b
[    4.056118] Bluetooth: hci0: BCM: firmware hci_ver=06 hci_rev=007e lmp_ver=06 lmp_subver=210b

答案1

您需要先安装固件。可以使用这个答案

但看起来内核 3.13.0-59 有很多 bug,其中包括无法加载固件。

我建议将内核升级到 3.19。可以在终端中运行

sudo apt-get install linux-generic-lts-vivid

然后重新启动。

相关内容