啊哈,距离立项已经过去了,额,额, 额,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       # 开始编译

三、烧录系统

  1. 连接串口调试工具,配置:57600 8 N 1
  2. 重启路由器(姑且称之为路由器,毕竟他就是路由器)
  3. 然后当出现下图时,按 2

  1. 然后打开tftpd工具,如果你有的话,没有没关系,文末我会告诉你在哪里下载,总之打开以后配置如下图

  1. 将自己做的路由器连接到可以正常联网的那个路由器,然后回到mobaxterm并在uboot中设置如图

  1. 回车,如下图

  1. 完成

四、修改wan口



然后保存就行了。

问题

  1. 在调试过程中,出现了一个非常重要的问题,每次重启后,eth1都会消失,然后都需要执行以下两条命令来进行网络连接,后来发现设置上了上述wan口以后,就不会出现这种情况了。(你看,知识是个好东西,没有就得走弯路。)这个问题花了我大概两天的时间,虽然知道以下两条命令能够连上网,但是和lan口也没关系,lan口依然连不上,所以实际上知道这样能行也没什么用。
ifconfig eth1 up # 激活网卡
udhcpc -i eht1      # 获取ip地址
  1. 上述问题可以通过编译时设置相关配置实现,我还不会,以后会改

相关下载地址:
编译成功的系统文件
链接:https://pan.baidu.com/s/1jEEGwSe0h7WFEVNgd0d7iw 提取码:17o9
tftpd文件
链接:https://pan.baidu.com/s/1Wpgx1RG9o6C3jWH-lgCgtA 提取码:y2sz

openwrt配置AIR724实现RNDIS上网相关推荐

  1. openwrt软路由实现ipv6上网配置

    1.介绍 面对目前互联网的高速发展IPv4地址已经枯竭为了解决此外问题国际互联网工程任务组(The Internet Engineering Task Force,简称 IETF)设计的用于替代IPv ...

  2. Unisoc RNDIS上网业务流程学习笔记

    Unisoc RNDIS上网业务流程学习笔记 RNDIS启动流程图 这是从RNDIS标准协议上截取的一个流程图,本文将以此流程图并结合Wireshark的抓包展开说明. 总体流程概述 根据RNDIS的 ...

  3. openwrt配置虚拟多wan

    openwrt配置虚拟多WAN,在/etc/config/network文件中修改. 在文件中添加配置wan2 wan3的虚拟配置,其中wan2的VLAN ID是2:wan3的VLAN ID是3,通过 ...

  4. openwrt 配置WAN 和 LAN

    openwrt是装在虚拟机中的,给另外一台虚拟机提供网络,连接拓扑如下 环境配置 openwrt配置 PC虚拟机配置 VMnet2 关闭dhcp Openwrt配置 启动openwrt,通过luci进 ...

  5. openwrt配置IPV6四天折腾记

    这四天来,为了实现通过路由器能够在终端直接获得IPV6地址并且访问IPV6网络,各种作死的折腾. 配置前提:有一个好的路由器,我的为小米路由器(记不得哪个版本了,就是原来卖129的那个),被我刷成了o ...

  6. arach Linux设置静态,大神面对win7系统archlinux静态网络配置错误造成无法上网的还原办法...

    电脑经常发生各种故障,难免会出现win7系统archlinux静态网络配置错误造成无法上网的问题,我们要如何解决win7系统archlinux静态网络配置错误造成无法上网这个问题呢?有部分朋友反映wi ...

  7. 上网登录窗不弹出_配置 Windows XP 正常上网(TLS HTTPS),连接到 NAS

    Windows XP 是经典的.高效的.可靠的.性能良好的操作系统,然而其大部分版本都已在 2014 年停止支持.其较为流行的版本 SP2 与 SP3 由于各种原因,目前均不能直接正常访问安装了 SS ...

  8. linux 静态连接失败,Windows7下archlinux静态网络配置错误连不上网怎么办?

    一些用户在使用过程中,发现自己的Win7电脑由于archlinux静态网络配置错误导致无法上网,这个问题该怎么解决呢?今天小编就教大家如何解决这个问题吧. 如果用户装了ifconfig和route的话 ...

  9. 树莓派3b+安装openwrt 配置wan lan和wifi

    树莓派3b+安装openwrt 配置wan lan和wifi 1.配置网络 修改/etc/config/network 注释掉option ifname 'eth0'一行,为防止与路由器地址冲突,将其 ...

最新文章

  1. 嵌入式系统一次EMMC测试的体会及错误分析过程
  2. 简易计算机单片机编程思路,到底以什么单片机入门?一些单片机简单的学习方法...
  3. 数据库连接池——C3P0:数据库连接池技术
  4. 1.3计算机的性能指标
  5. Scala apply()方法用于创建伴生类对象
  6. python优先级排序_Python实现一个优先级队列的方法
  7. C语言打印输出红色字体
  8. c语言字符串输出瘕b,c语言课件10tt函数(1)幻灯片资料(51页)-原创力文档
  9. java eml文件解析_java 解析 eml的源代码
  10. 服务器远程登陆最大连接数,解决登录Windows服务器时超出了最大允许连接数
  11. C++基础——模板的0初始化
  12. 所有类型的基类Object,所有类型的基类Type
  13. Web应用程序开发课程总结
  14. 【逻辑漏洞】短信轰炸
  15. 轻微课靠不靠谱,我的60天体验可以说说
  16. 《清平乐词》三篇——李白
  17. git log查看日志中文乱码的解决方法,绝对好用2021
  18. 单片机与上位机的串行通信
  19. sqlserver AlwaysOn实现读写分离配置及java/net代码实现
  20. 富贵竹的水养殖方法和注意事项,6个步骤帮你养出翠绿富贵竹

热门文章

  1. 安氏图书报刊发行管理软件——图书人自己亲手开发的软件
  2. islide软件测试计划
  3. 线性卷积、循环卷积、周期卷积的定义、计算方法及三者之间的关系
  4. 笔记本+win7下USB转串口驱动的安装
  5. 关于智能时代革命性产品的构想--虚拟机器人
  6. android webview epub,《webview实现epub阅读器详解》.pdf
  7. php 不重复邀请码,PHP生成不重复的短邀请码函数
  8. 搭建有效的供应链管理系统软件,能增强企业的核心竞争力
  9. 昇思MindSpore AI框架在知名度与使用率市场份额上处于第一梯队
  10. MyEclipse 设置屏幕护眼色