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上没有安装对应的驱动,但是没有出现网络适配器。奇怪的是,设备管理器出现的是串口设备,并没有出现网络设备。

Linux USB实现网络共享相关推荐

  1. xp系统usb android,xp系统usb手机网络共享怎么设置,xp设置usb手机网络分享的方法

    随着智能手机的不断普及,如今通过USB数据线将手机与计算机绑定,从而实现计算机共享手机的互联网连接早已成为现实.但于对于Android类型的智能手机而言,通常情况下支持的绑定只限于Windows Vi ...

  2. 虚拟化识别USB、网络共享U盾、远程管理Ukey的专业解决方案 在金融、工程、教育教学领域的应用尤为常见...

    网络共享 USB 设备的硬件解决方案 支持网络功能的USB集线器,使USB设备方便地连接到局域网中 完整的TCP/IP协议支持 通过网络远程使用加密狗等USB设备 WEB 管理界面 支持VMWare\ ...

  3. 电脑wifi通过以太网口与linux开发板网络共享设置方法

    本文介绍pc 端wifi通过以太网口与linux开发板实现网络共享的方法,该方法主要是为了实现板卡可以访问外网上网. (当然也可以通过开发板控制器直接无线连接wifi 热点方式达到目的) 步骤如下: ...

  4. linux 挂载 win网络共享盘

    挂载命令 sudo apt-get install cifs-utilssudo mount -t cifs -o username=sss,password=ss123,vers=2.0 //192 ...

  5. Android系统通过手机USB进行网络共享设置

    设备:主机android版本 4.2.2 手机 华为 8.0 1.手机通过USB连接主机 2.点开手机设置,点击USB共享网络 3.串口连接主机,命令行输入 netcfg root@xxxx:/ # ...

  6. linux 利用win网络共享上网

    环境介绍: 1.win主机(可上网),网卡1上网使用 : 网卡2分配IP地址连接内网. 2.linux内网主机1台,主机ip和win主机网卡2同段. 操作步骤: 1.win网卡1设置共享 2.共享后需 ...

  7. linux访问nfs文件夹,linux配置NFS网络共享文件夹目录

    网络共享磁盘大家都用过,在windows上叫共享文件夹,linux叫共享目录,linux上配置网络共享目录也有很多中方式samba和nfs,各自有各自的优点,nfs是比较常用的. 1.安装NFS 服务 ...

  8. Linux通过手机USB网络共享上网

    Linux通过手机USB网络共享上网 因为各种各样的原因,Linux系统有时无法通过自身网卡接入互联网,而需要通过手机才能接入互联网. 设置方法如下: 1.连接好数据线并在手机设置中打开"U ...

  9. 在linux系统下挂接(mount)光盘镜像文件、移动硬盘、U盘以及Windows网络共享和UNIX...

    挂接命令(mount) 命令格式: mount [-t vfstype] [-o options] device dir 其中: 1.-t vfstype指定文件系统的类型,通常不必指定.mount会 ...

最新文章

  1. CRM系统业务的分析(1)
  2. unity3d-游戏实战突出重围,第四天 添加角色
  3. 【Kotlin】变量简介 ( 可空类型 | lateinit | 初始化判定 | 非空类型 | !! 与 ? 修饰符 | ?= ?. ?: 运算符 | 抽象属性变量)
  4. Python的setuptools详解【3】打包wheel并提交给pypi
  5. 二、StreamAPI
  6. linux kernl网址
  7. Linux shell ==运算符
  8. WinForm始终置顶并获取焦点
  9. 【SQL Sever】将SQL Sever中的一个数据表的数据导出为insert语句
  10. requestparam的作用_Spring MVC:请解释@RequestParam和@ModelAttribute之间的区别
  11. 全球最大的第一视角视频数据集开源,取自真实生活,还能提升厨艺
  12. 处理顶点——使用顶点缓冲和索引缓冲将顶点和索引保存在显存中
  13. 反恐精英代码_知名网游源代码泄漏 ,外挂潮将来?
  14. 实战篇3:一切皆对象,文件目录体系(节点树)
  15. Java图形化界面编程之——Swing
  16. 2019年系统分析师考试总结
  17. Minesweeper 蓝桥杯 扫雷游戏(化繁为简)(摒弃多层循环)
  18. SharePlex for oracle on linux安装步骤
  19. [配置] 安卓 | 将微信公众号文章保存到Notion
  20. android 拦截耳机按键,Android耳机监测以及耳机按键监测

热门文章

  1. 计算机控制与自动化专业世界排名,2019ARWU软科世界大学自动化与控制专业排名TOP50...
  2. python编写一个投票计数器_用python编写计数器
  3. ICLR 2021 | 近期必读强化学习精选论文
  4. 金龙鱼过不去的坎,上市就能找到出口了?
  5. PHP支付-Stripe支付对接支付宝
  6. 中国网络教育行业市场需求及十四五发展新挑战研究报告2021-2027年
  7. 常用的iOS第三方框架
  8. 本地 Services(服务)
  9. 在Ubuntu中添加和删除PPA的软件源
  10. 记第十六次CCF CSP考试的经历