1、使用lsusb命令确认4G模块工作正常,没找到的话就是硬件有问题。
2、修改内核配置选项
make meunconfig修改
<*> USB Serial Converter Support --->
[*] USBGeneric Serial Driver
<*> USBdriver for GSM and CDMA modems
3、添加usb串口驱动代码
修改驱动代码增加 SIM7500_SIM7600 的 VID/PID 并且跳过 Interface 5
找到内核源码文件 option.c(一般情况下,路径在 drivers/usb/serial/option.c)
较新的内核版本(V3.2 以上)
#define SIMCOM_SIM7600_VID 0x1E0E
#define SIMCOM_SIM7600_PID 0x9001
//for SIM7600 modem for NDIS
static const struct option_blacklist_infosimcom_sim7600_blacklist = {
.reserved = BIT(5),
};
在 option_ids 列表中增加
… …
//for SIM7600 modem for NDIS
{ USB_DEVICE(SIMCOM_SIM7600_VID, SIMCOM_SIM7600_PID),
.driver_info = (kernel_ulong_t)&simcom_sim7600_blacklist
},
预期在 /dev/ 下会出现 ttyUSB0~4
4、USB NDIS NET 使用make meunconfig修改
Device Drivers --->
[*] network device support --->
USB network Adapter --->
<*> Multi-purpose USB Networking Framework
<*> USB-to-WWAN Driver for Sierra wireless modems
将官方提供文件 simcom_wwan.c。
simcom_wwan.c 放在 drivers/net/usb 目录下,并且修改 Makefile
obj‐$(CONFIG_USB_USBNET) += usbnet.osimcom_wwan.o
驱动正确编译到内核,内核开机后连到模块会打印如下信息
imcom_wwan 1‐1:1.5 wwan0: register 'simcom_wwan'at usb‐0000:02:03.0‐1,
SIMCOM wwan/QMI device, 8a:de:f6:67:ce:1b
预期结果:
5、拨号上网
依次执行:
echo "AT\$QCRMCALL=1,1" > /dev/ttyUSB3 #拨号上网
udhcpc -i wwan0
ping -I wwan0 www.baidu.com
预期如下:问题:有时出现 sending discover...
建议:拨号使用 echo "AT\$QCRMCALL=1,1" > /dev/ttyUSB3 ,而不是使用echo "AT\$QCRMCALL=1,1" > /dev/ttyUSB2
发AT命令使用ttyUSB2。不过我在调试的时候是偶尔出现Sending discover,原因是设备准备好了但4G模块还未准备好导致的。如果从来都没有拨号成功过,就是其他情况了。
6、
参照《SIM7500_SIM7600 Linux NDIS 驱动调试_V2.00.pdf》