RNDIS(Remote NDIS)技術通過USB接口實現TCP/IP協議棧的傳輸,將設備虛擬為一塊以太網卡,從而讓主機系統無需額外撥號即可通過USB連接共享網絡。該方式廣泛應用于嵌入式設備與主控終端之間的高速聯網,具備即插即用、兼容性強等優勢。
本文以Air780EPM系列核心板/開發板為例,分享在Windows及Linux系統下,通過RNDIS方式實現USB上網的要點。
一、Windows下使用RNDIS功能
Windows系統默認支持RNDIS,直接用USB連接板子和電腦就可以使用。
1.1 核心示例代碼
open_rndis.lua核心代碼如下圖示,完整demo詳見源碼倉庫最新文件。

1.2 確認RNDIS狀態
先用Luatools將相關代碼燒錄到模組中,通過日志來確認是否已經成功開啟RNDIS功能:

1.3 在Widows中啟用RNDIS
當開啟RNDIS功能后,Air780EPM會虛擬一個網卡,此網卡可在“設備管理器”或“高級網絡設置”中看到。


啟用完畢后,即可看到我們電腦的圖標已經變為以太網連接,此時可以正常使用RNDIS上網了。

1.4 相關注意事項
由于Air780EPM驅動使用的是CDC驅動,所以請使用Win10及其以上系統(Win10以下系統,Air780EPM不做支持)。
如果啟動后日志中打印RNDIS啟動成功,但是Windows上沒有連上網絡,需要確認下系統是否將RNDIS的虛擬網卡禁用了。

二、Linux下使用RNDIS功能
2.1 在Linux中啟用RNDIS
因為Air780EPM的RNDIS使用CDC-ACM驅動,大部分Linux系統默認就支持,所以無需設置代碼,插入USB就可以在Linux中使用。
使用 ls /dev/ttyACM* 即可看到三個端口:

在控制臺查看USB設備可以看到一個ID為19d1:0001的USB設備,這個就是Air780EPM虛擬出的USB網卡:

查看網卡信息可以看到如下信息:

嘗試使用ping命令訪問百度,聯網成功:

2.2 相關注意事項
有些Llinux設備存在Air780EPM重啟后,操作文件會發生移位。
比如:
本來是/dev/ttyACM0/1/2,重啟后變成了ttyUSB1/3/4。
最靠譜的方法是,通過驅動節點來找到操作文件usb_find.c;
尋找真正的需要的端口:
FindUsbDevice(AIRM2M_USB_DEVICE_AT_INTERFACE_ID)
每個設備的ethx可能不一樣,插入Air780EPM后增加的網卡即為RNDIS網卡。
如果遇到沒有RNDIS驅動的情況,可在編譯內核時參考下圖配置:

今天的內容就分享到這里了~
審核編輯 黃宇
-
usb
+關注
關注
60文章
8380瀏覽量
282073 -
虛擬網卡
+關注
關注
0文章
8瀏覽量
1597
發布評論請先 登錄
PLC遠程監控有什么物聯網技術的加持
如何理解工業物聯網網關的協議解析功能
多網融合時代:4G/Wi-Fi/以太網/虛擬網卡配置實戰!
基于USB的多虛擬設備通信
讓開發板暢游網絡:RT-Thread CherryUSB 驅動 RNDIS 模塊詳解 | 技術集結
【Milk-V Duo S 開發板免費體驗】燒錄系統與SSH登錄體驗
51+單片機TCP-IP+協議棧ZLIP源碼
hyper v 上網,Hyper-V 上網:Hyper-V的網絡連接與上網設置
hyper v 上網,Hyper-V上網:虛擬機網絡配置
PROFINET通訊協議報文解析
USB PPP撥號上網,看這篇!

RNDIS協議實現USB虛擬網卡上網技術解析 !
評論