大家好~本文将介绍在Linux系统下,如何使用Air720的RNDIS功能进行上网。Air720正常启动后,通过USB连接到Linux设备上,驱动正常加载后会产生一个可以联网的RNDIS网卡:
在使用RNDIS功能之前,请确保模块固件版本为AT版本,且版本号为:
AirM2M_720_V296_LTE_AT_NAND及以后版本。
以下代码内容建议横屏查看,或在PC端打开本文链接。
1
当做普通网卡设备即插即用
由于Air720模块内置了自动拨号技术(支持全球大部分运营商),所以只要网络可用的情况下无需对模块进行任何设置就可以正常使用RNDIS网卡。对于不太懂通信和AT的用户来说最简单不过了。
目前Linux大部分发行版本都已经默认支持RNDIS驱动了,只要通过USB连接Air720模块就可以直接使用,模块开机后就会在Linux设备端看到新的网卡,如下图:
注意:
i. 每个设备的ethx可能不一样,插入Air720模块后增加的网卡即为RNDIS网卡,地址为192.168.0.x。
ii. 如果没能正常识别网卡,可以通过dmesg
命令参看一下USB驱动加载情况,下图是RNDIS驱动加载正常的情况(请点击放大查看):
iii. 如果Linux设备还不支持RNDIS驱动,可以通过重新配置并编译内核来加入RNDIS驱动。详见本文第二部分:二、内核修改(非必需)
step 1:禁用本地网卡
i. sudo ifconfig eth0 down
step 2:使能模块网卡
i. sudo ifconfig eth3 down
使能之后最好再通过ifconfig再次确认一下。
step 3:联网测试
2
内核修改(非必需)
Linux内核修改只针对如下情况,才需要修改:
i. Linux没有打开RNDIS网卡驱动
ii. 需要使用AT指令(打开ttyUSB设备)
2.1 增加rndis设备驱动(配置内核)
对于较老版本或者嵌入式设备默认可能关闭了RNDIS驱动,我们以Linux-3.13为例,描述如何打开Linux自带的RNDIS驱动:
step 1:
i. cd <your kernel directory>
step 2:
i. make menuconfig
step 3:
ENALBE USB_NET_RNDIS_HOST
make
将编译好的内核重新下载到设备。
step 1:
参考Air720模块Linux USB驱动以及PPP拨号说明【一、修改驱动(1-3 节部分)】。
step 2:
为了禁止驱动将usb M0,M1加载为ttyUSB设备,需要将usb serial 驱动部分做如下修改(请横屏查看):
For Linux Kernel Version newer than 2.6.30
File: [KERNEL]/drivers/usb/serial/option.c
static int option_probe(struct usb_serial *serial,
const struct usb_device_id *id)
{
struct usb_interface_descriptor *iface_desc =
&serial->interface->cur_altsetting->desc;
struct usb_device_descriptor *dev_desc = &serial->dev->descriptor;
/* Never bind to the CD-Rom emulation interface */
if (iface_desc->bInterfaceClass == 0x08)
i return -ENODEV;
//+add by airm2m for Air72x
if(dev_desc->idVendor == cpu_to_le16(0x1286) &&
dev_desc->idProduct == cpu_to_le16(0x4e3d) &&
iface_desc->bInterfaceNumber <= 1)
return -ENODEV;
//-add by airm2m for Air72x
/*
* Don't bind reserved interfaces (like network style="box-sizing: border-box; list-style-type: decimal;">
* the same class/subclass/protocol as the serial interfaces. Look at
* the Windows driver .INF files for reserved interface numbers.
*/
if (is_blacklisted(
iface_desc->bInterfaceNumber,
OPTION_BLACKLIST_RESERVED_IF,
(const struct option_blacklist_info *) id->driver_info))
return -ENODEV;
For Linux Kernel Version older than 2.6.31
File: [KERNEL]/drivers/usb/serial/option.c
static int option_startup(struct usb_serial *serial)
{
int i, j, err;
struct usb_serial_port *port;
struct option_port_private *portdata;
u8 *buffer;
dbg("%s", __func__);
//+add by airm2m for Air72x
if(serial->dev->descriptor.idVendor == cpu_to_le16(0x1286) && serial->dev->descriptor.idProduct == cpu_to_le16(0x4e3d)
&& serial->interface->cur_altsetting->desc.bInterfaceNumber <= 1)
{
return -ENODEV;
}
//-add by airm2m for Air72x
...
}
2.3 ttyUSB设备测试 (如果需要发AT)
加入ttyUSB设备驱动支持后,Air720模块会提供如下设备:
测试AT指令可以用
minicom
等工具,运行命令sudo minicom -D /dev/ttyUSB0
,测试结果如下:
合宙商城活动持续进行中,多样福利等你来领取,点击本公众号菜单“合宙商城”或识别下图二维码即可直达商城:
Luat小企业系列原创文章:
合宙Luat将陆续推出小企业系列原创作品,敬请关注!
>4G模块价格进入2位数时代,合宙Air720模块正式量产发货