自学内容网 自学内容网

openwrt 配置4G网卡 simcom7600ce

概述

在mt7628芯片上,操作系统使用openwrt21.02.1版本,4G模组使用SIMCOM7600CE-T的miniPCLE的版本,

配置4G模组成为网卡模式

参考资料:
sim7600ce拨号上网
OpenWRT安装SIM7600CE 4G模块驱动

Waveshare Wiki

配置并烧录系统,实现识别4G模组

编译选项配置

在openwrt源码根目录中,输入make menuconfig,进行配置。

 Kernel modules  ---> 
 Network Devices  --->
 kmod-mii
USB Support  ---> 
kmod-usb-core
kmod-usb-net
kmod-usb-net-qmi-wwan
kmod-usb-ohci
kmod-usb-serial
kmod-usb-wdm
kmod-usb2
kmod-usb3
kmod-usb-serial-qualcomm //这个貌似是非必要的

 Utilities  --->
 Terminal  --->
 minicom //可选,用于直观的收发串口AT命令

修改usb的option.c文件

修改option.c文件,文件路径在./build_dir/target-mipsel_24kc_musl/linux-ramips_mt76x8/linux-5.4.171/drivers/usb/seria/option.c

检查option_ids[]数组中是否有添加了simcom的USB设备。在openwrt21.02.7版本中,这部分是写好了的,不用修改

#define ALINK_VENDOR_ID                         0x1e0e
#define SIMCOM_PRODUCT_SIM7100E                 0x9001 /* Yes, ALINK_VENDOR_ID */

static const struct usb_device_id option_ids[] = {
{
 USB_DEVICE(ALINK_VENDOR_ID, SIMCOM_PRODUCT_SIM7100E),
          .driver_info = RSVD(5) | RSVD(6) },
...
}

修改option_probe()函数,添加几行代码,过滤掉interface5,如下所示

static int option_probe(struct usb_serial *serial,
                        const struct usb_device_id *id)
{
#if 1 //added by simcom
        if (serial->dev->descriptor.idVendor == cpu_to_le16(0x1E0E) 
        && serial->dev->descriptor.idProduct != cpu_to_le16(0x9001)
&& serial->interface->cur_altsetting->desc.bInterfaceNumber>= 5) {
                        return -ENODEV;
        }
#endif
。。。。
}

编译源码,烧录固件

编译源码,烧录到mt7628中。
插入SIMCOM7600CE模组,当终端打印了qmi_wwan 1-1.2:1.5 wwan0: register 'qmi_wwan' at usb-101c0000.ehci-1.2, WWAN/QMI device, 7e:1e:a6:8e:50:04这句信息时,则说明系统已经识别到了4G模组。
在这里插入图片描述
这时/dev/ttyUSB0~4就会生成,上层应用就可以通过这些设备和模块交互了。

输入ifconfig wwan0ifconfig -a时,就可以查看到wwan0的相关信息
在这里插入图片描述

配置4G模组成为网卡

设置4G模组驱动参数

SIMCOM7600模块是RAW IP模式,需要设置驱动参数:echo Y > /sys/class/net/wwan0/qmi/raw_ip

若遇到qmi_wwan 1-1.2:1.5 wwan0: Cannot change a running device ash: write error: Resource busy
可以先输入ifconfig wwan0 down,把wwan0先down掉。
若还不行,则可以输入service network stop,把网络关闭。
在这里插入图片描述

重新配置参数后,再输入ifconfig wwan0,结果如下。
在这里插入图片描述

模组拨号

输入echo "AT\$QCRMCALL=1,1" > /dev/ttyUSB2,让模组拨号。
在这里插入图片描述
或者

先输入cat /dev/ttyUSB2 &,开启一个查看模组AT指令回显的进程;然后再输入echo -e "AT\$QCRMCALL=1,1\r\n" > /dev/ttyUSB2,让模组拨号。这时可以查看到模组的回复
在这里插入图片描述

如果想确定拨号的成功,可以安装minicom工具,通过minicom工具可以查看模组的回复。
如果模组回复了$QCRMCALL: 1, V4,则说明拨号成功;
若模组回复了NO CARRIER,则说明已经拨过号了。
在这里插入图片描述

添加网卡接口

输入vim /etc/config/network,编辑网络接口配置文件。
添加wwan0网络接口, config interface 'wwan0'语句中的wwan0可以随意写,只是一个名字而已。

config interface 'wwan0'
        option ifname 'wwan0'
        option proto 'dhcp'
        option metric '20'

在这里插入图片描述

接着输入service network restart重启网络服务。
在这里插入图片描述

等待几秒钟,再输入ifconfig,可以查看到新的网络接口wwan0,并且其已经带有IPV4的地址
在这里插入图片描述

ping百度验证网络

最后,指定网卡ping百度,若能够ping通则说明配置网卡成功!
在这里插入图片描述

开机启动脚本

while true
do
        str=$(ifconfig | grep wwan0)
        if [ -n "$str" ];then
                echo ${str};
                echo "wwan0 down and networt stop";
                ifconfig wwan0 down;
                /etc/init.d/network stop;
                echo "set wwan0 raw_ip";
                echo Y > /sys/class/net/wwan0/qmi/raw_ip;
                echo "send AT cmd";
                echo "AT\$QCRMCALL=1,1" > /dev/ttyUSB2;
                echo "network restart";
                ifconfig wwan0 up;
                /etc/init.d/network start;
                echo "sleep 3s,wait for network start";
                sleep 3;
                break;
        fi
done

- if [ -n "$str" ];then表示获取的字符串非空,则执行分支


原文地址:https://blog.csdn.net/weixin_43871650/article/details/134575256

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!