[閒聊] cdc-wdm裝置的用法與3G、LTE的討論分享
各位大大好
小的過去有花了一點時間 在摸索3G dongle
大多是華為(HUAWEI)跟中興(ZTE)的USB 3G dongle
當然還有他們幫忙掛牌的什麼VODAFONE之類
主要driver都是usb-serial、cdc-acm、cdc-ecm
前兩者走pppd撥號上網,第三者走eth介面用dhcp拿IP address(要自己配也ok)
這3種其實算比較老的技術了,可能網路上亂翻都可以找得到相關教學
不過比較有趣的是
網路上大多提的是使用套件(甚至是GUI超人性化套件)
來幫忙建起已連線且可用的3G技術interface
而我大多是在純指令模式,沒透過3G工具的前題下
自己手動給AT CMD,然後手動叫pppd或叫dhcp來完成連線上網
所以如果板友也很感興趣,我很樂意可以一起討論相關經驗
這篇主要是想尋找板友,關於LTE dongle的板友
隨著LTE越來越發達,也漸漸接觸到LTE dongle
可惜台灣並沒有這個環境,所以也很難在台灣看到人討論
受限於tty裝備的因素,越來越多廠商開發出eth介面的3G dongle或LTE dongle
傳統eth大多走cdc-ecm就ok
接著我比較沒接觸過的driver也包括hso、cdc-ncm、qmi_wwan、mbim
前兩者可能也算比較老了
但是後兩者就比較新且有潛力,可以在連線速度上得到更大的提升
目前我正在接觸qmi_wwan的dongle
他主要是同時包括了cdc-wdm與cdc-ecm兩個driver
用cdc-wdm來下CMD,然後用cdc-ecm來上網
現階段是可以透過libqmi這個套件,直接在PC上成功驅動qmi_wwan來上網
但我實在不想透過libqmi的幫忙
所以必須想辦法,自己手動透過cdc-wdm來跟dongle溝通
但我根本找不到辦法跟cdc-wdm
別說是不了解他溝通的語法(應該不是AT CMD)
甚至是不知道該透過什麼方式丟東西給他,以及從他那裡撈到東西
哪怕是亂丟,然後他回給我error都好
不知道對於qmi_wwan下的cdc-wdm,有沒有大大知道該怎溝通的?
我google了老半天,都沒找到可以幫助到我的資料 orz...
我想 目前分兩階段
1.怎跟cdc-wdm溝通(開檔、讀檔,像tty裝置可以echo跟cat)
2.使用qmi_wwan的語法來跟dongle溝通
真的很希望可以遇到大大能分享些什麼 或指引些方向
真的萬分感謝
--
有種熟悉總在你心裡深處、眼光餘角出現
越是追求越是千里尋不著
日覆一日,漸漸的也就淡忘
實際卻如影隨行、無聲無息的埋藏在潛意識裡‧‧‧
也許夜深人靜時又會不經意的輕敲你心房
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.8.63
→
09/06 11:20, , 1F
09/06 11:20, 1F
→
09/06 11:20, , 2F
09/06 11:20, 2F
→
09/06 11:21, , 3F
09/06 11:21, 3F
→
09/06 11:21, , 4F
09/06 11:21, 4F
→
09/06 11:22, , 5F
09/06 11:22, 5F
→
09/06 23:19, , 6F
09/06 23:19, 6F
也就是說
必須是character裝置
並且還要能接受text command或escape sequence才能用echo
其他裝置或不接受text command與escape sequence的,大多就是使用ioctl來存取了
而tty其實也不接受echo
但是tty可以把echo轉成oictl對嗎?
(我以為 stty指的就是各種tty設備,不論是被對應到ttyUSB之類的 請問對嗎?)
然後我的dongle又是依AT CMD來工作
所以就是
echo > tty
tty骨子裡是把echo轉成ioctl
然後傳送的內容是AT CMD
這樣對嗎?@@"
另外我今天有挖到有人可以把資料傳給/dev/cdc-wdm0了
他用perl來下耶
這網頁這樣
http://lists.openwall.net/netdev/2012/01/20/7
perl -e 'print pack("C*", map { hex } @ARGV)' 1 f 0 0 0 0 0 1 22 0 4 0 1 1 0
1 >/dev/cdc-wdm2
就這樣的把資料傳給cdc-wdm了
而我也試著直接把那句這樣貼出去
真的可以跟cdc-wdm溝通耶
只是我不知道怎去取得cdc-wdm的回應值
所以只能看著cdc-wdm傻傻的往下一個動作走去
但我因為不知道他的回應為何,無法指派他繼續走下去
所以我應該去研究一下perl怎去讀取裝置的資料
更甚至,下一步
我應該使用C語言,用開檔或ioctl的方式
直接丟那些16進位碼給cdc-wdm
然後讀取回應,來完成我希望的工作,不知道有沒有機會
如果更幸運的,搞不好我可以透過LINUX常見的如echo來傳送那串指令碼
就不必去寫C語程了
因為我也是第一次走到這一步xdd
但有所進展,其實還蠻過癮且有趣的
謝謝大大的分享與耐心回應
※ 編輯: liwmewmew 來自: 180.177.8.63 (09/07 00:47)
→
09/07 08:45, , 7F
09/07 08:45, 7F
→
09/07 08:47, , 8F
09/07 08:47, 8F
→
09/07 08:47, , 9F
09/07 08:47, 9F
→
09/07 08:48, , 10F
09/07 08:48, 10F
→
09/07 08:49, , 11F
09/07 08:49, 11F
→
09/07 08:49, , 12F
09/07 08:49, 12F
→
09/07 08:50, , 13F
09/07 08:50, 13F
→
09/07 08:51, , 14F
09/07 08:51, 14F
→
09/07 08:51, , 15F
09/07 08:51, 15F
→
09/07 08:52, , 16F
09/07 08:52, 16F
喔喔
所以說真正例如我在操作ttyUSB時
基本上跟stty是無關的
stty只是一個設定tty參數或行為的工具
而stty是透過ioctl來設定tty的參數與行為
至於tty driver怎真的對應到終端設備
則可能是可以直接echo的text command或escape sequence類型的character設備
請問是這樣嗎?
謝謝@@"
※ 編輯: liwmewmew 來自: 180.177.8.63 (09/07 17:40)
→
09/07 18:37, , 17F
09/07 18:37, 17F
→
09/07 18:38, , 18F
09/07 18:38, 18F
→
09/07 18:39, , 19F
09/07 18:39, 19F
→
09/07 18:39, , 20F
09/07 18:39, 20F
→
09/07 18:44, , 21F
09/07 18:44, 21F
→
09/07 18:44, , 22F
09/07 18:44, 22F
→
09/07 18:47, , 23F
09/07 18:47, 23F
→
09/07 18:47, , 24F
09/07 18:47, 24F
→
09/08 15:44, , 25F
09/08 15:44, 25F
→
09/08 15:44, , 26F
09/08 15:44, 26F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
Linux 近期熱門文章
21
56
PTT數位生活區 即時熱門文章