4G模块ME909移植指南(鼎桥ME909s)
4G
2024-04-15 1993字

4G模块ME909移植指南

移植 TD-Tech 公司的 ME909s-805p 4G模块

参考资料
《ME909s-805g LTE LGA模块Linux内核驱动集成指南(USB).V1.1.pdf》
《鼎桥 ME909S-805G LTE LGA模块AT命令手册-V100R001_01-CHINESE.V1.0_0225.pdf》

添加AT指令的支持

  1. 添加option.c(drivers/usb/serial/option.c)文件对805p模组的支持。
    static const struct usb_device_id option_ids[]数组中增加模组USB的PID和VID。之后系统已经可以对接4G模块的USB-AT通道,可以和系统进行AT通信了。
    { USB_DEVICE(0x2ECC, 0x3010) }, /* TD TECH ME909S-805P */
    
  2. 确保Linux的配置arch/arm64/configs/imx_v8_defconfig中加入了关于OPTION的驱动。
    在配置文件中检查是否有如下配置项,有则不作修改,没有则在合适位置加入。
    CONFIG_USB_SERIAL=y
    CONFIG_USB_SERIAL_WWAN=y
    CONFIG_USB_SERIAL_OPTION=y
    

RNDIS方式上网配置

添加Linux对RNDIS驱动的支持。在配置arch/arm64/configs/imx_v8_defconfig中添加如下配置:

CONFIG_USB_USBNET=y
CONFIG_USB_NET_DRIVERS=y
CONFIG_USB_CONFIGFS_RNDIS=y
CONFIG_USB_NET_RNDIS_HOST=y

完成上述工作后编译Linux内核烧录到板卡上即可支持805p模组。 如果是ECM方式则生成的网络设备是rndis_host

(选配)ECM方式上网配置

ECM和RNDIS属于两种上网方式,两种上网方式选择任意一种即可。

添加Linux对ECM驱动的支持。在配置arch/arm64/configs/imx_v8_defconfig中添加如下配置:

CONFIG_USB_USBNET=y
CONFIG_NETDEVICES=y
CONFIG_USB_NET_CDCETHER=y

如果是ECM方式则生成的网络设备是cdc_ether

驻网

完成上述工作后系统即可支持4G模组上网。驻网方式如下:

stty -F /dev/ttyUSB1 -echo #去除tty终端的回显功能,针对805p模组,如果不执行此步骤则会造成模组指令识别问题,陷入死循环
echo -e "AT^SYSINFOEX\r" > /dev/ttyUSB1 #使用-e参数,转义转义字符\r。查询服务状态命令
    #^SYSINFOEX: 2,3,0,1,0,6,"LTE",101,"LTE"
    # PS 分组交换 数据 ;CS 电路交换 语音 ;MO 上行 ;MT 下行
echo -e "AT+CGDCONT?" > /dev/ttyUSB1 #查询PDP上下文
    #+CGDCONT: 1,"IPV4V6","3gnet.MNC001.MCC460.GPRS"
    #+CGDCONT: 2,"IP","3gnet","10.128.130.99",0,0,,,,
    #+CGDCONT: 8,"IPV4V6","IMS","fe80::166c:bca0:9de9:f1ab",0,0,0,2,1,1
    #NDISDUP拨号时用CID2,CID1目前是是作为默认承载用的
echo -e "AT^NDISDUP=2,1,"CTNET"" > /dev/ttyUSB1 #命令拨号
    #3GNET
    #CMNET
    #CTNET
ifconfig eth0 down #关闭其他网络节点,未验证是否有必要这么做
udhcpc -ieth1 #动态获取

之后可以正常上网。

关于805p的专有说明

补充

当CREG、CGREG没有注册上时,是无法做相关业务的。
当CSQ、HCSQ信号值过低的时候也是无法做相关业务的。
当业务掉线后,必须重新查询CREG、CGREG、CSQ、HCSQ,当满足做业务的基本要求时,在发起相关操作。