||
本章將帶你使用 RNDIS 的方式,搭配 Windows 或 Linux 主控終端,快速實(shí)現(xiàn) USB 上網(wǎng)。
由于 Air8000 只支持 LUATOS 模式,且 RNDIS 網(wǎng)卡應(yīng)用默認(rèn)關(guān)閉,需要使用 mobile.config(mobile.CONF_USB_ETHERNET, 3)這個接口打開,所以在使用 RNIDS 之前,需要提前給 Air8000 工業(yè)引擎燒錄如下腳本。
該接口開關(guān)說明如下:
mobile.config(item, value)
網(wǎng)絡(luò)特殊配置
參數(shù)



注:以下腳本完整復(fù)制后保存為 main.lua,可直接使用
二、RNDIS 應(yīng)用RNDIS 是指 Remote NDIS,基于 USB 實(shí)現(xiàn) RNDIS 實(shí)際上就是 TCP/IP over USB,就是在 USB 設(shè)備上跑 TCP/IP,讓 USB 設(shè)備虛擬為一塊網(wǎng)卡。從而使 Windows /Linux 可以通過 USB 設(shè)備連接 4G 網(wǎng)絡(luò)。
Window 系統(tǒng)
window 系統(tǒng)默認(rèn)支持 RNDIS,直接用 usb 連接就可以使用,Air8000 工業(yè)引擎會虛擬一個網(wǎng)卡,此網(wǎng)卡可在"設(shè)備管理器"或"網(wǎng)絡(luò)連接"中看到。(由于 Air8000 驅(qū)動使用的是 CDC 驅(qū)動,所以請使用 win10 及其以上系統(tǒng),WIN10 以下系統(tǒng),Air8000 不做支持)


將燒錄好上述腳本的 Air8000 核心板 USB 插入電腦,正常開機(jī),即可在右下角看見如下所示圖標(biāo)。

虛擬串口
Air8000 使用 CDC - ACM 驅(qū)動,大部分 linux 系統(tǒng)默認(rèn)就支持,插入就可以使用。

此時查看 USB 設(shè)備可以看到一張 ID 為 19d1:0001 的 USB 設(shè)備,這張就是 Air8000 虛擬出的 USB 網(wǎng)卡。

此時查看網(wǎng)卡信息可以看到如下信息:

嘗試使用 ping 命令訪問百度:


交叉編譯后,板上運(yùn)行成功后將 Air8000 開機(jī)并使用 USB 插入你的 linux 板上,使用 ls /dev/ttyACM* 即可看到三個端口

4.1 有些 linux 設(shè)備存在 Air8000 工業(yè)引擎重啟后,操作文件會發(fā)生移位,比如本來是/dev/ttyACM0/1/2 重啟后變成了 ttyUSB1/3/4,最靠譜的方法是通過驅(qū)動節(jié)點(diǎn)來找到操作文件 usb_find.c
可以用 FindUsbDevice(AIRM2M_USB_DEVICE_AT_INTERFACE_ID),來尋找真正的需要的端口
相關(guān)文章見 https://doc.openluat.com/article/2080/0
4.2 某些最簡系統(tǒng)需要根據(jù)設(shè)備描述來識別,可以參考如下 linux 上展示的細(xì)節(jié)進(jìn)行適配:lsusb_618
4.3 Air8000 只支持 luatos 方式開發(fā),所以無法使用串口工具給 Air8000 虛擬出來的三個端口發(fā)送 AT 指令,所以 Air8000 不支持 PPP 撥號上網(wǎng)
Air8000 是標(biāo)準(zhǔn)的 rndis,目前 linux 大部分發(fā)行版本都已經(jīng)默認(rèn)支持 RNDIS 驅(qū)動了,只要通過 USB 連接 Air8000 工業(yè)引擎就可以直接用了,Air8000 工業(yè)引擎開機(jī)后就會在 linux 設(shè)備端看到新的網(wǎng)卡,如下圖紅框部分為 Air8000 虛擬出的 USB 網(wǎng)卡。

注意: 每個設(shè)備的 ethx 可能不一樣,插入 Air80000Air8000 工業(yè)引擎后增加的網(wǎng)卡即為 RNDIS 網(wǎng)卡
如果沒有 RNDIS 驅(qū)動的,可在編譯內(nèi)核時按照下圖下圖配置

RNDIS 功能測試
聯(lián)網(wǎng)測試
三、如何禁用 RNDIS 功能在設(shè)備管理器,網(wǎng)絡(luò)適配器下找到 Remote NDIS 選項(xiàng)后點(diǎn)擊鼠標(biāo)右鍵選擇禁用設(shè)備即可。


四、常見問題
4.1 如何排查 linux 使用 RNDIS 無法上網(wǎng)的問題
一般情況下,不是特別精簡的 linux 已經(jīng)支持 RNDIS 功能,如果插上合宙的 4G Air8000 工業(yè)引擎,但是不能上網(wǎng)的話,需要注意以下幾點(diǎn)
1、能否檢測到 RNDIS 設(shè)備
在命令行中輸入 dmesg ,如此出現(xiàn) rndis_host 1-1:1.0 eth1 這樣的打印,則證明已經(jīng)識別到了,(如果沒有,可能是硬件問題,也可能是 linux 真的不支持 RNDIS,需參考上面驅(qū)動配置,配置一下驅(qū)動)
此時查看 ifconfig ,如果沒有出現(xiàn) rndis_host 1-1:1.0 eth1 中的 eth1 ,則發(fā)送 ifconfig -a ,此時發(fā)現(xiàn)有 eth1 但是 沒有 ip 地址,發(fā)送 udhcpc -i eth1 出現(xiàn)地址后,即可使用此網(wǎng)卡進(jìn)行上網(wǎng)。(注:如果使用的是較新版本的 linux 內(nèi)核,可能已經(jīng)取消了 ifconfig 指令,可以使用 ip 指令替代)
2、出現(xiàn)設(shè)備網(wǎng)卡,但是無法上網(wǎng)
這可能是由于 Air8000 工業(yè)引擎沒有注冊上網(wǎng)絡(luò),可以將 Air8000 工業(yè)引擎 USB 接給 win10 電腦,使用 luatools 查看日志。
3、RNDIS 上網(wǎng),獲取時時流量,下行下行數(shù)據(jù)是哪個指令
可以通過 ifconfig 獲取。
4、linux 或者 windos 怎么和 air8000 進(jìn)行通訊
https://docs.openluat.com/air8000/luatos/app/common/usb_uart/
4.2 linux 常見問題解決方法
(1)無法識別 vid 與 pid
一般 air8000 工業(yè)引擎對接的 linux 協(xié)議是 USB 協(xié)議,設(shè)備插入后,系統(tǒng)會檢測出設(shè)備的標(biāo)識:PID VID(其中 VID 是廠商識別碼 PID 是產(chǎn)品識別碼),此處不需要裝驅(qū)動也可以識別,所以,我們排除插入無法識別的時候,先通過命令行命令 lsusb
我們的 Air8000 vid 與 pid,分別是 19d1 和 0001

如上圖所示 ,就是代表已經(jīng)識別到 Air8000 工業(yè)引擎了
查看 Air8000 工業(yè)引擎是否已經(jīng)識別,如這里沒有識別到我們的 Air8000 工業(yè)引擎,應(yīng)該先排除硬件問題
常見硬件問題
a.USB 是否走線過長
b.USB 是否 VBUS 沒有連接
c.Air8000 工業(yè)引擎沒開機(jī)
d.Air8000 工業(yè)引擎進(jìn)入 boot 模式了(注:進(jìn)入 boot 后的 PIV 和 VID 會變成 17d1:0001)

(2) 確認(rèn)是否識別到網(wǎng)卡
如果按照 驅(qū)動配置加入驅(qū)動,linux 發(fā)送 dmesg 出現(xiàn)以下的顯示說明正常識別到網(wǎng)卡:

第 8 行,1-2.1 設(shè)備代表 掛在 usb bus1 上 2.1 節(jié)點(diǎn)為 EigenComm 的 USB 設(shè)備
第 13 行代表 Air8000 的 1-2.1:1.0 代表 usb interface 0,被當(dāng)做 RNDIS 使用(其實(shí) interface 1 也是被 rnids 使用)
第 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(這個不固定)
第 18 行,代表 RNDIS 被設(shè)置成 eth10 網(wǎng)卡,如下所示:

今天的內(nèi)容就分享到這里了~