溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在Linux下使用USB網(wǎng)絡(luò)

發(fā)布時(shí)間:2021-08-16 11:15:13 來(lái)源:億速云 閱讀:262 作者:chen 欄目:系統(tǒng)運(yùn)維

這篇文章主要講解了“怎么在Linux下使用USB網(wǎng)絡(luò)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“怎么在Linux下使用USB網(wǎng)絡(luò)”吧!

在介紹USB的驅(qū)動(dòng)開(kāi)發(fā)時(shí),我通常會(huì)用用Linux的的USB網(wǎng)絡(luò)來(lái)演示,它兼容RNDIS網(wǎng)絡(luò),一臺(tái)Linux即可充當(dāng)USB的device端,也可以由另一臺(tái)Linux來(lái)充當(dāng)USB的Host端,Host端的也可以由安裝的微軟的標(biāo)準(zhǔn)的Rndis驅(qū)動(dòng)來(lái)充當(dāng).

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

應(yīng)用場(chǎng)景:

一、智能手機(jī)共享網(wǎng)絡(luò)

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

這種方式,遠(yuǎn)遠(yuǎn)優(yōu)于把手機(jī)當(dāng)成3G的modem,用USB來(lái)?yè)芴?hào)這種方式,共享網(wǎng)絡(luò)相當(dāng)于手機(jī)和電腦都上網(wǎng)不誤。

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

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

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

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

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

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

Remote Network Device Interface Specification.

它是由微軟制定的規(guī)范,因?yàn)槭謾C(jī)使用用得較多,因此LINUX也在驅(qū)動(dòng)中兼容這個(gè)規(guī)范

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

一般象PC機(jī)充當(dāng)USB Host角色,帶USB Host的接口的Linux開(kāi)發(fā)板也可以充當(dāng)這個(gè)角色.

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

如果嵌入式開(kāi)發(fā)板可以配置內(nèi)核的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]) │

怎么在Linux下使用USB網(wǎng)絡(luò)

如果是WINDOWS主機(jī),則需要安裝MS的Generic RNDIS驅(qū)動(dòng)。

在USB的另一端,一般是嵌入式設(shè)備,以嵌入式LINUX為例,需要安裝USB Gadget驅(qū)動(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 │

怎么在Linux下使用USB網(wǎng)絡(luò)

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

怎么在Linux下使用USB網(wǎng)絡(luò)

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

USB Host安裝,以RHEL5為例,直接運(yùn)行如下命令即可安裝 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ā)板上編譯好內(nèi)核模塊,g_ether.ko.執(zhí)行如下命令

# 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'

分別在主機(jī)和開(kāi)發(fā)板之間抽入U(xiǎn)SB線,其中開(kāi)發(fā)板使用D型的Slave端接口(不要插在HOST接口上!) 讓USB網(wǎng)卡結(jié)點(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)

在主機(jī)端做類似配置,配成另一個(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驅(qū)動(dòng),并且根據(jù)g_ether.ko的產(chǎn)商號(hào)和設(shè)備號(hào)調(diào)整安裝INF文件。

1.確定VID和PID

首先確認(rèn)g_ether.ko的RNDIS的vendor號(hào)和product號(hào).它的定義在 drivers/usb/gadget/ether.c中

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

2.下載WINDOWS的RNDIS驅(qū)動(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就是驅(qū)動(dòng)文件.

3.修改安裝inf文件

以其中的RNDIS_Template.inf為藍(lán)本修改安裝文件。主要修改兩個(gè)地方:

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

(注意有兩處)

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

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

4.安裝驅(qū)動(dòng)

在開(kāi)發(fā)板與WINDOWS之間插入U(xiǎn)SB線。這時(shí)WINDOWS會(huì)提示安裝驅(qū)動(dòng),選擇手功安裝,并且選擇上一步的 sys所在目錄即可安裝

怎么在Linux下使用USB網(wǎng)絡(luò)

怎么在Linux下使用USB網(wǎng)絡(luò)

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

怎么在Linux下使用USB網(wǎng)絡(luò)

感謝各位的閱讀,以上就是“怎么在Linux下使用USB網(wǎng)絡(luò)”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)怎么在Linux下使用USB網(wǎng)絡(luò)這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI