Home Gateway Asus WL 500gp

6

源起

客廳需要一個小功率的電腦做一些居家環境控制的事,有些條件希望可以滿足。

  1. 不超過五千
  2. 比省電燈泡的 13w 還省
  3. 有很多人使用的經驗
  4. 豐富與即時的更改版韌體可供使用
  5. 支援 USB
  6. 支援網路下載功能

最後買了 Asus WL-500g Premium 小白來用,下面是一些使用紀錄。這台小白機器的外觀與內在都被拍下來,可以參考 這裡 ,看過才知道這類產品美國 FCC 都會有資料上網公開。

第一次測試

一開始總要先插電測看看是否正常,這台機器底部有寫預設 IP 為 192.168.1.1 與密碼防止忘記,一開始的動作就市找台電腦,調到同一個網段 192.168.1.xx 來操作,連上去後先 確認 firmware 與功能正常。

因為這機器是暫時內部用來測試,所以先不管 WLAN 的那個部份。網頁秀出的韌體版本是 1.9.6.7 ,目前 asus 新版本是 1.9.7.0,不過馬上要換成客製版韌體,所以也不用更新。

另外這機器的 MAC 地址後面是 3b:a5,雖然拔掉天線,Thinkpad T41 內建網卡隔個房間可抓到約 30 % 強度,既然暫時不會動 WLAN,也沒有進一步測試。

改韌體 firmware image

要在 Linux 環境上加些應用軟體,需要改用其他韌體來支援,才能提供 telnet/ssh 等擴充功能,當然也可以自己來,只是為了快速使用,直接採用別人測過的韌體比較簡便。

改機韌體有幾個選擇,這裡採用 Olegs 版本,這個版本加了 telnet/ssh/smaba/Qos/ipkg 等強化小白的必備工具,關於這個韌體更多資料可以參考 General information about Olegs Firmware

Olegs 的網頁 ASUS WL-500g/WL-500gx/WL-300g/WL-500b/WL-500bv2/WL-HDD custom firmware page

注意下面有提到的死機問題,到時可能會需要拆開才可以回復原廠設定,請先有準備。

WL-500g Premium Howto Part One

WL500g Premium pre7 firmware

開始換韌體。

  1. 上傳 WL500gp-1.9.2.7-7f-pre7.trx 到小白
  2. 網頁變成英文,可以下 command ,試看看 ifconfig。
  3. telnet 192.168.1.1 看看 OK。
  4. 檢查無線強度,在 status 關掉 wireless 看看。
  5. 重新開機檢視,在 status 關掉是臨時的,可以進 wireless 關掉,以後再開。
  6. LAN IP 為目前使用的內部網段,所以運作模式要改為 access point mode,這樣才方便設定 default gw 到原先的 router。
  7. 改掉預設的密碼

下面可以看出沒有增加記憶體到 32M,只有 16M。

[admin@whitebox /]$ df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/root                 2944      2944         0 100% /
[admin@whitebox /]$ free
              total         used         free       shared      buffers
  Mem:        13932        10560         3372            0         1308
 Swap:            0            0            0
Total:        13932        10560         3372

進一步看看。

[admin@whitebox root]$ dmesg | more
CPU revision is: 00029006
Primary instruction cache 16kb, linesize 16 bytes (2 ways)
Primary data cache 16kb, linesize 16 bytes (2 ways)
Linux version 2.4.20 (root@omnibook) 
(gcc version 3.2.3 with Broadcom modifications) #60 Sun Sep 3 22:38:39 MSD 2006
Setting the PFC value as 0x15
Determined physical RAM map:
 memory: 01000000 @ 00000000 (usable)
On node 0 totalpages: 4096
zone(0): 4096 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/mtdblock2 noinitrd init=/linuxrc console=ttyS0,115200
CPU: BCM4704 rev 9 at 264 MHz
Calibrating delay loop... 262.96 BogoMIPS
Memory: 13860k/16384k available 
(1776k kernel code, 2524k reserved, 248k data, 72k init, 0k highmem)
Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)
Inode cache hash table entries: 1024 (order: 1, 8192 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)

雖然有 telnet 預設,sshd 卻不是,需要加些設定。

ssh server

  1. mkdir -p /usr/local/etc/dropbear
  2. dropbearkey -t dss -f /usr/local/etc/dropbear/dropbear_dss_host_key
  3. dropbearkey -t rsa -f /usr/local/etc/dropbear/dropbear_rsa_host_key
  4. mkdir -p /usr/local/sbin/
  5. echo ”#!/bin/sh” >> /usr/local/sbin/post-boot
  6. chmod +x /usr/local/sbin/post-boot
  7. echo “dropbear” >> /usr/local/sbin/post-boot
  8. dropbear and netstat -at
  9. flashfs save && flashfs commit && flashfs enable && reboot

寫入 flash 後,每次開機 dropbear (ssh server) 都會被啟動,至於那隻 post-boot 會被自動叫起,那是這個韌體提供的便利之一。

目前資料開機後都會消失,所以需要藉由 USB 硬碟來提供可存放空間。

接上隨身碟

延續之前的設定,這次要加上可以放東西的空間,這裡是利用一隻舊隨身碟 128M。

ipkg package system Tutorial

  1. fdisk /dev/discs/disc0/disc
  2. d n p 1 enter +96M
  3. n p 2 enter enter t 2 82 w
  4. fdisk -l
  5. mke2fs -j /dev/discs/disc0/part1
  6. mkswap /dev/discs/disc0/part2
  7. mount /dev/discs/disc0/part1 /opt
  8. swapon /dev/discs/disc0/part2
  9. df
  10. free

測試可以後,裝些東西試看看。

  1. mkdir /opt/tmp
  2. mkdir /opt/tmp/ipkg
  3. ipkg.sh update
  4. ipkg.sh install ipkg
  5. /opt/bin/ipkg update
  6. /opt/bin/ipkg install nano
  7. /opt/bin/nano /usr/local/sbin/post-boot
  8. flashfs save && flashfs commit && flashfs enable && reboot

在之前的 dropbear 下面繼續加東西。

#!/bin/sh
dropbear
# wait for /opt to mount
mount /dev/discs/disc0/part1 /opt
i=0
while [ $i -le 30 ]
do
if [ -d /opt/etc ]
then
break
fi
sleep 1
i = `expr $i + 1`
done

# Activate swap
swapon /dev/discs/disc0/part2

開機後檢視一下 df/free 看是否正常,如有問題 dmesg 看一下。

java

java 環境已經有人幫忙做好,只要一點小改。

Unslung/WL500g packages available for Oleg’s firmware

改 /opt/etc/ipkg.conf 設定,讓 ipkg 裝別的地方。

src unslung http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable 
dest root /
  1. nano /opt/etc/ipkg.conf
  2. ipkg update
  3. mkdir -p /opt/usr/lib
  4. ipkg install uclibc
  5. ipkg install sablevm
  6. ipkg install jikes
  7. ipkg install zlib
  8. ipkg install popt
  9. ipkg list_installed

最後安裝結果。

ipkg - 0.99.149-2 -
jikes - 1.22-1 - IBM java compiler
libstdc++ - 0.2.0-4 - =Standard C++ library, wrapped for uClibc++
libtool - 1.5.10-2 - Library tools.
libuclibc++ - 0.2.1-5 - C++ standard library d....
nano - 1.2.5-3 - A pico like editor
ncurses - 5.5-1 - NCurses libraries
popt - 1.7-2 - A C library for parsing command line parameters.
sablevm - 1.13-2 - A robust... JVM.
uclibc - 0.9.28-1 - micro C library for embedded Linux systems
zlib - 1.2.3-1 - zlib is a .....

如果沒裝 popt/zlib 執行的時候會提醒你。

$ sablevm --version
SableVM version 1.13
- compile date and time: 2006-08-12 14:14:23 UTC
- gcc version: 3.4.6
- 'real life brokenness' features enabled
- copying garbage collection
- bidirectional object layout
- direct-threaded interpreter

測一下 HelloWorld。

  1. cd /opt/tmp
  2. nano HelloWorld.java
  3. jikes -classpath /opt/lib/sablevm/lib/libclasspath.jar HelloWorld.java
  4. sablevm HelloWorld

Samba

  1. mkdir /opt/etc/samba
  2. nano /opt/etc/samba/smb.conf
  3. nano /opt/etc/init.d/S97Samba
  4. chmod 755 /opt/etc/init.d/S97Samba

smb.conf

[global]
workgroup = WORKGROUP
guest account = nobody
security = share
browseable = yes
guest ok = yes
guest only = no
log level = 1
max log size = 100
encrypt passwords = no
dns proxy = no

[smbshare]
path=/opt/share
writeable = yes
browseable = yes
force user = admin

S97Samba

#!/bin/sh
/usr/sbin/smbd -D -l /opt/var/log/smbd.log -s /opt/etc/samba/smb.conf
/usr/sbin/nmbd -D -n myasus -o -l /tmp -s /opt/etc/samba/smb.conf 

最後要改起動檔 post-boot 加入一行 /opt/etc/init.d/rc.unslung ,代表啟動 S 開頭的服務。

  1. nano /usr/local/sbin/post-boot
  2. flashfs save && flashfs commit && flashfs enable && reboot
  3. netstat -at

\\192.168.1.1\smbshare 看看。

加大記憶體

預設只有 16MB RAM,但是板子上有 32MB,所以改一下 NVRAM 參數來用到 32MB RAM。 注意這是 gp 做法,其他板子不確定。

  1. nvram set sdram_init=0×0009
  2. nvram set sdram_ncdl=0
  3. nvram commit
  4. reboot
  5. free

一些觀察

  1. 安裝 Oleg 之後,網頁介面 USB Application – FTP Server 雖說 enable,但是檢驗 netstat/ps 看不到,想要 ftp 也是不行,這個設定跟掛載 USB 硬碟有關係,既然是用 post-boot 手動掛上, 如果需要 ftp 也要手動掛上。
  1. dropbear 沒有支援 sftp,只有 scp,要用 winscp 也需要一點會出現錯誤訊息,找到進階 選項的 SCP 部分,將 Lookup user groups 關掉就可以。參考 UseDropBearForRemoteAccess 獲得更多資訊。

links

關於核心效能參數的調整與強化參考 AP 進階改造,下載破表

很多的 Oleg 教學參考 Tutorials – Oleg

編譯官方核心的教學參考 HOW-TO: Compile a firmware for the WL-700g from the GPL 1.0.4.2

差別在 gp 部份,目前新版本為 24-Aug-2006 的 GPL_ToolChain.zip。

http://files.wl500g.info/asus/wl500gp/gpl/ ftp://dlsvr01.asus.com/pub/ASUS/wireless/WL-500gP/GPL_ToolChain.zip

一些 USB轉UART 使用 pl2303 的線應該可用,參考 Use an USB-serial port converter

外接基本 LCD 模組的做法參考 Connecting a LCD to the WL500g

Comments

  1. chicman said 110 days later:
    我最近也在玩wl-500gp,不過我發現oleg內建的samba並不支援utf8,也就是"堃"又不能出現了...
  2. LIN said 120 days later:
    很抱歉,近來已經沒有弄這個,也許過一陣子會加進去,再觀察看看,謝謝你的分享。
  3. meransr@ms23.url.com.tw said 153 days later:
    站長你好 我下載了oleg的最新韌體想要更新wl-500g premium 我想知道是否用更新官方韌體的手法來載入oleg的韌體即可?
  4. sunriseyuen said 165 days later:
    加大記憶體 預設只有 16MB RAM,但是板子上有 32MB,所以改一下 NVRAM 參數來用到 32MB RAM。注意這是 gp 做法,其他板子不確定。 nvram set sdram_init=0×0009 nvram set sdram_ncdl=0 nvram commit reboot free 非常误导他人,不是这款机千万不要这样做 我在wl-hdd 2.5做了这个动作,导致这部机部能用,如果知道如何恢复的话请告诉我,sunriseyuen@gmail.com
  5. GeorgeS said 192 days later:
    就重新 reset 就好了啊, 所有設定都會還原, 記得是直接壓 reset 那 5 sec 就可以了, 你看一下手冊
  6. sheep said 214 days later:
    我都係用wl-500gp,但我如何修改以上韌體,及有何作用呢?而16m upto 32m 又如何做呢,請指教

(leave url/email »)

   Preview comment