1. Plug-In USB Wi-Fi Adapter
這個動作很簡單, 把它插到電腦上.
然後, 我們要先看一下, 電腦是不是有識別到這一個裝置. 執行以下指令
$
lsusb
這個指令會把所有 USB 的裝置列出來, 包含 root hub. 但是我們關心的, 是我們剛剛加到系統的裝置. 可以找到以下資訊:
Bus
001 Device 003: ID 7392:7711 Edimax Technology Co., Ltd EW-7711UTn nLite
Wireless Adapter [Ralink RT2870]
這表明, 這是 Edimax EW-7711UTn 的無線網卡, 晶片組是 Ralink RT2870.
2. Download RT2870 Linux driver
更巧的是, Ralink 這家公司, 已經在 2011年的 5 月 5 日 賣給 MediaTek, 所以, 要從以下的連結下載 source code. 就是 RT2870USB(RT2870/RT2770) 的那一個檔案.
http://www.mediatek.com/_en/07_downloads/01_windows.php?sn=5013. 複製檔案到 Linux
由於 Ubuntu 安裝的是 server版, 沒有 browser, 因此需要自行下載後, 複製到系統中. 我是用 SD card.
1. 檢視系統中的 SD card device
$
sudo fdisk -l
這個命令將會列出系統中的磁碟設備. 其中 /dev/sdb 是我的 SD card
driver. 下面列出來的 /dev/sdb1 是這張 SD card
2. 掛載 SD card 到 file system
$
mkdir /mnt/SD
$
sudo mount -t vfat /dev/sdb1 /mnt/SD3. 複製到工作區
$
cd ~
$
mkdir EW-7711$ cd EW-7711
$ cp /mnt/SD/*.bz2 .
4. 解壓縮檔案
$
cd ~
$
cd EW-7711$ tar xvf 2010_0709_RT2870_Linux_STA_v2.4.0.1.tar.bz2
5. 修改設定檔
$
cd ~
$
cd EW-7711$ cd 2010_0709_RT2870_Linux_STA_v2.4.0.1
$ cd os
$ cd linux
修改 config.mk,
將
HAS_WPA_SUPPLICANT=n
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
改成
HAS_WPA_SUPPLICANT=y
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
6. 重新編譯
$
cd ~
$
cd EW-7711$ cd 2010_0709_RT2870_Linux_STA_v2.4.0.1
$ make
7. 編譯失敗
編譯的過程, 出現如以下的錯誤:
error : implicit declaration of function 'usb_buffer_alloc,....
...
error
: implicit declaration of function 'usb_buffer_free,....
原因是 usb_buffer_alloc, usb_buffer_free 這兩個函式, 在新的 kernel 2.6.35 之後, 已經取消, 改用 usb_alloc_coherent, 和 usb_free_coherent 代替.
修改\include\os\rt_linux.h
#define RTUSB_URB_ALLOC_BUFFER(pUsb_Dev,
BufSize, pDma_addr) usb_buffer_alloc(pUsb_Dev, BufSize,
GFP_ATOMIC, pDma_addr)
#define RTUSB_URB_FREE_BUFFER(pUsb_Dev,
BufSize, pTransferBuf, Dma_addr) usb_buffer_free(pUsb_Dev,
BufSize, pTransferBuf, Dma_addr)
改成
#define RTUSB_URB_ALLOC_BUFFER(pUsb_Dev,
BufSize, pDma_addr) usb_alloc_coherent
(pUsb_Dev, BufSize, GFP_ATOMIC, pDma_addr)
#define RTUSB_URB_FREE_BUFFER(pUsb_Dev,
BufSize, pTransferBuf, Dma_addr) usb_free_coherent
(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)
修改 \os\linux\rt_usb_util.c
...
return
usb_buffer_alloc(dev, size, mem_flags, dma);
...
usb_buffer_free(dev,
size, addr, dma);
改成
...
return
usb_alloc_coherent (dev, size, mem_flags, dma);
...
usb_free_coherent
(dev, size, addr, dma);
再重新編譯, 就可以完成, 並且產生
rt2870sta.ko
8. 安裝驅動程式
切換到剛剛產生的 rt2870sta.ko 的目錄, 也就是 /os/linux, 以下列命令安裝驅動程式
$
sudo insmod rt2870sta.ko
9. 啟動 Wi Fi Adapter
安裝的驅動程式, 並不會自己啟動. 用以下命令, 可以確認它目前的狀態
$
sudo lshw -class network
可以看到類似的訊息
*
-network DISABLED
description:
Wireless interface
physical
id : 1
bus
info : usb@1:3
logical
name : wlan1
.....
接下來我們手動啟動它
$
sudo ifconfig wlan1 up
再用前面的命令去檢視它的狀態, 已經沒有 DISABLED 的訊息了
10. 將 Wi Fi Adapter 設定為自動啟動
修改 /etc/network/interfaces. 由於我們本來就有 Wi Fi 的連線在 wlan0, 只要把 wlan0 換成 wlan1 就可以啟動 wlan1, 而不啟動 wlan0.
iface
wlan1 inet dhcp
wpa-ssid (SSID)wpa-psk (PASSWORD)
然後重新啟動, 嗯, 這樣就完成了. 再用以下命令去確認.
$ sudo lshw -class network
沒有留言:
張貼留言
請提供您寶貴的意見