如何设置BlueZ连接间隔 将默认30ms修改为15ms
直接修改/etc/bluetooth/main.conf是可行方案之一,但需要配置正确字段、满足版本要求,不是所有场景下都能生效;hcitool是最稳定直接的配置方式,bluetoothctl仅高版本支持相关操作,实用性一般。
核心前提
BLE连接参数是双向协商生效的,不是本地单方面设置就一定能用,苹果对iOS设备的BLE连接参数有明确强制要求:
- 合法连接间隔必须是15ms的整数倍,15ms是苹果允许的最低间隔值,设置低于15ms的参数会被iOS直接拒绝
- 监督超时值必须大于
连接间隔 * (1 + 从设备延迟) * 6,否则参数更新请求会被驳回
你要设置的15ms间隔完全符合苹果规则,正常情况下对端会接受。
具体操作方式
临时对现有连接生效(推荐优先测试用)
- 先查询当前活动BLE连接的句柄,执行命令:
输出结果里找到对应iOS设备的ACL连接行,记录下handle字段的十六进制值,比如hcitool con0x000b。 - 直接发送连接参数更新请求,连接间隔单位是1.25ms,15ms对应数值为
15/1.25=12,监督超时单位是10ms,200ms对应数值为20,执行命令:
命令执行后无报错就代表参数更新请求已发送,iOS侧接受后会立即生效,不需要重启服务或重连。hcitool lecup --handle <你记录的连接句柄值,去掉0x前缀> --min 12 --max 12 --latency 0 --timeout 20
- 先查询当前活动BLE连接的句柄,执行命令:
配置默认参数(所有新连接自动应用15ms间隔)
编辑/etc/bluetooth/main.conf配置文件,找到[LE]配置段(BlueZ 5.50以下版本该字段在[General]段),修改/新增以下配置项:MinConnectionInterval=12 MaxConnectionInterval=12 ConnectionLatency=0 ConnectionSupervisionTimeout=200保存后执行
systemctl restart bluetooth重启蓝牙服务即可生效。如果配置后不生效,先检查系统是否安装了blueman等第三方蓝牙管理工具,这类工具会覆盖BlueZ的默认连接参数。bluetoothctl 配置说明
只有BlueZ 5.62及以上版本的bluetoothctl才支持连接参数配置,进入交互终端后需要先执行menu admin切换到管理菜单,才能看到LE连接参数相关配置项,且仅能设置新连接的默认参数,无法直接修改现有连接的参数,ARM平台预装的BlueZ版本普遍偏低,该方式实用性不高。
实测补充:15ms连接间隔、0从延迟、200ms监督超时的参数下,BLE 4.2链路单向上行透传速率稳定在75-85KB/s,BLE 5.0 1M PHY下速率可达120-140KB/s,是iOS侧能稳定运行的最高速率档位。
内容的提问来源于stack exchange,提问作者Kresimir Gasparic

