内核添加模块

在 drivers/usb/serial/option.c

短信相关

​ 发送短信的流程就是配置短信模式->配置字符集->下发发送命令->等待,提示符->发送正文/PDU ->发送ctrl+z –>等待结果

TEXT 格式

AT+CMGF=1 //设置短信为文本模式

PDU格式

​ PDU模式不仅能发送中文短信,也能发送英文短信。PDU收发短信有三种编码可用:7-bit、8-bit和UCS2编码。GSM 7-bit 默认字母表不是 ASCII;不带用户数据头时最多 160 个 septet,扩展表字符会占两个 septet。8-bit 编码通常用于二进制数据;UCS-2 可表示中文等 BMP 字符,不带用户数据头时最多 70 个码元。长短信的 UDH 会减少每段可用长度。

AT+CMGF=0 // 设置 PDU 模式;发送命令另用 AT+CMGS=<TPDU 字节数>

发送 PDU(SMS-SUBMIT)

数据格式:

SCAPDU-TypeMRDAPIDDCSVPUDLUD
1-12112-12110,1,710-140
  • SCA 短消息服务中心号码

  • PDU-Type 协议数据单元类型(1字节)

    • 发送时

    • BIT76543210
      参数RPUDHISRRVPFVPFRDMTIMTI
    • MTI 2bit:消息类型,00表示收,01表示发

    • RD 1bit:重复信元丢弃。0通知服务中心碰到同源、同目的地、同样的MR(短消息序号)的短消息接受;

    • VPF 2bit:00 表示 VP 不存在;10 为 1 字节相对有效期;01 为 7 字节增强格式;11 为 7 字节绝对有效期(半字节编码)。

    • SRR 1bit:是否请求状态报告。

  • MR 是发送方设置的 8 位消息参考号(0~255),用于关联发送消息及状态报告,不是成功发送的短信总数。

  • DA 接收方地址(手机号码 半字节倒序编码)

  • PID 协议标识

  • DCS 编码方法和消息类别 (UCS2编码0等级为08H,7bit编码是00H)

  • VP 有效期

    • 0 到 143 $(V + 1) \times 5$ 分钟 5 分钟 到 12 小时
    • 144 到 167 $12$ 小时 $+ (V - 143) \times 30$ 分钟 12.5 小时 到 24 小时
    • 168 到 196 $(V - 166) \times 1$ 天 2 天 到 30 天
    • 197 到 255 $(V - 192) \times 1$ 周 5 周 到 63 周

例如:

//向15050850677发送一条短信,内容“Test”
//0011000D91685150800576F70000C404D4F29C0E
//向15050850677发送一条短信,内容“你好”
//0011000B815150800576F70008C4044F60597D
SCAPDU-TypeMRDAPIDDCSVPUDLUD
1-12112-12110,1,710-140
0011000D91685150800576F70000C404D4F29C0E
0011000B815150800576F70008C4044F60597D

关键字段

DA/OA:接收方与发送方地址

DA与OA编码方式是一样的 2-12个8位位组

例如:0D91685150800576F7

DA LENDA TYPE 目标号码的类型DA ADDR 存储目的地址号码
0D (一个字节,表示DA ADDR长度)91(国际型)685150800576F7 占用 ceil(DA LEN/2) 字节

短信配置流程

//1.设置短信编码格式为PDU
AT+CMGF=0 
/**
 *	2. 设置短信上报方式  <mode>,<mt>,<bm>,<ds>,<bfr>
 <mode> 2  缓存通知      当串口忙(如处于数据模式)时,模块会暂时缓存通知,待回到指令模式后再发送
 <mt>   1  存储索引通知  收到短信后,模块将其存入 SIM 卡或 Flash,然后通过串口主动发送+CMTI: "ME", index
 		与 2(直接把短信内容吐到串口)相比, 1具有以下的优势,
   数据安全:短信先存盘,避免由于串口波特率太高或单片机/嵌入式系统处理不及时导致的数据丢失。
   解析简单:你的程序只需要监听 +CMTI 这个特征字符串,然后根据索引去读取,逻辑更加解耦。
   防止干扰:如果短信很长或者是 PDU 格式,直接吐出大量数据可能会干扰到正在进行的 AT 指令交互。
 		
 <bm>   0  不广播       不向TE终端主动发送小区广播消息
 <ds>   0  无状态报告    不主动发送短信状态报告(即确认对方是否收到的回执)
 <bfr>  0  输出缓存      进入相应通知模式后向 TE 输出缓存的通知;1 才表示清除缓存而不输出。
 */ 
AT+CNMI=2,1,0,0,0

打电话

测试

通过microcom 与/dev/ttyUSB 进行通信

  • -t 超过多少ms超时
  • -s 设置波特率

常用命令

AT+CGMM 请求 MT 型号 ID

上网

查询信号强度:

//+CSQ: <rssi>,<ber>
AT+CSQ
+CSQ: 24,99 //rssi越接近31信号越强
OK

rssi:

//查询命令 响应+CREG: <n>,<stat>[,<lac>,<ci>[,<AcT>]]
AT+CREG?

EG800G

EG800G/ EC800G

下表仅作为特定固件的端口观察记录。ttyUSB 编号会受枚举顺序、接口组合及其他 USB 串口设备影响,不应跨型号、固件版本写死;需对照对应型号手册和 USB 接口信息确认。

设备节点用途能否发 AT
/dev/ttyUSB0AT 命令口✅ 最推荐
/dev/ttyUSB1DIAG/AP log❌
/dev/ttyUSB2调试串口,目前无实际作用❌
/dev/ttyUSB3CP log❌
/dev/ttyUSB4Modem / AT 命令✅ 也可以
/dev/ttyUSB5GNSS / AT 命令,部分 GA 型号✅ 条件支持

参考:3GPP TS 27.005;3GPP TS 23.040。