You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22系统中禁用主板蓝牙适配器并仅使用USB蓝牙适配器的方法求助

Ubuntu 22系统中禁用主板蓝牙适配器并仅使用USB蓝牙适配器的方法求助

看起来你之前靠udev规则禁用内置蓝牙的方案在Ubuntu 22上失效了,别着急,咱们一步步来排查和解决这个问题:

首先先确认你的设备信息:从lsusb输出里,主板自带的蓝牙是HP Broadcom 2070(ID 03f0:231d),USB蓝牙适配器是Cambridge Silicon Radio的 dongle(ID 0a12:0001),先从调整udev规则开始尝试:

1. 重新加载并验证当前udev规则

你现有的规则是SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="231d", ATTR{authorized}="0",先执行以下命令重新加载规则并触发生效:

sudo udevadm control --reload-rules && sudo udevadm trigger

然后检查主板蓝牙设备的授权状态,确认规则是否生效:

lsusb -v -d 03f0:231d | grep authorized

如果输出显示authorized=0,说明规则已经生效,重启蓝牙服务试试:

sudo systemctl restart bluetooth

要是没显示这个结果,那咱们调整一下udev规则的写法:

2. 优化udev规则的触发条件

Ubuntu 22的udev对规则触发时机的要求更明确,建议把规则改成这样(编辑/etc/udev/rules.d/81-bluetooth-hci.rules):

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="231d", ATTR{authorized}="0"

保存后再次执行重新加载规则的命令,重启蓝牙服务,再检查设备状态。

3. 用bluetoothctl直接指定默认适配器并禁用内置的

如果udev规则还是不生效,可以直接通过蓝牙管理工具来操作:

  • 先列出所有蓝牙适配器,找到它们的MAC地址:

    bluetoothctl list
    

    输出会类似:

    Controller AA:BB:CC:DD:EE:FF HP Broadcom 2070 [default]
    Controller GG:HH:II:JJ:KK:LL USB Bluetooth Dongle

  • 先选中USB适配器并设置为默认:

    bluetoothctl select GG:HH:II:JJ:KK:LL
    
  • 然后禁用主板的蓝牙适配器:

    bluetoothctl power off AA:BB:CC:DD:EE:FF
    

4. 内核模块层面彻底禁用内置蓝牙(终极方案)

如果以上方法都不行,咱们从内核模块入手,只让USB蓝牙工作:

  • 创建一个模块黑名单配置文件:
    sudo nano /etc/modprobe.d/blacklist-bluetooth.conf
    
  • 写入以下内容(作用是加载蓝牙模块后,自动解绑主板的蓝牙设备,不影响USB的):
    blacklist btusb
    install btusb /sbin/modprobe --ignore-install btusb && /bin/sh -c 'echo 03f0 231d > /sys/bus/usb/drivers/btusb/unbind'
    
  • 保存后更新initramfs:
    sudo update-initramfs -u
    
  • 重启系统后,内置蓝牙就会被彻底禁用,只有USB适配器能工作。

备注:内容来源于stack exchange,提问作者josifoski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 15:59:09