如何在同一台Linux工作站上指定使用USB蓝牙适配器而非自带PCIe无线网卡的蓝牙模块
如何在同一台Linux工作站上指定使用USB蓝牙适配器而非自带PCIe无线网卡的蓝牙模块
嘿,这个问题我碰到过好多次了,给你一步步捋清楚怎么解决!先从你的lsusb输出里,我已经定位到两个蓝牙设备:
- USB蓝牙适配器:Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode),ID是
0a12:0001 - 自带PCIe蓝牙模块:Qualcomm Atheros Communications,ID是
0cf3:e005
接下来分步骤操作,确保你只用USB那个:
第一步:确认两个蓝牙控制器的对应关系
先运行这个命令,查看系统里的蓝牙控制器列表:
bluetoothctl list
输出会类似这样:
Controller AA:BB:CC:DD:EE:FF YourPC-PCIe-Bluetooth [default] Controller 11:22:33:44:55:66 YourPC-USB-Bluetooth
如果分不清哪个对应哪个,再结合lspci确认PCIe设备:
lspci | grep Bluetooth
输出会显示内置PCIe蓝牙的信息,这样就能和bluetoothctl里的控制器对应上了。
第二步:临时切换到USB蓝牙(重启后失效)
如果只是临时想用USB的,先把PCIe的蓝牙禁用就行:
- 运行
rfkill list,找到两个蓝牙设备的编号:
rfkill list
输出示例:
2: hci0: Bluetooth Soft blocked: no Hard blocked: no 3: hci1: Bluetooth Soft blocked: no Hard blocked: no
- 找到对应PCIe模块的编号(比如上面的
2),运行命令禁用:
rfkill block 2
现在再用bluetoothctl list看,就只剩USB的控制器了,配对设备时就会自动用它。
第三步:永久禁用PCIe蓝牙(重启后保持生效)
如果想一劳永逸,推荐下面两种方法:
方法1:用udev规则自动禁用
创建一个udev规则文件,让系统启动时自动禁用PCIe蓝牙:
sudo nano /etc/udev/rules.d/99-disable-pcie-bluetooth.rules
把下面内容粘贴进去(注意替换成你PCIe蓝牙的idVendor和idProduct,就是lsusb里的0cf3:e005):
SUBSYSTEM=="bluetooth", ATTRS{idVendor}=="0cf3", ATTRS{idProduct}=="e005", RUN+="/usr/sbin/rfkill block bluetooth"
保存退出后,重启系统,PCIe蓝牙就会被自动禁用了。
方法2:BIOS里直接禁用(最彻底)
如果你的电脑BIOS支持的话,开机时按对应按键(一般是F2、Del、Esc)进入BIOS设置,找到“无线网卡”或“蓝牙”相关选项,把内置的PCIe蓝牙模块禁用掉。这种方法不会占用任何系统资源,是最彻底的解决方案。
第四步:验证是否生效
重启后,运行bluetoothctl list和rfkill list,确认只有USB蓝牙处于启用状态,然后尝试配对一个蓝牙设备(比如耳机或鼠标),测试连接稳定性——这下应该就用的是USB适配器了!
备注:内容来源于stack exchange,提问作者Euphoria Celestial
相关产品推荐
相关产品推荐

