铱星 SBD 物联网终端常见问题与排障:注册、收发与丢包
核心摘要:铱星 SBD 是存储转发,不是实时网络——消息先落在铱星网关排队,收方必须主动取件;网关每个 IMEI 最多排 50 条、最长留 5 天。绝大多数「发出去对方没收到」,不是卫星链路坏了,是目标端点没配或者收方没去取。
铱星 SBD 终端 · 本页要点速览
| 维度 | 本页要点 |
|---|---|
| 本页讲什么 | 铱星 SBD 物联网终端(Edge 9680、9602、9603、9604、Certus 9704)的注册、收发、丢包三类问题的排查方法,全部给出可直接照做的命令 |
| 常见现象 | 发不出去;发出去了对方收不到;多台终端同时发结果丢包;设备移动以后收不到消息;终端像是随机失联、重启后又能用 |
| 关键结论 | 网关队列每 IMEI 最多 50 条、最长 5 天;收消息只能靠轮询或 Ring Alert;+SBDI 会主动 Detach 并关掉 Ring Alert,要收消息必须改用 +SBDIX / +SBDIXA |
| 最易错的 | ① 电源按平均值设计,发射瞬间掉压复位,看着像随机丢包;② 用 +SBDI 收发,把 Ring Alert 关了还不知道;③ 读完消息不清缓冲区,下一条直接覆盖;④ 多台设备同一时刻发 |
| 先做什么 | 按「信号 → 电源 → 串口 → 账户 → 端点配置 → 取件机制」六步走,前面四步在终端侧就能排除,后面两步要服务商配合 |
| 数据出处 | 铱星《ISU AT Command Reference》MAN0009 v5(2014-08-25)、《SBD 服务最佳实践指南》(2017-11-27)、《SBD 开发者指南》V2.01、厂家 Edge 数据手册与用户手册;现场规律来自蔡工装机与调试记录,核对日期 2026-09-24 |
铱星 SBD 的坑,一大半来自把它当成"实时在线的物联网卡"。它不是。SBD 走的是星上存储转发:终端把消息发给当时飞过头顶的那颗卫星,卫星转给地面网关,网关把消息放进收方的队列里等着,直到收方主动来取。理解这一条,下面这些问题就都能对上号。
两个必记的词:
- MO(Mobile Originated):设备发出去的。
- MT(Mobile Terminated):设备收进来的,先存在网关队列里。
这两条通道各自的长度上限,以及为什么有的资料写 340 字节、有的写 1960 字节,见 铱星 SBD 是什么 。
按这个顺序走,前四步不用求人:
| 查什么 | 怎么查 | 常见结论 |
|---|---|---|
| 1 信号 | AT+CSQ(铱星口径返回值越高越好)、看 Network Available 指示线 | 天线被金属挡住、装在建筑内或金属盖板下,先挪位置 |
| 2 电源 | 万用表盯发射瞬间的电压 | 电源带不动发射峰值,掉压复位,表现像"随机丢包" |
| 3 串口 | 两端波特率、数据位、校验、停止位逐项核对 | 铱星 Edge 9680 是固定 19200、8、N、1,不支持自动波特率 |
| 4 命令 | 看返回状态码,别只看"有没有返回" | +SBDIX 返回的 MO / MT 状态字段才说明问题 |
| 5 账户 | 把 IMEI 报给服务商查状态 | 未开通 SBD 业务、欠费暂停、被误设成别的业务 |
| 6 端点 | 让服务商确认投递配置 | 目标 IMEI / 服务器 IP 与端口 / 邮箱地址没配,消息无处可投 |
第 2 步最容易被跳过,也最容易误判。 发射瞬间的电流峰值:9602 与 9603 是 1.3 A,9604 是 4.5 A,Certus 9704 的功放是 7 A。电源、电池和走线如果按平均电流算,发射一瞬电压就掉下去,设备复位重启——看起来就是"有时候能发有时候不能发"。
按可能性从高到低排:
- 目标端点没配。 发给另一台终端要在服务商侧把对方 IMEI 配成投递地址;发到自己的服务器要配 IP 和端口。这两项都在开通时提交,终端上设不了,也是现场最常见的原因。
- 收方没去取件。 消息确实在网关里等着,但接收端没有轮询、也不在线,那就一直等。
- 网关队列满了。 每个 IMEI 最多排 50 条,超了网关直接拒收新消息。这通常意味着接收端处理速度跟不上发送速度。
- 超过 5 天被清掉了。 网关只保留 5 天,超期由每天例行的维护程序清队列。
- 多台设备同时发,撞在一起了。 见下一节。
这一条口径出自铱星官方《SBD 服务最佳实践指南》(2017-11-27)与《SBD 开发者指南》V2.01:GSS 为每个 IMEI 排队最多 50 条 MT 消息,消息自到达网关起最长保留 5 天,未取回的由网关清理。
典型场景是一组浮标、一批监测站往同一个岸基平台或同一台终端回传数据。结论是:技术上可以并发,但绝对不能同时发,也绝对不能只靠"发了就算完"。
| 问题 | 结论 | 现场怎么做 |
|---|---|---|
| 十几台能不能同一时刻发? | 不能。会撞在卫星信道和网关的缓冲区上,表现为会话建立失败或消息被丢 | 给每台设备设独立的发送时隙,例如按 0、5、10、15 分钟错开;接收端处理不过来时再拉大间隔 |
| 一台接收端能同时收多路吗? | 能收,但是顺序收,每次会话只拉一条 | 接收端循环"拉取 → 读取 → 清空",一条一条来 |
| 会不会丢包? | 设计不当会,而且概率不低;按下面三条做可以做到不丢 | ① 错时发送;② 应用层做 ACK 确认与重传;③ 接收端高频轮询并及时清空缓冲区 |
| 怎么知道积压了? | +SBDIX 的返回值里带队列中剩余消息数 | 这个数持续增长就是接收端处理不过来的告警信号 |
ACK 确认机制是可靠性的关键:发送端打包时给每条数据一个唯一编号(设备号加时间戳加序列号),收方收到后回一条含该编号的确认;发送端下次唤醒先查自己的 MT 缓冲区,收到匹配的确认才算成功,否则重传。这套逻辑要写在应用里——铱星只保证消息送到终端缓冲区,不保证你的应用正确处理了它。
SBD 的接收有两条路,都要提前准备:
| 方式 | 怎么用 | 前提 |
|---|---|---|
| 主动轮询 | 定期执行 AT+SBDIX(空 MO 就是一次"邮箱检查") | 无,最通用 |
| Ring Alert 提醒 | 网关主动通知终端"你有消息",终端再执行 AT+SBDIXA 去取 | 两个开关都要开:终端侧 AT+SBDMTA=1,且服务商侧开通 SBD Automatic Notification。只开一头不生效 |
这里有一个很隐蔽的坑:AT+SBDI 命令永远会请求 Detach。 官方 AT 命令参考原文写得很清楚——用 +SBDI 发消息等于同时告诉网关"给我把 Ring Alert 关掉"。所以只要你还想保留"网关主动提醒"的能力,就该用 +SBDIX 或 +SBDIXA,不要用 +SBDI。
另外,Ring Alert 只在终端已注册的状态下才有意义。长期休眠的设备如果发现收不到消息,先查注册状态:AT+SBDREG?,返回 2 表示已注册。
SBD 的注册跟位置有关。设备跑远了、还挂着老位置,网关算不到它,消息就送不过来。AT+SBDAREG 就是解决这个的(以下模式定义出自官方 AT 命令参考 MAN0009):
| 模式 | 名称 | 行为 |
|---|---|---|
| 0 | Disable(默认) | 关闭自动注册 |
| 1 | Automatic | 终端自己监测位置变化,跑得够远了就自动发起一次注册会话(不传 MO / MT 消息) |
| 2 | Ask | 终端监测到需要注册时,用 +AREG:0,0 通知现场应用,由应用决定何时注册 |
| 3 | Automatic 加事件报告 | 同模式 1,另外在位置变化不足以触发注册时报告事件 3 |
| 4 | Ask 加事件报告 | 同模式 2,同上 |
四条要记住的规矩:
- 自动注册只能用系统提供的位置。 如果你自己外接 GPS 提供位置,应该用人工注册命令
+SBDREG,别用自动注册。 - 自动注册只在终端已附着网关时运行(注册状态为"未注册"或"已注册")。所以通常要先做一次
+SBDREG或+SBDIX完成初始附着。 - 注册有频率限制:每 3 分钟只允许一次。 连着重试会返回错误码 36。蔡工现场遇到过"设了 +SBDAREG=1 反而不稳定",十有八九就是重试太密。
- 模式 3 和 4 不是所有固件都支持,官方注明只适用于 9602 TA11002 与 9602-SB TAD10006 及更新版本。老固件上设了不认。
终端上电后通常会做一次被动定位,之后大约每 20 分钟重新算一次位置变化——所以别指望"车一动就马上重新注册"。
这条最容易踩:消息被读走以后仍然留在缓冲区里,直到被新消息覆盖或被显式清掉。
| 命令 | 作用 |
|---|---|
AT+SBDS / AT+SBDSX | 查 MO / MT 缓冲区状态与序列号 |
AT+SBDD0 | 清 MO(发送)缓冲区 |
AT+SBDD1 | 清 MT(接收)缓冲区 |
AT+SBDD2 | 两个都清 |
接收端的标准动作是:AT+SBDIX 拉取 → AT+SBDRB 读取 → 立刻清空 → 再拉下一条。少清空那一步,数据看着像"被吞了"。
+AREG:<event>,<reg error> 与 +SBDIX 相关返回里常见的错误码:
| 码 | 含义 | 现场怎么处理 |
|---|---|---|
| 0 | 无错误 | — |
| 2 | 会话完成,但位置更新未被接受 | 位置数据有问题,查定位来源 |
| 15 | 访问被拒绝(如 SIM 卡问题) | 找服务商查卡与账户 |
| 16 | 终端被锁定 | 查 +CULK,可能被人工锁了 |
| 19 | 链路失败(协议错误导致呼叫终止) | 查固件与命令时序 |
| 32 | 无网络服务,无法发起呼叫 | 天线位置、遮挡、信号 |
| 33 | 天线故障,无法发起呼叫 | 天线与馈线,查驻波与接头 |
| 34 | 射频被禁用 | 查 *Rn 命令是否把射频关掉了 |
| 35 | 终端忙 | 会话冲突,拉开发送间隔 |
| 36 | 请稍后,距上次注册不足 3 分钟 | 注册重试太密,这是最常见的"莫名其妙失败" |
| 37 | SBD 服务被暂时禁用 | 找服务商 |
| 38 | 请稍后,流量管理期 | 查 +SBDLOE 的流量管理状态 |
发送会话的状态字段也要会读:+SBDIX 返回的 MO 状态 0 表示发送成功、1 表示消息发了但队列里的 MT 消息太大装不下、2 表示位置更新未接受;MT 状态 0 表示没收到新消息、1 表示成功收到一条、2 表示取件出错。
AT+CSQ有没有信号,天线位置对不对- 发射瞬间电压掉没掉,电源按峰值配了没有
- 串口参数两端是否一致(9680 固定 19200、8、N、1)
AT+SBDREG?注册状态是不是 2- 目标端点(IMEI / IP 端口 / 邮箱)服务商那边配了没有
- 接收端有没有轮询、有没有读完后清缓冲区
- 发送命令用的是
+SBDIX还是+SBDI(要收消息就别用+SBDI) - 多台设备是不是错时发的
| 关键词 | 一句话解读 |
|---|---|
| SBD 存储转发 | 消息先落网关队列等收方取件,不是实时链路 |
| 网关队列上限 | 每个 IMEI 最多 50 条 MT 消息,最长保留 5 天 |
| MO / MT | 设备发出去的 / 设备收进来的 |
| Ring Alert | 网关主动提醒有新消息,需终端与服务商两头都开 |
| +SBDI 会 Detach | 该命令永远请求 Detach,会关掉 Ring Alert |
| +SBDAREG | 自动注册,靠系统定位判断位置变化,每 3 分钟只能注册一次 |
| 错误码 36 | 距上次注册不足 3 分钟,重试太密 |
| 缓冲区清空 | 读完消息必须清缓冲区,否则被下一条覆盖 |
| 错时发送 | 多台设备不能同时发,要按不同时隙错开 |
铱星 SBD 消息发出去了,对方为什么收不到?
SBD 是存储转发,消息先进入网关队列等收方取件。最常见原因是目标端点未配置:发给另一台终端要在服务商侧把对方 IMEI 配成投递地址,发到自己的服务器要配 IP 与端口,两项都在开通时提交,终端上设不了。其次是接收端没有轮询取件、网关队列已满 50 条、或信息超过 5 天被网关清理。
铱星 SBD 网关能存多少条消息、存多久?
按铱星官方 SBD 最佳实践指南与开发者指南,网关 GSS 为每个 IMEI 最多排队 50 条 MT 消息,消息自到达网关起最长保留 5 天,未取回的由网关例行清理。
多台铱星终端同时发数据会不会丢包?
同一时刻并发发送极易造成冲突与丢失,必须为每台设备设置错开的发送时隙。接收端是顺序接收,每次会话只拉取一条消息,需循环执行拉取、读取、清空缓冲区。应用层还应实现带唯一编号的 ACK 确认与重传机制。
为什么用 AT+SBDI 之后收不到消息了?
铱星 AT 命令参考明确写道 +SBDI 命令永远会请求 Detach,等于让网关关闭该终端的 SBD Ring Alert。要保留网关主动提醒能力,应改用 +SBDIX 或 +SBDIXA。
铱星 SBD 自动注册怎么设置,为什么老是失败?
用 AT+SBDAREG 设置:0 关闭、1 自动、2 询问、3 与 4 为带事件报告的扩展模式(仅部分固件支持)。自动注册只能用系统提供的位置,自行提供 GPS 位置时应改用 +SBDREG。注册每 3 分钟只允许一次,重试过密会返回错误码 36。
铱星 SBD 终端像随机丢包、重启后又能用,是什么原因?
优先怀疑供电。发射瞬间电流峰值很高:9602 与 9603 为 1.3 A、9604 为 4.5 A、Certus 9704 功放为 7 A。电源、电池与走线若按平均电流设计,发射瞬间会掉压导致设备复位,表现就像随机丢包。
- 铱星 Iridium Edge 9680 数传终端:参数、接口、安装与选型
- 铱星 EDGE 9680 接线与 AT 命令实战:从通电到收发
- 铱星 9602 / 9603 / 9604 与 Certus 9704 怎么选
