华为ME909s的4G模块是一个PCIE接口的USB协议的4G模块,它会通过USB口拓展出4路串口,分别为/dev/ttyUSB0,/dev/ttyUSB1,/dev/ttyUSB2,/dev/ttyUSB3。
然后用户可以通过echo “ATE0” > /dev/ttyUSB2命令来向4G模块发送AT指令。
此外,此模块还会通过USB协议注册一个网络设备节点:wwan0
以LS10XX为例,如果想要使板卡支持该模块的话,首先先连接4G模块,使用lsusb命令查看一下硬件连接是否正常:
1 2 3 4 lsroot@localhost:~# lsusb Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 002 Device 002: ID 12d1:15c1 Huawei Technologies Co., Ltd. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
如上所示,ID 12d1:15c1 Huawei Technologies Co., Ltd.为接入的4G模块设备,其中12d1为厂家ID,15c1为产品ID。
接下来我们需要检查内核配置。
首先检查内核配置文件:
1 arch/arm64/configs/ls1012_defconfig
选中与USB_NET和网络PPP的模块,相关内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 +CONFIG_NET_UDP_TUNNEL=y +CONFIG_L2TP=y +CONFIG_PPP=y +CONFIG_PPP_BSDCOMP=y +CONFIG_PPP_DEFLATE=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=y +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOE=y +CONFIG_PPPOL2TP=y +CONFIG_PPP_ASYNC=y +CONFIG_PPP_SYNC_TTY=y +CONFIG_SLHC=y +CONFIG_USB_NET_DRIVERS=y +CONFIG_USB_USBNET=y +CONFIG_USB_NET_AX8817X=y +CONFIG_USB_NET_AX88179_178A=y +CONFIG_USB_NET_CDCETHER=y +CONFIG_USB_NET_CDC_NCM=y +CONFIG_USB_NET_HUAWEI_CDC_NCM=y +CONFIG_USB_NET_NET1080=y +CONFIG_USB_NET_CDC_SUBSET_ENABLE=y +CONFIG_USB_NET_CDC_SUBSET=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_NET_ZAURUS=y +CONFIG_USB_WDM=y +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_ARC4=y +CONFIG_CRC_CCITT=y
其次选中与USB_SERIAL相关的模块:
1 2 3 4 5 6 +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_PL2303=y +CONFIG_USB_SERIAL_WWAN=y +CONFIG_USB_SERIAL_OPTION=y +CONFIG_USB_SERIAL_CP210X=y
最后检查USB_SERIAL的硬件列表文件:
1 drivers/usb/serial/option.c
可见华为模块的厂商ID和其他产品ID:
1 2 3 4 5 6 7 #define HUAWEI_VENDOR_ID 0x12D1 #define HUAWEI_PRODUCT_E173 0x140C #define HUAWEI_PRODUCT_E1750 0x1406 #define HUAWEI_PRODUCT_K4505 0x1464 #define HUAWEI_PRODUCT_K3765 0x1465 #define HUAWEI_PRODUCT_K4605 0x14C6 #define HUAWEI_PRODUCT_E173S6 0x1C07
关于ME909s模块的匹配数据在文件./drivers/net/usb/cdc_ether.c中可见:
1 2 3 4 5 /* Huawei ME906 and ME909 */ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, USB_CLASS_COMM, USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), .driver_info = (unsigned long)&wwan_info,
编译内核以及模块,更新板卡系统,进入文件系统中输入ifconfig -a可以发现:
1 2 3 4 5 6 wwan0: flags=4098<BROADCAST,MULTICAST> mtu 1500 ether 02:1e:10:1f:00:00 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
此节点出现即证明上述步骤操作无误
编辑4G模块的拨号脚本:
1 2 3 4 5 6 7 8 #!/bin/sh echo "ATE0" > /dev/ttyUSB2 echo "AT^NDISDUP=1,1,\"cmnet\""> /dev/ttyUSB2 ifconfig eth0 down ifconfig wwan0 up dhclient ifconfig eth0 up