RK3588 4G 拨号与 SIM 卡调试指南
本文档记录 RK3588 板子通过 4G 模组(SIM7600CE)上网的完整流程,以及 SIM 卡状态查询、常见问题排查。
适用环境: RK3588 板子(industio),Ubuntu 系统,4G 模组 SIM7600CE。
主方案:USB 网卡方式(QMI/NDIS),基于芯讯通官方 NDIS 驱动调试文档。该方案已实测通过,开机自动拨号 + WireGuard 远程访问全链路稳定。
方案选择说明
SIM7600 上网有两种方式,本指南以USB 网卡方式(wwan0)为主:
| 方式 | 接口 | 说明 | 本指南 |
|---|---|---|---|
| USB 网卡方式(推荐) | wwan0 | 数据走 USB 网卡接口(Interface 5),协议协商在模组固件内完成,稳定、低 CPU、满速 | ✅ 主方案 |
| PPP 拨号方式 | ppp0 | 数据走串口(ttyUSB2)+ PPP 协议,依赖 wvdial/pppd,易掉线、易触发风控 | 已弃用,见附录 |
为什么选 wwan0:PPP 方式在用户态处理 LCP/CHAP/IPCP 协商,每一步都可能失败(exit code 16),且失败重连密集发请求易触发运营商风控封卡。wwan0 方式协议协商全在模组固件完成,板子只管收发 IP 包,断线由模组自动维护,不会疯狂重连。
一、模组与 SIM 卡的关系(必读)
理解三者分层,排查问题时能精准定位是哪一层故障:
┌──────────────────────────────────────────────┐ │ 互联网 │ └──────────────────────▲───────────────────────┘ │ 4G 无线信号 ┌────────┴────────┐ │ 运营商基站 │ ← 网络层 └────────▲────────┘ │ ╔══════════════╧══════════════╗ ║ SIM7600CE 模组 ║ ← 通信层 ║ - 基带处理器(协议栈) ║ 职责:无线调制解调、 ║ - 射频芯片 + 天线 ║ AT 指令响应、 ║ - SIM 卡槽 ║ 协议协商 ║ - USB 接口(5 串口+网卡) ║ ╚══════════════╤══════════════╝ │ USB 总线 ┌───────────────┴───────────────┐ │ RK3588 板子(Ubuntu) │ ← 主机层 │ - 通过 USB 控制模组 │ 职责:发 AT 指令、 │ - udhcpc 拿 IP │ 维护 wwan0 接口、 │ - WireGuard 隧道 │ 跑业务程序 └───────────────────────────────┘| 层级 | 硬件 | 职责 | 故障现象 |
|---|---|---|---|
| 身份层 | SIM 卡 | 存 IMSI/鉴权密钥,证明有权用运营商网络 | +CGREG: 0,3注册被拒;手机显示"只能紧急呼叫" |
| 通信层 | SIM7600CE 模组 | 无线收发、协议栈、AT 指令 | AT无响应;+CSQ: 99,99无信号 |
| 主机层 | RK3588 | 发 AT、维护接口、跑业务 | wwan0 不存在;udhcpc 拿不到 IP |
关键认知:SIM 卡是身份证,模组是手机,板子是大脑。三者缺一不可:板子发指令 → 模组读 SIM 卡身份去注册 → 运营商核对 SIM 卡 → 放行上网。
二、确认 4G 模组串口与接口
SIM7600 通过 USB 枚举出多个设备。根据官方文档,接口分配为(VID 0x1E0E / PID 0x9001):
| Interface | 设备 | 用途 |
|---|---|---|
| 0 | ttyUSB0 | 诊断口 |
| 1 | ttyUSB1 | GPS NMEA |
| 2 | ttyUSB2 | AT 指令口(拨号用) |
| 3 | ttyUSB3 | Modem 口 |
| 4 | ttyUSB4 | 音频口 |
| 5 | wwan0 + cdc-wdm0 | USB 网卡接口(数据通道) |
2.1 查看已识别的串口
ls/dev/ttyUSB*输出示例:/dev/ttyUSB0 ... /dev/ttyUSB4
2.2 查看内核识别日志
dmesg|grepttyUSB2.3 确认 wwan0 和 cdc-wdm0(关键)
wwan0 方式依赖这两个设备:
ls/dev/cdc-wdm0iplinkshow wwan0必须都存在。
wwan0是 USB 网卡,cdc-wdm0是 QMI 控制口。
若驱动未识别 Interface 5,需参考官方文档修改内核 option.c / qmi_wwan.c(本环境厂商内核已处理,无需改动)。
三、测试串口与 AT 指令
用minicom测试 AT 通信(后续脚本用 socat 自动化,但调试时 minicom 最直观)。
3.1 连接串口
sudominicom-D/dev/ttyUSB2-b1152003.2 测试 AT
输入AT回车,应返回OK。无响应则串口不对,试ttyUSB1/ttyUSB3。
3.3 常用 AT 指令速查
| 指令 | 作用 | 正常返回 |
|---|---|---|
AT | 测试串口 | OK |
AT+CPIN? | SIM 卡状态 | +CPIN: READY |
AT+CSQ | 信号质量 | +CSQ: 25,99(rssi>15 为好;99,99 为无信号) |
AT+COPS? | 当前运营商 | +COPS: 0,0,"CMCC",7(7=4G) |
AT+CGREG? | GPRS 注册状态 | +CGREG: 0,1(1/5=已注册,3=被拒,0=未注册) |
AT+CEREG? | EPS(4G) 注册状态 | +CEREG: 0,1 |
AT+CIMI | IMSI(查运营商) | 46004...(46004=移动,46001=联通,46011=电信) |
AT$QCRMCALL=1,1 | 拨号上网 | $QCRMCALL: 1, V4+OK |
AT$QCRMCALL=0,1 | 挂断 | OK |
AT+CFUN=1,1 | 重启模组 | 走完PB DONE |
3.4 退出 minicom
Ctrl+A→X→ 回车
四、USB 网卡方式(wwan0)手动拨号
理解原理后再做自动化。手动流程如下(基于官方 NDIS 文档):
4.1 安装工具
sudoaptinstallsocat udhcpc-y
socat用于脚本里可靠发 AT 指令(chat 不可靠,见附录说明)。
4.2 手动拨号四步
# 1. 关闭 wwan0,设 raw_ip(raw_ip 必须在 down 状态设)sudoiplinksetwwan0 downsleep1echo"Y"|sudotee/sys/class/net/wwan0/qmi/raw_ipcat/sys/class/net/wwan0/qmi/raw_ip# 确认是 Y# 2. 用 minicom 拨号(最可靠)sudominicom-D/dev/ttyUSB2-b115200# 进入后输入:AT$QCRMCALL=1,1# 看到 "$QCRMCALL: 1, V4" 后退出(Ctrl+A → X)# 3. 拉起 wwan0 接口sudoiplinksetwwan0 upsleep2# 4. 获取 IPsudoudhcpc-iwwan0-q-t8ipaddr show wwan0|grepinet4.3 验证联网
ping-Iwwan0-c3223.5.5.5拿到 IP 且能 ping 通,说明 4G 正常。
4.4 关键说明
- raw_ip 模式:SIM7600 要求 wwan0 设为 raw_ip,且必须在接口 down 时设置(UP 状态会报
Device or resource busy)。 - AT$QCRMCALL:官方文档第 4.3 节标准拨号指令,激活 RmNet 数据连接,模组内部完成 CHAP/IPCP 协商。
- udhcpc:嵌入式 Linux 用 udhcpc 从模组获取 IP(PC Linux 用 ifconfig down/up 让 NetworkManager 自动 DHCP)。
五、开机自动拨号(systemd 服务)
将手动流程固化为开机自启服务。核心难点:脚本里如何可靠地自动发 AT 指令——经实测chat不可靠,改用socat。
5.1 关于发 AT 的工具选择
| 工具 | 可靠性 | 说明 |
|---|---|---|
| minicom | ✅ 可靠 | 交互式,不能用于脚本 |
| socat | ✅ 可靠 | 一条命令发+收,无引号转义问题,本方案采用 |
| chat | ❌ 不可靠 | 引号、$转义、终端回显干扰,多次验证失败 |
| printf+stty | ⚠️ | stty 常报unable to perform all requested operations |
验证 socat 可用:
echo-e"AT\r"|sudosocat - /dev/ttyUSB2,b115200,raw,echo=0,cr2>&1# 应返回 AT / OK5.2 创建拨号脚本
sudonano/usr/local/bin/qmi-connect.sh写入:
#!/bin/bashexportPATH=/usr/sbin:/usr/bin:/bin:$PATH# SIM7600 QMI/NDIS 4G 自动拨号脚本# 方式:raw_ip + AT$QCRMCALL=1,1 + udhcpc(基于官方 NDIS 文档)# 用 socat 发 AT,避免 chat 的引号/转义/回显问题PORT=/dev/ttyUSB2IFACE=wwan0LOG=/var/log/qmi-4g.log# 同时输出到日志和控制台log(){echo"$(date'+%F %T')$1"|tee-a$LOG;}send_at(){echo-e"$1\r"|socat -$PORT,b115200,raw,echo=0,cr2>/dev/null}log"===== 启动 QMI 连接 ====="# 1. 等待 AT 口就绪foriin$(seq130);do[-c"$PORT"]&&breaksleep1done[!-c"$PORT"]&&{log"[失败] AT 口不存在,4G 无法启动";exit1;}chmod666$PORT2>/dev/null# 2. 等待模组上电与注册(开机后约需 30 秒)log"[进行中] 等待模组上电与注册(30秒)..."sleep30# 3. 关闭 wwan0,设 raw_ip(必须在 down 状态设)iplinkset$IFACEdown2>/dev/nullsleep2echo"Y">/sys/class/net/$IFACE/qmi/raw_ip2>/dev/null log"[进行中] raw_ip 模式:$(cat/sys/class/net/$IFACE/qmi/raw_ip2>/dev/null)"# 4. 挂断可能残留的连接send_at'AT$QCRMCALL=0,1'>/dev/nullsleep2# 5. 拨号(AT$QCRMCALL=1,1,官方方式),延时 2 秒后继续log"[进行中] 执行 AT\$QCRMCALL=1,1 拨号..."send_at'AT$QCRMCALL=1,1'>/dev/nullsleep2# 6. 拉起 wwan0 接口iplinkset$IFACEupsleep2# 7. 获取 IPlog"[进行中] udhcpc 获取 IP..."udhcpc-i$IFACE-q-t8-n2>&1|tail-2>>$LOG# 8. 验证 4G 是否拿到 IPifipaddr show$IFACE2>/dev/null|grep-q"inet ";thenIP=$(ipaddr show $IFACE|grep-o'inet [0-9.]*'|awk'{print $2}')log"[成功] 4G 网络已就绪,IP:$IP"iprouteadddefault dev$IFACEmetric1002>/dev/nullelselog"[失败] 4G 未获取到 IP"exit1fi# 9. 检测 4G 联网log"[检测中] 测试 4G 联网(ping 223.5.5.5)..."ifping-I$IFACE-c2-W3223.5.5.5>/dev/null2>&1;thenlog"[成功] 4G 联网正常"elselog"[警告] 4G 联网测试失败,但已获取 IP"fi# 10. 检测 WireGuard(SSH 远程访问依赖它)log"[检测中] 等待 WireGuard 隧道建立..."WG_OK=0foriin$(seq112);doifiplinkshow wg02>/dev/null|grep-q"UP";thenifwg show2>/dev/null|grep-q"latest handshake";thenlog"[成功] WireGuard 隧道已建立,SSH 可远程连接"log"========================================"log" 4G 已就绪,SSH 远程访问已就绪"log" 远程访问: ssh 用户名@10.88.0.4"log"========================================"WG_OK=1breakfifisleep5done["$WG_OK"-eq0]&&log"[警告] WireGuard 未就绪,SSH 可能暂时无法远程连接"exit05.3 创建断开脚本
sudonano/usr/local/bin/qmi-disconnect.sh#!/bin/bashexportPATH=/usr/sbin:/usr/bin:/bin:$PATHPORT=/dev/ttyUSB2IFACE=wwan0echo-e"AT\$QCRMCALL=0,1\r"|socat -$PORT,b115200,raw,echo=0,cr2>/dev/nulliplinkset$IFACEdown2>/dev/nullecho"$(date'+%F %T'): QMI 已断开">>/var/log/qmi-4g.logexit05.4 赋予权限 + 修换行符
sudochmod+x /usr/local/bin/qmi-connect.sh /usr/local/bin/qmi-disconnect.shsudosed-i's/\r$//'/usr/local/bin/qmi-connect.sh /usr/local/bin/qmi-disconnect.sh修换行符很关键:从 Windows 端编辑的脚本带 CRLF,Linux 解析时报
203/EXEC,systemd 无法执行。
5.5 创建 systemd 服务
sudotee/etc/systemd/system/qmi-4g.service>/dev/null<<'EOF' [Unit] Description=SIM7600 QMI/NDIS 4G Connection After=network-online.target Wants=network-online.target [Service] Type=oneshot RemainAfterExit=yes ExecStartPre=/bin/sh -c "sleep 15" ExecStart=/usr/local/bin/qmi-connect.sh ExecStop=/usr/local/bin/qmi-disconnect.sh Restart=on-failure RestartSec=30 [Install] WantedBy=multi-user.target EOF5.6 启用并测试
sudosystemctl daemon-reloadsudosystemctlenableqmi-4gsudosystemctl start qmi-4g# 实时看进度tail-f/var/log/qmi-4g.log5.7 重启验证开机自启
sudoreboot重启后等约 2 分钟(开机 + sleep 15 + 等模组 30 秒 + 拨号 + WireGuard 握手),验证:
systemctl status qmi-4g --no-pager|grepActiveipaddr show wwan0|grepinetping-Iwwan0-c3223.5.5.5cat/var/log/qmi-4g.log|tail-15sudowg show|grep-E"latest|endpoint"5.8 启动进度提示说明
脚本会逐步打印状态(同时进日志 + 控制台),便于判断 4G 何时 OK、SSH 何时可连:
[时间] ===== 启动 QMI 连接 ===== [时间] [进行中] 等待模组上电与注册(30秒)... [时间] [进行中] raw_ip 模式: Y [时间] [进行中] 执行 AT$QCRMCALL=1,1 拨号... [时间] [进行中] udhcpc 获取 IP... [时间] [成功] 4G 网络已就绪,IP: 10.x.x.x ← 4G OK 的时刻 [时间] [检测中] 测试 4G 联网(ping 223.5.5.5)... [时间] [成功] 4G 联网正常 [时间] [检测中] 等待 WireGuard 隧道建立... [时间] [成功] WireGuard 隧道已建立,SSH 可远程连接 ← SSH 可连的时刻 [时间] ======================================== [时间] 4G 已就绪,SSH 远程访问已就绪 [时间] 远程访问: ssh 用户名@10.88.0.4 [时间] ========================================查看提示:
cat /var/log/qmi-4g.log—— 随时查tail -f /var/log/qmi-4g.log—— 实时看journalctl -u qmi-4g—— systemd 日志
关于 SSH 何时可连:板子侧能准确知道 4G 何时通(拿到 IP)。SSH 能否连还取决于 WireGuard 握手成功——脚本用
wg show | grep "latest handshake"检测,握手成功即代表隧道建立,SSH 可远程连接(前提是 Windows 端 WireGuard 也已激活)。
六、查询 SIM 卡 / 模组状态
用mmcli(ModemManager)或 AT 指令查询。注意:wwan0 方式不依赖 ModemManager,但 mmcli 仍可用来查状态。
6.1 mmcli 查询
mmcli-m0关键字段:
| 字段 | 含义 | 正常值 |
|---|---|---|
state | 连接状态 | connected |
access tech | 接入技术 | lte(4G) |
signal quality | 信号强度 | >30% |
registration | 网络注册 | home(归属)或roaming(漫游) |
packet service state | 数据业务 | attached |
operator name | 运营商 | CMCC/中国联通/中国电信 |
ports | 端口分配 | ttyUSB2 (at)确认 AT 口 |
6.2 AT 指令查询(推荐,wwan0 方式下更直接)
# 用 socat 发 AT(脚本化)echo-e"AT+CGREG?\r"|sudosocat - /dev/ttyUSB2,b115200,raw,echo=0,cr或用 minicom 交互式查询(见第三章)。
七、常见问题排查
7.1 排障流程图
4G 拨号失败 / 拿不到 IP │ ▼ AT 指令有响应吗?(echo "AT\r" | socat ...) ├── 无响应 ──► 串口被占用 / 模组挂了 │ → pkill 占用进程、rm lock 文件、AT+CFUN=1,1 重启模组 └── 有响应 ──► 继续往下 │ ▼ AT+CGREG? 返回什么? ├── 0,3(注册被拒)──► SIM 卡被运营商停机! │ → 插手机验证("只能紧急呼叫"=卡被停) │ → 联系供应商查卡状态/解封 ├── 0,0 / 0,4 ──► 未注册,等久一点或查信号/频段 └── 0,1 / 0,5 ──► 已注册,继续往下 │ ▼ AT$QCRMCALL=1,1 返回什么?(用 minicom 看) ├── $QCRMCALL: 1, V4 ──► 拨号成功,问题在拿 IP(raw_ip/udhcpc) ├── ERROR ──► 挂断残留 AT$QCRMCALL=0,1 后重试,或 AT+CFUN=1,1 复位 └── 无响应 ──► chat 不可靠,改用 socat │ ▼ udhcpc 拿到 IP 了吗? ├── no lease ──► raw_ip 没设成功?接口没 up?模组没真拨通? └── 拿到 IP ──► 成功7.2 常见问题对照表
| 现象 | 原因 | 解决方法 |
|---|---|---|
udhcpc: no lease, failing | chat 发 AT 没真正拨通模组 | 换 socat 发 AT(见 5.1) |
stty: unable to perform all requested operations | 串口被占用 | pkill占用进程、rmlock 文件 |
systemd: 203/EXEC | 脚本无执行权限或 CRLF 换行符 | chmod +x+sed -i 's/\r$//' |
Cannot change a running device | raw_ip 在接口 UP 状态设置 | 先ip link set wwan0 down再设 |
+CGREG: 0,3注册被拒 | SIM 卡被运营商停机 | 插手机验证,联系供应商解封 |
| 手机显示"只能紧急呼叫" | SIM 卡停机/欠费/未实名 | 联系供应商查卡状态 |
+CSQ: 99,99无信号 | 天线/射频问题 | 检查天线接触、是否接 MAIN 口 |
AT+COPS=?返回空 | 搜不到运营商 | 天线、频段、或 SIM 卡注册被拒 |
exit code = 16(PPP 方式) | CHAP 成功后模组挂断 | 改用 wwan0 方式(见附录) |
| 重启后 4G 不通 | 脚本启动太早 / chat 不可靠 | 加大 sleep、换 socat |
sudo: unable to resolve host | /etc/hosts 缺主机名映射 | echo "127.0.0.1 主机名" >> /etc/hosts |
7.3 常用排查命令
# 串口是否被占用sudofuser/dev/ttyUSB2sudolsof/dev/ttyUSB2# 清理串口占用sudopkill-9minicom udhcpc chat socat2>/dev/nullsudorm-f/var/lock/LCK..ttyUSB2 /run/lock/LCK..ttyUSB2# 查 4G 服务状态和日志systemctl status qmi-4g --no-pagercat/var/log/qmi-4g.log journalctl-uqmi-4g --no-pager|tail-30# 查模组状态(AT 指令,用 socat)echo-e"AT+CGREG?\r"|sudosocat - /dev/ttyUSB2,b115200,raw,echo=0,crecho-e"AT\$QCRMCALL?\r"|sudosocat - /dev/ttyUSB2,b115200,raw,echo=0,cr# 查 wwan0 接口和路由ipaddr show wwan0cat/sys/class/net/wwan0/qmi/raw_ipiproute7.4 应急手动恢复 4G
自启失败时,手动恢复:
# 1. 停服务,清理串口sudosystemctl stop qmi-4gsudopkill-9socat chat udhcpc2>/dev/nullsudorm-f/var/lock/LCK..ttyUSB22>/dev/null# 2. 用 minicom 手动拨号(最可靠)sudominicom-D/dev/ttyUSB2-b115200# 输入 AT$QCRMCALL=1,1,看到 $QCRMCALL: 1, V4 后退出(Ctrl+A → X)# 3. 拿 IPsudoiplinksetwwan0 downsleep1echo"Y"|sudotee/sys/class/net/wwan0/qmi/raw_ipsudoiplinksetwwan0 upsudoudhcpc-iwwan0-q-t8ping-Iwwan0-c3223.5.5.5八、避免 SIM 卡被运营商封禁
板子频繁重启 + PPP 方式密集重连,易触发运营商风控封卡。wwan0 方式已大幅降低此风险(模组自动维护连接,不疯狂重连),但仍需注意:
- 拨号前确认 SIM 已注册(
AT+CGREG?返回0,1)—— 没注册就拨号浪费请求 - 失败退避重试—— 脚本
RestartSec=30,不密集重连 - 调试时用网线就关 4G——
systemctl stop qmi-4g减少不必要拨号 - 物联卡注意:APN 可能是
cmiot而非cmnet;异常使用(频繁断连)会被运营商临时封停 - 卡被封的症状:
+CGREG: 0,3+ 手机显示"只能紧急呼叫" → 联系供应商解封
附录 A:PPP 拨号方式(已弃用,仅供参考)
本方案已改用 wwan0。PPP 方式仅作历史记录和应急备用。
PPP 方式用 wvdial + pppd 通过串口走 PPP 协议拨号,生成 ppp0 接口。
配置文件/etc/wvdial.conf
[Dialer Defaults] Modem = /dev/ttyUSB2 Baud = 115200 Init1 = ATZ Init2 = AT+CGDCONT=1,"IP","cmnet" Phone = *99# Username = cmnet Password = cmnet Stupid Mode = 1 Dial Command = ATDT运营商 APN:移动cmnet、联通3gnet、电信ctnet、物联卡可能为cmiot。
为什么弃用 PPP
- exit code 16:CHAP 认证成功后模组立即挂断,难以根治
- 易触发风控:失败后 wvdial 自动 5 秒重连,密集请求导致 SIM 卡被封
- CPU 占用高:PPP 协议在用户态处理
- 速度受限:串口带宽限制
PPP 方式被弃用的转折
实测中,SIM 卡因 PPP 反复重连被封禁(+CGREG: 0,3),解封后改用 wwan0 方式,未再出现封卡问题。
附录 B:发 AT 指令的工具对比
脚本里自动发 AT 是关键,工具选择直接决定可靠性:
| 工具 | 可靠性 | 用法 | 问题 |
|---|---|---|---|
| minicom | ✅ 最可靠 | 交互式 | 不能用于脚本自动化 |
| socat | ✅ 可靠 | echo -e "AT\r" | socat - /dev/ttyUSB2,b115200,raw,echo=0,cr | 本方案采用 |
| chat | ❌ 不可靠 | chat -t 3 -s "" "AT" "OK" /dev/ttyUSB2 | 引号、$转义、终端回显干扰 |
| printf+stty | ⚠️ | stty配串口后printf > /dev/ttyUSB2 | stty 常报unable to perform all requested operations |
socat 优势:一条命令完成发送+接收,raw 模式直接读写二进制,无引号转义问题。cr选项处理换行符,echo=0关闭回显避免干扰。
socat 发 AT 示例
# 发 AT 测试echo-e"AT\r"|socat - /dev/ttyUSB2,b115200,raw,echo=0,cr# 发拨号指令($ 需转义)echo-e"AT\$QCRMCALL=1,1\r"|socat - /dev/ttyUSB2,b115200,raw,echo=0,cr# 封装成函数send_at(){echo-e"$1\r"|socat - /dev/ttyUSB2,b115200,raw,echo=0,cr2>/dev/null}send_at'AT+CGREG?'附录 C:关键参数记录
| 参数 | 值 |
|---|---|
| 模组型号 | SIM7600CE(VID 0x1E0E / PID 0x9001) |
| 固件版本 | LE11B08SIM7600M21 |
| AT 串口 | /dev/ttyUSB2(Interface 2) |
| 数据接口 | wwan0(Interface 5) |
| QMI 控制口 | /dev/cdc-wdm0 |
| 波特率 | 115200 |
| 拨号指令 | AT$QCRMCALL=1,1 |
| 挂断指令 | AT$QCRMCALL=0,1 |
| raw_ip 设置 | echo Y > /sys/class/net/wwan0/qmi/raw_ip(须接口 down 时设) |
| 运营商 | 中国移动(IMSI 46004) |
| WireGuard 隧道 IP | 10.88.0.4 |
| 远程访问 | ssh 用户名@10.88.0.4 |
附录 D:相关文档
- WireGuard搭建指南.md — WireGuard 隧道完整搭建流程(4G 作为板子出口通道,隧道建立其上)
- 《SIM7500_SIM7600系列_Linux NDIS驱动调试文档_V2.00.pdf》 — 芯讯通官方 NDIS 驱动调试文档,本方案的理论依据
4G + WireGuard 联动关系
板子上电 → qmi-4g 服务自动拨号 → wwan0 拿到运营商 IP → WireGuard 主动连阿里云公网 8.156.73.219:51820 → Windows 通过隧道 ssh 用户名@10.88.0.4 访问板子4G 是板子的出口通道,WireGuard 隧道建立其上。4G 拨号成功是 WireGuard 正常工作的前提。qmi-connect.sh 脚本末尾会检测 WireGuard 握手状态,握手成功即提示"SSH 可远程连接"。
文档说明:本指南基于真实环境( RK3588 + SIM7600CE + 移动物联卡 + 阿里云 ECS)踩坑验证整理。核心经验:wwan0 方式优于 PPP;socat 优于 chat 发 AT;SIM 卡被拒(CGREG=0,3)需联系运营商而非折腾设备。