Teltonika TRM250/Quectel BG96使用gammu无法接收SMS送达报告问题排查
排查步骤
1. 启用Gammu底层AT交互日志
你当前配置中[gammu]段的logformat = nothing会屏蔽调制解调器的原始AT指令交互记录,无法判断设备是否真的上报了送达报告,首先修改配置:
- 将
logformat = nothing改为logformat = textall - 新增
LogFile = /var/log/gammu-at.log到[gammu]段,单独记录AT交互
修改后重启gammu-smsd服务,后续所有调制解调器和服务端的指令交互都会写入上述日志文件。
2. 验证调制解调器的送达报告上报配置
Quectel BG96默认不会主动向串口上报短信送达报告,需要通过AT指令开启两个核心配置,你可以先通过minicom/screen连接到/dev/ttyUSB2手动下发指令测试:
- 首先开启短信阶段2支持,允许状态报告接收:
AT+CSMS=1 - 配置新消息上报规则,将送达报告主动推送至串口:
AT+CNMI=2,1,0,2,0
下发指令后如果返回OK,手动发送一条测试短信,查看AT日志中是否出现以+CDS:开头的上报内容,该内容即为运营商返回的送达报告。
3. 将初始化指令加入Gammu配置
如果手动测试可以正常收到+CDS上报,说明设备需要额外初始化指令,在[gammu]段添加以下配置即可让服务启动时自动下发指令:
init1 = AT+CSMS=1 init2 = AT+CNMI=2,1,0,2,0
4. 验证送达报告记录
完成配置修改后重启gammu-smsd服务,发送测试短信,正常情况下你会在syslog的gammu-smsd日志中看到送达报告的匹配记录,已发送短信的状态也会同步更新。
配置修改参考示例
[gammu] device = /dev/ttyUSB2 connection = at115200 synchronizetime = no logformat = textall LogFile = /var/log/gammu-at.log init1 = AT+CSMS=1 init2 = AT+CNMI=2,1,0,2,0 [smsd] Service = sql Driver = native_mysql LogFile = syslog DebugLevel = 255 DeliveryReport = log SMSC = +xxxxxx StatusFrequency = 300 ReceiveFrequency = 60 User = xxx Password = xxx Host = localhost Database = xxx
内容的提问来源于stack exchange,提问作者Marie Fischer
相关产品推荐
相关产品推荐

