中移307cLinux环境中拨号教程
本教程专注于 RNDIS 和 ECM 两种主流拨号模式,省略了已不常用的PPP模式,更符合当前开发需求。


中移ML307C模组 Linux环境拨号上网教程
适用型号:ML307C手册来源:中移物联网有限公司《ML307C 拨号上网用户手册 V1.0.0》适用系统:Linux (内核版本 4.14 及以上)


一、准备工作

  1. 硬件连接
    • 使用USB线将ML307C模组(或开发板)连接到Linux主机。
    • 确保模组已插入有效的SIM卡并正常开机。
  2. 确认USB设备识别
    在终端执行以下命令,查看是否识别到模组:
    lsusb

应能看到类似输出:
Bus 003 Device 004: ID 2ecc:3012 // VID: 0x2ecc, PID: 0x3012


二、配置Linux内核驱动
模组的USB端口需要正确的内核驱动才能被识别。

  1. 添加USB串口驱动 (option)
    确保内核已加载 option 驱动,用于识别AT端口。
    方法一:命令行临时加载
    modprobe option
    echo “2ecc 3012” > /sys/bus/usb-serial/drivers/option1/new_id

方法二:内核编译时配置在 menuconfig 中启用:
Device Drivers —>
USB support —>
USB Serial Converter support —>
<*> USB driver for GSM and CDMA modems

并确保 .config 文件包含:
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_OPTION=m

  1. 配置网络适配器驱动
    根据您选择的拨号模式,选择其一进行配置。
    RNDIS模式 (推荐)
    Device Drivers —>
    Network device support —>
    USB Network Adapters —>
    <> Multi-purpose USB Networking Framework
    <
    > Host for RNDIS and ActiveSync devices

对应配置:
CONFIG_USB_NET_RNDIS_HOST=m

ECM模式
Device Drivers —>
Network device support —>
USB Network Adapters —>
<> Multi-purpose USB Networking Framework
<
> CDC Ethernet support (smart devices such as cable modems)

对应配置:
CONFIG_USB_NET_CDCETHER=m

注意:完成内核配置后,需重新编译并启动系统。


三、识别AT端口
模组连接后,会生成多个 ttyUSBx 设备。需要确定哪个是AT端口。

  1. 通过Interface Number查找(推荐)手册中指出,ML307C的AT口Interface Number为 02。使用 udevadm 命令查找:
    udevadm info -q all -n /dev/ttyUSB2 | grep ID_USB_INTERFACE_NUM

如果输出为 E: ID_USB_INTERFACE_NUM=02,则 /dev/ttyUSB2 即为AT端口。或使用 find 命令:
find /sys/ -name ‘bInterfaceNumber’ -exec grep -l “02” {} ;

输出的路径对应的 ttyUSBx 即为AT口。
2. 通用名称本教程中,将AT端口记为 /dev/ttyUSB_AT,请在实际操作中替换为您的真实设备名(如 /dev/ttyUSB2)。


四、设置拨号模式
注意:此设置需重启模组后生效,且会掉电保存。

  1. RNDIS模式

发送AT命令

echo -e ‘AT+MDIALUPCFG=“mode”,0\r\n’ > /dev/ttyUSB_AT

重启模组

echo -e ‘AT+CFUN=1,1\r\n’ > /dev/ttyUSB_AT

  1. ECM模式

发送AT命令

echo -e ‘AT+MDIALUPCFG=“mode”,1\r\n’ > /dev/ttyUSB_AT

重启模组

echo -e ‘AT+CFUN=1,1\r\n’ > /dev/ttyUSB_AT

说明:
• 0 代表 RNDIS
• 1 代表 ECM


五、建立拨号连接
重启后,系统会自动识别出一个以太网设备(如 usb0, eth1 等)。以下为拨号流程。

  1. 查询网络状态(可选)

关闭回显,避免干扰

stty -F /dev/ttyUSB_AT -echo -onlcr

后台读取AT口

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 表示已驻网)。
2. 发送拨号命令
echo -e ‘AT+MDIALUP=1,1\r\n’ > /dev/ttyUSB_AT

如果成功,AT口会返回IP地址和DNS信息,例如:
+MDIALUP: 1,1,“10.43.159.12”,“”,“183.230.126.225”,“183.230.126.224”

  1. 配置Linux网络
    方法一:使用DHCP客户端(推荐)
    udhcpc -i usb0

usb0 请替换为您系统中识别到的实际网卡名。
方法二:手动配置(无DHCP工具时)
根据AT口返回的IP信息手动设置:

设置IP地址和子网掩码

ifconfig usb0 10.43.159.12 netmask 255.255.255.0 up

添加默认路由

route add default dev usb0

配置DNS

echo “nameserver 183.230.126.225” > /etc/resolv.conf
echo “nameserver 183.230.126.224” >> /etc/resolv.conf


六、验证网络连接

  1. 测试IP连通性
    ping 114.114.114.114 -c 3

  2. 测试域名解析
    ping www.baidu.com -c 3

如果两个命令均能成功收到回复,则拨号上网成功。


七、断开连接
echo -e ‘AT+MDIALUP=1,0\r\n’ > /dev/ttyUSB_AT


常见问题 (FAQ)
问题 解决方法
1、udhcpc 获取IP但无法上网
检查 /usr/share/udhcpc/default.script 脚本中的 ifconfig 和 route 命令路径是否正确,可使用 udhcpc -i usb0 -s /path/to/correct/script 指定脚本。/
2、无法打开网页,但能ping通 可能是网络速率过低
尝试更换环境或切换拨号模式(RNDIS/ECM)。
Couldn’t set tty to PPP discipline 某些内核需将 CONFIG_PPP_ASYNC 配置为模块(=m)而非内置(=y),重新编译内核。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐