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

如何修改蓝牙Shell脚本实现连接断开后自动快速重连指定MAC设备

蓝牙自动重连Shell脚本优化方案

针对原有脚本重连不及时、未处理适配器意外关闭、设备未被扫描到就发起连接导致失败的问题,优化后的脚本可实现秒级感知断连、自动拉起蓝牙适配器、自动扫描设备后重试连接,适配设备偶发开关机的场景。

优化点如下:

  • 修复状态命令输出为空时的脚本逻辑报错问题,给所有状态判断增加默认 fallback 值
  • 新增蓝牙适配器自动开启逻辑,适配器意外关闭时自动执行上电操作
  • 新增连接失败后的主动扫描逻辑,避免设备重启后蓝牙控制器未发现设备导致连接失效
  • 调整等待时长逻辑,空闲检测间隔1秒,连接操作后仅等待2秒即可再次检测,大幅提升重连速度
#!/bin/bash
# 替换为目标蓝牙设备的MAC地址
MAC="XX:XX:XX:XX:XX:XX"

# 获取蓝牙适配器上电状态
powered() {
    local status=$(echo "show" | bluetoothctl | grep "Powered" | cut -d " " -f 2)
    echo "${status:-no}"
}

# 获取目标设备连接状态
connected() {
    local status=$(echo "info ${MAC}" | bluetoothctl | grep "Connected" | cut -d " " -f 2)
    echo "${status:-no}"
}

while true
do
    sleep 1
    # 先判断蓝牙适配器是否上电
    if [ $(powered) != "yes" ]; then
        echo "power on" | bluetoothctl
        sleep 2
        continue
    fi
    # 设备未连接时发起连接
    if [ $(connected) = "no" ]; then
        # 先扫描3秒确保能发现设备
        echo "scan on" | bluetoothctl
        sleep 3
        echo "connect ${MAC}" | bluetoothctl
        echo "scan off" | bluetoothctl
        sleep 2
    fi
done

使用方法

  • 替换脚本中MAC变量的值为你的目标蓝牙设备实际MAC地址
  • 给脚本添加执行权限:chmod +x auto_connect_bluetooth.sh
  • 直接执行脚本即可挂起运行,也可以配置为systemd系统服务实现开机自动运行,断连自动恢复

内容的提问来源于stack exchange,提问作者Zakaria Halloumi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:45:07