当我用rfkill取消阻止时,是什么导致我的英特尔7260蓝牙设备断开连接?

解决方案 :问题似乎是蓝牙模块在Linux中与xHCI不兼容。 有一个标有“XHCI PRE-BOOT MODE”的BIOS设置,必须设置为“Disabled”。 如果不是,那么Linux会将蓝牙模块视为连接到xHCI总线而不是EHCI总线,从而导致通信错误。 但是,这个固定将在您的系统上禁用USB 3.0 。 我目前没有更好的解决方案,但至少这有效。

我有一台新的华硕UX301LA笔记本电脑,我正在运行Ubuntu Gnome 13.10(Saucy)。 内核似乎知道启动时笔记本电脑的蓝牙设备,但每当我使用rfkill解锁蓝牙时它就会消失。 例如:

$ sudo rfkill block bluetooth $ dmesg | tail -5 [ 2024.876537] usb 2-4: new full-speed USB device number 8 using xhci_hcd [ 2024.894043] usb 2-4: New USB device found, idVendor=8087, idProduct=07dc [ 2024.894053] usb 2-4: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 2024.908190] Bluetooth: hci0: read Intel version: 370710018002030d00 [ 2024.908271] Bluetooth: hci0: Intel Bluetooth firmware file: intel/ibt-hw-37.7.10-fw-1.80.2.3.d.bseq [ 2025.057051] Bluetooth: hci0: Intel Bluetooth firmware patch completed and activated $ sudo rfkill list 0: phy0: Wireless LAN Soft blocked: no Hard blocked: no 1: asus-wlan: Wireless LAN Soft blocked: no Hard blocked: no 2: asus-bluetooth: Bluetooth Soft blocked: yes Hard blocked: no 3: hci0: Bluetooth Soft blocked: yes Hard blocked: no $ sudo hciconfig -a hci0: Type: BR/EDR Bus: USB BD Address: XX:XX:XX:XX:XX:XX ACL MTU: 1021:5 SCO MTU: 96:5 DOWN RX bytes:568 acl:0 sco:0 events:29 errors:0 TX bytes:390 acl:0 sco:0 commands:29 errors:0 Features: 0xff 0xfe 0x0f 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 $ sudo rfkill unblock bluetooth $ dmesg | tail -1 [ 2391.749122] usb 2-4: USB disconnect, device number 8 $ sudo rfkill list 0: phy0: Wireless LAN Soft blocked: no Hard blocked: no 1: asus-wlan: Wireless LAN Soft blocked: no Hard blocked: no 2: asus-bluetooth: Bluetooth Soft blocked: no Hard blocked: no $ sudo hciconfig -a [no output] 

编辑 :蓝牙设备显示为Intel 7260无线USB设备,ID 8087:07dc。 我发现可能相关的唯一信息是已经发布修复程序的错误,在启动板上提到: 支持Intel 7260蓝牙[8087:07dc]

编辑 :我将固件更新到英特尔网站的新22.1.7.0版本(Saucy附带22.0.7.0),同样的问题也出现了。

编辑 :在日志中进一步挖掘表明,当我运行unblock命令时,蓝牙USB设备完全断开:

 $ lsusb -d 8087:07dc Bus 001 Device 007: ID 8087:07dc Intel Corp. $ rfkill unblock bluetooth $ lsusb -d 8087:07dc [no output] $ dmesg | tail -1 [ 438.284647] usb 1-4: USB disconnect, device number 7 

编辑 :从3.13内核更新iwlwifi驱动程序到(较新的)backport没有帮助。 当前版本的驱动程序:

 $ modinfo iwlwifi filename: /lib/modules/3.11.0-15-generic/updates/drivers/net/wireless/iwlwifi/iwlwifi.ko version: backported from Linux (v3.13-rc8-0-g7e22e91) using backports v3.13-rc8-1-0-gae71bd3 license: GPL author: Copyright(c) 2003-2013 Intel Corporation  version: in-tree:d description: Intel(R) Wireless WiFi driver for Linux firmware: iwlwifi-100-5.ucode firmware: iwlwifi-1000-5.ucode firmware: iwlwifi-135-6.ucode firmware: iwlwifi-105-6.ucode firmware: iwlwifi-2030-6.ucode firmware: iwlwifi-2000-6.ucode firmware: iwlwifi-5150-2.ucode firmware: iwlwifi-5000-5.ucode firmware: iwlwifi-6000g2b-6.ucode firmware: iwlwifi-6000g2a-5.ucode firmware: iwlwifi-6050-5.ucode firmware: iwlwifi-6000-4.ucode firmware: iwlwifi-3160-7.ucode firmware: iwlwifi-7260-7.ucode srcversion: F6C7F0E202757B474065F3B alias: pci:v00008086d0000095Asv*sd00005490bc*sc*i* [... trimmed several "alias" lines ...] alias: pci:v00008086d00004232sv*sd00001201bc*sc*i* depends: compat,cfg80211 vermagic: 3.11.0-15-generic SMP mod_unload modversions parm: debug:debug output mask (uint) parm: swcrypto:using crypto in software (default 0 [hardware]) (int) parm: 11n_disable:disable 11n functionality, bitmap: 1: full, 2: agg TX, 4: agg RX (uint) parm: amsdu_size_8K:enable 8K amsdu size (default 0) (int) parm: fw_restart:restart firmware in case of error (default true) (bool) parm: antenna_coupling:specify antenna coupling in dB (defualt: 0 dB) (int) parm: wd_disable:Disable stuck queue watchdog timer 0=system default, 1=disable, 2=enable (default: 0) (int) parm: nvm_file:NVM file name (charp) parm: bt_coex_active:enable wifi/bt co-exist (default: enable) (bool) parm: led_mode:0=system default, 1=On(RF On)/Off(RF Off), 2=blinking, 3=Off (default: 0) (int) parm: power_save:enable WiFi power management (default: disable) (bool) parm: power_level:default power save level (range from 1 - 5, default: 1) (int) 

编辑 :正如Bernhard在回复中建议的那样,我试图使用命令echo "on" > /sys/class/bluetooth/hci0/device/../power/control强制使用适配器。 虽然通过rfkill阻止蓝牙,但这似乎没有效果,并且hciconfig hci0 up响应该设备仍然被阻止。 当使用rfkill解锁蓝牙时, /sys/class/bluetooth/hci0不存在,因此尝试手动打开它失败。 我也试图将它添加到/etc/rc.local中,与在控制台上以root身份运行命令相比,没有明显的区别。

编辑 :我通过电子邮件发送了英特尔wifi开发人员,他们发布了这个非常有用的回复:

 Hello, I am afraid you are asking the wrong people. We are WiFi people and not Bluetooth. Thanks, (name removed) 

我将尝试自己破解蓝牙驱动程序,看看我是否可以从中调用更多的调试信息。

有没有人有任何建议可以帮助我? 以前有人经历过这个吗? 是否有任何拥有华硕UX301LA的Ubuntu用户可能有任何提示?

让我知道其他信息可能有用,我会发布它。 我只是不想用无用的数据重载第一篇文章。

我也有UX301LA,我现在正在运行14.10。 我遇到了同样的问题,但发现了一种不理想的解决方法,但现在可以使用。

基本上,似乎asus-nb-wmi模块与该硬件不完全兼容。 虽然,实际问题似乎存在得更深,阻止该模块阻止创建对应于WiFi和蓝牙的新rfkill条目,然后启动后的默认状态是WiFi和蓝牙工作(即使使用USB 3.0)。 F2开关仍然在ON时使蓝牙消失,但在OFF时(开机后默认),它不会禁用WiFi,而蓝牙设备出现。 缺点是当模块被阻塞时Fx键停止工作,因为该模块也支持它们。 要实现这种效果,只需将blacklist asus-nb-wmi/etc/modprobe.d/blacklist.conf

更好的解决方案是向上游报告错误或者现在更改模块的源以禁用处理wifi /蓝牙,同时仍处理其他Fx密钥。

我的Lenovo T440s也出现同样的问题。 我目前还没有解决方案,但看起来我们受到内核错误的影响(可以在这里找到它的讨论)。

添加

 echo "on" > /sys/class/bluetooth/hci0/device/../power/control 

到/etc/rc.local似乎有点帮助,但与我的蓝牙鼠标的连接仍然不稳定。

看看:/usr/share/gnome-bluetooth/pin-code-database.xml

您的鼠标是否存在(使用OUI搜索,这是“OEM唯一标识符”,这是鼠标MAC地址的前3个八位字节。例如,如果您的鼠标MAC地址是AA:BB:CC:DD:EE :FF,那么OUI是“AA:BB:CC”)?

如果它已经存在,请确保它看起来像:

(注意尾随冒号:“AA:BB:CC * *” – 不要遗漏)。

如果它尚不存在,请添加它。

此外,不确定这是否相关,但英特尔7260 WiFi(频繁偶发断开连接)存在众所周知的问题。 要解决WiFi问题,我发现唯一有效的方法是禁用802.11n:

  1. 打开终端。
  2. sudo vi /etc/modprobe.d/wifi-disable11n.conf
  3. 添加以下行:options iwlwifi 11n_disable = 1
  4. 保存并重新启动。

我只是在黑暗中选择一个标签,但它值得一试(恕我直言)。

我通过从http://ftp.de.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-iwlwifi_0.40_all.deb安装新固件解决了我的问题。

使用acer s7 392,intel wireless 7260 rev6b,kubuntu 13.10,内核3.11.0-15-通用