我的笔记本电脑无法通过 Ubuntu 找到蓝牙设备。在 Windows 7 中它可以正常工作。我使用的是 Ubuntu 12.04 和 11.10
lsusb 的输出:
总线 001 设备 001:ID 1d6b:0002 Linux Foundation 2.0 根集线器 总线 002 设备 001:ID 1d6b:0002 Linux Foundation 2.0 根集线器 总线 003 设备 001:ID 1d6b:0002 Linux Foundation 2.0 根集线器 总线 004 设备 001:ID 1d6b:0003 Linux Foundation 3.0 根集线器 总线 001 设备 002:ID 8087:0024 Intel 公司集成速率匹配集线器 总线 002 设备 002:ID 8087:0024 Intel 公司集成速率匹配集线器 总线 001 设备 003:ID 1bcf:288a 凌阳创新科技股份有限公司 总线 001 设备 004:ID 0489:e03c 富士康/鸿海 总线 002 设备 003:ID 046d:c52b Logitech, Inc. Unifying 接收器
hciconfig 的输出:
hci0:类型:BR/EDR 总线:USB BD 地址:94:39:E5:4E:FA:3A ACL MTU:1022:8 SCO MTU:183:5 启动运行 PSCAN ISCAN RX字节:1559 acl:0 sco:0 事件:104 错误:0 TX 字节:926 acl:0 sco:0 命令:81 错误:0
lsmod 的输出:
使用的模块大小 bbswitch 13355 0 rfcomm 47604 12 孟加拉国经济伙伴关系 18281 2 parport_pc 32866 0 ppdev 17113 0 binfmt_misc 17540 1 snd_hda_codec_hdmi 32474 1 snd_hda_codec_conexant 62128 1 snd_hda_intel 33773 3 snd_hda_codec 127706 3 snd_hda_codec_hdmi,snd_hda_codec_conexant,snd_hda_intel joydev 17693 0 snd_hwdep 13668 1 snd_hda_codec snd_pcm 97188 3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec snd_seq_midi 13324 0 uvcvideo 72627 0 videodev 98259 1 uvcvideo hid_logitech_dj 18593 0 snd_rawmidi 30748 1 snd_seq_midi usbhid 47199 1 hid_logitech_dj hid 99559 2 hid_logitech_dj,usbhid arc4 12529 2 v4l2_compat_ioctl32 17128 1 视频设备 snd_seq_midi_event 14899 1 snd_seq_midi ath9k 132390 0 mac80211 506816 1 ath9k ath9k_common 14053 1 ath9k snd_seq 61896 2 snd_seq_midi,snd_seq_midi_event ath9k_hw 411112 2 ath9k,ath9k_common snd_timer 29990 2 snd_pcm,snd_seq snd_seq_device 14540 3 snd_seq_midi,snd_rawmidi,snd_seq i915 468651 3 psmouse 87603 0 snd 78855 16 snd_hda_codec_hdmi、snd_hda_codec_conexant、snd_hda_intel、snd_hda_codec、snd_hwdep、snd_pcm、snd_rawmidi、snd_seq、snd_timer、snd_seq_device ath 24067 3 ath9k,ath9k_common,ath9k_hw cfg80211 205544 3 ath9k,mac80211,ath drm_kms_helper 46978 1 i915 drm 242038 4 i915,drm_kms_helper 18288 2 mac_hid 13253 0 蓝牙 180104 23 rfcomm,bnep,btusb soundcore 15091 1 秒 acer_wmi 28418 0 mxm_wmi 12979 0 snd_page_alloc 18529 2 snd_hda_intel,snd_pcm i2c_algo_bit 13423 1 i915 稀疏键映射 13890 1 acer_wmi 严重_原始 13211 0 rts_pstor 445196 0 梅 41616 0 wmi 19256 2 acer_wmi,mxm_wmi 视频 19596 1 i915 17799 0 parport 46562 3 parport_pc,ppdev,lp atl1c 41717 0
uname -a 的输出:
Linux 笔记本电脑 3.2.0-23-通用 #36-Ubuntu SMP 2012 年 4 月 10 日星期二 20:39:51 UTC x86_64 x86_64 x86_64 GNU/Linux
dmesg | grep Bluetooth 的输出:
[7.642818]蓝牙:核心版本2.16 [7.642839]蓝牙:HCI设备和连接管理器已初始化 [7.642841]蓝牙:HCI套接字层已初始化 [7.642842]蓝牙:L2CAP套接字层已初始化 [7.642847]蓝牙:SCO套接字层已初始化 [7.700557]蓝牙:通用蓝牙 USB 驱动程序版本 0.6 [15.498797]蓝牙:BNEP(以太网仿真)版本1.3 [15.498800]蓝牙:BNEP 过滤器:协议多播 [15.524883]蓝牙:RFCOMM TTY 层已初始化 [15.524888]蓝牙:RFCOMM套接字层已初始化 [15.524890]蓝牙:RFCOMM 版本 1.11
答案1
支持Atheros AR5BBU22位于内核中,3.6.15
但此外,系统上还必须安装专有固件才能使蓝牙正常工作。它在软件包中可用linux-firmware
(在 ubuntu 上;firmware-atheros
在 debian 上,非免费)。
答案2
这个需要补丁才能正确加载固件:
--- a/drivers/bluetooth/ath3k.c 2012-04-27 19:17:35.000000000 +0200
+++ b/drivers/bluetooth/ath3k.c 2012-04-30 01:29:47.081838667 +0200
@@ -79,6 +79,9 @@ static struct usb_device_id ath3k_table[
/* Atheros AR5BBU12 with sflash firmware */
{ USB_DEVICE(0x0489, 0xE02C) },
+ /* Atheros AR5BBU22 with sflash firmware */
+ { USB_DEVICE(0x0489, 0xE03C) },
+
{ } /* Terminating entry */
};
@@ -95,6 +98,9 @@ static struct usb_device_id ath3k_blist_
{ USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
+ /* Atheros AR5BBU22 with sflash firmware */
+ { USB_DEVICE(0x0489, 0xE03C), .driver_info = BTUSB_ATH3012 },
+
{ } /* Terminating entry */
};
--- a/drivers/bluetooth/btusb.c 2012-04-27 19:17:35.000000000 +0200
+++ b/drivers/bluetooth/btusb.c 2012-04-30 01:31:49.302182281 +0200
@@ -135,6 +135,9 @@ static struct usb_device_id blacklist_ta
/* Atheros AR5BBU12 with sflash firmware */
{ USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
+ /* Atheros AR5BBU22 with sflash firmware */
+ { USB_DEVICE(0x0489, 0xe03c), .driver_info = BTUSB_ATH3012 },
+
/* Broadcom BCM2035 */
{ USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU },
{ USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_WRONG_SCO_MTU },