啊哈,距离立项已经过去了,额,额, 额,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. 数学学渣必备!拍照上传,分步求解,微软解题神器拯救你
  2. 友情链接优化的技巧分享
  3. java web系统拆分_Java系统中如何拆分同步和异步
  4. nova 之compute服务
  5. 如何成为CSDN博客专家
  6. Robot framework 引入 Selenium2Library 类库:
  7. JNDI配置原理详解
  8. CSS3弹性盒子Flex
  9. iphone-常用的对视图图层(layer)的操作
  10. idea 导入到码云
  11. java插件化_从零开始实现一个插件化框架(一)
  12. 不考虑知识点,考代码段更好
  13. notepad正则提取
  14. wps桌面右键缺少新建文档入口
  15. 基于web的仿Steam游戏网
  16. 命里有时终须有,命里无时莫强求
  17. ViewPager 2 使用讲解
  18. 关于sysmon的基本使用(1)
  19. 携程跨团队敏捷项目实战
  20. 【通信】通信网络基础分类

热门文章

  1. 深度学习--大黄蜂预测
  2. [附源码]计算机毕业设计游戏商城平台论文Springboot程序
  3. 推荐5款常用的有限元分析CAE软件
  4. Acer宏基笔记本电脑,宏碁暗影骑士擎AN515-58原装出厂恢复原厂预装Windows11/Win10镜像oem专用系统
  5. Android如何使用.so库
  6. Android 蓝牙遥控器调试记录
  7. 关于word文档在不同电脑上排版错乱问题。。
  8. 堆积密度怎么做_材料的密度、表观密度和堆积密度
  9. android usb打印机a4,打印机随身带 全球最小A4打印机试用
  10. 用java编写的爱情红心_如何用java实现每天给对象发情话