Sunday, March 19, 2006

Wireless on Ubuntu

無線網路是少數幾個在 linux 系統下仍不容易安裝的硬體,這是我一次成功的嘗試。上一次嘗試大概是一年半前的事,那時候 Ubuntu 都還只是剛開始發展的一個新的 linux distrubution。經過了這一段時間,對 linux 系統提供 linux 驅動程式的廠商增加了不少,而這些無線網卡的設定也相對容易。

這一次用來測試的是過年從我弟那邊A來的 ZyAir G-220 USB 無線網卡,使用的是 zydas zd1211 晶片。使用這組晶片的無線網卡很多,zydas官方也提供了驅動程式,我參考在 ubuntu 論壇上的一篇 HowTo
HOW TO: Zydas ZD1211 wireless with WPA

這篇文章前半部是說明如何編譯及安裝 zd1211 驅動模組,後半是說明 WPA 加密的設定方式。不過我的IP分享器上只有 WEP ,所以我只參考了前半段。驅動模組的安裝過程並不難,根據howto step-by-step即可。

因為是第一次成功安裝 wireless 驅動模組,對於下一步驟要做什麼其實是了無頭緒,甚至不知道倒底是否成功。找了其他資料才知道,其實要看裝置是否安裝好了,只要下 lsmod ,找到一行
Module Size Used by
zd1211 265708 0
就表示模組載入了。

為了方便起見,一開始先將無線IP分享器的 WEP 及其他安全性設定關掉,接著如果你PC中還有eth0裝置(有線網路),也先停用
sudo ifconfig eth0 down
將無線網路卡插上USB孔,然後下 iwconfig 指令,大概可以看到以下的訊息
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 no wireless extensions.
這樣表示你的無線網卡裝置在 wlan0 。(有些系統可能在 ethX)
接著啟動你的 wlan0 無線網路卡介面︰
sudo ifconfig wlan0 up
這時候下 iwconfig 指令可以看到類似以下的訊息︰(不會完全一樣)
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 802.11b/g NIC ESSID:""
Mode:Managed Frequency=2.437 GHz Access Point:
Bit Rate:11 Mb/s
Retry:off RTS thr=xxx B Fragment thr:off
Power Management:off
Link Quality=96/100 Signal level=58/100 Noise level=0/100
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:21
Tx excessive retries:10962 Invalid misc:0 Missed beacon:0
這時候無線網路卡應該已經上線了,這時候可以用 iwlist 來掃瞄你的無線網卡可以偵測到的所有無線網路 AP︰
iwlist wlan0 scanning
接下來設定無線AP的 SSID︰
sudo iwconfig wlan0 essid Your_SSID
再下一次 iwconfig wlan0 應該可以看到你的無線網卡也已經跟無線AP連絡上了。

最後要做的設定是 WEP ,用另一台 PC 連上你的無線 AP(或用原來的 eth0 介面),將 WEP 設定打開,將 Auth Type 設成 Open System ,並設好你的 key (ex. 12345678901234567890123456 ,我的是 128bits,一共有 26 個數字)。然後在你的 PC上設 key ︰
sudo iwconfig wlan0 key 12345678901234567890123456
使用 iwconfig wlan0 指令撿查這時候的連線狀態。
然後使用 dhclient 向無線 IP 分享器取得 IP
dhclient wlan0


上述所有說的網卡啟動步驟,必須在每次插入網卡時動新設定,為了讓網卡能自動啟動及連上AP,必須將資訊寫進 /etc/network/interfaces 裡。根據網路上查到的設定方法,應為︰
# The wireless network interface
auto wlan0
iface wlan0 inet dhcp
wireless-essid Your_SSID
wireless-key 12345678901234567890123456


不過在我這的測試下,這樣的設定在重新啟動時(/etc/init.d/networking restart)會出現以下錯誤︰
Error for wireless request "Set Encode" (8B2A) :
SET failed on device wlan0 ; Invalid argument.
Error for wireless request "Set ESSID" (8B1A) :
SET failed on device wlan0 ; Invalid argument.
Internet Systems Consortium DHCP Client V3.0.3
Copyright 2004-2005 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/products/DHCP

Listening on LPF/wlan0/00:a0:c5:97:31:73
Sending on LPF/wlan0/00:a0:c5:97:31:73
Sending on Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 3
經過測試發現,應該是在設定 wireless 參數前,並沒有啟用網卡 (ifconfig wlan0 up) ,這或許是由 bug 所造成,詳細情形目前並不清楚。我的替代方案如下︰

# The wireless network interface
auto wlan0
iface wlan0 inet dhcp
pre-up ifconfig wlan0 up; iwconfig wlan0 essid Your_SSID key 1234..


之後每次插入無線網卡後只要重新啟動網路即可︰
sudo /etc/init.d/networking restart


**************************************************************************

經過上述步驟應該就可以設定好你的無線網路介面了。如果使用較先進的 WPA 加密,可以參考 HOW TO: Zydas ZD1211 wireless with WPA 中的說明。

ps.連線品質可以從兩個地方看到︰
Signal Quality︰基地台發射到client端訊號
Link Quality︰client端發射到基地台訊號
這張無線網卡的 Link Quality 只有 26% ,而AP到網卡的 Signal Quality 是 100% ,可見網卡本身發射功率不足。事實上相較於我曾經幫別人買過的一張 D-Link 卡,這張網卡(ZyAir)據說相當便宜,可能差異就在這吧。

參考資料︰
Zydas 說明文件
HOW TO: Zydas ZD1211 wireless with WPA
WifiDocs/Driver/zydas zd1211
Gentoo Linux 文件 -- 設定網路
[分享] 安裝無線網路卡並設定無線網路

3 comments:

bpchen said...

你不會設定到早上五點吧~_~

Chinson said...

到3點多而已啊..XD

Lesta said...

多謝,造福後人!