移远EC20是一个兼容性比较强的4G模块。我入手的这个是EC20 R2.1版本,pcie接口的,这个版本是增强版,支持最高150Mbps的下载速率,而普通的EC20只有100Mbps下载速率。这个是全功能版本的,外观如下:
要让4G模块上网,必须设置驱动。目前较新的openwrt基本上已经加入了该模块的支持,如果没有成功驱动则必须要另外注入驱动。下面就是修改源码,File : [KERNEL]/drivers/usb/serial/option.c,加入如下代码
staticconst struct usb_device_id option_ids[] = { #if 1 //Added by Quectel { USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */ { USB_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */ { USB_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20 */ { USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC25/EC20 R2.0 */ { USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */ #endif
另外还要装一些内核插件。主要有以下几个:
Kmod -usb-core Kmod -usb-net >> kmod-usb-net-qmi-wwan >> kmod-usb-net-rndis Kmod-usb-ohci //这个选项一定要勾选,否则可能无法在系统中查看设备 Kmod-usb-serial Kmod-usb-serial-option Kmod-usb-serial-wwan kmod-usb-uhci Kmod-usb2
EC20有4种上网模式,可以通过如下指令切换模式。
cat /dev/ttyUSB2 & echo -e "AT+QCFG=\"usbnet\",0\r\n" > /dev/ttyUSB2 #设定模式0-3 echo -e "AT+CFUN=1,1\r\n" >/dev/ttyUSB2 #重启模块
四种模式分别为:
0 RMNET接口,通过QMI工具发的QMI命令,获取公网IP。
1 ECM接口,通过标准的CDC-ECM发起data call,是发送标准的ECM命令,获取局域网ip。
2 MBIM接口,Mobile Broadband Interface Model,正宗的移动宽带接口模型,专门用于3G/4G/5G模块的,只在win8以上的windows上使用。
3 RNDIS接口,基于USB实现RNDIS实际上就是TCP/IP over USB,就是在USB设备上跑TCP/IP,让USB设备看上去像一块网卡获取局域网ip。
在openwrt下能用的主要是013模式,其中Rmnet模式的qmi拨号设置非常繁琐,需要在源码注入多处驱动,还要自编译拨号程序,所以就没有试,网上有相关教程。设置比较简单是ECM、RNDIS模式,这两种模式在设置上没什么区别,都是获取的局域网IP,就是安装的插件不一样。上面建议的插件已经都包含了两种模式所需。
在luci->网络->接口,设置wan接口,在物理设置选项卡里面设置,发现多了一项硬件接口(usb0,或者wwan),选中它,保存并应用设置,过一会儿就会发现路由器wan口获取到了192.168..的局域网IP地址。通过设置wan6口有可能可以获取ipv6,在ec20模块需要设置:
echo -e "AT+CGDCONT=1,\"IPV4V6\",\"3gnet\"\r\n" > /dev/ttyUSB2 #设置上下文 echo -e "AT+CGACT=1,1\r\n" > /dev/ttyUSB2 #激活上下文 echo -e "AT+CFUN=1,1\r\n" >/dev/ttyUSB2