ML307C 4G 模组拨号上网教程(Tina Linux)
一、内核驱动准备
在 Tina Linux SDK 中配置内核,确保以下驱动已启用。
1️⃣ USB 串口驱动
路径:
Device Drivers —>
USB support —>
USB Serial Converter support —>
<*> USB driver for GSM and CDMA modems
2️⃣ RNDIS 模式驱动
路径:
Device Drivers —>
Network device support —>
USB Network Adapters —>
<*> Multi-purpose USB Networking Framework
<*> Host for RNDIS and ActiveSync devices
3️⃣ ECM 模式驱动
路径:
Device Drivers —>
Network device support —>
USB Network Adapters —>
<*> Multi-purpose USB Networking Framework
<*> CDC Ethernet support (smart devices such as cable modems)
⚠️ 重新编译内核并烧录后,系统才能识别 4G 模组的网卡接口。
二、硬件连接
- 模组工作时瞬时电流较大,建议开发板 外接 5V 1A 稳定供电。 若无法外接,可在 4G 模块上加装 超级电容。
- 插入 有效 SIM 卡 后再连接到设备。
三、确认 USB 设备识别
插入模组后,执行:
lsusb
输出示例:
Bus 001 Device 012: ID 2ecc:3012
说明系统已识别到 ML307C 模组。
四、识别 AT 命令端口
运行以下命令,将设备id加入option驱动中
echo 2ecc 3012 > /sys/bus/usb-serial/drivers/option1/new_id
模组连接后会生成多个 /dev/ttyUSBx 设备。
1️⃣ 通过 Interface Number 查找(推荐)
ML307C 的 AT 端口接口号为 02,可执行:
udevadm info -q all -n /dev/ttyUSB2 | grep ID_USB_INTERFACE_NUM
如果输出:
E: ID_USB_INTERFACE_NUM=02
则 /dev/ttyUSB2 即为 AT 命令口。
或使用:
find /sys/ -name 'bInterfaceNumber' -exec grep -l '02' {} \;
输出路径对应的 ttyUSBx 即为 AT 端口。
本文中统一将 AT 端口记为
/dev/ttyUSB_AT,请替换为你的实际设备名。
五、设置拨号模式
此设置掉电保存,重启模组后生效。
RNDIS 模式
echo -e 'AT+MDIALUPCFG="mode",0\r\n' > /dev/ttyUSB_AT
echo -e 'AT+CFUN=1,1\r\n' > /dev/ttyUSB_AT
ECM 模式(推荐)
echo -e 'AT+MDIALUPCFG="mode",1\r\n' > /dev/ttyUSB_AT
echo -e 'AT+CFUN=1,1\r\n' > /dev/ttyUSB_AT
说明:
| 参数 | 模式 | 说明 |
|---|---|---|
| 0 | RNDIS | 网卡名通常为 eth1 |
| 1 | ECM | 网卡名通常为 usb0 |
六、建立拨号连接
模组重启后,系统会自动识别出一个网卡接口(如 usb0 或 eth1)。
1️⃣ 查询网络状态(可选)
关闭回显,避免干扰:
stty -F /dev/ttyUSB_AT -echo -onlcr
cat /dev/ttyUSB_AT &
查询 PDP 上下文:
echo -e 'AT+CGDCONT?\r\n' > /dev/ttyUSB_AT
查询驻网状态:
echo -e 'AT+COPS?\r\n' > /dev/ttyUSB_AT
返回示例:
+COPS: 0,2,"46000",7
OK
表示已驻网(46000 为中国移动,46003 为中国电信)。
2️⃣ 发送拨号命令
echo -e 'AT+MDIALUP=1,1\r\n' > /dev/ttyUSB_AT
成功时返回:
+MDIALUP: 1,1,"10.43.159.12","","183.230.126.225","183.230.126.224"
OK
表示:
- 获得 IP 地址:10.43.159.12
- DNS:183.230.126.225, 183.230.126.224
七、配置 Linux 网络
拨号成功后系统会出现新网卡(usb0 或 eth1)。
可使用 DHCP 自动获取 IP:
udhcpc -i usb0
请将
usb0替换为你的实际网卡名。
测试联网:
ping www.baidu.com
八、附录:常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
ERROR |
APN 未设置正确 | 执行 AT+CGDCONT=1,"IP","ctnet" |
NO CARRIER |
信号弱或未驻网 | 检查 AT+COPS? 是否正常 |
| 无网卡接口 | 驱动未启用或模块未加载 | 确认内核配置或执行 insmod usbnet.ko cdc_ether.ko |
| 模块反复重启 | 供电不足 | 外接 5V/1A 电源或加超级电容 |
九、拨号成功验证
查询当前拨号状态:
echo -e 'AT+MDIALUP?\r\n' > /dev/ttyUSB_AT
返回示例:
+MDIALUP: 1,1,"10.43.159.12","","183.230.126.225","183.230.126.224"
OK
断开连接:
echo -e 'AT+MDIALUP=1,0\r\n' > /dev/ttyUSB_AT
十、使用 Minicom 操作 ML307C 模组
除了使用 echo 命令发送 AT 指令,也可以通过 minicom 进行交互式操作,这样更方便查看返回结果。
1️⃣ 安装 Minicom
开发板默认已集成minicom,可跳过此步骤。如果提示找不到命令,需要在menuconfig里面启用minicom
2️⃣ 启动 Minicom
执行命令进入 AT 端口:
minicom -D /dev/ttyUSB_AT
其中
/dev/ttyUSB_AT请替换为你的实际 AT 端口(如/dev/ttyUSB2)。
如果提示权限不足,可先执行:
chmod 666 /dev/ttyUSB2
3️⃣ Minicom 常用快捷键
在 Minicom 界面中,所有命令均以 Ctrl + A 开头。
| 功能 | 快捷键 | 说明 |
|---|---|---|
| 显示帮助菜单 | Ctrl + A, Z |
查看所有快捷键 |
| 退出 Minicom | Ctrl + A, X |
正常退出 |
| 强制退出 | Ctrl + A, Q |
不复位直接退出 |
| 清屏 | Ctrl + A, C |
清除终端显示 |
| 开启/关闭本地回显 | Ctrl + A, E |
输入 AT 时可看到自己输入的内容 |
进入 Minicom 后,建议先按:
Ctrl + A, E
打开本地回显,否则输入的 AT 命令不会显示在屏幕上。
4️⃣ 发送命令示例
在 Minicom 界面中直接输入以下命令(每条后按 Enter):
AT
AT+COPS?
AT+CGDCONT?
AT+MDIALUP=1,1
返回信息示例:
OK
+COPS: 0,0,"CHN-CT",7
OK
+CGDCONT: 1,"IPV4V6","CTNET.MNC011.MCC460.GPRS",,0,0,,,,
OK
+MDIALUP: 1,1,"10.43.159.12","","202.97.224.68","202.97.224.69"
OK
表示已驻网并拨号成功。
5️⃣ 拨号模式切换示例
在 Minicom 中输入以下命令可切换拨号模式:
AT+MDIALUPCFG="mode",1 ← ECM 模式
AT+CFUN=1,1 ← 重启模组
或:
AT+MDIALUPCFG="mode",0 ← RNDIS 模式
AT+CFUN=1,1
重启后,执行:
ifconfig -a
查看是否出现网卡接口(如 usb0 / eth1)。
6️⃣ 退出 Minicom
操作完成后退出 Minicom:
Ctrl + A, X
若出现确认提示,按 Enter 即可。
✅ 使用 Minicom 的优点
- 可实时查看模块返回信息;
- 支持连续输入多条命令;
- 便于调试 AT 指令;
- 可结合日志功能记录调试过程(
Ctrl + A, L开启/关闭日志)。
✳️ 最终验证流程
-
启动 Minicom:
bash minicom -D /dev/ttyUSB2 -
开启回显:
Ctrl + A, E -
输入命令:
text AT AT+COPS? AT+CGDCONT=1,"IP","ctnet" AT+MDIALUP=1,1 -
拨号成功后,在系统中查看:
bash ifconfig -a udhcpc -i usb0 ping www.baidu.com