1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 测试AT通信
AT

# 查询模块基本信息
ATI

# 查询SIM卡状态
AT+CPIN?

# 查询SIM卡ICCID
AT+ICCID

# 查询IMSI号
AT+CIMI

# 查询网络附着状态
AT+CGATT?

# 查询网络注册状态
AT+CEREG?
AT+C5GREG?

# 查询运营商信息
AT+COPS?

# 查询信号强度
AT+CSQ

# 查询详细小区信息(美格)
AT^CELLINFO=1

# 配置PDP上下文(IP、APN等)
# 中国联通APN: 3gnet
# 中国移动APN: cmnet
# 中国电信APN: ctnet
AT+CGDCONT=1,"IP","3gnet"

# 查询当前PDP上下文配置
AT+CGDCONT?

# 激活PDP上下文(正式拨号)
AT+CGACT=1,1

# 确认PDP上下文激活状态
AT+CGACT?

# 查看IP地址
AT+CGPADDR=1

# 查看详细网络信息
AT+CGCONTRDP=1

# 查看ECMDUP
AT+ECMDUP?

网络配置相关

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 启用网卡
ip link set modem.0 up

# 查看数据通路
cat /sys/class/net/modem.0/carrier # 期望输出 1(链路通)
cat /sys/class/net/modem.0/operstate # 期望输出 up

# 启动dhcp
# OpenWrt 环境(推荐,和自动拨号程序同款参数)
udhcpc -i modem.0 -f -n -q -t 5 -T 2 -s /lib/netifd/dhcp.script
# 通用 Linux(busybox 默认脚本,自动写 /etc/resolv.conf)
udhcpc -i modem.0
# 但是上面的跑不通(!!!!!!!!!!!)
udhcpc -i modem.0 -f -n -q -t 5 -T 2


# 手动配置DNS
vim /etc/resolv.conf
or
echo "nameserver 120.80.80.80" > /etc/resolv.conf

# 检查路由表
route -n

# 添加默认路由
ip route add default via 10.4.253.1 dev modem.0

# 删除所有错误路由
ip route flush dev modem.0

# 清理所有手动配置
ip addr flush dev modem.0
ip route flush dev modem.0

# 查看arp
arp -a

给的那条命令里的 -s /lib/netifd/dhcp.scriptnetifd 内部专用脚本,它靠 netifd 通过 ubus 给它传环境变量、再回写 netifd。你手动直接跑 udhcpc 时没有 netifd 的上下文,脚本内部调用的命令找不到,就报 Command failed: Not found

结果就是:udhcpc 和模组协商成功了(拿到了 lease),但脚本没能把 IP 写进内核。你 ifconfigmodem.0 只有 IPv6(fe80::...没有 IPv4,就是证据——lease 在手里,没落地。

1
2
# 正确命令(去掉 -s /lib/netifd/dhcp.script)
udhcpc -i modem.0 -f -n -q -t 5 -T 2

这样 udhcpc 会用 busybox 自带的默认脚本(OpenWrt 上是 /usr/share/udhcpc/default.script),它会正确地**配 IP + 加默认路由 + 写 resolv.conf(不会写DNS的!!)**。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 0. 先确认模组状态正常
AT+CPIN? # 期望 +CPIN: READY
AT+CEREG? # 期望 +CEREG: 1,1 或 1,5(已注册)
AT+C5GREG? # 5G SA 模式下看这个

# 1. 配 APN(展锐也用 CGDCONT)
AT+CGDCONT=1,"IP","3gnet" # APN 按运营商改:移动3gnet/联通3gnet/电信ctnet

# 2. 【关键】美格展锐专用拨号命令,不是 CGACT!
AT+ECMDUP=1,0 # 先清理旧会话(幂等,防止残留状态导致 ERROR)
AT+ECMDUP=1,1 # 激活数据通路(内部完成 PDP 激活 + ECM/NCM 建立)

# 3. 验证数据通路真的起来了
AT+CGACT? # 此时才应看到 +CGACT: 1,1
cat /sys/class/net/modem.0/carrier # 现在应该输出 1 了 ← 关键标志

# 4. 网卡 up + DHCP(数据通路通了,这步才有效)
ip link set dev modem.0 up
udhcpc -i modem.0 -f -n -q -t 5 -T 2 -s /lib/netifd/dhcp.script


# 原来的通用拨号(对展锐平台无效):
# AT+CGACT=1,$CID

# SRM821 展锐平台应改为:
AT+ECMDUP=$CID,0 # 先清理
AT+ECMDUP=$CID,1 # 激活数据通路