每当我在 Ubuntu 中连接蓝牙耳机时,我的 Wi-Fi 就会开始掉线并变慢。但只要关闭蓝牙,Wi-Fi 连接就会恢复正常。我该如何正常使用这两个设备?(注:我之前使用 Windows,它运行良好)
ubuntu@ubuntu:~$ lspci -knn | grep Net -A3; lsusb
02`enter code here`:00.0 Network controller [0280]: Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter [168c:0042] (rev 31)
Subsystem: Lenovo QCA9377 802.11ac Wireless Network Adapter [17aa:0901]
Kernel driver in use: ath10k_pci
Kernel modules: ath10k_pci
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 174f:116a Syntek
Bus 001 Device 003: ID 0cf3:e500 Atheros Communications, Inc.
Bus 001 Device 002: ID 0781:5567 SanDisk Corp. Cruzer Blade
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
答案1
我在使用 QCA9377 蓝牙适配器时也遇到了同样的问题0cf3:e500 Atheros Communications, Inc.
。我回答了这个问题,我通过将模块添加0cf3:e500
到黑名单btusb.c
并重新编译模块来解决。如果您想了解我如何得出此答案,可以查看链接。
不幸的是,这个修复程序还没有在官方存储库中应用。但你可以按照以下步骤进行操作:
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)编译模块。您可能需要一些需要make
,build-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 内核版本中。