openwrt配置AIR724实现RNDIS上网
啊哈,距离立项已经过去了,额,额, 额,8个月了。终于,又有空搞这个了,总结一下上次开的板子,有一个封装图是在网上找到,虽然我有官方给的数据手册,但是我上网找了个封装,我相信你们懂的,画封装虽然不费事,但是,我就是懒,所以,出错了,重新来搞一次吧。
有用的参考内容
如何排查linux使用RNDIS无法上网的问题
修改Linux内核添加Air72X 4G模块支持
树莓派使用合宙4G模块环境搭建指南
br-lan、eth0、eth1及lo
可能还有其他的,毕竟这两天看了很多,主要是上述这些
一、修改内核代码,添加vid、pid
这部分是我复制的,当然也是我写的。
这里主要涉及到一个文件“drivers/usb/serial/option.c”,添加usb设备的PID和VID,我用的是Air724UG模块,其PID和VID是{0x1782, 0x4e00}。
//1. 更改option_ids数组,大约在630行左右,可以搜一下
static const struct usb_device_id option_ids[] = {//在数组中添加以下USB设备的PID和VID//Air72X 4G模块{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工具,如果你有的话,没有没关系,文末我会告诉你在哪里下载,总之打开以后配置如下图
- 将自己做的路由器连接到可以正常联网的那个路由器,然后回到mobaxterm并在uboot中设置如图
- 回车,如下图
- 完成
四、修改wan口
然后保存就行了。
问题
- 在调试过程中,出现了一个非常重要的问题,每次重启后,eth1都会消失,然后都需要执行以下两条命令来进行网络连接,后来发现设置上了上述wan口以后,就不会出现这种情况了。(你看,知识是个好东西,没有就得走弯路。)这个问题花了我大概两天的时间,虽然知道以下两条命令能够连上网,但是和lan口也没关系,lan口依然连不上,所以实际上知道这样能行也没什么用。
ifconfig eth1 up # 激活网卡
udhcpc -i eht1 # 获取ip地址
- 上述问题可以通过编译时设置相关配置实现,我还不会,以后会改
相关下载地址:
编译成功的系统文件
链接:https://pan.baidu.com/s/1jEEGwSe0h7WFEVNgd0d7iw 提取码:17o9
tftpd文件
链接:https://pan.baidu.com/s/1Wpgx1RG9o6C3jWH-lgCgtA 提取码:y2sz
openwrt配置AIR724实现RNDIS上网相关推荐
- openwrt软路由实现ipv6上网配置
1.介绍 面对目前互联网的高速发展IPv4地址已经枯竭为了解决此外问题国际互联网工程任务组(The Internet Engineering Task Force,简称 IETF)设计的用于替代IPv ...
- Unisoc RNDIS上网业务流程学习笔记
Unisoc RNDIS上网业务流程学习笔记 RNDIS启动流程图 这是从RNDIS标准协议上截取的一个流程图,本文将以此流程图并结合Wireshark的抓包展开说明. 总体流程概述 根据RNDIS的 ...
- openwrt配置虚拟多wan
openwrt配置虚拟多WAN,在/etc/config/network文件中修改. 在文件中添加配置wan2 wan3的虚拟配置,其中wan2的VLAN ID是2:wan3的VLAN ID是3,通过 ...
- openwrt 配置WAN 和 LAN
openwrt是装在虚拟机中的,给另外一台虚拟机提供网络,连接拓扑如下 环境配置 openwrt配置 PC虚拟机配置 VMnet2 关闭dhcp Openwrt配置 启动openwrt,通过luci进 ...
- openwrt配置IPV6四天折腾记
这四天来,为了实现通过路由器能够在终端直接获得IPV6地址并且访问IPV6网络,各种作死的折腾. 配置前提:有一个好的路由器,我的为小米路由器(记不得哪个版本了,就是原来卖129的那个),被我刷成了o ...
- arach Linux设置静态,大神面对win7系统archlinux静态网络配置错误造成无法上网的还原办法...
电脑经常发生各种故障,难免会出现win7系统archlinux静态网络配置错误造成无法上网的问题,我们要如何解决win7系统archlinux静态网络配置错误造成无法上网这个问题呢?有部分朋友反映wi ...
- 上网登录窗不弹出_配置 Windows XP 正常上网(TLS HTTPS),连接到 NAS
Windows XP 是经典的.高效的.可靠的.性能良好的操作系统,然而其大部分版本都已在 2014 年停止支持.其较为流行的版本 SP2 与 SP3 由于各种原因,目前均不能直接正常访问安装了 SS ...
- linux 静态连接失败,Windows7下archlinux静态网络配置错误连不上网怎么办?
一些用户在使用过程中,发现自己的Win7电脑由于archlinux静态网络配置错误导致无法上网,这个问题该怎么解决呢?今天小编就教大家如何解决这个问题吧. 如果用户装了ifconfig和route的话 ...
- 树莓派3b+安装openwrt 配置wan lan和wifi
树莓派3b+安装openwrt 配置wan lan和wifi 1.配置网络 修改/etc/config/network 注释掉option ifname 'eth0'一行,为防止与路由器地址冲突,将其 ...
最新文章
- 嵌入式系统一次EMMC测试的体会及错误分析过程
- 简易计算机单片机编程思路,到底以什么单片机入门?一些单片机简单的学习方法...
- 数据库连接池——C3P0:数据库连接池技术
- 1.3计算机的性能指标
- Scala apply()方法用于创建伴生类对象
- python优先级排序_Python实现一个优先级队列的方法
- C语言打印输出红色字体
- c语言字符串输出瘕b,c语言课件10tt函数(1)幻灯片资料(51页)-原创力文档
- java eml文件解析_java 解析 eml的源代码
- 服务器远程登陆最大连接数,解决登录Windows服务器时超出了最大允许连接数
- C++基础——模板的0初始化
- 所有类型的基类Object,所有类型的基类Type
- Web应用程序开发课程总结
- 【逻辑漏洞】短信轰炸
- 轻微课靠不靠谱,我的60天体验可以说说
- 《清平乐词》三篇——李白
- git log查看日志中文乱码的解决方法,绝对好用2021
- 单片机与上位机的串行通信
- sqlserver AlwaysOn实现读写分离配置及java/net代码实现
- 富贵竹的水养殖方法和注意事项,6个步骤帮你养出翠绿富贵竹