银河麒麟OS蓝牙搜索不到设备需按硬件识别→驱动加载→固件补全→服务启用→扫描触发五步排查:先用lsusb确认硬件存在,再关闭Secure Boot后加载btusb模块,接着根据dmesg报错补全对应固件,然后启用bluetooth与dbus服务,最后在bluetoothctl中执行power on、scan on触发扫描。

银河麒麟OS蓝牙搜索不到设备,表现为打开蓝牙设置后“可发现设备”列表为空、bluetoothctl中scan on无响应、hciconfig -a显示hci0但无远程设备MAC地址,常见于Secure Boot拦截驱动、固件缺失、服务未启用或射频干扰严重等环节。
确认硬件是否被系统识别
先排除物理层连接失败,避免在上层调试浪费时间。
打开终端,执行命令:lsusb | grep -i bluetooth;若输出含Realtek、Cambridge Silicon Radio、Intel或Generic Bluetooth字样,说明USB总线已捕获设备。
若无任何输出,更换主机后置原生USB 2.0/3.0口重插,禁用USB选择性暂停(控制中心→电源管理→关闭“USB节能”),再运行一次lsusb。
仍无输出,该适配器大概率不兼容国产平台或存在硬件故障,需换用已知兼容型号(如ASUS USB-BT400、TP-Link UB400)。
加载btusb驱动并绕过Secure Boot限制
多数外接蓝牙适配器依赖btusb内核模块,而麒麟OS默认启用Secure Boot会拒绝加载未签名模块——这是最常被忽略的卡点。
执行命令检查模块状态:sudo lsmod | grep btusb;若无返回,说明模块未加载。
尝试手动加载:sudo modprobe btusb;若报错“Operation not permitted”,则【Secure Boot必须关闭】——重启进入BIOS(开机按Del/F2/F12),找到Secure Boot选项设为Disabled,保存退出。
关闭Secure Boot后,再次执行sudo modprobe btusb;成功时无报错,且lsmod | grep btusb可看到btusb行。
为防止重启失效,将模块写入开机自动加载列表:echo "btusb" | sudo tee -a /etc/modules。
补全蓝牙芯片对应固件
驱动加载成功但hciconfig -a仍不显示hci0,极可能是固件缺失。不同芯片需不同固件文件,缺一不可。
执行命令查看内核报错:dmesg | grep -i firmware;重点找类似“firmware: failed to load rtl_bt/rtl8761b_config.bin”或“brcm/BCM20702A1.hcd”的提示。
根据报错中的芯片型号,在麒麟软件商店搜索安装对应固件包:Realtek芯片装firmware-realtek,Broadcom装firmware-brcm80211,Intel装firmware-iwlwifi(含蓝牙固件)。
若商店无对应包,手动下载:访问https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/,定位对应子目录,复制bin文件到/lib/firmware/对应路径下(如/lib/firmware/rtl_bt/),然后执行sudo modprobe -r btusb && sudo modprobe btusb重载驱动。
启用蓝牙服务并开启扫描
确保dbus与bluetooth服务处于激活状态,否则bluetoothctl无法通信。
第一步:启用系统级蓝牙服务sudo systemctl enable bluetooth && sudo systemctl start bluetooth
第二步:启用用户级dbus服务(部分桌面环境依赖此服务)systemctl --user enable dbus && systemctl --user start dbus
第三步:进入交互式蓝牙控制台bluetoothctl
第四步:依次输入以下命令(每输一行回车一次):power onagent ondefault-agentscan on
此时终端应开始滚动输出类似[NEW] Device XX:XX:XX:XX:XX:XX DeviceName的行,表示已发现远程设备。若持续30秒无任何NEW Device输出,说明前面某环节仍未通过,需回溯检查固件路径或Secure Boot状态。











