openwrt配置AIR724实现RNDIS上网

本文档详细记录了在Linux内核中添加Air724UG 4G模块支持的过程,包括修改内核代码以识别设备PID和VID,确保RNDIS网络功能正常工作。此外,还介绍了通过编译OpenWRT系统解决设备重启后网络接口消失的问题,并提供了相关配置和烧录系统的步骤。遇到的网络连接问题最终通过调整wan口设置得到解决。
摘要由CSDN通过智能技术生成

啊哈,距离立项已经过去了,额,额, 额,8个月了。终于,又有空搞这个了,总结一下上次开的板子,有一个封装图是在网上找到,虽然我有官方给的数据手册,但是我上网找了个封装,我相信你们懂的,画封装虽然不费事,但是,我就是懒,所以,出错了,重新来搞一次吧。
image.png
有用的参考内容
如何排查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条件
	//Air72X
	if (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

image.png

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

image.png

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

image.png

  1. 回车,如下图

image.png

  1. 完成

四、修改wan口

image.png
image.png
然后保存就行了。

问题

  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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值