Hacking Huawei E220 HSDPA 3G 網路卡的裝置和相關連線訊息
3G、3.5G 這半年多來炒的沸沸揚揚,令誰都想去辦個門號一探究竟。不過,談各家電信業者的 3G 服務品質已經沒什麼意思,來 Hacking 一下 3G 網卡的裝置訊息似乎會有趣得多 :)。目前,各家業者的 3G 門號,都是搭配『 Huawei 』的網卡,尤其以『 E220 HSDPA USB Modem 』最為普遍,其小巧又乾淨的外型相當討喜,因此就選擇拿它來開刀。
如何在 Linux 上安裝 E220 就不多說了,任何人都能在 Google 找到不少文獻,比較值得注意的是,安裝過程中會出現三個令人迷惑的 device file〔ttyUSB0、ttyUSB1、ttyUSB2〕。經搜尋過網路上的資料和實地測試後,已經大概知道這三個 Device file 的用途:
如果你有將網卡裝起來,通常可以使用 pppd 透過 ttyUSB0 連線到 3G 網路,我想這部份就不用再多做解釋了。倒是 ttyUSB1 的部份比較特殊,會回傳一堆奇奇怪怪的 messages 〔可以使用 cat /dev/ttyUSB1 看到內容〕,而這些 messages code 又各是代表什麼意思,就相當令人好奇,當然,這也是這次 Hacking 的目的。 :D
經過一番測試後,整理了一些 ttyUSB1 回傳的狀況。
不論網路是否有連線,每固定一段時間就會回傳:
不過目前為止,還不了解此訊息的內容是什麼意思,有可能是裝置編號或是 firmware 的版本。
撥號連線後,就開始會回傳一些不一樣的訊息:
目前的網路模式:
其中 5 是代表 HSDPA , 4 是代表 WCDMA。而其他的 3、2、1 應該分別是 EDGE、GPRS、GSM,不過,大台北地區的 3G 基地臺相當完整,我還沒機會碰到有 3G 以下的模式,所以無法確定。
連線訊號強度:
其中的數字 8 即代表訊號的強弱,理論上 10 應該是最強,而 0則代表沒訊號〔目前還沒機會測試到〕。
然後有資料傳輸的相關資訊和統計〔每兩秒鐘更新一次〕:
了解了這些訊息定義後稍做 Coding,就能夠寫出一個堪用的 3G 網路連線資訊顯示器了。可是非常慚愧的,雖然 3G 網卡的功能相當一個手機,除了可以上網之外,理論上還可以撥打電話、收發簡訊,但目前針對 E220 的了解卻還僅限於一些訊息格式的定義。或許有機會,還可以再多做一些 Hack,希望讓 3G 網卡的功能在 Linux 上也能完全發揮。 :)
如何在 Linux 上安裝 E220 就不多說了,任何人都能在 Google 找到不少文獻,比較值得注意的是,安裝過程中會出現三個令人迷惑的 device file〔ttyUSB0、ttyUSB1、ttyUSB2〕。經搜尋過網路上的資料和實地測試後,已經大概知道這三個 Device file 的用途:
- ttyUSB0: 被當成一般 modem 通道使用,處理 3G 網路撥接用
- ttyUSB1: 回傳相關的裝置和連線訊息
- ttyUSB2: 放驅動程式的儲存裝置〔不確定〕。
如果你有將網卡裝起來,通常可以使用 pppd 透過 ttyUSB0 連線到 3G 網路,我想這部份就不用再多做解釋了。倒是 ttyUSB1 的部份比較特殊,會回傳一堆奇奇怪怪的 messages 〔可以使用 cat /dev/ttyUSB1 看到內容〕,而這些 messages code 又各是代表什麼意思,就相當令人好奇,當然,這也是這次 Hacking 的目的。 :D
經過一番測試後,整理了一些 ttyUSB1 回傳的狀況。
不論網路是否有連線,每固定一段時間就會回傳:
^BOOT:82907211,0,0,0,6
撥號連線後,就開始會回傳一些不一樣的訊息:
目前的網路模式:
^MODE:5,5
^MODE:5,4
連線訊號強度:
^RSSI:8
然後有資料傳輸的相關資訊和統計〔每兩秒鐘更新一次〕:
^DSFLOWRPT:00000002,00000000,0000001A,0000000000000000,0000000000000034,0000BB80,0007D000
^DSFLOWRPT:00000004,00000000,00000000,0000000000000000,0000000000000034,0000BB80,0007D000
^DSFLOWRPT:00000006,00000000,00000000,0000000000000000,0000000000000034,0000BB80,0007D000
^DSFLOWRPT:00000008,00000000,00000000,0000000000000000,0000000000000034,0000BB80,0007D000
^DSFLOWRPT:0000000A,00000000,00000000,0000000000000000,0000000000000034,0000BB80,0007D000
^DSFLOWRPT:0000000C,00000000,00000000,0000000000000000,0000000000000034,0000BB80,0007D000
在『^DSFLOWRPT: 』之後,有七個段落的訊息,大致定義如下所示:<secondspast>,<speedup>,<speeddown>,<tx>,<rx>,<unknown1>,<unknown2>
SecondsPast: 已連線的時間
SpeedUp: 上傳速率,單位是 Byte
SpeedDown: 下載速率,單位是 Byte
TX: 已傳送的資料量,單位是 Byte
RX: 已接收的資料量,單位是 Byte
Unknown1: 永遠是 BB80,換成十進位是 48000,猜測是某理論速率
Unknown1: 永遠是 7D000,換成十進位是 512000,猜測是某些定義
了解了這些訊息定義後稍做 Coding,就能夠寫出一個堪用的 3G 網路連線資訊顯示器了。可是非常慚愧的,雖然 3G 網卡的功能相當一個手機,除了可以上網之外,理論上還可以撥打電話、收發簡訊,但目前針對 E220 的了解卻還僅限於一些訊息格式的定義。或許有機會,還可以再多做一些 Hack,希望讓 3G 網卡的功能在 Linux 上也能完全發揮。 :)
您好:
回覆刪除我對您的測試很有興趣,是否能教我您是怎麼驅動這張E220網卡的呢?
E220 只是一個單純 USB serial port 的 Modem。
回覆刪除你只要載入 usbserial 這 kernel module,就會自動抓到相對應的 tty device files。
不好意思,再請問一下,
回覆刪除因為我在Ubuntu和Fedora上測試這個3G卡
已經可以連上網路了,也看的到ttyUSB0,ttyUSB1,ttyUSB2,但是我下指令cat /dev/ttyUSB1卻看不到任何訊息。
能不能將您安裝過程與方式詳細教我一下,感謝!
您好,想請教一下若在Android下要怎麼驅動這張3G卡?thanks.
回覆刪除