本文將帶你使用RNDIS的方式,搭配Linux主控終端,快速實(shí)現(xiàn)USB上網(wǎng)。
RNDIS是指Remote NDIS,基于USB實(shí)現(xiàn)RNDIS實(shí)際上就是TCP/IP over USB,就是在USB設(shè)備上跑TCP/IP,讓USB設(shè)備看上去像一塊網(wǎng)卡,從而使Linux可以通過(guò)USB設(shè)備連接網(wǎng)絡(luò)。
一、Linux驅(qū)動(dòng)配置
1. 虛擬串口
通過(guò)串口發(fā)送AT指令,Air780ER使用CDC-ACM驅(qū)動(dòng),大部分Linux系統(tǒng)默認(rèn)就支持,插入就可以使用。
測(cè)試AT指令可以用minicom等工具,運(yùn)行命令:
sudo minicom -D /dev/ttyACM0
測(cè)試結(jié)果如下:
如果所用系統(tǒng)不支持CDC-ACM驅(qū)動(dòng),則可使用如下配置:
▼ 虛擬串口驅(qū)動(dòng)配置 ▼
1)配置內(nèi)核:
2)確定端口:
交叉編譯后,板上運(yùn)行,demesg打印如下。
說(shuō)明ACM驅(qū)動(dòng)Air780ER成功,其中節(jié)點(diǎn):
1-1.3:1.2為AT口
對(duì)應(yīng)的操作文件/dev/ttyACM0,進(jìn)行通訊。如果沒(méi)有合適的命令行工具,用如下的源代碼編譯個(gè)簡(jiǎn)單小程序在linux下發(fā)AT的小工具;
1-1.3:1.4為日志口
對(duì)應(yīng)的操作文件/dev/ttyACM1,進(jìn)行抓日志,具體抓日志方法見(jiàn)uart_capture.c;
1-1.3:1.6為modem口
對(duì)應(yīng)的操作文件/dev/ttyACM2,客戶可以進(jìn)行PPP撥號(hào)。
注意事項(xiàng):
有些Linux設(shè)備存在模組重啟后,操作文件會(huì)發(fā)生移位,比如本來(lái)是/dev/ttyACM0是可以進(jìn)行AT通訊的,后來(lái)又不行。
最靠譜的方法是通過(guò)驅(qū)動(dòng)節(jié)點(diǎn),來(lái)找到操作文件usb_find.c;
可以用:
FindUsbDevice(AIRM2M_USB_DEVICE_AT_INTERFACE_ID),來(lái)尋找真正的需要的端口。
某些最簡(jiǎn)系統(tǒng)需要根據(jù)設(shè)備描述來(lái)識(shí)別,可以參考如下Linux上展示的細(xì)節(jié)進(jìn)行適配,lsusb_618;
相關(guān)最新資料詳見(jiàn):
https://docs.openluat.com/air780er/at/quick_start/usb/
2. RNDIS驅(qū)動(dòng)
Air780ER是標(biāo)準(zhǔn)的RNDIS,目前Linux大部分發(fā)行版本都已經(jīng)默認(rèn)支持RNDIS驅(qū)動(dòng)了,只要通過(guò)USB連接Air780ER模組就可以直接用,模組開(kāi)機(jī)后就會(huì)在Linux設(shè)備端看到新的網(wǎng)卡。
如下圖所示:
注意:
每個(gè)設(shè)備的ethx可能不一樣,上圖插入Air780ER模組后增加的網(wǎng)卡即為RNDIS網(wǎng)卡,地址為192.168.10.2。
如果沒(méi)有RNDIS驅(qū)動(dòng)的,可按照下圖配置:
▼ RNDIS驅(qū)動(dòng)配置 ▼
二、RNDIS功能測(cè)試
STEP 1:禁用本地網(wǎng)卡sudo ifconfig eth0 down
STEP 2:使能模組網(wǎng)卡sudo ifconfig eth10 up
使能之后,最好再通過(guò)ifconfig再次確認(rèn)一下。
STEP 3:聯(lián)網(wǎng)測(cè)試
PING百度網(wǎng)站聯(lián)網(wǎng)成功,如下圖所示。
三、如何禁用RNDIS功能
1. 使用設(shè)備管理器禁用RNDIS功能
在設(shè)備管理器,網(wǎng)絡(luò)適配器下找到Remote NDIS選項(xiàng)后,點(diǎn)擊鼠標(biāo)右鍵選擇禁用設(shè)備即可。
2. 使用代碼禁用RNDIS功能
發(fā)送AT+RNDISCALL=0關(guān)閉RNDIS網(wǎng)卡,重啟生效。
四、常見(jiàn)問(wèn)題及解決辦法
1. 如何排查L(zhǎng)inux使用RNDIS無(wú)法上網(wǎng)的問(wèn)題?
一般情況下,不是特別精簡(jiǎn)的Linux已經(jīng)支持RNDIS 功能,如果插上合宙的4G 模組,但是不能上網(wǎng)的話,需要注意以下幾點(diǎn):
1)能否檢測(cè)到RNDIS設(shè)備?
在命令行中輸入dmesg,如此出現(xiàn)rndis_host 1-1:1.0 eth1這樣的打印,則證明已經(jīng)識(shí)別到了。如果沒(méi)有,可能是硬件問(wèn)題,也可能是所用Linux真的不支持rndis,需參考上文驅(qū)動(dòng)配置,配置一下驅(qū)動(dòng)。
此時(shí)查看ifconfig,如果沒(méi)有出現(xiàn)rndis_host 1-1:1.0 eth1中的eth1,則發(fā)送ifconfig -a;此時(shí)發(fā)現(xiàn)有eth1但是沒(méi)有IP地址,發(fā)送udhcpc -i eth1出現(xiàn)地址后,即可使用此網(wǎng)卡進(jìn)行上網(wǎng)。
2)出現(xiàn)設(shè)備網(wǎng)卡,但是無(wú)法上網(wǎng)?
這可能是由于模組沒(méi)有注冊(cè)上網(wǎng)絡(luò),可以通過(guò)模組串口發(fā)送AT指令查詢。
常用AT指令:
AT+CPIN? 查看卡是否在位;
AT+CEREG? 查看是否注冊(cè)上網(wǎng)絡(luò);
AT+CESQ 查看信號(hào)值;
ATI 查看版本號(hào)。
2. RNDIS上網(wǎng),獲取實(shí)時(shí)流量、上行下行數(shù)據(jù)是哪個(gè)指令?
可以通過(guò)ifconfig獲取。
3. Linux其它常見(jiàn)問(wèn)題的解決方法:
01)無(wú)法識(shí)別VID與PID
一般模組對(duì)接的Linux協(xié)議是USB協(xié)議,設(shè)備插入后,系統(tǒng)會(huì)檢測(cè)出設(shè)備的標(biāo)識(shí):PID VID;
其中VID是廠商識(shí)別碼,PID是產(chǎn)品識(shí)別碼。此處不需要裝驅(qū)動(dòng)也可以識(shí)別,所以,我們排除插入無(wú)法識(shí)別的時(shí)候,先通過(guò)命令行命令lsusb。
Air780ER模組的VID與PID,分別是19d1和0001。
如上圖所示 ,就是代表已經(jīng)識(shí)別到Air780ER模組了。
查看模組是否已經(jīng)識(shí)別,如果這里沒(méi)有識(shí)別到模組,應(yīng)該先排除硬件問(wèn)題。
常見(jiàn)硬件問(wèn)題:
USB是否走線過(guò)長(zhǎng);
USB是否VBUS沒(méi)有連接;
模組是否沒(méi)開(kāi)機(jī)。
02)確認(rèn)是否識(shí)別到網(wǎng)卡
如果按照驅(qū)動(dòng)配置加入驅(qū)動(dòng),Linux發(fā)送dmesg出現(xiàn)以下的顯示說(shuō)明正常識(shí)別到網(wǎng)卡:
第8行:
1-2.1設(shè)備代表掛在usb bus1上2.1節(jié)點(diǎn)為EigenComm的USB 設(shè)備;
第13行:
1-2.1:1.0代表usb interface 0,被當(dāng)做RNDIS使用(其實(shí)interface 1也是被RNDIS使用);
第16、17、19行:
1-2.1:1.2 、1-2.1:1.4 、1-2.1:1.6代表usb interface 2,4,6,分別枚舉ttyACM0,ttyACM1,ttyACM2(這個(gè)不固定)。
第18行:
代表RNDIS被設(shè)置成eth10網(wǎng)卡,如下所示:
03)在Linux下發(fā)AT的小工具
一些Linux開(kāi)發(fā)板本身不帶串口工具,出問(wèn)題的時(shí)候沒(méi)法通過(guò)AT指令來(lái)找出原因,這里提供一個(gè)小工具sendat.c,編譯后運(yùn)行即可。
最新工具下載詳見(jiàn):
https://docs.openluat.com/air780er/at/quick_start/usb/
今天的內(nèi)容就分享到這里了~
審核編輯 黃宇
-
usb
+關(guān)注
關(guān)注
60文章
8175瀏覽量
272613 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2930文章
46201瀏覽量
391903 -
Linux
+關(guān)注
關(guān)注
87文章
11508瀏覽量
213645 -
網(wǎng)卡
+關(guān)注
關(guān)注
4文章
326瀏覽量
28033
發(fā)布評(píng)論請(qǐng)先 登錄
什么是叫3G無(wú)線上網(wǎng)卡
無(wú)線上網(wǎng)卡怎么辦理,如何辦理無(wú)線上網(wǎng)卡
細(xì)說(shuō)無(wú)線上網(wǎng)卡與無(wú)線網(wǎng)卡的區(qū)別
TCP/IP Over USB 用USB傳輸以太網(wǎng)數(shù)據(jù),給你的MCU加個(gè)網(wǎng)卡
基于CherryUSB適配RNDIS調(diào)試筆記記錄
用開(kāi)發(fā)板模擬USB網(wǎng)卡通過(guò)流量轉(zhuǎn)發(fā)實(shí)現(xiàn)PC機(jī)上網(wǎng)
STM32F407 eth和usb rndis雙網(wǎng)卡通信會(huì)斷掉是何原因?
hpm6000系列使用rndis模式連接4G模塊
【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】Usb 虛擬出 rndis 網(wǎng)卡 登錄系統(tǒng)的坑
無(wú)線上網(wǎng)卡的類型
3G TD-SCDMA 筆記本無(wú)線上網(wǎng)卡 無(wú)線上網(wǎng)卡常見(jiàn)問(wèn)題
無(wú)線上網(wǎng)卡基礎(chǔ)知識(shí)
Linux下3G上網(wǎng)卡通用驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

RT-Thread全球技術(shù)大會(huì):RNDIS設(shè)備驅(qū)動(dòng)框架

使用i.MX RT1060連接USB 4G module(RNDIS模式)

評(píng)論