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指令的支持
- 添加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 */
- 确保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的专有说明
- 设备tty端口含义
ttyUSB0:DIAG ttyUSB1:AT ttyUSB2:MODEM
- LTE的信号质量如何查看
在3/4g下查询当前RSCP/RSRP,当小于-105dBm的时候,数据业务很难成功。^HCSQ: "LTE",31,71,0,13
也就是上述的信息中看信号的第二个值。范围如下:0 rsrp < -140 dBm 1 -140 dBm ≤ rsrp < - 139 dBm 2 -139 dBm ≤ rsrp < -138 dBm ... 71 -70 dBm ~ -69 dBm 95 -46 dBm ≤ rsrp < -45 dBm 96 -45 dBm ≤ rsrp < -44 dBm 97 -44 dBm ≤ rsrp 255 未知或不可测
说明上述
71
信号还是不错的
补充
当CREG、CGREG没有注册上时,是无法做相关业务的。
当CSQ、HCSQ信号值过低的时候也是无法做相关业务的。
当业务掉线后,必须重新查询CREG、CGREG、CSQ、HCSQ,当满足做业务的基本要求时,在发起相关操作。