千家信息网

怎么在Linux下使用USB网络

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"怎么在Linux下使用USB网络",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么在Linux下使用USB网络"吧!在介绍USB的
千家信息网最后更新 2026年11月02日怎么在Linux下使用USB网络

这篇文章主要讲解了"怎么在Linux下使用USB网络",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么在Linux下使用USB网络"吧!

在介绍USB的驱动开发时,我通常会用用Linux的的USB网络来演示,它兼容RNDIS网络,一台Linux即可充当USB的device端,也可以由另一台Linux来充当USB的Host端,Host端的也可以由安装的微软的标准的Rndis驱动来充当.

这种网络有相当强的实用价值,而且完整实现的Linux USB Slave驱动和Linux USB Gadget两种驱动,因此有很强演示效果.

应用场景:

一、智能手机共享网络

现在智能手机采用3G网络,通过Linux/Android手机上安装相关驱动,可以用USB线在主机和手机建一个共享网络,这样智能手机充当一个无线路由器的功能.现在手机一般都有这个功能,WINDOWS安装Rndis驱动即可.而且就是用的我们后面提到的g_ether.ko驱动。

这种方式,远远优于把手机当成3G的modem,用USB来拨号这种方式,共享网络相当于手机和电脑都上网不误。

这种方式跟用手机WIFI作无线热点的功能一样,但是APN的实现的要求较高,很多手机不一定能支持,而且USB还有同时供电.还是有其优点.

二、增加第二个有线网络.

在教室上课时,很多时候服务器和学生用机只有一个网络口接口,我把网线接到局域网时,我的开发板就无法用NFS接我的机器,学生机也是如此,现在服务器上把有线网络接入局域网,而我的开发板与服务器则直接相连.

(1)USB 网络的结构

在与以太网不同,在USB网络里各终端不是对等的,即USB Host端和USB Device端的所需要软件和硬件接口不一样.

USB网络有很多种,其中用得最多是RNDIS网络。它的全称是

Remote Network Device Interface Specification.

它是由微软制定的规范,因为手机使用用得较多,因此LINUX也在驱动中兼容这个规范

(PS:Android手机这个功能几乎是标配,而手机需要支持的功能FAT,RNDIS,MTP(媒体传输协议),都是MS的专利,这几张牌成了MS向Android手机制造产家收取专利费的重要武器,三星已经交了钱了)

一般象PC机充当USB Host角色,带USB Host的接口的Linux开发板也可以充当这个角色.

如果是LINUX主机,需要安装安装 rndis_host.ko 这个驱动。一般发行版均已经编译好,直接运行即可。

如果嵌入式开发板可以配置内核的rndis_host为动态模块

它位于

│ Prompt: Host for RNDIS and ActiveSync devices (EXPERIMENTAL) │

│ Defined at drivers/net/usb/Kconfig:234 │

│ Depends on: NETDEVICES && USB && NET && USB_USBNET && EXPERIMENTAL │

│ Location: │

│ -> Device Drivers │

│ -> Network device support (NETDEVICES [=y]) │

│ -> USB Network Adapters │

│ -> Multi-purpose USB Networking Framework (USB_USBNET [=m]) │

如果是WINDOWS主机,则需要安装MS的Generic RNDIS驱动。

在USB的另一端,一般是嵌入式设备,以嵌入式LINUX为例,需要安装USB Gadget驱动g_ether.ko 来进行通讯。g_ether.ko在配置菜单位置如下

Symbol: USB_ETH_RNDIS [=n] │

│ Prompt: RNDIS support │

│ Defined at drivers/usb/gadget/Kconfig:609 │

│ Depends on: && USB_ETH │

│ Location: │

│ -> Device Drivers │

│ -> USB support (USB_SUPPORT [=y]) │

│ -> USB Gadget Support (USB_GADGET [=y]) │

│ -> USB Gadget Drivers ( [=m]) │

│ -> Ethernet Gadget (with CDC Ethernet support) (USB_ETH [=n │

因此一个完整RNDIS网络结构如下

二、Linux USB 网络搭建

USB Host安装,以RHEL5为例,直接运行如下命令即可安装 rndis_host.ko

modprobe rndis_host

它将安装 rndis_host.ko和usbnet.ko

[root@hxy]# find /lib/modules/2.6.18-194.el5/ -name "rndis*"  /lib/modules/2.6.18-194.el5/kernel/drivers/usb/net/rndis_host.ko  [root@hxy]# modprobe rndis_host  [root@hxy]# lsmod | grep rndis_host  rndis_host 10433 0  cdc_ether 9793 1 rndis_host  usbnet 19913 2 rndis_host,cdc_ether

在开发板上编译好内核模块,g_ether.ko.执行如下命令

# insmod g_ether.ko  g_ether gadget: ing random self ethernet address  g_ether gadget: using random host ethernet addr  usb0: MAC de:5e:8b:3d:84:db  usb0: HOST MAC 32:90:92:52:a9  g_ethethernet Gadget, morial Day 2008  g_ether gadget: g_ether ready  Registered gadget driver 'g_ether'

分别在主机和开发板之间抽入USB线,其中开发板使用D型的Slave端接口(不要插在HOST接口上!) 让USB网卡结点生效,这里一般是usb0

ifconfig usb0 192.168.3.101 up     hub 1-0:1.0: unable to enumerate USB device 2     g_ether gadget: high speed config #1: Chernet (ECM)

在主机端做类似配置,配成另一个IP即可

ifconfig usb0 192.168.3.120 up         # ifconfig usb0 192.168.3.120 up      usb 1-1: new high speed USB device using ehci_hcd and address 5      usb 1-1: configuration #1 chosen from 2 choices      usb0: register 'cdc_ether' at usb-0000:00:1d.7-1, CDC Ethernet Device, 32:90:26:92:52:a9

这时在两端即可以互相 ping 通。

三、与Windows 建立联接。

如果希望与Windows 建立RNDIS网络联接,需要下载RNDIS驱动,并且根据g_ether.ko的产商号和设备号调整安装INF文件。

1.确定VID和PID

首先确认g_ether.ko的RNDIS的vendor号和product号.它的定义在 drivers/usb/gadget/ether.c中

#define RNDIS_VENDOR_NUM 0x0525 /* NetChip */  #define RNDIS_PRODUCT_NUM 0xa4a2 /* Ethernet/RNDIS Gadget */

2.下载WINDOWS的RNDIS驱动.

http://www.microsoft.com/china/whdc/device/network/NDIS/rndis.mspx

或

http://gp2x.generation.free.fr/public/Autres/

如果不成功,去找一下RNDIS-USB-Kit_05.exe 这个文件。它是一个压缩文件,其中的rndismpy.sys,usb8023y.sys就是驱动文件.

3.修改安装inf文件

以其中的RNDIS_Template.inf为蓝本修改安装文件。主要修改两个地方:

把 mm/dd/yyyy,x.y.v.z 修改成任意的时间和版本号,我修改是 09/28/2011,1.0.0.0

(注意有两处)

把 USB\VID_vvvv&PID_pppp 修改成查到的数字,这里必须是Linux定义的 USB\VID_0525&PID_A4A2

把inf和两个sys放在一起,随意取个名字,我取名 hxy_rndis.inf

4.安装驱动

在开发板与WINDOWS之间插入USB线。这时WINDOWS会提示安装驱动,选择手功安装,并且选择上一步的 sys所在目录即可安装

安装后系统会出现一个RNDIS的网卡,配置IP即可与开发板通讯

感谢各位的阅读,以上就是"怎么在Linux下使用USB网络"的内容了,经过本文的学习后,相信大家对怎么在Linux下使用USB网络这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

网络 驱动 手机 开发 文件 主机 功能 接口 配置 就是 嵌入式 方式 智能 服务器 学习 服务 专利 两个 之间 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 中关村互联网 科技集团 科技互联网政务服务 互联网络科技有限公司 中国 科技 互联网 齐家互联网科技 狮子座互联网科技培训 互联网高科技股票 成都狮子座互联网科技 互联网科技有限公司 翻译 盛创互联网科技有限公司 成都仁贤领冠互联网科技有限公司 青岛中康互联网医疗科技有限公司 乌鲁木齐新华智原互联网科技学校 风投北京互联网科技 工业互联网科技创业 萌小萌互联网科技河南有限公司 中国新注册互联网科技 唐山双旺合互联网科技产业园 科技发展第三阶段互联网时代 佰商互联网科技有限公司 华服互联网科技官网 中国科技创新与世界互联网大会 阿里互联网科技企业 北京市互联网新科技 艺电能源互联网科技有限公司招聘 恒生科技指数 中概互联网 互联网对科技影响 互联网的黑科技实验室 利用互联网等科技手段
0