麒麟系统蓝牙服务运行但“其他设备”为空,需直查底层:先用hciconfig -a确认hci0为UP RUNNING,否则sudo hciconfig hci0 up;再用bluetoothctl scan on强制扫描,同时禁用btusb自动挂起并验证外设是否真处于可发现模式。

麒麟系统中蓝牙服务已显示运行,但“其他设备”列表始终为空、刷新无响应、图形界面扫描失败,说明问题已越过服务启动层,深入到硬件抽象、外设广播、射频交互等底层环节,必须跳过托盘开关和控制中心界面,直击协议栈与物理信号层。
确认蓝牙适配器真实处于UP RUNNING状态
服务active (running) ≠ 适配器就绪。systemd只管进程存活,不保证HCI设备已初始化并广播。
执行 hciconfig -a,必须看到 hci0: Type: Primary Bus: USB 且状态行含 【UP RUNNING】;若仅显示 DOWN 或 NOACK,说明驱动虽加载但链路未激活。
此时不要重启服务,直接运行:sudo hciconfig hci0 up。若报错 Can't init device hci0: Connection timed out,表明固件未加载或btusb绑定失败,需立即转入固件排查。
绕过GUI,用bluetoothctl强制扫描并禁用节能策略
图形界面扫描受桌面环境DBus策略限制,常因超时退出或跳过低功耗设备;命令行可直通BlueZ核心,暴露真实广播帧。
方法一:基础扫描流程
终端输入 bluetoothctl → 输入 power on → 输入 agent on → 输入 default-agent → 输入 scan on。
方法二:解除节能干扰(关键)
某些USB蓝牙适配器在空闲时自动进入U1/U2低功耗状态,导致无法响应扫描请求。执行:echo 'options btusb enable_autosuspend=0' | sudo tee /etc/modprobe.d/btusb.conf → sudo modprobe -r btusb → sudo modprobe btusb → 再次 bluetoothctl 中 scan on。
注意:此操作会禁用USB自动挂起,可能略微增加待机功耗,但能稳定维持HCI连接。
验证外设是否真正广播可发现信号
第一步:用手机反向验证
打开安卓或iOS手机蓝牙设置页,开启“可被发现”(Android需手动点“可见性”,iOS需在蓝牙开关旁长按进入高级选项),回到麒麟系统执行 bluetoothctl scan on;若能看到手机名称,证明麒麟端蓝牙链路正常,问题100%在外设端。
第二步:区分“开机”与“可发现”
多数蓝牙耳机/键鼠开机后默认为“已配对态”,不广播新连接请求。必须触发标准配对模式:入盒式耳机(AirPods、FreeBuds)必须开盖+长按充电盒功能键3–5秒,直到指示灯红蓝交替快闪(单色常亮、慢闪、呼吸灯均无效);头戴式如Sony WH-1000XM5需同时按住电源键+降噪键7秒,听到语音提示“Ready to pair”才算成功。
第三步:检查射频共存干扰
WiFi 2.4GHz信道与蓝牙同属ISM频段,部分路由器(尤其是启用WMM或MU-MIMO的型号)会压制蓝牙扫描包。临时关闭WiFi路由器的2.4GHz频段,或让麒麟系统WiFi断开,再执行 bluetoothctl scan on;若此时突然扫到设备,需在路由器后台将WiFi信道手动固定为1、6或11,并关闭蓝牙邻频抑制功能(如有)。

















