华为5g模组MH-5000在MPSOC上的应用调试
2020.09.02
目前国内5G商用模组主要就是华为的MH-5000,这里简单的说一下在mpsoc上的调试心得。
硬件上是通过mpsoc的usb3.0与mh-5000连接,mpsoc linux启动完成后,会生成一个ethX的网络设备,用at命令拨号之后,自动获取ip就可以进行上网.
流程如下
首先把附件的0001-m5000.patch打到petalinux的recipes-kernel下,我用的petalinux版本是2020.1,内核版本是linux5.4,内核config配置如下
USB 串口驱动相关的配置项:
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_OPTION=y
CONFIG_USB_SERIAL_WWAN=y
CDC ECM 驱动的相关配置项:
CONFIG_USB_USBNET=y
CONFIG_NETDEVICES=y
CONFIG_USB_NET_CDCETHER=y
mpsoc linux启动之后,会出现四个ttyUSB设备,分别如下
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3
其中/dev/ttyUSB1是控制mh5000的设备节点,其他三个节点基本用不上,主要通过/dev/ttyUSB1设备节点向mh5000发送at命令实现对5G模块的配置操作
以下是linux下操作mh5000的部分命令
查询mh5000版本号
echo -e "ati\r\n" >/dev/ttyUSB1
sim卡拨号连接运行商
echo -e "at^ndisdup=1,1\r\n" > /dev/ttyUSB1
断开拨号
echo -e "at^ndisdup=1,0\r\n" > /dev/ttyUSB1
拨打电话
echo "ATD15951893939;" >/dev/ttyUSB1
接听电话
echo "ATA" >/dev/ttyUSB1
挂断电话
echo "ATH" >/dev/ttyUSB1
获取ip地址的命令 : udhcpc -i eth3
获取ip地址的过程打印信息如下
udhcpc: started, v1.29.2
udhcpc: sending discover
udhcpc: sending select for 10.147.20.8
udhcpc: lease of 10.147.20.8 obtained, lease time 518400
RTNETLINK answers: File exists
/etc/udhcpc.d/50default: Adding DNS 218.2.2.2
/etc/udhcpc.d/50default: Adding DNS 218.4.4.4
测试上网链路
ping 163.com
PING 163.com (123.58.180.7): 56 data bytes
64 bytes from 123.58.180.7: seq=0 ttl=56 time=13.352 ms
64 bytes from 123.58.180.7: seq=1 ttl=56 time=13.356 ms
64 bytes from 123.58.180.7: seq=2 ttl=56 time=13.138 ms
64 bytes from 123.58.180.7: seq=3 ttl=56 time=13.140 ms
ping baidu.com
PING baidu.com (220.181.38.148): 56 data bytes
64 bytes from 220.181.38.148: seq=0 ttl=53 time=26.737 ms
64 bytes from 220.181.38.148: seq=1 ttl=53 time=26.762 ms
64 bytes from 220.181.38.148: seq=2 ttl=53 time=26.806 ms
64 bytes from 220.181.38.148: seq=3 ttl=53 time=26.576 ms
实测5G上网的延迟接近于有线上网,下行300M上行100M还是比较稳定的.
下面是linux内核补丁截图