這篇文章主要講解了“怎么在Linux下使用USB網(wǎng)絡(luò )”,文中的講解內容簡(jiǎn)單清晰,易于學(xué)習與理解,下面請大家跟著(zhù)小編的思路慢慢深入,一起來(lái)研究和學(xué)習“怎么在Linux下使用USB網(wǎng)絡(luò )”吧!
在介紹USB的驅動(dòng)開(kāi)發(fā)時(shí),我通常會(huì )用用Linux的的USB網(wǎng)絡(luò )來(lái)演示,它兼容RNDIS網(wǎng)絡(luò ),一臺Linux即可充當USB的device端,也可以由另一臺Linux來(lái)充當USB的Host端,Host端的也可以由安裝的微軟的標準的Rndis驅動(dòng)來(lái)充當.
這種網(wǎng)絡(luò )有相當強的實(shí)用價(jià)值,而且完整實(shí)現的Linux USB Slave驅動(dòng)和Linux USB Gadget兩種驅動(dòng),因此有很強演示效果.
應用場(chǎng)景:
一、智能手機共享網(wǎng)絡(luò )
現在智能手機采用3G網(wǎng)絡(luò ),通過(guò)Linux/Android手機上安裝相關(guān)驅動(dòng),可以用USB線(xiàn)在主機和手機建一個(gè)共享網(wǎng)絡(luò ),這樣智能手機充當一個(gè)無(wú)線(xiàn)路由器的功能.現在手機一般都有這個(gè)功能,WINDOWS安裝Rndis驅動(dòng)即可.而且就是用的我們后面提到的g_ether.ko驅動(dòng)。
這種方式,遠遠優(yōu)于把手機當成3G的modem,用USB來(lái)?yè)芴栠@種方式,共享網(wǎng)絡(luò )相當于手機和電腦都上網(wǎng)不誤。
這種方式跟用手機WIFI作無(wú)線(xiàn)熱點(diǎn)的功能一樣,但是APN的實(shí)現的要求較高,很多手機不一定能支持,而且USB還有同時(shí)供電.還是有其優(yōu)點(diǎn).
二、增加第二個(gè)有線(xiàn)網(wǎng)絡(luò ).
在教室上課時(shí),很多時(shí)候和學(xué)生用機只有一個(gè)網(wǎng)絡(luò )口接口,我把網(wǎng)線(xiàn)接到局域網(wǎng)時(shí),我的開(kāi)發(fā)板就無(wú)法用NFS接我的機器,學(xué)生機也是如此,現在服務(wù)器上把有線(xiàn)網(wǎng)絡(luò )接入局域網(wǎng),而我的開(kāi)發(fā)板與服務(wù)器則直接相連.
(1)USB 網(wǎng)絡(luò )的結構
在與以太網(wǎng)不同,在USB網(wǎng)絡(luò )里各終端不是對等的,即USB Host端和USB Device端的所需要軟件和硬件接口不一樣.
USB網(wǎng)絡(luò )有很多種,其中用得最多是RNDIS網(wǎng)絡(luò )。它的全稱(chēng)是
Remote Network Device Interface Specification.
它是由微軟制定的規范,因為手機使用用得較多,因此LINUX也在驅動(dòng)中兼容這個(gè)規范
(PS:Android手機這個(gè)功能幾乎是標配,而手機需要支持的功能FAT,RNDIS,MTP(媒體傳輸協(xié)議),都是MS的專(zhuān)利,這幾張牌成了MS向Android手機制造產(chǎn)家收取專(zhuān)利費的重要武器,三星已經(jīng)交了錢(qián)了)
一般象PC機充當USB Host角色,帶USB Host的接口的Linux開(kāi)發(fā)板也可以充當這個(gè)角色.
如果是LINUX主機,需要安裝安裝 rndis_host.ko 這個(gè)驅動(dòng)。一般發(fā)行版均已經(jīng)編譯好,直接運行即可。
如果嵌入式開(kāi)發(fā)板可以配置內核的rndis_host為動(dòng)態(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驅動(dòng)。
在USB的另一端,一般是嵌入式設備,以嵌入式LINUX為例,需要安裝USB Gadget驅動(dòng)g_ether.ko 來(lái)進(jìn)行通訊。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 │
因此一個(gè)完整RNDIS網(wǎng)絡(luò )結構如下
二、Linux USB 網(wǎng)絡(luò )搭建
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
在開(kāi)發(fā)板上編譯好內核模塊,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'
分別在主機和開(kāi)發(fā)板之間抽入USB線(xiàn),其中開(kāi)發(fā)板使用D型的Slave端接口(不要插在HOST接口上!) 讓USB網(wǎng)卡結點(diǎn)生效,這里一般是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)
在主機端做類(lèi)似配置,配成另一個(gè)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
這時(shí)在兩端即可以互相 ping 通。
三、與Windows 建立聯(lián)接。
如果希望與Windows 建立RNDIS網(wǎng)絡(luò )聯(lián)接,需要下載RNDIS驅動(dòng),并且根據g_ether.ko的產(chǎn)商號和設備號調整安裝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驅動(dòng).
http://www.microsoft.com/china/whdc/device/network/NDIS/rndis.mspx
或
http://gp2x.generation.free.fr/public/Autres/
如果不成功,去找一下RNDIS-USB-Kit_05.exe 這個(gè)文件。它是一個(gè)壓縮文件,其中的rndismpy.sys,usb8023y.sys就是驅動(dòng)文件.
3.修改安裝inf文件
以其中的RNDIS_Template.inf為藍本修改安裝文件。主要修改兩個(gè)地方:
把 mm/dd/yyyy,x.y.v.z 修改成任意的時(shí)間和版本號,我修改是 09/28/2011,1.0.0.0
(注意有兩處)
把 USB\VID_vvvv&PID_pppp 修改成查到的數字,這里必須是Linux定義的 USB\VID_0525&PID_A4A2
把inf和兩個(gè)sys放在一起,隨意取個(gè)名字,我取名 hxy_rndis.inf
4.安裝驅動(dòng)
在開(kāi)發(fā)板與WINDOWS之間插入USB線(xiàn)。這時(shí)WINDOWS會(huì )提示安裝驅動(dòng),選擇手功安裝,并且選擇上一步的 sys所在目錄即可安裝
安裝后系統會(huì )出現一個(gè)RNDIS的網(wǎng)卡,配置IP即可與開(kāi)發(fā)板通訊
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站