蓝牙在Ubuntu中随机淘汰


13

问题摘要:使用笔记本电脑时,我的笔记本电脑的蓝牙会随机切出,然后显示“找不到蓝牙;插入加密狗以使用蓝牙”。

问:可能是硬件吗? 我很确定这不是硬件问题,因为在Windows(我双重引导ubuntu和Windows)中从未发生过。

问:蓝牙真的有效吗? 重新启动计算机通常可以恢复蓝牙,并且我可以连接并使用蓝牙鼠标,尽管此后通常会在很短的时间内将其关闭。

电脑资讯

我的电脑是HP Spectre x360 Convertible 15-bl1XX (Z4Z38UA#ABA),下面列出了完整的产品信息。

输出 sudo lshw | grep product

product: HP Spectre x360 Convertible 15-bl1XX (Z4Z38UA#ABA)
   product: 827F
         product: HP26D4S9S8MH-8
         product: HP26D4S9S8MH-8
      product: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
      product: Intel Corporation
         product: Intel Corporation
         product: Skylake Processor Thermal Subsystem
         product: Intel Corporation
         product: Sunrise Point-LP USB 3.0 xHCI Controller
         product: Sunrise Point-LP Thermal subsystem
         product: Sunrise Point-LP Serial IO I2C Controller #0
         product: Sunrise Point-LP CSME HECI #1
         product: Intel Corporation
            product: NVIDIA Corporation
         product: Sunrise Point-LP PCI Express Root Port #5
         product: Sunrise Point-LP PCI Express Root Port #7
            product: Wireless 8265 / 8275
         product: Sunrise Point-LP PCI Express Root Port #8
            product: RTS525A PCI Express Card Reader
         product: Sunrise Point-LP PCI Express Root Port #9
            product: NVMe SSD Controller SM961/PM961
         product: Intel Corporation
         product: Sunrise Point-LP PMC
         product: Intel Corporation
         product: Sunrise Point-LP SMBus
   product: KB06079XL

输出 lscpu

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              8
On-line CPU(s) list: 0-7
Thread(s) per core:  2
Core(s) per socket:  4
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               142
Model name:          Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
Stepping:            10
CPU MHz:             800.052
CPU max MHz:         4000.0000
CPU min MHz:         400.0000
BogoMIPS:            3984.00
Virtualization:      VT-x
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            8192K
NUMA node0 CPU(s):   0-7
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp

输出 lspci -knn | grep Net -A3; lsusb

3b:00.0 Network controller [0280]: Intel Corporation Wireless 8265 / 8275 
[8086:24fd] (rev 78)
    Subsystem: Intel Corporation Wireless 8265 / 8275 [8086:1010]
    Kernel driver in use: iwlwifi
    Kernel modules: iwlwifi
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp. 
Bus 001 Device 002: ID 064e:3401 Suyin Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

我当前正在运行Ubuntu 18.04。


编辑您的问题并添加lspci -knn | grep Net -A3; lsusbterminal命令的输出。
飞行员

尝试通过禁用btcoexsudo tee /etc/modprobe.d/iwlwifi-opt.conf <<< "options iwlwifi bt_coex_active=N",然后重新启动。
飞行员

@ Pilot6:设置bt_coex_activeiwlwifi为false使症状无差异; 蓝牙控制器仍会定期关闭。
Deltik

Answers:


10

更新您的内核

linux-image-generic版本4.15.0-46.49和较新版本包含此修复程序。 变更日志摘录:

  * Bionic update: upstream stable patchset 2019-01-17 (LP: #1812229)
    - xhci: Fix perceived dead host due to runtime suspend race with event handler

linux-image-generic修复程序可用于以下Ubuntu版本:

  • 18.10(宇宙)– 2018年10月28日–版本4.17.0-7.8和较新
  • 18.04(仿生)– 2019年2月15日–版本4.15.0-46.49和较新
  • 16.04(xenial)– 2018年9月27日–版本4.4.0-136.162和较新

要查看linux-image-generic您拥有的版本以及可用的版本,请运行以下命令:

sudo apt update
apt-cache policy linux-image-generic

如果您的候选人具有可以更新的修补程序,请像这样运行升级:

sudo apt full-upgrade

安装linux-oem内核

另外,您可以尝试切换到linux-oem内核,该内核比linux-image-generic分支机构早获得了几个月的修复:

sudo apt install -y linux-oem

2018年7月20日,linux-oem版本4.15.0-1012.15已发布到bionic-securityand bionic-updatesrepo。它包括对4.15.0-1010.13版本的以下更改:

  * xhci hangs; reset results in NULL pointer dereference (LP: #1763594)
    - xhci: Create new structures to store xhci port information
    - xhci: set hcd pointers for xhci usb2 and usb3 roothub structures
    - xhci: Add helper to get xhci roothub from hcd
    - xhci: xhci-hub: use new port structures to get port address instead of port
      array
    - xhci: xhci-hub: use new port structures for cas and wake mask functions.
    - xhci: xhci-ring: use port structures for port event handler
    - xhci: rename faked_port_index to hcd_portnum
    - xhci: change xhci_set_link_state() to work with port structures
    - xhci: change xhci_test_and_clear_bit() to use new port structure
    - xhci: use port structures instead of port arrays in xhci.c functions
    - xhci: xhci-hub: use port structure members instead of xhci_get_ports()
    - xhci-mtk: use xhci hub structures to get number of ports in roothubs
    - xhci: xhci-mem: remove port_arrays and the code initializing them
    - xhci: debugfs: add usb ports to xhci debugfs
    - xhci: debugfs: add debugfs interface to enable compliance mode for a port
    - xhci: Fix perceived dead host due to runtime suspend race with event handler

该列表中的最后一个补丁应解决蓝牙随机中断的问题(以及相机和指纹扫描仪,如果有的话)。

在撰写本文时,尚未将xHCI错误修正应用于主内核,因此linux-oem,唯一具有此修正的打包Ubuntu内核发行版也是如此。

有关此错误的跟踪信息,请参阅此答案底部的“资源”部分。

黑客:无需重新启动即可还原蓝牙

如果您希望等待将修补程序反向移植到通用Ubuntu内核,则只要蓝牙中断,就可以运行此hack。

运行以下命令(两行)后,笔记本电脑的相机,指纹读取器和蓝牙控制器将快速重新连接:

echo 1 | sudo tee /sys/bus/pci/devices/0000:00:14.0/remove &&
echo 1 | sudo tee /sys/bus/pci/rescan

注意:0000:00:14.0在运行第一个命令之前,请确保实际上是xHCI控制器。您可以使用以下命令找到插槽:lspci -k | grep -B2 xhci

说明

这是创可贴,不能解决根本原因。有关错误跟踪和外部讨论,请参见此答案底部的“资源”部分。

错误的运行方式如下:

问题开始

xhci_hcd驱动程序中的错误使它确信xHCI主机控制器已停止响应。结果,它断开了连接到控制器的所有设备的连接:

Jul 25 09:07:31 host kernel: [121258.765591] xhci_hcd 0000:00:14.0: xHC is not running.
Jul 25 09:07:31 host kernel: [121258.772300] xhci_hcd 0000:00:14.0: xHCI host controller not responding, assume dead
Jul 25 09:07:31 host kernel: [121258.772319] xhci_hcd 0000:00:14.0: HC died; cleaning up
Jul 25 09:07:31 host kernel: [121258.806828] usb 1-7: USB disconnect, device number 2
Jul 25 09:07:31 host kernel: [121258.807915] usb 1-8: USB disconnect, device number 3
Jul 25 09:07:31 host kernel: [121258.808717] usb 1-12: USB disconnect, device number 5
Jul 25 09:07:31 host upowerd[6035]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.1
Jul 25 09:07:31 host upowerd[6035]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-8
Jul 25 09:07:31 host upowerd[6035]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0
Jul 25 09:07:31 host upowerd[6035]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-7
Jul 25 09:07:31 host upowerd[6035]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-12/1-12:1.0/bluetooth/hci0/hci0:256/0005:0A5C:4503.001E
Jul 25 09:07:31 host systemd[1]: bluetooth.target: Unit not needed anymore. Stopping.
Jul 25 09:07:31 host systemd[1]: Stopped target Bluetooth.
Jul 25 09:07:31 host upowerd[6035]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-12/1-12:1.1
Jul 25 09:07:31 host bluetoothd[12402]: Endpoint unregistered: sender=:1.61 path=/MediaEndpoint/A2DPSource
Jul 25 09:07:31 host bluetoothd[12402]: Endpoint unregistered: sender=:1.61 path=/MediaEndpoint/A2DPSink
Jul 25 09:07:31 host upowerd[6035]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-12/1-12:1.0
Jul 25 09:07:31 host upowerd[6035]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-12
Jul 25 09:07:31 host NetworkManager[4095]: <info>  [1532527651.6587] bluez5: NAP: removed interface 28:16:AD:2B:5C:40

(来自/var/log/syslog

卸下xHCI控制器

运行中echo 1 | sudo tee /sys/bus/pci/devices/0000:00:14.0/remove热删除xHCI控制器PCI设备:

Jul 25 09:09:57 host kernel: [121405.007193] xhci_hcd 0000:00:14.0: remove, state 4
Jul 25 09:09:57 host kernel: [121405.007208] usb usb2: USB disconnect, device number 1
Jul 25 09:09:57 host kernel: [121405.008109] xhci_hcd 0000:00:14.0: USB bus 2 deregistered
Jul 25 09:09:57 host kernel: [121405.008215] xhci_hcd 0000:00:14.0: remove, state 4
Jul 25 09:09:57 host kernel: [121405.008226] usb usb1: USB disconnect, device number 1
Jul 25 09:09:57 host kernel: [121405.010736] xhci_hcd 0000:00:14.0: USB bus 1 deregistered
Jul 25 09:09:57 host upowerd[6035]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb2/2-0:1.0
Jul 25 09:09:57 host upowerd[6035]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-0:1.0
Jul 25 09:09:57 host upowerd[6035]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb2
Jul 25 09:09:57 host upowerd[6035]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb1

(来自/var/log/syslog

还原xHCI控制器

运行echo 1 | sudo tee /sys/bus/pci/rescan重新发现我们刚刚卸下的PCI设备。该xhci_hcd司机看到了重新发现的PCI设备作为一个新的USB总线并设置总线及其设备:

Jul 25 09:10:11 host kernel: [121418.409659] pci 0000:00:14.0: [8086:a12f] type 00 class 0x0c0330
Jul 25 09:10:11 host kernel: [121418.409686] pci 0000:00:14.0: reg 0x10: [mem 0x3e820000-0x3e82ffff 64bit]
Jul 25 09:10:11 host kernel: [121418.409773] pci 0000:00:14.0: PME# supported from D3hot D3cold
Jul 25 09:10:11 host kernel: [121418.428182] pci 0000:00:14.0: BAR 0: assigned [mem 0x3e820000-0x3e82ffff 64bit]
Jul 25 09:10:11 host kernel: [121418.428928] xhci_hcd 0000:00:14.0: xHCI Host Controller
Jul 25 09:10:11 host kernel: [121418.428936] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
Jul 25 09:10:11 host kernel: [121418.430031] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x00109810
Jul 25 09:10:11 host kernel: [121418.430037] xhci_hcd 0000:00:14.0: cache line size of 128 is not supported
Jul 25 09:10:11 host kernel: [121418.430401] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
Jul 25 09:10:11 host kernel: [121418.430404] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
Jul 25 09:10:11 host kernel: [121418.430407] usb usb1: Product: xHCI Host Controller
Jul 25 09:10:11 host kernel: [121418.430410] usb usb1: Manufacturer: Linux 4.15.0-29-generic xhci-hcd
Jul 25 09:10:11 host kernel: [121418.430412] usb usb1: SerialNumber: 0000:00:14.0
Jul 25 09:10:11 host kernel: [121418.430671] hub 1-0:1.0: USB hub found
Jul 25 09:10:11 host kernel: [121418.430725] hub 1-0:1.0: 16 ports detected
Jul 25 09:10:11 host kernel: [121418.432783] xhci_hcd 0000:00:14.0: xHCI Host Controller
Jul 25 09:10:11 host kernel: [121418.432792] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
Jul 25 09:10:11 host kernel: [121418.433063] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
Jul 25 09:10:11 host kernel: [121418.433067] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
Jul 25 09:10:11 host kernel: [121418.433070] usb usb2: Product: xHCI Host Controller
Jul 25 09:10:11 host kernel: [121418.433076] usb usb2: Manufacturer: Linux 4.15.0-29-generic xhci-hcd
Jul 25 09:10:11 host kernel: [121418.433078] usb usb2: SerialNumber: 0000:00:14.0
Jul 25 09:10:11 host kernel: [121418.436200] hub 2-0:1.0: USB hub found
Jul 25 09:10:11 host kernel: [121418.436223] hub 2-0:1.0: 10 ports detected
Jul 25 09:10:11 host kernel: [121418.771883] usb 1-7: new high-speed USB device number 2 using xhci_hcd
Jul 25 09:10:11 host kernel: [121418.949715] usb 1-7: New USB device found, idVendor=04ca, idProduct=7053
Jul 25 09:10:11 host kernel: [121418.949721] usb 1-7: New USB device strings: Mfr=3, Product=1, SerialNumber=2
Jul 25 09:10:11 host kernel: [121418.949725] usb 1-7: Product: HP HD Camera
Jul 25 09:10:11 host kernel: [121418.949729] usb 1-7: Manufacturer: DETNQ019I53FY0
Jul 25 09:10:11 host kernel: [121418.949732] usb 1-7: SerialNumber: 200901010001
Jul 25 09:10:11 host kernel: [121418.958393] uvcvideo: Found UVC 1.00 device HP HD Camera (04ca:7053)
Jul 25 09:10:11 host kernel: [121418.961311] uvcvideo 1-7:1.0: Entity type for entity Extension 4 was not initialized!
Jul 25 09:10:11 host kernel: [121418.961319] uvcvideo 1-7:1.0: Entity type for entity Processing 2 was not initialized!
Jul 25 09:10:11 host kernel: [121418.961324] uvcvideo 1-7:1.0: Entity type for entity Camera 1 was not initialized!
Jul 25 09:10:11 host kernel: [121418.962085] input: HP HD Camera: HP HD Camera as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/input/input59
Jul 25 09:10:11 host upowerd[6035]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb2/2-0:1.0
Jul 25 09:10:11 host upowerd[6035]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb2
Jul 25 09:10:11 host upowerd[6035]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-0:1.0
Jul 25 09:10:11 host kernel: [121419.091967] usb 1-8: new full-speed USB device number 3 using xhci_hcd
Jul 25 09:10:11 host kernel: [121419.241717] usb 1-8: New USB device found, idVendor=138a, idProduct=003f
Jul 25 09:10:11 host kernel: [121419.241723] usb 1-8: New USB device strings: Mfr=0, Product=0, SerialNumber=1
Jul 25 09:10:11 host kernel: [121419.241727] usb 1-8: SerialNumber: 00b080f6fa9d
Jul 25 09:10:12 host kernel: [121419.371938] usb 1-12: new full-speed USB device number 4 using xhci_hcd
Jul 25 09:10:12 host kernel: [121419.529258] usb 1-12: New USB device found, idVendor=8087, idProduct=0a2b
Jul 25 09:10:12 host kernel: [121419.529263] usb 1-12: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Jul 25 09:10:12 host upowerd[6035]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1
Jul 25 09:10:12 host kernel: [121419.537804] Bluetooth: hci0: Firmware revision 0.0 build 176 week 45 2017
Jul 25 09:10:12 host mtp-probe: checking bus 1, device 2: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-7"
Jul 25 09:10:12 host mtp-probe: checking bus 1, device 3: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8"
Jul 25 09:10:12 host mtp-probe: bus: 1, device: 2 was not an MTP device
Jul 25 09:10:12 host mtp-probe: bus: 1, device: 3 was not an MTP device
Jul 25 09:10:12 host kernel: [121419.589011] Bluetooth: hci0: Hardware error 0x0c
Jul 25 09:10:12 host NetworkManager[4095]: <info>  [1532527812.3141] bluez5: NAP: added interface 28:16:AD:2B:5C:40
Jul 25 09:10:12 host kernel: [121419.598737] Bluetooth: hci0: last event is not cmd complete (0x0f)
Jul 25 09:10:12 host kernel: [121419.598745] Bluetooth: hci0: Retrieving Intel exception info failed (-16)
Jul 25 09:10:12 host bluetoothd[12402]: Endpoint registered: sender=:1.61 path=/MediaEndpoint/A2DPSource
Jul 25 09:10:12 host bluetoothd[12402]: Endpoint registered: sender=:1.61 path=/MediaEndpoint/A2DPSink
Jul 25 09:10:12 host systemd[1]: Reached target Bluetooth.
Jul 25 09:10:12 host upowerd[6035]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-8
Jul 25 09:10:12 host upowerd[6035]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.1
Jul 25 09:10:12 host upowerd[6035]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-12/1-12:1.1
Jul 25 09:10:12 host upowerd[6035]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-12/1-12:1.0
Jul 25 09:10:12 host upowerd[6035]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-12
Jul 25 09:10:12 host upowerd[6035]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0
Jul 25 09:10:12 host upowerd[6035]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-7

(来自/var/log/syslog

结果,xhci_hcd驱动程序重新发现了随附的相机,指纹读取器和蓝牙控制器。


资源资源


HP AU00TX型号,内核4.15.0-1073-oem
Varun Chhangani,

@VarunChhangani:您可能有不同的问题,因为此错误已修复一年以上。如果确定症状匹配,则可能实际上是硬件缺陷。
Deltik

我的蓝牙经常整夜停止工作。同样,有趣的是,当尝试从蓝牙开关从打开切换为关闭时再次获取与hci0相关的详细信息时(为了“重新启动”蓝牙,是的,我知道实际上并没有重新启动它);在rfkill list | grep hci | cut -d: -f1继续增加的数量。尝试启动有点陷入循环...硬件仍在Windows上运行。而且,我想它是否可以启动,并且在重新启动后又重新启动,我不会说硬件不见了
Varun Chhangani

0

提示:如果您的键盘位于该控制器中,请使用&&,以避免在键入第二个命令之前被暂停...

echo 1 | sudo tee /sys/bus/pci/devices/0000:00:14.0/remove && echo 1 | sudo tee /sys/bus/pci/rescan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.