Linux USB实现网络共享

news2025/1/15 6:27:25

usb 网络共享

两个Linux设备之间实现USB网络共享,类似Android手机开启USB网络共享的功能。其中一台设备为USB Host,另外一台为USB Device。Device使用的USB接口必须为USB Slave,否则无法正常工作。使用RNDIS驱动,还能够通过USB与Windows实现网络共享。使用的协议主要是Ethernet over USB

参考链接:

https://lishiwen4.github.io/network/cdc-and-rndis

https://www.cnblogs.com/zhuangquan/p/15428253.html

https://developer.ridgerun.com/wiki/index.php/How_to_use_USB_device_networking

https://www.51cto.com/article/533323.html

1. USB Host配置

请添加图片描述

重新编译烧录内核。

2. USB Device配置

请添加图片描述

重新编译烧录内核。

启动之后,会有一张usb0网卡。

3. 网络测试

这里是用imx6ull做Device,hi3518ev200做Host,通过USB连接线连接两个设备。注意:从机设备要使用USB OTG口,否则无法识别。 连接后,主机设备也将出现usb0网卡。并出现内核打印,表明使用的是EEM驱动。

usb 1-1.1: new high-speed USB device number 3 using hiusb-ehci
cdc_eem 1-1.1:1.0: usb0: register 'cdc_eem' at usb-hiusb-ehci-1.1, CDC EEM Device, 06:86:fc:8d:90:41

这里设置主机和从机在同一网段。

Host:

ifconfig usb0 192.168.50.100 up

Device:

ifconfig usb0 192.168.50.101 up 

测试:

# ping 192.168.50.100
PING 192.168.50.100 (192.168.50.100): 56 data bytes
64 bytes from 192.168.50.100: seq=0 ttl=64 time=1.509 ms
64 bytes from 192.168.50.100: seq=1 ttl=64 time=0.756 ms
64 bytes from 192.168.50.100: seq=2 ttl=64 time=0.793 ms
64 bytes from 192.168.50.100: seq=3 ttl=64 time=0.644 ms
^C
--- 192.168.50.100 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.644/0.925/1.509 ms
# ping 192.168.50.101
PING 192.168.50.101 (192.168.50.101) 56(84) bytes of data.
64 bytes from 192.168.50.101: icmp_seq=1 ttl=64 time=0.687 ms
64 bytes from 192.168.50.101: icmp_seq=2 ttl=64 time=0.644 ms
64 bytes from 192.168.50.101: icmp_seq=3 ttl=64 time=0.753 ms
64 bytes from 192.168.50.101: icmp_seq=4 ttl=64 time=0.645 ms
64 bytes from 192.168.50.101: icmp_seq=5 ttl=64 time=0.621 ms

--- 192.168.50.101 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4003ms
rtt min/avg/max/mdev = 0.621/0.670/0.753/0.046 ms

3.1 取消Device的EEM

重新编译Device的内核。Host在连接USB后,内核将出现以下打印,表明使用的CDC Ethernet驱动。

usb 1-1.1: new high-speed USB device number 5 using hiusb-ehci
cdc_ether 1-1.1:1.0: usb0: register 'cdc_ether' at usb-hiusb-ehci-1.1, CDC Ethernet Device, e6:58:40:39:1f:4d

配置Host和Device的usb0网卡,并进行ping测试,网络也是OK的。

3.2 修改Device Gadget Driver

做如下修改,最后Host端识别到的还是CDC Ethernet,网络也是通的。

请添加图片描述

3.3 Host勾选CDC Ethernet Subset请添加图片描述

勾选这个驱动,Host端识别到设备是Linux Device,虽然Host和Device都能生成usb0网卡,但是在配置IP后,ping测试不通。

 usb 1-1.1: new high-speed USB device number 6 using hiusb-ehci
cdc_subset 1-1.1:1.0: usb0: register 'cdc_subset' at usb-hiusb-ehci-1.1, Linux Device, 2a:15:5c:f7:a6:e2

遗憾的是,还是没有将RNDIS使用起来。在内核中,无论是配置RNDIS Host,还是RNDIS Device,驱动的依赖都是CDC Ethernet,因此默认都是使用CDC Ethernet。估计只有让Windows来作为Host才能使用上RNDIS了。

IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
MAC Address = e0:e1:a9:97:ad:be
IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
fec 20b4000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
random: nonblocking pool is initialized
R8188EU: ERROR assoc success
IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
g_ether gadget: high-speed config #2: RNDIS
g_ether gadget: high-speed config #2: RNDIS

果然,使用USB线连接Windows后,Device使用的驱动是RNDIS。但是由于Windows上没有安装对应的驱动,但是没有出现网络适配器。奇怪的是,设备管理器出现的是串口设备,并没有出现网络设备。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/162625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ROS2入门】介绍 eloquent 版本中 turtlesim 和 rqt 使用

大家好,我是虎哥,从今天开始,我将花一段时间,开始将自己从ROS1切换到ROS2,在上一篇中,我们Jeston TX1 核心模块,JetPack_4.6.3刷机后环境中安装了 ROS2 eloquent版本,并完成了初步的…

C语言-动态内存分配(12.1)

目录 思维导图: 1.为什么存在动态内存分配 2.动态内存函数的介绍 2.1 malloc 2.2 free 2.3 calloc 2.4 realloc 3.常见的动态内存错误 写在最后: 思维导图: 1.为什么存在动态内存分配 我们现在学习了一些内存开辟的方式&#xff1a…

IDEA如何把自己改动的代码一次性发给别人

背景介绍: 想把自己改动的代码同步给同事 方式1:通过git,把自己本地代码 push 到代码托管平台,同事从代码托管平台 pull 最新代码; 方式2:通过IDEA的Patch包的方式来快速发送修改的代码(步骤如下…

pr值高的域名对网站有什么价值?怎么在线查询搜狗PR权重

众所周知一个全新的搜狗域名在建立网站后搜索引擎会对其进行一个类似资格评价的阶段,我们将这个阶段称为沙盒,在沙盒里面的这段时间,我们将其称为沙盒期,沙盒期一般都是1-3个月。在沙盒期这段时间内。我们仍需要经常更新文章。所以…

联合证券|海南自贸港快速发展,概念股出炉!

海南自由贸易港货物进出口 初次打破2000亿元关口 1月13日,国新办就2022年全年进出口状况举行发布会。会上介绍道,近两年海南自由贸易港货物进出口快速开展,继2021年头次打破1000亿元后,2022年再上新台阶,初次打破2000…

Pytorch深度学习【十二】

填充和步幅 卷积核带来的问题—输入形状不断减小更大的卷积核可以更快的减小输出大小 形状从nh∗nwn_h * n_wnh​∗nw​减少到 (nh−kh1)∗(nw−kw1)(n_h-k_h1)*(n_w-k_w1)(nh​−kh​1)∗(nw​−kw​1) 解决方案 填充—在输入周围添加额外的行/列—一般用0填充理论依据 填充p…

Odoo 16 企业版手册 - 库存管理之报告

报告 正确监控库存操作将帮助您轻松分析和理解库存管理的工作流程。Odoo可以为您提供一个专用平台,特别是用于为您的组织中完成的库存操作生成报告,并在图形和表格视图中准确表示数据。您可以实时自定义报告,以根据您的要求获得细致的报告。在…

Nvm,Nrm使用教程

NVM介绍 NVM全称node.js version management ,专门针对node版本进行管理的工具,通过它可以安装和切换不同版本的node.js 使用场景 我目前的公司有很多项目,其中有一些老项目用的是vue2.5左右了webpack版本也比较低,只能使用10.16.…

[前端笔记——WEB基础] 1.WEB基本概念

[前端笔记——WEB基础] 1.WEB基本概念基本概念1.资源 resourse2.链接3.HTTP 协议4.网页的真实样子:HTML静态网页与动态网页1.静态网页2.动态网页现代网站架构1.网站架构当我们访问一个网站时,后台都会发生什么事情捏?www——万维网 www:Worl…

Android系统启动(三) — SystemServer处理过程

system_server 进程主要是用于创建系统服务,AMS、WMS、PMS 都是由它创建的。 具体来说,SystemServer 进程被创建后,主要做了以下工作: 启动 Binder 线程池,这样就可以与其他进程进行通信;创建 SystemServi…

JDK9下载、安装和配置环境变量图解

下载 1.输入:https://www.oracle.com/ 2.选择“java download” 3.点击“java archive” 下拉找到 java9 4.点击进入,选择windows版本 5.勾选,下载。需要账号下载 安装 1.双击安装包,下一步 2.选择安装路径,…

旅游景区官网(网站、小程序)小开发可以实现哪些功能?

伴随着我们生活水平的提升和手上的余钱愈来愈多,绝大多数人一定会选取去不同地方开展旅游,旅游也成為了经济发展的一大支撑。将来便捷用户和旅游业的发展趋势,打造出旅游景区官网(网站、H5、小程序等)开发设计是十分关…

【UE4 第一人称射击游戏】50-用另一种方法实现僵尸随机漫游 僵尸攻击玩家时造成伤害

上一篇:【UE4 第一人称射击游戏】49-僵尸攻击动画本篇效果:使用另一种逻辑实现了僵尸的随机漫游僵尸攻击玩家时会对玩家造成实质上的伤害步骤:打开“SimpleAI”,当僵尸看见玩家时,设置变量“CanSeePlayer”为False我们…

深入了解 LinkedBlockingQueue阻塞队列,分析扩容机制以及小顶堆原理

1. 前言 今天的目的是为了深入了解下优先队列的机制。不过优先队列是基于大小顶堆实现的,但是其本质就是一个二叉树,所以今天会讲一些铺垫知识,好了,废话不多说了,让我们开始吧 2. 前置知识 2.1 大顶堆 完全二叉树&am…

1.2、操作系统的特征

1、并发 并发\color{red}并发并发:指两个或多个事件在同一时间间隔内发生。 这些事件宏观上是同时发生\color{red}宏观上是同时发生宏观上是同时发生的,但微观上是交替发生\color{red}微观上是交替发生微观上是交替发生的。 并行\color{red}并行并行&am…

STM32F103学习笔记(10)——I2C多路复用器TCA9548A使用

一、简介 TCA9548A 器件配有八个可通过 I2C 总线控制的双向转换开关。串行时钟/串行数据 (SCL/SDA) 上行对可扩展为 8 个下行对或通道。根据可编程控制寄存器的内容,可选择任一单独 SCn/SDn 通道或者通道组合。这些下游通道可用于解决 I2C 从器件地址冲突。例如&…

高精度加法【c++实现】超详细讲解

高精度存在的意义 大家一定都知道int和long long是有极限的(如下表),如果超了就无法计算正确结果了,那该用什么方法来计算呢?这就是我们今天要说的算法———高精度算法。(本文只讲加法) 类型…

超级浏览器的防关联效果怎么样?

很多从事跨境电商业务的朋友,都尝试用各种手段来防止账号关联,现在有很多不要钱的超级浏览器可以下载使用,但是很多人却不敢把高价值的账号放在超级浏览器上面,今天我们就来详细聊聊这个问题。说超级浏览器之前,我们先…

抖音世界杯直播的低延迟是怎么做到的?

动手点关注干货不迷路世界杯已经结束了,梅西带领阿根廷时隔三十六年之后终于如愿捧杯。抖音直播提供的 4K 超高清超低延迟看播能力给亿万观众留下了深刻的印象,决赛的 PCU 达到 3700w,在这样大规模并发下,如何能稳定流畅地做到更低…

GO语言配置和基础语法应用(一)

一、golang的下载和安装 这一步比较简单,直接打开go的官网,点击download即可,个别人打开慢可以用中国的镜像网站,之后访问的速度和下载第三方库的速度会快很多,之后傻瓜式安装一路到底即可。 配置环境变量 注意&#…