做蓝牙开发这些年,最常被问到一个问题就是“蓝牙能不能测距”。以前的标准答案是:能,但精度别抱太大期望。RSSI信号强度顶多做接近检测,想靠它搞厘米级测距,基本是玄学。Channel Sounding出来之后,这个局面完全变了——蓝牙终于有了一套物理层的正规测距手段,可以让设备之间实打实测出距离,而不是靠猜。
这篇不是概念科普,我尽量把原理、安全价值、落地场景、以及开发时真正要注意的坑都讲透。适合做物联网、数字车钥匙、智能门锁、防丢定位这类产品的开发者,也适合对UWB和蓝牙技术路线选择有困惑的产品经理、方案选型人员。
1. 蓝牙测距的老底子:RSSI为什么不成气候
1.1 RSSI测距的本质是对免费数据的妥协
RSSI(Received Signal Strength Indicator)是接收信号强度指示,它确实是信号强度和距离存在相关性,于是在一大堆定位方案里被拿来当测距依据。在没有任何干扰的自由空间里,路径损耗公式可以给出比较干净的衰减曲线,根据RSSI反推出距离。但真实环境远没有这么理想。
问题出在RSSI本身不是为测距设计的。它是接收机对信号功率的一个估算值,受到发射功率、天线增益、人体吸收、遮挡物、多径反射的叠加影响。我之前的实测数据很典型:在室内同一位置,手机原地转个90度,接收端的RSSI能波动6到10dBm。按照2.4GHz路径损耗规律,这相当于把推算距离从5米变成了8米甚至更多。一个人站在中间和侧着身站,结果都不一样。
所以RSSI测距只适合做两件事:一是判断“是不是靠近了”,二是判断“是不是离开了”。无线耳机开盖弹窗、防丢器的“断开即报警”都属于这种粗粒度场景,它们不需要精确距离,只需要一个阈值判断。真要在上面叠加“在3米内才允许执行开锁”这类逻辑,RSSI会让人反复调阈值调到怀疑人生。
1.2 多径效应是RSSI测距的天然天花板
多径效应是RSSI测不准的根本原因。无线信号在室内碰到墙壁、地面、家具会发生反射、绕射,接收端收到的实际上是直射路径和几十条反射路径的叠加信号。波峰波谷互相叠加,结果可能是增强也可能是抵消,RSSI在这里反映的是合成信号的强度,而不是直射路径信号本身的衰减。
这跟听人说话的场景很像:在空旷操场上,距离和音量衰减基本对得上;在布满回声的大厅里,人往哪个方向转身、房间里有没有其他人、墙边是否有水箱,都会让音量在很短的距离内产生剧烈波动。RSSI就是这种情况下的“音量”。
指纹定位是另一种基于RSSI的尝试,思路是先采集各位置点的RSSI特征,再通过匹配算法反推当前位置。它的精度依赖指纹库的密度和时效性,环境一变就得重新采集,维护成本高,而且局部精度可能还行,但要做到稳定的亚米级测距完全没有可能。
2. Channel Sounding的核心机制:相位测距和往返时间测距
2.1 蓝牙在6.0版本里补上的物理层测距能力
Channel Sounding在蓝牙核心规范6.0中被正式确立为一项核心特性,它不再依赖RSSI这种间接指标,而是专门为“测距”设计了一套物理层测量机制。感兴趣的技术细节可以翻蓝牙SIG的Core Specification 6.0,里面有完整的协议定义。
它的核心思路是让两个蓝牙设备之间通过特定方式交换射频信号,然后在物理层直接测量与距离相关的参数。蓝牙SIG定义了两种测距模式:一种是基于相位差的PBR(Phase-Based Ranging),一种是基于信号飞行时间的RTT(Round-Trip Time)。两种模式的初衷都是获得比RSSI高一个数量级以上的测距精度。
这两种方式都不是什么新概念,UWB和WiFi已经验证过类似的原理。但Channel Sounding抓住了2.4GHz频段的特性以及蓝牙生态覆盖面广、功耗低的优势,让普通BLE设备也能在低成本前提下来做测距。
2.2 PBR相位测距是怎么把“波长”当尺子用的
PBR的原理基于相位偏移和距离的关系。电磁波在传播过程中,距离每增加一个波长的整数倍,相位就会旋转一圈。所以接收信号的相位偏移和信号传播距离之间存在严格的线性关系。
在2.4GHz频段,一个波长大约是12.5厘米。也就是说,发射连续波信号,接收端测出相位,如果相位是180度,就知道信号走过了大约6.25厘米加上若干个12.5厘米的长度——这里面有个模棱两可的问题:只测一个频率,怎么判断到底是经过了6.25厘米,还是18.75厘米,还是31.25厘米?
解决方案是使用多个频率。频率不同,波长就不同,同一段距离对应的相位差也不同。通过比较多个频点之间的相位差,就能解算出真实的绝对距离。这就像用两把刻度不同的尺子对同一个物体量长度,小尺子量得精细但容易数错格子,大尺子先框定大致范围,再用小尺子精读。Channel Sounding在79个BLE信道上做跳频测量,正是为了用频率组合来消除这种“周期模糊”。
PBR的最小精确度理论上可以做到厘米级,因为它直接和载波相位挂钩,分辨率主要受限于是相位噪声和多径干扰。实际场景里,直射路径的相位能从一堆反射叠加信号中被分离出来,跳频带来的频率分集也显著提升了抗多径能力。
2.3 RTT往返时间测距:本质是拿时间戳换距离
RTT测距的思路更直观:设备A发送一个测距数据包,设备B收到后回复,设备A计算整个往返所消耗的时间。信号在空气中传播速度接近光速,时间乘以光速再除以二,就是两台设备之间的距离。
这里最重要的设计是它不需要两个设备之间有绝对同步的时钟。测的是“往返时间”,而不是“单程时间”,避免了对时钟同步的强依赖。但这也带来了新的要求:时间戳必须足够精确。无线电信号一纳秒大约传播30厘米,如果要做到30厘米以内的精度,时间测量就要到纳秒甚至亚纳秒量级。蓝牙在实现上会进行多轮往返测量,并对结果做均值处理,用于降低随机噪声。
RTT特别适合中长距离测距场景,因为它的误差不会像PBR那样随周期模糊问题而积累,在几米到上百米范围内相对稳定。PBR在小距离、高精度场景下优势更大。两种模式放在一起,恰好满足了不同产品对测距距离和精度的差异化需求。
2.4 高精度测距的理想模型和真实误差范围
理论计算可以给一个直观的预期。对于一个2.45GHz的载波,波长约12.24厘米,如果相位测量精度能达到5度,对应的测距精度大约1.7毫米。实际工程肯定做不到理想状态,相位噪声、多径、天线群延迟都会引入误差。
蓝牙SIG给出的官方预期是,Channel Sounding在90%的情况下可以实现小于0.5米的测距误差。从目前一些芯片厂商的实测demo看,在较好的视距环境下,误差常常能稳定在10到30厘米左右。这个精度虽然不如UWB的厘米级那么夸张,但已经远超RSSI几个数量级,而且成本、功耗和天线尺寸都要友好得多。
我之前自己刷了一套支持Channel Sounding的开发板做往返测距试验,在5米视距范围内,连续测50次的最大误差在0.4米左右,中位误差大概12到15厘米。换成RSSI方案,同样的位置和环境,50次测量的标准差就已经到了好几米。这个对比足够说明问题。
3. 真正的距离感知为什么对安全至关重要
3.1 中继攻击:无钥匙进入系统最大的软肋
说到Channel Sounding带来的安全价值,就必须提一个真实世界里非常猖獗的攻击方式——中继攻击。这种攻击专门针对无钥匙进入系统,包括汽车无钥匙进入、智能门锁等。
中继攻击的实施过程很简明:车主在家把车钥匙放在门口桌上,车停在门外。攻击者甲站在车旁边,手持一台转发器,攻击者乙则拿着另一台转发器靠近车门玩家的位置。乙把收到的钥匙信号转发给甲,甲再转发给车。从车的视角看,它确实收到了一个经过合法认证的钥匙信号,于是直接开门。
整个过程中,真正的车钥匙从未离开过家门,但车的判断是“钥匙就在旁边”。这不是协议被破解了,而是协议根本没有办法验证信号到底来自哪个方向、距离有多远。传统BLE的鉴权只确认“信号有效”,不确认“距离合理”。
3.2 Channel Sounding为什么能挡住中继攻击
Channel Sounding的测距天然具备防中继的价值。因为它测量的是真实的物理传播路径,被转发的信号在测距结果上会暴露真实的距离。也就是说,攻击者可以在物理层转发数据包,但没法伪造“物理距离很近”这个结果。
这里有个细节值得展开:仅仅是测距还不够,测距流程本身得是加密的。如果攻击者能在测距过程中预测或控制测距参数,他们依然可能发起距离欺诈。蓝牙在Channel Sounding规范里设计了加密的测距序列、鉴权和跳频机制,测距信号会在79个信道上跳变,且每次跳变的顺序和参数都通过加密方式协商。这让攻击者没法轻易预测下一个信道去提前构造假相位或假时间戳。
用人话翻译一下:老方案是“你说你在3米内,我信了”;Channel Sounding是“你说你在3米内,我用物理手段量了一下,发现你其实在10米外,所以我不信”。这是安全思维上的质变。
3.3 防误触面板和支付设备都在等这个能力
除了车钥匙,另一个大量依赖距离判断安全性的场景是支付设备和接近触发设备。比如共享充电宝柜机判断手机是否贴近来解锁、支付终端判断卡片设备是否在几厘米范围内。这些设备过去只能用RSSI做粗略判断,很容易被放大信号欺骗。
Channel Sounding在物理层的安全测距能力,让这些设备可以在更低的成本上获得接近UWB的安全性。在很多只要求“小于1米”或“小于0.5米”即可触发操作的场景下,它要比UWB方案便宜得多,同时功耗友好得多。
4. 可落地的应用场景:数字车钥匙只是起点
4.1 数字车钥匙和智能门锁:距离即门禁
数字车钥匙是Channel Sounding最先被认可的场景。继承了UWB在防中继攻击上的思路,但用BLE来承载测距,意味着更多中低端车型不需要额外加装UWB模块就能获得较可靠的安全距离判断。手机靠近车辆1米内解锁、离开3米外上锁,这类体验可以用Channel Sounding去实现。
智能门锁同理。传统蓝牙门锁的痛点在于,手机放在裤兜里站在门外1米和3米,RSSI值可能几乎相同,容易造成门锁在主人还没走近时就开了,或者站在门口等了半天还不开。Channel Sounding的距离判断稳定之后,哪些动作在哪个距离触发就变得可配置、可信赖。
4.2 防丢器和查找网络:让“接近但不触发”成为历史
AirTag类防丢器之所以要用UWB做精确查找,是因为在室内最后3米的判断特别难。传统BLE标签只能告诉你“信号断了”,却不能告诉你“距离逐步变近”。寻物体验往往是广播信号还有一格,但你就是找不到它。
打印一个对比能看得更清楚:
| 技术 | 典型精度 | 成本 | 功耗 | 穿透与抗多径能力 | 典型场景 |
|---|---|---|---|---|---|
| RSSI测距 | 3到10米级 | 极低 | 极低 | 差 | 接近检测、断开报警 |
| Channel Sounding | 0.1到0.5米级 | 中低 | 中低 | 中(跳频分集) | 门禁、防丢、车钥匙 |
| UWB | 0.1米级甚至厘米级 | 高 | 较高 | 强,但穿透性弱 | 无感支付、精确查找 |
| WiFi RTT | 1到2米级 | 中 | 高 | 中 | 室内定位、人员追踪 |
防丢器用上Channel Sounding之后,可以在没有UWB天线的体积约束下,提供“距离3米/1米/0.5米”的梯度提示,比RSSI的“在/不在”体验好太多。而且BLE的生态已经极其成熟,标签的成本和体积也能控制在比较理想的范围。
4.3 电子围栏和智能家居的连续存在感知
电子围栏应用过去最大的问题就是误触率高得离谱。比如一个区域用RSSI判定设备“离开”,人在边界走来走去就容易触发假报警。Channel Sounding的稳定距离值可以让围栏边界变得硬很多,逻辑从“信号弱到一定程度就算离开”升级为“物理距离超过设定阈值才算离开”。
智能家居也有个经常被忽略的需求:感知用户是否仍在房间里。比如客厅灯自动开关,基于人的存在判断而不是简单的PIR红外。BLE设备配合Channel Sounding,可以把“人是否坐在沙发上”这种距离相关问题也纳入自动化逻辑,而且不需要额外增加位置标签或复杂的视觉方案。
4.4 单品体验升级:耳机、音箱、儿童手表的“距离感”
耳机离耳检测过去靠的是红外传感器或电容传感器,成本高还费电。Channel Sounding可以让手机和耳机之间做一个低功耗的连续距离感知,耳机从耳朵上取下几米外,手机上就能弹出提示;耳机放回充电盒,自动停止测距以省电。
儿童手表、宠物项圈这类产品也可以借助Channel Sounding做一个“安全距离”提醒。传统方案是RSSI断了才报警,现在可以做到手表和手机距离超过预设阈值就预警,提升了防走失体验的一步步递进感。
5. 开发者在真正动手之前,建议先想清楚这几个问题
5.1 你的硬件和协议栈到底是否支持
Channel Sounding不是通过软件升级就能让老设备获得的。它对射频硬件的相位稳定性、时间测量精度有要求,芯片本身需要支持相关物理层特性。目前主流蓝牙SoC厂商正在陆续推出支持Channel Sounding的芯片和SDK,但存量芯片基本都是不支持的。
选型的时候要特别留意协议栈版本和芯片型号的对应关系,不要以为SDK升级到最新版本就万事大吉。另外,不同厂家的实现细节存在差异,测距性能和API接口也会不同,跨厂商互通性测试必须放在第一优先级做,不能只看自家方案跑通的demo。
5.2 天线设计与相位校准,是工程里最容易被低估的部分
PBR测距的天线群延迟会成为距离偏移的固定误差源。同一块板子,焊上天线和直接用射频线连接,测量结果可能差出几十厘米。产品结构改变、天线更换、主板布局微调,都需要重新做一次校准,否则你标称的精度就是纸面数字。
校准的思路通常是用一个已知距离的基准点,测量出系统固定偏移,然后在算法里补偿。如果产品有多根天线,每根天线的相位特性不一样,还要分别校准。这些工作强度不小,必须在项目排期里预留时间。
5.3 功耗和测距频率之间的平衡
连续测距是功耗大头,测量一个完整的数据包序列需要多次信道跳变和数据交换。如果设备以100毫秒一次固定频率持续测距,电流消耗会很明显,会严重影响待机时间。
比较好的策略是根据应用场景分级调整测量节奏。比如门锁场景,可以在收到唤醒信号后进入高频测量模式,平时则保持低频率的呼吸检测,而不是做无脑的持续满频测量。这类策略在BLE低功耗设计里是老套路,放到Channel Sounding上一样适用。
5.4 多径环境下的实测验证比想象中更折磨人
Channel Sounding的抗多径能力确实比RSSI强,但并不意味着它能免疫多径。某些场景下,比如金属货架、玻璃幕墙密集的环境,反射信号叠加依然会造成距离跳变。尤其是PBR模式,相位信息对多径更敏感,需要算法上有良好的鲁棒性处理。
我的建议是,测试环境不要在实验室里图省事。拿到真实使用场景的现场去跑数据,尽量覆盖人的走动、障碍物的变化、门开合的状态。数据收集完,重点看误差的分布形态,而不是只看平均值。如果误差在90分位点偏离到1米以上,那这个产品在用户手里大概率会触发各种奇怪的问题。
5.5 和既有蓝牙功能的共存与集成方式
一个产品不会只跑测距功能,还得同时维持BLE数据传输、广播扫描、连接管理等。Channel Sounding需要占用射频时间,和数据通道是共享的关系,要协调好多任务并发。部分芯片支持并发测量和数据通信,但资源有限,需要合理分配连接间隔和测距间隔,避免相互挤占导致连接不稳定或测距抖动。
另外,如果产品计划同时使用UWB和蓝牙Channel Sounding,就要考虑双模并发时的射频隔离和协议调度,不能简单叠加。UWB负责精确门禁,蓝牙CS负责持续存在感知,这种组合方案在数字车钥匙里已经开始出现,后续大概率会成为中高端产品的标配形态。
6. 我还想再分享的几个实测体会
Channel Sounding最打动我的,不是它把蓝牙测距从一个“模糊判断”变成了“精确测量”这层表面意义,而是它让蓝牙安全机制第一次有了物理世界的验证维度。测距本身就是一种鉴权,这在物联网时代很珍贵。
从工程实践角度,我建议所有打算引入这项技术的团队把这些事放在最早做:先买几家主流芯片厂商的评估板跑一遍真实环境,搞清楚各家SDK在测距精度、功耗、校准流程上的差异;再根据产品场景确定精度目标和测距频率;最后在样机阶段就启动天线校准和现场数据采集,把多径问题尽早暴露出来。
如果你正在RSSI方案和Channel Sounding方案之间做决定,我的看法很直接:如果产品只需要“近了报警、远了断开”,RSSI还能继续用;只要涉及门禁、支付、防走失这类需要可靠距离判断的场景,直接上Channel Sounding,别在老方案上继续加一堆补偿算法。省下来的调试时间,远比你想象的要多。