#1 2009-10-22 16:38:07
[DD-WRT] 3G 測試
以下是在DD-WRT的測試紀錄, 同樣的, 測試原則請先參閱前述DD-WRT(3G版), CDMA@wifi, Lly.
機型: 華碩 WL-500gP
韌體: DD-WRT v24-sp2 (09/30/09) big - build 13000M NEWD Eko
3G modem: 華為 E220
ISP: 臺灣固網
Optware套件: modutils, usbutils, libcurl
1.) 核心模組
使用Lly r240, 符合DD-WRT的2.4.37核心.
1-1) 下載, 解壓縮, 搬移.
# cd /opt/Download/Lly/
# curl -Ov http://wl500g.googlecode.com/files/modules-1.9.2.7-d-r240.tgz
# tar -xzvf modules-1.9.2.7-d-r240.tgz
# chown -R root:root lib/
# mv lib/modules/ /opt/lib/
# rmdir lib
# cd ~
1-2) 載入
# modprobe option
usb.c: registered new driver serial
usbserial.c: USB Serial support registered for Generic
usbserial.c: USB Serial Driver core v1.4
usbserial.c: USB Serial support registered for Option GSM modem
usbserial.c: Option GSM modem converter detected
usbserial.c: Option GSM modem converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
usbserial.c: Option GSM modem converter detected
usbserial.c: Option GSM modem converter now attached to ttyUSB1 (or usb/tts/1 for devfs)
option.c: USB Driver for GSM modems: v0.7.2a
2.) usb_modeswitch
2-1) 執行檔
使用v1.0.5. 可於Lly或OpenWrt取得.
2-2) 設定檔
DefaultVendor=0x12d1;
DefaultProduct=0x1003
HuaweiMode=1
若/jffs空間夠大, 可將執行檔與設定檔塞入/jffs相關目錄, 否則, 複製到/opt相關目錄.
2-3) 切換
# usb_modeswitch -c /jffs/etc/usb_modeswitch.conf
Looking for default devices ...
Found default devices (1)
Accessing device 002 on bus 001 ...
Using endpoints 0x02 (out) and 0x82 (in)
Not a storage device, skipping SCSI inquiry
Device description data (identification)
-------------------------
Manufacturer: HUAWEI Technologies
Product: HUAWEI Mobile
Serial No.: not provided
-------------------------
Sending Huawei control message ...
OK, Huawei control message sent
-> Run lsusb to note any changes. Bye.
# lsusb
Bus 004 Device 001: ID 0000:0000
Bus 004 Device 003: ID 0420:1307 Chips and Technologies
Bus 004 Device 004: ID 058f:6390 Alcor Micro Corp.
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 001 Device 002: ID 12d1:1003 Huawei Technologies Co., Ltd. E220 HSDPA Modem
3.) comgt, chat
3-1) 執行檔
comgt, 於DD-WRT 3G版或OpenWrt取得.
chat, 於Lly或OpenWrt取得. 以下使用chat測試.
3-2) 設定檔
抄襲CDMA@wifi
# cat /jffs/etc/e220.chat
'' ''
'' 'ATZ'
'OK' 'ATI'
'OK' 'AT+COPS?'
'OK' 'AT+CGDCONT=1,"IP","internet"'
'OK' 'ATD*99#'
'CONNECT' ''
同樣的, 若/jffs空間夠大, 可將執行檔與設定檔塞入/jffs相關目錄, 否則, 複製到/opt相關目錄.
4.) pppd
4-1) 執行檔
使用DD-WRT內建的pppd, 不作變更.
4-2) 設定檔
抄襲CDMA@wifi, 置換原PPPoE的設定檔/tmp/ppp/options.pppoe
# cat /tmp/ppp/options.pppoe
/dev/usb/tts/0
460800
debug
crtscts
noipdefault
ipcp-accept-local
lcp-echo-interval 60
lcp-echo-failure 5
usepeerdns
noauth
nodetach
user ""
connect "/jffs/usr/sbin/chat -s -S -V -t 30 -f /jffs/etc/e220.chat 2>/tmp/chat.log"
5.) 撥號測試
5-1) 幹掉原有的PPPoE
# killall redial
# killall pppd
5-2) 撥號
# pppd file /tmp/ppp/options.pppoe
5-3) 檢查
# cat /tmp/chat.log
ATZ
OK
ATI
Manufacturer: huawei
Model: E220
Revision: 11.116.05.00.00
IMEI: xxxxxxxxxxxxxxx
+GCAP: +CGSM,+DS,+ES
OK
AT+COPS?
+COPS: 0,0,"TW Mobile",2
OK
AT+CGDCONT=1,"IP","internet"
OK
ATD*99#
# ip addr show
1: lo: mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
2: teql0: mtu 1500 qdisc noop
link/void
3: eth0: mtu 1500 qdisc pfifo_fast
link/ether 00:1a:92:xx:xx:xx brd ff:ff:ff:ff:ff:ff
4: eth1: mtu 1500 qdisc noop
link/ether 40:10:18:xx:xx:xx brd ff:ff:ff:ff:ff:ff
5: eth2: mtu 1500 qdisc pfifo_fast
link/ether 00:1a:92:xx:xx:xx brd ff:ff:ff:ff:ff:ff
6: vlan0: mtu 1500 qdisc noqueue
link/ether 00:1a:92:xx:xx:xx brd ff:ff:ff:ff:ff:ff
7: vlan1: mtu 1500 qdisc noqueue
link/ether 00:1a:92:xx:xx:xx brd ff:ff:ff:ff:ff:ff
8: br0: mtu 1500 qdisc noqueue
link/ether 00:1a:92:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global br0
inet 169.254.255.1/16 brd 169.254.255.255 scope global br0:0
9: etherip0: mtu 1500 qdisc noop
link/ether ae:a5:99:xx:xx:xx brd ff:ff:ff:ff:ff:ff
10: ppp0: mtu 1500 qdisc pfifo_fast
link/ppp
inet 115.82.52.234 peer 10.64.64.64/32 scope global ppp0
嗯, 可取得真實IP.
6.) 系統啟動檔
WebUI設定為/jffs/etc/config/rc_startup.sh
# cat /jffs/etc/config/rc_startup.sh
#!/bin/sh
logger -s "start Startup commands..."
killall redial
killall pppd
[ -x /opt/sbin/modprobe ] && modprobe option
usb_modeswitch -c /jffs/etc/usb_modeswitch.conf
cp -f /jffs/etc/3g.ppp /tmp/ppp/options.pppoe
pppd file /tmp/ppp/options.pppoe
重新開機後, 檢查.
# ip route show
10.64.64.64 dev ppp0 proto kernel scope link src 115.82.152.98
192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.1
169.254.0.0/16 dev br0 proto kernel scope link src 169.254.255.1
127.0.0.0/8 dev lo scope link
default via 10.64.64.64 dev ppp0
嗯, 有真實IP, 也可繞出去了.
好了, 發功完畢. 利用EzSetup按鈕作PPPoE與3G切換就不贅述了.
離線
#2 2010-02-11 20:19:20
Re: [DD-WRT] 3G 測試
請問一下, usb_modeswitch, comgt, chat 的執行檔. 在沒有安裝 lly 的情況下, 要怎麼把這些檔案分解出來呢?
我有試著下載 http://wl500g.googlecode.com/files/modu … d-r240.tgz 然後解開, 不過並沒有看到這些執行檔.
離線
#3 2010-02-11 21:46:18
Re: [DD-WRT] 3G 測試
如果沒有Lly, 可由OpenWrt相關的套件來解出執行檔. 例如: USB_ModeSwitch 1.1.0版. 當然, 也可以自行編譯.
modules-1.9.2.7-d-r240.tgz只是核心模組(2.4.37), 用於驅動3G modem.
離線
#5 2010-02-12 00:38:29
Re: [DD-WRT] 3G 測試
我裝的是 DD-WRT v24-sp2 (10/10/09) mega (Asus 500gP v1)
因為這個版本的 DD-WRT 已經沒有 modprobe 了, 所以我用 insmod
#insmod lib/modules/2.4.37/kernel/drivers/usb/serial/option.o
但是執行之後用 lsmod 還是只有看到 5 個, 這樣應該是 usb module 沒有 load 成功吧? 可是前面 insmod 也沒有任何訊息啊
# lsmod |grep usb
usb-storage 40344 0 (unused)
scsi_mod 101488 3 [usb-storage sd_mod]
usb-ohci 20352 0 (unused)
usb-uhci 29004 0 (unused)
usbcore 84576 1 [usb-storage ehci-hcd usb-ohci usb-uhci]
將 libusb 裝好, 插入 USB modem (Huawei E169), 嘗試執行一下 usb_modeswitch (想當然是不會成功的, 前面 driver 根本就沒進來啊)
# usr/bin/usb_modeswitch -c /tmp/usb_modeswitch.conf
Looking for default devices ...
No default device found. Is it connected? Bye.
然後把 E169 拔掉, 再執行一次 usb_modeswitch, 結果如下
# ./usb_modeswitch -C /tmp/usb_modeswitch.conf
No default vendor/product ID given. Aborting.
/tmp/usb_modeswitch.conf 的內容如下:
DefaultVendor=0x12d1;
DefaultProduct=0x1003
HuaweiMode=1
最後修改: dennys (2010-02-12 00:41:54)
離線
#6 2010-02-12 08:39:14
Re: [DD-WRT] 3G 測試
又做了一些測試
insmod 要給完整路徑, 不過執行之後, 用 lsmod 還是原來那五個. 不過我有測試一下, 用 insmod 載入 usb/serial/usbserial.o, 之後用 lsmod 是有看到多了一個 usbserial, 所以 insmod 應該是有作用的, 只是不知道為什麼載入 option.o 沒反應就是了.
另外, 我也試著改用 modules-1.9.2.7-d-r1087.tgz, 不過還是一樣.
# lsmod |grep us
b
usbserial 23980 0 (unused)
usb-storage 40344 0 (unused)
scsi_mod 101488 4 [usb-storage sd_mod]
usb-ohci 20352 0 (unused)
usb-uhci 29004 0 (unused)
usbcore 84576 1 [usbserial usb-storage ehci-hcd usb-ohci usb-uhci]
還有關於 usb_modeswitch.conf, 我做了兩個修改. 一個是把第一行的分號拿掉, 另一個是把第二行改成 0x1001 (因為我用 E169), 如下
# more usb_modeswitch.conf
DefaultVendor=0x12d1
DefaultProduct=0x1003
HuaweiMode=1
但是結果還是一樣
# usr/bin/usb_modeswitch -c /tmp/usb_modeswitch.conf
Looking for default devices ...
No default device found. Is it connected? Bye.
我覺得是 500gP 根本沒有抓到 USB, 因為拔掉 E169 之後的訊息還是一樣
離線
#9 2010-02-12 23:45:04
Re: [DD-WRT] 3G 測試
突然有了大幅進展...
後來測試不出來, 就把東西通通關掉, 不過 usb 還是插在 500gp 上. 剛開機連上去用 dmesg 看, 發現抓到了.
hub.c: new USB device 01:03.0-2, assigned address 2
HSDPA storage init performing...
scsi0 : SCSI emulation for USB Mass Storage devices
Vendor: HUAWEI Model: Mass Storage Rev: 2.31
Type: CD-ROM ANSI SCSI revision: 02
WARNING: USB Mass Storage data integrity not assured
但是我根本還沒有執行 insmod, 而且 lsmod 的內容並沒有變化
# lsmod |grep usb
usb-storage 40344 0 (unused)
scsi_mod 101488 3 [usb-storage sd_mod]
usb-ohci 20352 0 (unused)
usb-uhci 29004 0 (unused)
usbcore 84576 1 [usb-storage ehci-hcd usb-ohci usb-uhci]
使用 lsusb 看, 有看到最後一個是 E169, 不過前面那個找不到 usb.ids 的錯誤訊息不知道是否可以忽略.
# ./lsusb
./lsusb: cannot open "/usr/share/usb.ids", No such file or directory
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 001 Device 002: ID 12d1:1001
再來就執行 usb_modeswitch, 看來結果是成功的
#usb_modeswitch -c /tmp/usb-modeswitch.conf
Looking for default devices ...
Found default devices (1)
Accessing device 002 on bus 001 ...
Using endpoints 0x02 (out) and 0x82 (in)
Not a storage device, skipping SCSI inquiry
USB description data (for identification)
-------------------------
Manufacturer:
Product: HUAWEI Mobile
Serial No.:
-------------------------
Sending Huawei control message ...
OK, Huawei control message sent
-> Run lsusb to note any changes. Bye.
到這裡我完全沒有用到 modules-1.9.2.7-d-r1087.tgz 的東西. 或許是 DD-WRT 後來的版本增加了些對 USB 裝置的支援了?
不過也只有到此為止了, 之後執行 pppd file /tmp/ppp/options.pppoe, 結果什麼都沒有, /tmp/chat.log 也沒產生. 有試著直接執行 chat, 會看到他準備發出 AT command, 不過當然不會成功. 不過 /tmp/chat.log 在直接呼叫 chat 的時候有產生, 因此我猜是 pppd 沒有執行完全.
所以只能猜測是 pppd 有問題了. 不知道在 DD-WRT 裡面 ppp 的設定是否有什麼需要注意的? 我是把 Connection Type 設定成 PPPoE, 其他什麼都沒設定.
離線
#10 2010-02-13 14:29:41
Re: [DD-WRT] 3G 測試
dennys 提到:
使用 lsusb 看, 有看到最後一個是 E169, 不過前面那個找不到 usb.ids 的錯誤訊息不知道是否可以忽略.
可於The USB ID Repository下載usb.ids, 或參閱/opt/sbin/update-usbids.sh(usbutils套件)
dennys 提到:
到這裡我完全沒有用到 modules-1.9.2.7-d-r1087.tgz 的東西. 或許是 DD-WRT 後來的版本增加了些對 USB 裝置的支援了?
不過也只有到此為止了, 之後執行 pppd file /tmp/ppp/options.pppoe, 結果什麼都沒有, /tmp/chat.log 也沒產生. 有試著直接執行 chat, 會看到他準備發出 AT command, 不過當然不會成功. 不過 /tmp/chat.log 在直接呼叫 chat 的時候有產生, 因此我猜是 pppd 沒有執行完全.
所以只能猜測是 pppd 有問題了. 不知道在 DD-WRT 裡面 ppp 的設定是否有什麼需要注意的? 我是把 Connection Type 設定成 PPPoE, 其他什麼都沒設定.
如已建立/dev/usb/tts/0且切換為modem, 可於minicom下AT command撥號市話是否鈴響, 再回頭測試comgt或chat. comgt或chat主要是與3G modem通訊(AT command); pppd主要是與ISP通訊, 取得IP; 使用PPPoE主要是套用路由.
我之前是先追蹤理解CDMA@wifi整個過程, 看看如何玩把戲, 再於Lly測試. 再將流程套用於DD-WRT測試.
離線