2008年3月17日 星期一

Hacking Huawei E220 HSDPA 3G 網路卡的裝置和相關連線訊息

Standard
3G、3.5G 這半年多來炒的沸沸揚揚,令誰都想去辦個門號一探究竟。不過,談各家電信業者的 3G 服務品質已經沒什麼意思,來 Hacking 一下 3G 網卡的裝置訊息似乎會有趣得多 :)。目前,各家業者的 3G 門號,都是搭配『 Huawei 』的網卡,尤其以『 E220 HSDPA USB Modem 』最為普遍,其小巧又乾淨的外型相當討喜,因此就選擇拿它來開刀。

如何在 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
不過目前為止,還不了解此訊息的內容是什麼意思,有可能是裝置編號或是 firmware 的版本。


撥號連線後,就開始會回傳一些不一樣的訊息:

目前的網路模式:
^MODE:5,5
^MODE:5,4
其中 5 是代表 HSDPA , 4 是代表 WCDMA。而其他的 3、2、1 應該分別是 EDGE、GPRS、GSM,不過,大台北地區的 3G 基地臺相當完整,我還沒機會碰到有 3G 以下的模式,所以無法確定。


連線訊號強度:
^RSSI:8
其中的數字 8 即代表訊號的強弱,理論上 10 應該是最強,而 0則代表沒訊號〔目前還沒機會測試到〕。


然後有資料傳輸的相關資訊和統計〔每兩秒鐘更新一次〕:
^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 上也能完全發揮。 :)