自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux下使用USB網(wǎng)絡

系統(tǒng) Linux 系統(tǒng)運維
在介紹USB的驅(qū)動開發(fā)時,我通常會用用Linux的的USB網(wǎng)絡來演示,它兼容RNDIS網(wǎng)絡,一臺Linux即可充當USB的device端,也可以由另一臺Linux來充當USB的Host端,Host端的也可以由安裝的微軟的標準的Rndis驅(qū)動來充當。

在介紹USB的驅(qū)動開發(fā)時,我通常會用用Linux的的USB網(wǎng)絡來演示,它兼容RNDIS網(wǎng)絡,一臺Linux即可充當USB的device端,也可以由另一臺Linux來充當USB的Host端,Host端的也可以由安裝的微軟的標準的Rndis驅(qū)動來充當.

這種網(wǎng)絡有相當強的實用價值,而且完整實現(xiàn)的Linux USB Slave驅(qū)動和Linux USB Gadget兩種驅(qū)動,因此有很強演示效果.

應用場景:

一、智能手機共享網(wǎng)絡

現(xiàn)在智能手機采用3G網(wǎng)絡,通過Linux/Android手機上安裝相關(guān)驅(qū)動,可以用USB線在主機和手機建一個共享網(wǎng)絡,這樣智能手機充當一個無線路由器的功能.現(xiàn)在手機一般都有這個功能,WINDOWS安裝Rndis驅(qū)動即可.而且就是用的我們后面提到的g_ether.ko驅(qū)動。

這種方式,遠遠優(yōu)于把手機當成3G的modem,用USB來撥號這種方式,共享網(wǎng)絡相當于手機和電腦都上網(wǎng)不誤。

這種方式跟用手機WIFI作無線熱點的功能一樣,但是APN的實現(xiàn)的要求較高,很多手機不一定能支持,而且USB還有同時供電.還是有其優(yōu)點.

二、增加第二個有線網(wǎng)絡.

在教室上課時,很多時候服務器和學生用機只有一個網(wǎng)絡口接口,我把網(wǎng)線接到局域網(wǎng)時,我的開發(fā)板就無法用NFS接我的機器,學生機也是如此,現(xiàn)在服務器上把有線網(wǎng)絡接入局域網(wǎng),而我的開發(fā)板與服務器則直接相連.

(1)USB 網(wǎng)絡的結(jié)構(gòu)

在與以太網(wǎng)不同,在USB網(wǎng)絡里各終端不是對等的,即USB Host端和USB Device端的所需要軟件和硬件接口不一樣.

USB網(wǎng)絡有很多種,其中用得最多是RNDIS網(wǎng)絡。它的全稱是

Remote Network Device Interface Specification.

它是由微軟制定的規(guī)范,因為手機使用用得較多,因此LINUX也在驅(qū)動中兼容這個規(guī)范

(PS:Android手機這個功能幾乎是標配,而手機需要支持的功能FAT,RNDIS,MTP(媒體傳輸協(xié)議),都是MS的專利,這幾張牌成了MS向Android手機制造產(chǎn)家收取專利費的重要武器,三星已經(jīng)交了錢了)

一般象PC機充當USB Host角色,帶USB Host的接口的Linux開發(fā)板也可以充當這個角色.

如果是LINUX主機,需要安裝安裝 rndis_host.ko 這個驅(qū)動。一般發(fā)行版均已經(jīng)編譯好,直接運行即可。

如果嵌入式開發(fā)板可以配置內(nèi)核的rndis_host為動態(tài)模塊

它位于

│ 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驅(qū)動。

在USB的另一端,一般是嵌入式設(shè)備,以嵌入式LINUX為例,需要安裝USB Gadget驅(qū)動g_ether.ko 來進行通訊。g_ether.ko在配置菜單位置如下

Symbol: USB_ETH_RNDIS [=n] │

│ Prompt: RNDIS support │

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

│ Depends on: <choice> && USB_ETH │

│ Location: │

│ -> Device Drivers │

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

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

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

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

 

 

 

 

因此一個完整RNDIS網(wǎng)絡結(jié)構(gòu)如下

 

 

 

 

二、Linux USB 網(wǎng)絡搭建

USB Host安裝,以RHEL5為例,直接運行如下命令即可安裝 rndis_host.ko

modprobe rndis_host

它將安裝 rndis_host.ko和usbnet.ko

  1. [root@hxy]# find /lib/modules/2.6.18-194.el5/ -name "rndis*" 
  2.  
  3. /lib/modules/2.6.18-194.el5/kernel/drivers/usb/net/rndis_host.ko 
  4.  
  5. [root@hxy]# modprobe rndis_host 
  6.  
  7. [root@hxy]# lsmod | grep rndis_host 
  8.  
  9. rndis_host 10433 0 
  10.  
  11. cdc_ether 9793 1 rndis_host 
  12.  
  13. usbnet 19913 2 rndis_host,cdc_ether 

 

在開發(fā)板上編譯好內(nèi)核模塊,g_ether.ko.執(zhí)行如下命令

  1. # insmod g_ether.ko 
  2.  
  3. g_ether gadget: ing random self ethernet address 
  4.  
  5. g_ether gadget: using random host ethernet addr 
  6.  
  7. usb0: MAC de:5e:8b:3d:84:db 
  8.  
  9. usb0: HOST MAC 32:90:92:52:a9 
  10.  
  11. g_ethethernet Gadget, morial Day 2008 
  12.  
  13. g_ether gadget: g_ether ready 
  14.  
  15. Registered gadget driver 'g_ether' 

 

分別在主機和開發(fā)板之間抽入USB線,其中開發(fā)板使用D型的Slave端接口(不要插在HOST接口上!) 讓USB網(wǎng)卡結(jié)點生效,這里一般是usb0

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

 

在主機端做類似配置,配成另一個IP即可

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

 

這時在兩端即可以互相 ping 通。

三、與Windows 建立聯(lián)接。

如果希望與Windows 建立RNDIS網(wǎng)絡聯(lián)接,需要下載RNDIS驅(qū)動,并且根據(jù)g_ether.ko的產(chǎn)商號和設(shè)備號調(diào)整安裝INF文件。

1.確定VID和PID

首先確認g_ether.ko的RNDIS的vendor號和product號.它的定義在 drivers/usb/gadget/ether.c中

  1. #define RNDIS_VENDOR_NUM 0x0525 /* NetChip */ 
  2.  
  3. #define RNDIS_PRODUCT_NUM 0xa4a2 /* Ethernet/RNDIS Gadget */ 

 

2.下載WINDOWS的RNDIS驅(qū)動.

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就是驅(qū)動文件.

3.修改安裝inf文件

以其中的RNDIS_Template.inf為藍本修改安裝文件。主要修改兩個地方:

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

(注意有兩處)

把 USB\VID_vvvv&PID_pppp 修改成查到的數(shù)字,這里必須是Linux定義的 USB\VID_0525&PID_A4A2

把inf和兩個sys放在一起,隨意取個名字,我取名 hxy_rndis.inf

4.安裝驅(qū)動

在開發(fā)板與WINDOWS之間插入USB線。這時WINDOWS會提示安裝驅(qū)動,選擇手功安裝,并且選擇上一步的 sys所在目錄即可安裝

 

 

 

 

 

 

 

 

安裝后系統(tǒng)會出現(xiàn)一個RNDIS的網(wǎng)卡,配置IP即可與開發(fā)板通訊 

 

責任編輯:龐桂玉 來源: 嵌入式Linux中文站
相關(guān)推薦

2017-03-13 16:46:11

Linuxminicomusb串口

2011-06-20 09:36:29

LinuxLive USB

2012-03-30 15:51:52

ibmdw

2013-07-02 10:25:03

LinuxUSB設(shè)備

2017-03-03 11:40:59

linuxping命令

2011-03-21 11:14:24

LinuxNagios

2017-03-09 19:32:22

LinuxWindowsUSB

2022-09-01 13:12:53

LinuxTC網(wǎng)絡限流

2011-03-30 11:04:11

Linuxmrtg

2011-03-29 09:08:50

Linux配置Cacti

2009-11-23 11:51:07

linuxscp

2011-01-13 10:50:50

2009-08-03 12:21:03

linux at命令linux at命令詳定時關(guān)機

2022-09-28 12:57:13

USBLinux系統(tǒng)

2020-11-22 07:20:15

LinuxEtcherUSB

2011-03-21 11:14:25

LinuxNagios

2010-06-11 11:15:33

Linux編程工具

2014-08-04 10:49:24

linuxredistwmproxy

2014-12-23 09:37:09

Linuxrsync

2022-03-25 14:53:32

Linuxvmstat 命令
點贊
收藏

51CTO技術(shù)棧公眾號