Ubuntu 22.04.4蓝牙开机未实际扫描设备却显示‘disconnected’的配置咨询
Ubuntu 22.04.4蓝牙开机未实际扫描设备却显示‘disconnected’的配置咨询
你观察得很准确——Ubuntu 22.04.4确实会通过蓝牙配对数据库记录曾经连接过的设备状态,而不是每次开机都主动扫描所有蓝牙设备,这就是为什么未开机的配对设备会显示“disconnected”的原因。针对这个情况,你可以尝试以下几种配置调整来改变这个行为:
调整蓝牙服务的启动扫描设置
- 编辑蓝牙核心配置文件:
sudo nano /etc/bluetooth/main.conf - 找到
AutoEnable选项,确保它被设置为true(如果文件里没有这个选项,直接添加一行AutoEnable = true即可),这个配置会让蓝牙服务在启动时自动开启扫描功能。 - 若需要设备保持可被发现状态,还可以添加
DiscoverableTimeout = 0(根据自身需求选择,非强制配置) - 修改完成后保存文件,重启蓝牙服务使配置生效:
sudo systemctl restart bluetooth
- 编辑蓝牙核心配置文件:
禁用蓝牙设备的持久化记录(不推荐,仅适用于不需要保留配对历史的场景)
- 删除系统存储的蓝牙配对数据库:
rm -rf /var/lib/bluetooth/* - 重启蓝牙服务:
sudo systemctl restart bluetooth,之后系统会重新扫描并仅记录新配对的设备状态。
- 删除系统存储的蓝牙配对数据库:
配置开机自动触发蓝牙扫描
- 创建一个开机扫描脚本:
sudo nano /usr/local/bin/bluetooth-scan-on-boot.sh - 在脚本中写入以下内容:
#!/bin/bash # 延迟10秒等待蓝牙服务完全启动 sleep 10 # 开启蓝牙扫描 bluetoothctl scan on # 持续扫描5秒后关闭 sleep 5 bluetoothctl scan off - 给脚本赋予执行权限:
sudo chmod +x /usr/local/bin/bluetooth-scan-on-boot.sh - 创建systemd服务文件来管理这个开机脚本:
sudo nano /etc/systemd/system/bluetooth-scan.service - 写入以下服务配置:
[Unit] Description=Trigger Bluetooth scan on system boot After=bluetooth.service [Service] ExecStart=/usr/local/bin/bluetooth-scan-on-boot.sh Type=oneshot [Install] WantedBy=multi-user.target - 启用这个服务,确保开机自动执行:
sudo systemctl enable bluetooth-scan.service
- 创建一个开机扫描脚本:
需要注意的是,系统默认保留配对设备状态是为了优化重连速度,让曾经配对过的设备能更快地重新连接。如果你只是临时需要查看当前可用的蓝牙设备,也可以直接在蓝牙设置界面点击“刷新”按钮手动触发扫描。
备注:内容来源于stack exchange,提问作者Salvatore Terress




