WiFi 干扰蓝牙音频

WiFi 干扰蓝牙音频

在联想 Y530 上运行 Kubuntu 18.10。

单独使用时,WiFi 连接和蓝牙扬声器工作正常。如果同时运行两者,则会产生严重干扰。这首先导致 WiFi 连接速度下降到 10% 以下(在某些情况下,上传完全失败),并且蓝牙信号严重阻塞/跳跃。

我尝试设置options iwlwifi bt_coex_active=N/etc/modprobe.d/iwlwifi.conf这完全禁用了我的 BT(编辑:见下文)。然后我将其设置为bt_coex_active=0并删除了 Blueman(不确定删除它是否重要),这解决了 WiFi 问题,但如果使用 WiFi,BT 信号仍然不起作用(仍然跳跃严重)。

编辑:我现在尝试N再次将其设置为,它与0。不确定为什么之前不起作用。

在 Windows 上,一切都运行正常。此外,如果我从手机连接到扬声器,一切都会正常 - 这意味着可能不是信号本身被干扰(遗憾的是,我的路由器不支持 5GHz,所以我无法彻底检查这一点)。我尝试更改 WiFi 频道,但没有效果。

这可能是驱动程序问题,但使用 WiFi USB 适配器时也会出现同样的问题。可能是因为,虽然此适配器在连接时显示为“正在使用”,但实际上并未使用,WiFi 仍在通过内置卡 - 我不知道如何检查这一点。

这是这些问题通常要求的输出,如果需要更多,请询问。谢谢!

$ uname -a
Linux mylenovo 4.18.0-13-generic #14-Ubuntu SMP Wed Dec 5 09:04:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

$ sudo lshw -class network
  *-network                 
       description: Wireless interface
       product: QCA9377 802.11ac Wireless Network Adapter
       vendor: Qualcomm Atheros
       physical id: 0
       bus info: pci@0000:07:00.0
       logical name: wlp7s0
       version: 31
       serial: 00:f4:8d:ed:2b:99
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=ath10k_pci driverversion=4.18.0-13-generic firmware=WLAN.TF.1.0-00002-QCATFSWPZ-5 ip=192.168.5.19 latency=0 link=yes multicast=yes wireless=IEEE 802.11
       resources: irq:145 memory:a4200000-a43fffff
  *-network
       description: Ethernet interface
       product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:08:00.0
       logical name: enp8s0
       version: 15
       serial: e8:6a:64:49:a5:e4
       size: 10Mbit/s
       capacity: 1Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=half firmware=rtl8168h-2_0.0.2 02/26/15 latency=0 link=no multicast=yes port=MII speed=10Mbit/s
       resources: irq:17 ioport:3000(size=256) memory:a4504000-a4504fff memory:a4500000-a4503fff


$ lspci
00:00.0 Host bridge: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers (rev 07)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16) (rev 07)
00:02.0 VGA compatible controller: Intel Corporation Device 3e9b
00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 07)
00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model
00:12.0 Signal processing controller: Intel Corporation Cannon Lake PCH Thermal Controller (rev 10)
00:14.0 USB controller: Intel Corporation Cannon Lake PCH USB 3.1 xHCI Host Controller (rev 10)
00:14.2 RAM memory: Intel Corporation Cannon Lake PCH Shared SRAM (rev 10)
00:15.0 Serial bus controller [0c80]: Intel Corporation Device a368 (rev 10)
00:15.1 Serial bus controller [0c80]: Intel Corporation Device a369 (rev 10)
00:16.0 Communication controller: Intel Corporation Cannon Lake PCH HECI Controller (rev 10)
00:17.0 SATA controller: Intel Corporation Device a353 (rev 10)
00:1d.0 PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port 9 (rev f0)
00:1d.4 PCI bridge: Intel Corporation Device a334 (rev f0)
00:1d.5 PCI bridge: Intel Corporation Device a335 (rev f0)
00:1e.0 Communication controller: Intel Corporation Device a328 (rev 10)
00:1f.0 ISA bridge: Intel Corporation Device a30d (rev 10)
00:1f.3 Audio device: Intel Corporation Cannon Lake PCH cAVS (rev 10)
00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Cannon Lake PCH SPI Controller (rev 10)
01:00.0 VGA compatible controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile] (rev a1)
06:00.0 Non-Volatile memory controller: Sandisk Corp Device 5002
07:00.0 Network controller: Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter (rev 31)
08:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)


$ ethtool -i enp8s0
driver: r8169
version: 2.3LK-NAPI
firmware-version: rtl8168h-2_0.0.2 02/26/15
expansion-rom-version: 
bus-info: 0000:08:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no

答案1

我刚刚通过购买双频路由器解决了这个问题(在 Ubuntu 20.04 上)。

当我将 5GHz 频段的笔记本 WiFi 与笔记本蓝牙中的音箱连接起来并在 YouTube 上播放音乐视频时,一切都运行正常,性能极佳。

问题在于,蓝牙会对 2.4GHz WiFi 产生干扰,因为它也在此频率上运行,但不会影响 5GHz 频段。

答案2

编辑2:

亲爱的@ibestvinn,将我的内核升级到 4.18.0-18 对我来说不起作用,但我想我解决了这个问题。

经过一番研究,我发现@loan提到的补丁对应于蓝牙设备04ca:3015 Lite-On Technology Corp较旧的 QCA9377使用此芯片)。由于我们的模型使用,0cf3:e500 Atheros Communications, Inc.我下载了内核源代码来检查是否0cf3:e500包含在btusb.c黑名单中,但事实并非如此。因此使用描述的步骤这里由 Jeremy31 决定添加0cf3:e500、仅重新编译内核模块并btusb.ko在内核模块中替换,看来它起作用了。

重新编译模块的过程非常简单。我按照如下方式进行:

1)下载内核源代码(考虑将“4.18.0”更改为您正在使用的任何版本):

# In a working directory, run:
apt source linux-source-4.18.0 

2)修复此设备的代码。将 0x0cf3:e500 列入黑名单btusb.c

# Here the source was extracted to linux-hwe-4.18.0.
cd linux-hwe-4.18.0/drivers/bluetooth

# Change btusb.c with editor of your choice. Ex:
vim btusb.c

btusb.c文件中只需{ USB_DEVICE(0x0cf3, 0xe500), .driver_info = BTUSB_QCA_ROME },添加static const struct usb_device_id blacklist_table[]

文件应该是这样的:

static const struct usb_device_id blacklist_table[] = {
    ...
    /* QCA ROME chipset */
    ...
    { USB_DEVICE(0x04ca, 0x3015), .driver_info = BTUSB_QCA_ROME },
    { USB_DEVICE(0x04ca, 0x3016), .driver_info = BTUSB_QCA_ROME },
    { USB_DEVICE(0x04ca, 0x301a), .driver_info = BTUSB_QCA_ROME },
    { USB_DEVICE(0x13d3, 0x3496), .driver_info = BTUSB_QCA_ROME },
    // This is the fix for QCA9377 bluetooth 0x0cf3:e500
    { USB_DEVICE(0x0cf3, 0xe500), .driver_info = BTUSB_QCA_ROME },
    ...

3)编译模块。您可能需要一些需要makebuild-essential如果尚未安装,请使用“sudo apt install make build-essential”进行安装。

make -C /lib/modules/$(uname -r)/build M=$PWD modules

4)“安装”并重新启动。将 btusb 模块替换为新的 btusb 并重新启动。

# You may do a backup of the old file:
sudo mv /lib/modules/$(uname -r)/kernel/drivers/bluetooth/btusb.ko /lib/modules/$(uname -r)/kernel/drivers/bluetooth/btusb.ko.backup

# Copy and replace btusb.ko to module location:
sudo cp btusb.ko /lib/modules/$(uname -r)/kernel/drivers/bluetooth/

# Reboot and test
reboot

之后我没有遇到任何问题。无线似乎没问题,蓝牙耳机似乎也没什么问题。

如果你也可以测试请在此处分享结果。如果它确实解决了问题,我们可以要求将其包含在未来的 Linux 内核版本中。

编辑:

亲爱的@ibestvinn,我发现了另一个问题,@Ioan 回答说这个问题在 Linux 4.16 中得到了解决。去那里看看吧。我会尝试升级我的内核并进行测试。祝你好运!

蓝牙耳机播放声音时 Wifi 速度变慢。Qualcomm Atheros QCA9377

老的:

这实际上不是一个答案,但我无法评论。

--

亲爱的@ibestvinn,我的三星笔记本电脑使用了同样的网络芯片 Qualcomm Atheros QCA9377,也遇到了同样的问题。

当我将蓝牙耳机连接到电脑时,无线连接最差。音频质量会受到影响,但对 Wifi 的影响非常大。到我的 AP 的 Ping 大于 5000ms - 不使用蓝牙耳机时通常小于 6ms。

我试过了options iwlwifi bt_coex_active=0,但没用。实际上,除非我手动启动 iwlwifi,否则它似乎不会运行,但我的无线和蓝牙在没有它的情况下也能正常工作。

这个问题真的很烦人,如果可以通过软件配置解决这个问题就好了,因为蓝牙和无线是共用天线的。

你有運氣嗎?

相关内容