上週末的 COSCUP 2008,由於第一天現場網路斷線,臨時跟幾位長輩借用了 3G SIM Card/Modem/AP 來擋一下。感謝 Custom Wu, ik, in2, Kinght Feng, Lloyd Hung (sort by letters) 的大德大力相挺。

為了能夠讓 3G 轉成無線網路 (802.11b/g) 訊號,連忙將有 USB Ports 的 ASUS WL-HDD2.5 與 FON2202 改裝含撥接工具新的 OpenWrt 版本。特意將先前未安裝的 kmod-usb-serial、kmod-ppp、comgt 等套件再補裝進新編譯的軔體。

華為 (Huawei) 的 E220 先前曾經試用過,這張卡的行為頗為詭異,它會提供 Virtual CD 與 USB serial 介面,Virtual CD 裡面擺的是驅動程式、手冊、設定檔 (for Windows) 等。

麻煩的是,大約是 Hotplug 或某種 race condition 的問題,有時 Linux 不會偵測到 serial interface,有時可抓到介面,可是在卸載 Virtual CD 前是無法使用的,很多時候就算卸載或不載入 Virtual CD 也無法使用! 所幸 bobovsky 做了一個初始化程式,執行後可以確保 USB Modem 被正確啟用。(顯然是用 USB sniffer 之類的工具做出來的)

因此我唯一需要做的是將程式編譯成 MIPS (LSB) 給 WL-HDD2.5, MIPS (MSB) 給 FON2202,丟到機器上並稍加設定。

必須先為系統添加一組 hotplug script /etc/hotplug.d/usb/20-usg-3g,目的在於判斷 E220 被插入時,自動執行初始化指令,讓 Modem 變成可撥接的狀態。

#!/bin/sh

# Copyright (C) 2006 OpenWrt.org

case "$ACTION" in
	remove)
		[ ${PRODUCT} == "12d1/1003/0" ] && {
			ifdown wan
			echo 1 > /proc/diagled/usb		    		    	    	    	    	    		    		   
		}
		;;
	add)
		[ ${PRODUCT} == "12d1/1003/0" ] && {
			/bin/huaweiAktBbo
			echo 0 > /proc/diag/led/usb
		}
		;;
esac

另外,由於 usbserial 還不認得 E220,因此必須將 vendor/product id 先餵給它,如此插入設備時就可以自動產生 device file 等。作法是更改 /etc/modules.d/60-usb-serial

usbserial vendor=0x12d1 product=0x1003 maxSize=4096

上述是將硬體驅動的方法,此外就是要加入撥接工具。這件事情 comgt 可以代勞,OpenWrt 已經整合好相關的 Script,只要利用 UCI (Unified Configuration Interface) 對 /etc/config/network 進行更改如下即可

#### 3G
config interface	wan
    option device       "/dev/usb/tts/0"
    option proto        "3g"
    option apn          "internet"
    option service      "hsdpa" # or cdma, evdo, umts_only, or gprs_only
    # option pincode      "0000"
    option mtu          "1492"

由於大家的 SIM Card 都關掉了 PIN Code 檢驗機制,為了避免系統對 Modem 輸出錯誤 PIN Code 而鎖死 SIM Card,我也稍加更改了 /lib/network/3g.sh,避免系統在初始化時試圖對 Modem 設定 PIN Code.

--- ../../package/comgt/files/3g.sh	2008-04-17 09:29:56.000000000 +0800
+++ lib/network/3g.sh	2000-01-01 08:23:32.000000000 +0800
@@ -73,10 +73,12 @@
 		fi
 		# Don't assume Option to be default as it breaks with Huawei Cards/Sticks
 		
-		PINCODE="$pincode" gcom -d "$device" -s /etc/gcom/setpin.gcom || {
-			echo "$cfg(3g): Failed to set the PIN code."
-			set_3g_led 0 0 0
-			return 1
+		test -z "$pincode" || {
+	  		PINCODE="$pincode" gcom -d "$device" -s /etc/gcom/setpin.gcom || {
+				echo "$cfg(3g): Failed to set the PIN code."
+				set_3g_led 0 0 0
+				return 1
+		    	}
 		}
 		test -z "$mode" || {
 			MODE="$mode" gcom -d "$device" -s /etc/gcom/setmode.gcom

只要將上述所需的套件都編譯、選定,在稍加修改特定幾個 Scripts 後,就可以利用方便的 ImageBuilder 產出所需的軔體了。本次也借用了 Knight 的 BandLuxe C120,基本用法是一樣的。

  • 如果像ASUS WL-HDD2.5這樣有內建硬碟的AP來說,
    可以內建支援有Proxy功能嗎?以3.5G上網來說,
    有Proxy Server的功能多少對頻寬的使用效率上有幫助!

  • @david.huang 可以啊,包含 DNS 跟 Web Access 都可以作 Proxy. 🙂

  • 第二天很好!沒有想要用3G網卡的想法!Good Job!

  • Anthony

    Rex:
    你好!刚看到你的文章。最近我也买了一台FON2202和华为E220,FON的USB口插上E220后没有任何反应。后台设置里3G一栏也一直显示的未连接。
    小弟是初学者,看到你的博客上有FON使用E220成功的办法。能否告诉小弟我详细的做法,或者你有已经整合编译好的ROM能给小弟一个么。
    或者openmesh版本的也行,我可以将FON刷成openmesh的。看到你上面的做法,似乎openmesh的也可以实现。
    诚恳请教Rex,希望你能帮助小弟一把。我的联系方式是[email protected],msn:[email protected]

  • wl hdd…刷好後..BandLuxe C120怎樣設定…能教一下嗎

  • 兩位朋友好,

    Anthony, 請你提報問題到 http://trac.fonosfera.org/fon-ng/report/1 ,預設韌體應該相容。我也是此案開發者,會從該站修復官方韌體與回答問題。

    目前我手上沒有 BandLuxe C120,設置方法同 E220 大同小異。請具體說明詳細錯誤訊息。

  • 插c120

    您好…
    插c120後顯視如下…
    我是參考這篇安裝設定的…
    但它只有支援 e220的…沒有支援c120
    我在bandrich關往友找到For Linux Fedora 8 (Kernel 2.6.22 or above) 驅動..但不會把他裝入wl-hdd(http://www.bandrich.com/download03.aspx?id=47&c=18&lang=1)
    我對linuxu一點概念都沒有阿…
    救救我吧
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    May 17 04:08:12 pppd[2756]: In file /tmp/ppp/peers/gprs: unrecognized option ‘/dev/usb/tts/0’
    May 17 04:08:39 kernel: hub.c: new USB device 00:04.0-1, assigned address 2
    May 17 04:08:39 kernel: Manufacturer: BandRich, Inc.
    May 17 04:08:39 kernel: Product: USB Mass Storage
    May 17 04:08:39 kernel: SerialNumber: 000000000002
    May 17 04:08:39 kernel: scsi0 : SCSI emulation for USB Mass Storage devices
    May 17 04:08:40 kernel: Vendor: BandLuxe Model: CDROM Rev: 1.01
    May 17 04:08:40 kernel: Type: CD-ROM ANSI SCSI revision: 02
    May 17 04:08:44 pppd[2789]: In file /tmp/ppp/peers/gprs: unrecognized option ‘/dev/usb/tts/0’
    May 17 04:09:15 pppd[2825]: In file /tmp/ppp/peers/gprs: unrecognized option ‘/dev/usb/tts/0’

  • 插c120
  • 你好,

    BandLuxe C120 跟 Huawei E220 設計一樣,初始時會以 USB CDROM 方式提供驅動程式。在 Linux 下無法正常辨識。

    通常的作法是利用特定工具告知 C120 說驅動程式已裝,請改為撥接模式 (USB Serial),然後路由器的設備便可以自動撥接。

    你不知道你是想再 Linux PC 上用?還是哪一台設備上用。PC 上可以下達特定指令後,初始化數據機。若是無線路由器,恐怕要找到已經調整過得韌體版本才行。

  • 插c120

    我要用xp或windows 7上網…你在台北嗎???我可以帶東西去跟您討教嗎??

  • 咦!XP 或 Windows 7?那怎麼問我呢? 🙂

    你的意思是你要用 WL-HDD 接 3G,用 Windows 上網是嗎?

    我時常出席星期二的 Tossug 或星期四的 Hacking Thursday,歡迎在社群時間內來找我討論。可先來信確認我該周或該晚是否出席。

  • 插c120

    是要用 WL-HDD 接 3.5G,用 Windows 上網…
    星期二的 Tossug 或星期四的 Hacking Thursday????那是在那聚會阿???我是想帶過去讓你教我 🙂

  • usb_modeswitch-0.9.7.tar 怎安裝到wl 500g或wl-hdd阿???

  • tell me more

    ########################################################
    # BandLuxe C120
    #
    # Reportedly needs several switch calls in a certain order. See
    # http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?t=71
    # This might be a case to try the new ResetUSB function
    #
    # Contributor: Alexander Czigler

    ;DefaultVendor= 0x1a8d
    ;DefaultProduct= 0x1000

    ;TargetVendor= 0x1a8d
    ;TargetProduct= 0x1002

    # only for reference
    # MessageEndpoint=0x05

    ;MessageContent=”55534243123456781200000080000603000000020000000000000000000000″

    ;ResponseEndpoint=0x82

    ########################################################

  • Anthony

    Rex哥哥十分感谢你!好羡慕你们在台北的朋友啊。可以随时找你讨教问题。可惜我人在上海哈。Rex大哥能不能告诉下你的邮箱或者即使通讯工具联系方式呢,很想跟你本人讨教问题。小弟知道我的请求比较过分。但请Rex大哥帮帮忙,E220设备我一直没解决。太奇怪了。网上看到你们都能使用,我就是不行。
    我的联系方式是[email protected]或者[email protected]
    望回复。谢谢大哥了

  • 插c120

    Tell me more detail for c120 .
    with picture is good

  • bing

    我想请版主您帮我发一份支持E220的固件到我邮箱

  • peter

    想請教如何讓WL-HDD自動3G撥號?我用HUAWIE220接WL-HDD USB PORT 3g撥通時再從WL-HDD連一條網路線到網路收音機(asus interner radio AIR)給家父聽廣播用,每次WL-HDD插上電源後無法辨識Huawei E220 USB裝置必須手動telnet進Huawei E220才能辨識Huawei E220 USB裝置再撥號,有辦法讓WL-HDD自動3G撥號嗎?謝謝

  • BandLuxeC270 限定使用一家公司的SIM卡,可是我要回国了,那么这设备岂不是没用了,能刷通用版的吗?[email protected]
    谢谢。