openwrt配置AIR724实现RNDIS上网

啊哈,距离立项已经过去了,额,额,额,8个月了 。终于,又有空搞这个了,总结一下上次开的板子,有一个封装图是在网上找到,虽然我有官方给的数据手册,但是我上网找了个封装,我相信你们懂的,画封装虽然不费事,但是,我就是懒,所以,出错了,重新来搞一次吧 。
有用的参考内容
【openwrt配置AIR724实现RNDIS上网】如何排查linux使用RNDIS无法上网的问题
修改Linux内核添加 4G模块支持?
树莓派使用合宙4G模块环境搭建指南
br-lan、eth0、eth1及lo?
可能还有其他的,毕竟这两天看了很多,主要是上述这些
一、修改内核代码,添加vid、pid
这部分是我复制的,当然也是我写的 。
这里主要涉及到一个文件“/usb//.c”,添加usb设备的PID和VID,我用的是模块,其PID和VID是{, } 。
//1. 更改option_ids数组,大约在630行左右,可以搜一下static const struct usb_device_id option_ids[] = {//在数组中添加以下USB设备的PID和VID//Air72X4G模块{USB_DEVICE(0x1286, 0x4e3d)},{USB_DEVICE(0x1782, 0x4e00)},//在下边是原来就有的设备的PID和VID,不需要修改{USB_DEVICE(0x19d2, 0x0117)}, /* ME3630*/{USB_DEVICE(0x19d2, 0x0199)},{USB_DEVICE(0x19d2, 0x1476)}, 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。//2. 更改option_probe函数,大约在1865行左右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;const struct option_blacklist_info *blacklist;/* Never bind to the CD-Rom emulation interface */if (iface_desc->bInterfaceClass == 0x08)return -ENODEV;// 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。//这部分是中间一堆代码,我没有复制过来// 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。if (dev_desc->idVendor == cpu_to_le16(0x05c6) &&dev_desc->idProduct == cpu_to_le16(0x9215) &&iface_desc->bInterfaceNumber >= 4)return -ENODEV;if (dev_desc->idVendor == cpu_to_le16(0x2c7c) &&iface_desc->bInterfaceNumber >= 4)return -ENODEV;//在接紧最下边,添加下述两个if条件//Air72Xif (dev_desc->idVendor == cpu_to_le16(0x1286) &&dev_desc->idProduct == cpu_to_le16(0x4e3d) &&iface_desc->bInterfaceNumber <= 4)return -ENODEV;if (dev_desc->idVendor == cpu_to_le16(0x1782) &&dev_desc->idProduct == cpu_to_le16(0x4e00) &&iface_desc->bInterfaceNumber <= 4)return -ENODEV;/* Store the blacklist info so we can use it during attach. */usb_set_serial_data(serial, (void *)blacklist);return 0;}
二、勾选和RNDIS相关的所有配置
cd openwrt # 切换到openwrt源码目录./scripts/feeds update -a# 更新package包列表./scripts/feeds install -a# 安装包列表make menuconfig# 打开配置界面# 配置所有和rndis相关的东西保持打开make -j 8# 开始编译
三、烧录系统 连接串口调试工具,配置:57600 8 N 1重启路由器(姑且称之为路由器,毕竟他就是路由器)然后当出现下图时,按 2
然后打开tftpd工具,如果你有的话,没有没关系,文末我会告诉你在哪里下载,总之打开以后配置如下图
将自己做的路由器连接到可以正常联网的那个路由器,然后回到并在uboot中设置如图
回车,如下图

openwrt配置AIR724实现RNDIS上网

文章插图
完成 四、修改wan口
然后保存就行了 。
问题 在调试过程中,出现了一个非常重要的问题,每次重启后,eth1都会消失,然后都需要执行以下两条命令来进行网络连接,后来发现设置上了上述wan口以后,就不会出现这种情况了 。(你看,知识是个好东西,没有就得走弯路 。)这个问题花了我大概两天的时间,虽然知道以下两条命令能够连上网,但是和lan口也没关系,lan口依然连不上,所以实际上知道这样能行也没什么用 。