当前位置: 首页 > article >正文

利用openwrt路由器和随身WIFI搭建CPE

背景:

最近5GCPE挺火,各种硬件层出不穷,包括DY上很多商家在推的AX3000叠加展锐RM500 5G模块,自己组装CPE,成本也在300+

看了下开源硬件,其实就是一个开源的openwrt系统,硬件上5G模块通过usb协议或者pci-e协议与openwrt相连,openwrt把5G模块识别成一个网卡,作为WAN口用,LAN口可以接网线或者关联WIFI热点

硬件改造思路

根据上面的分析,openwrt系统+4G网卡就可以组件一个CPE,笔者手头有个多年前闲置的TPLINK 703N,还有好多个薅羊毛的随身WIFI,基于这两个硬件尝试搭建CPE

步骤:

1.考虑到openwrt需要支持网卡,笔者的703N已经改8M flash了,所以可以自己编译固件支持usb网卡,需要把如下kmod包选上

kmod-usb-net(USB 网卡基础支持)
kmod-usb-net-cdc-ether(大部分 USB 4G/5G 网卡需要)
kmod-usb-net-rndis(部分 USB 共享网络设备需要)
kmod-usb-serial(USB 串口设备支持)
kmod-usb-serial-option(大部分 4G/5G 网卡用这个)
kmod-usb-serial-wwan(用于某些 4G 模块)

编译完毕的固件保存在

2.通过luci web页面刷入新固件,也可以先把固件拷贝到tmp目录,然后通过如下命令升级

sysupgrade -v /tmp/lede-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin

3.把随身wifi插入703N的usb口,上电开机,正常应该可以看到如下log,证明openwrt固件已经支持usb网卡

[   17.615499] usbcore: registered new interface driver cdc_ether
[   17.624219] usbcore: registered new interface driver cdc_ncm
[   17.630923] usbcore: registered new interface driver cdc_subset
[   17.734098] usbcore: registered new interface driver rndis_host

如果看到如下log,证明usb网卡已经连接


[    4.186030] hub 1-0:1.0: USB hub found
[    4.189058] hub 1-0:1.0: 1 port detected
[    4.194799] ehci-pci: EHCI PCI platform driver
[    4.202089] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    4.208623] ohci-platform: OHCI generic platform driver
[    4.215922] uhci_hcd: USB Universal Host Controller Interface driver
[    4.223153] ohci-pci: OHCI PCI platform driver
[    5.063064] usb 1-1: new high-speed USB device number 2 using ehci-platform

到这一步后,敲ifconfig命令,还没有看到新增网卡,说明cdc-ether驱动还未加载,还缺如下关键的步骤:1)上电脑查看随身wifi的pid/uid 2)openwrt 安装usb-modeswitch 3)修改配置,切换usbmode

4.把随身wifi插电脑的usb口,正常可以识别出来一个rndis网卡

查看硬件属性:

记录PID VID,例如

USB\VID_19D2&PID_0536&MI_00\6&330DC382&0&0000

5.然后把随身wifi再插入openwrt上,执行lsusb命令,就发现问题了,PID不一样

root@LEDE:~# lsusb
Bus 001 Device 003: ID 19d2:0548 ZTE WCDMA Technologies MSM
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@LEDE:~#

这时,usbmodeswitch就有用武之地了

6.安装usb-modeswitch

opkg update
opkg install usb-modeswitch

在/etc/usb-mode.json中添加这么一段:

                "19d2:0548": {                                                  "*": {                                                  "t_vendor": 6610,                              "t_product": [ 1334 ],                        "mode": "StandardEject",                        "msg": [  ]                                    }},

最终效果如下:

7.重启openwrt,如果看到如下log,证明cdc-ether驱动已经加载,usb网卡已经识别,

[   15.710954] cdc_ether 1-1:1.0 eth1: register 'cdc_ether' at usb-ehci-platform-1, CDC Ethernet Device, 34:4b:50:00:00:00

查看网口,多出来一个eth1,也有可能是usb0,cdc0等

这时还不能上网,还需要新增一个wan连接,接口选新增的这个网口,协议选dhcp

8.测速环节

电脑直连随身wifi的usb口,测速用的是普通电信卡,非物联网卡

随身wifi插703N的usb口,电脑与703N通过网线连接

可见,703N中转后,网速折半,估计703N的硬件完全根本上随身wifi,测速用的随身wifi是新讯的TZ103,相对于高通410,网速已经提升了不少,发热也低。703N的硬件还不如随身WIFI,测速效果也不报太大希望。

至此,教程完毕,enjoy

相关文章:

利用openwrt路由器和随身WIFI搭建CPE

背景: 最近5GCPE挺火,各种硬件层出不穷,包括DY上很多商家在推的AX3000叠加展锐RM500 5G模块,自己组装CPE,成本也在300 看了下开源硬件,其实就是一个开源的openwrt系统,硬件上5G模块通过usb协议…...

科学智能赋能空间科学研究(2):AI4S 范式下空间科学实验的核心挑战

中国科学院空间应用工程与技术中心在空间科学实验领域的研究覆盖了多模态空间科学实验数据模式挖掘、领域知识抽取、跨学科知识融合与认知智能等研究内容,有效促进了空间科学实验领域的数据应用生态的体系化建设,相关研究成果已正式发表于权威学术期刊《…...

计算机网络学习(九)——CDN

一、CDN CDN(Content Delivery Network,内容分发网络)是一种通过分布式节点将内容更高效地传递给用户的技术架构,广泛应用于加速网站、视频、下载、直播等业务。 CDN 是把内容放到离用户最近的“高速公路入口”,提升访…...

Axure设计案例——科技感渐变线性图

想让数据变化趋势展示告别枯燥乏味,成为吸引观众目光的亮点吗?快来看看这个Axure设计的科技感渐变线性图案例!科技感设计风格凭借炫酷的渐变色彩打破传统线性图的单调,营造出一种令人过目难忘的视觉体验。每一条线条都仿佛是流动的…...

【Opencv+Yolo】Day2_图像处理

目录 一、图像梯度计算 图像梯度-sobal算子: Scharr:权重变化更大(线条更加丰富,比Sobel更加细致捕捉更多梯度信息) Laplacian算子:对噪音点敏感(可以和其他一起结合使用) 二、边…...

嵌入式开发学习(第二阶段 C语言笔记)

内存操作 我们对于内存操作需要依赖于string.h头文件中相关的函数库。 内存操作函数 内存填充 头文件&#xff1a;#include <string.h> 函数原型&#xff1a; void* memset(void *s,int c,size_t n)函数功能&#xff1a;将内存块s的前n个字节填充为c&#xff0c;一般…...

STUSB4500 PPS(PD3.0)快充SINK模块——应用 解析

0 前言 朋友参加车展&#xff0c;收获一枚很漂亮的倍思65W氮化镓快充头&#xff0c;送给我了。 我看了手中只支持33W快充的三星陷入了沉思… 快充头支持PPS协议&#xff0c;我心思这玩意适合做可调电源啊&#xff01; 上网随便一查没查到&#xff0c;都是转换成5V、9V、12V等…...

Android全局网络监控最佳实践(Kotlin实现)

本文将介绍如何在Android应用中实现全局网络状态监控&#xff0c;适配高版本API&#xff0c;并提供完整的Kotlin实现方案。 一、核心实现方案 1. 网络监控核心类 SuppressLint("MissingPermission") class NetworkMonitor private constructor(private val contex…...

从认识AI开始-----解密门控循环单元(GRU):对LSTM的再优化

前言 在此之前&#xff0c;我已经详细介绍了RNN和LSTM&#xff0c;RNN虽然在处理序列数据中发挥了重要的作用&#xff0c;但它在实际使用中存在长期依赖问题&#xff0c;处理不了长序列&#xff0c;因为RNN对信息的保存只依赖一个隐藏状态&#xff0c;当序列过长&#xff0c;隐…...

Docker系列(五):ROS容器化三叉戟 --- 从X11、Wayland到DockerFile实战全解析

引言 随着机器人操作系统&#xff08;ROS&#xff09;在机器人领域的广泛应用&#xff0c;容器化技术成为提高开发效率和简化部署的关键。在多种容器化方案中&#xff0c;基于X11、Wayland和标准Dockerfile的ROS容器化方式各有特点&#xff0c;它们在容器内安装ROS1和ROS2的实…...

【位运算】常见位运算总结

位运算 常见位运算总结位1的个数比特位计数汉明距离只出现一次的数字只出现一次的数字 III 常见位运算总结 位1的个数 191. 位1的个数 给定一个正整数 n&#xff0c;编写一个函数&#xff0c;获取一个正整数的二进制形式并返回其二进制表达式中 设置位 的个数&#xff08;也被…...

Delphi 导入excel

Delphi导入Excel的常见方法可分为两种主流方案&#xff1a;基于OLE自动化操作Excel原生接口和利用第三方组件库。以下为具体实现流程及注意事项&#xff1a; ‌一、OLE自动化方案&#xff08;推荐基础场景&#xff09;‌ 该方法通过COM接口调用本地安装的Excel程序&#xff0c…...

5G RedCap是什么-与标准5G的区别及支持路由器推荐

技术背景与重要性 从智能穿戴到工业传感器&#xff0c;物联网设备种类繁多&#xff0c;但并非所有设备都需要标准5G的全部功能。为满足这些中端应用的需求&#xff0c;3GPP在Release 17中引入了5G RedCap&#xff08;Reduced Capability&#xff09;&#xff0c;也称为5G NR-L…...

纯html,js创建一个类似excel的表格

后台是php,表中数据可编辑,可删除,可提交到数据库 <!DOCTYPE html> <html> <head><meta charset="utf-8"><style>body {font-family: Arial, sans-serif;margin: 20px;background-color: #fff;}.toolbar {margin-bottom: 10px;disp…...

如何使用windows下的vscode连接到本地虚拟机的linux

1.打开windows下的vscode 下载下图所示插件 下载完以后打开首选项选择设置搜索ssh 搜索ssh往下滑对下图打上勾 点击下图或者按ctrl shift P 搜索ssh 选择第一个&#xff0c;双击后 进入这个界面 好的window基本配置差不多 2.打开虚拟机 在终端中输入 sudo apt-get install…...

Vue开发系列——零基础HTML引入 Vue.js 实现页面之间传参

目录 一、实现页面之间传参 二、使用 URL 查询参数实现传参(不需要额外引入vue-router) 一、实现页面之间传参 实现从a.html 向b.html传参param1value1, param2value2 二、使用 URL 查询参数实现传参(不需要额外引入vue-router) a.html页面 a.html代码&#xff1a; <!…...

Ubuntu22.04 重装后,串口无响应

欢迎关注公号&#xff1a;每日早参&#xff0c;获取每日最新资讯&#xff01; 1&#xff1a;确认串口设备文件是否存在 在Ubuntu中&#xff0c;串口通常会映射为以下两种 /dev/ttyS*&#xff08;对于传统的串口&#xff09; /fragistics/dev/ttyUSB*&#xff08;对于USB转串口…...

设计模式-发布订阅

文章目录 发布订阅概念发布订阅 vs 监听者例子代码 发布订阅概念 发布/订阅者模式最大的特点就是实现了松耦合&#xff0c;也就是说你可以让发布者发布消息、订阅者接受消息&#xff0c;而不是寻找一种方式把两个分离 的系统连接在一起。当然这种松耦合也是发布/订阅者模式最大…...

C#学习26天:内存优化的几种方法

1.减少对象创建 使用场景&#xff1a; 在循环或密集计算中频繁创建对象时。涉及大量短生命周期对象的场景&#xff0c;比如日志记录或字符串拼接。游戏开发中&#xff0c;需要频繁更新对象状态时。 说明&#xff1a; 重用对象可以降低内存分配和垃圾回收的开销。使用对象池…...

功能测试向量是个什么概念

在半导体测试领域&#xff0c;功能测试向量&#xff08;Functional Test Vector&#xff09; 是一个非常重要的概念。以下是对其的详细解释&#xff1a; 1. 什么是功能测试向量&#xff1f; 功能测试向量是一组输入信号和预期输出信号的集合&#xff0c;用于验证芯片的功能是否…...

C++之string的模拟实现

string 手写C字符串类类的基本结构与成员变量一、构造函数与析构函数二、赋值运算符重载三、迭代器支持四、内存管理与扩容机制五、字符串操作函数六、运算符重载总结 手写C字符串类 从零实现一个简易版std::string 类的基本结构与成员变量 namespace zzh { class string { …...

Python打卡第38天

浙大疏锦行 作业&#xff1a; 了解下cifar数据集&#xff0c;尝试获取其中一张图片 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader , Dataset # DataLoader 是 PyTorch 中用于加载数据的工具 from torchvision im…...

【网络安全】轻量敏感路径扫描工具

订阅专栏,获取文末项目源码。 文章目录 工具简介工具特点项目结构使用方法1.环境准备2.配置目标URL3.运行扫描4.结果查看5.自定义扩展项目源码工具简介 该工具是一款基于Python的异步敏感路径扫描工具,用于检测目标网站是否存在敏感文件或路径泄露(如配置文件、密钥、版本控…...

K8S查看pod资源占用和物理机器IP对应关系

方法1&#xff1a;使用管道组合多个grep kubectl describe node | grep -E "Resource|InternalIP" -A 3方法2&#xff1a;显示节点名称和IP地址的对应关系 kubectl describe node | grep -E "Name:|InternalIP:"方法3&#xff1a;更清晰的格式化输出 ku…...

Java Spring 之拦截器HandlerInterceptor详解与实战

目录 一、拦截器的作用1.1 请求处理前的拦截1.2 请求处理后的拦截1.3 请求完成后的拦截 二、创建拦截器2.1 实现 HandlerInterceptor 接口2.2 注册拦截器 三、拦截器的使用场景3.1 权限校验3.2 日志记录3.3 性能监控 四、总结 在 Spring 框架中&#xff0c;拦截器&#xff08; …...

开源第三方库发展现状

摘要&#xff1a;当前&#xff0c;开源第三方库生态正呈现爆发式增长趋势。GitHub 目前已托管超过 4.2 亿个代码仓库&#xff0c;远超早期统计的 1 亿规模&#xff0c;显示出开发者社区的活跃度持续攀升。同时&#xff0c;37 个主流包管理器所维护的开源组件数量可能已达到数千…...

JavaSE核心知识点04工具04-02(IDEA)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 JavaSE核心知识点04工具04-02&#xff08;ID…...

NodeMediaEdge通道管理

NodeMediaEdge任务管理 简介 NodeMediaEdge是一款部署在监控摄像机网络前端中&#xff0c;拉取Onvif或者rtsp/rtmp/http视频流并使用rtmp/kmp推送到公网流媒体服务器的工具。 在未使用NodeMediaServer的情况下&#xff0c;或者对部分视频流需要单独推送的需求&#xff0c;也可…...

25、web场景-【源码分析】-静态资源原理

25、web场景-【源码分析】-静态资源原理 静态资源原理主要涉及Spring Boot如何管理和提供静态文件&#xff0c;如CSS、JavaScript、图片等。以下是详细的分析&#xff1a; #### 默认静态资源目录 Spring Boot默认将以下目录作为静态资源的存放位置&#xff1a; - classpath:/…...

qt结构化绑定的重大缺陷:只能创建局部变量

根据你的描述,问题出现在使用 std::make_tuple 和结构化绑定(structured binding)初始化多个成员变量时。这种初始化方式在C++中是合法的,但可能会导致一些问题,尤其是在类的成员变量初始化中。 问题分析 成员变量初始化顺序: 在C++中,类的成员变量的初始化顺序是按照它…...