天天看點

linux -- Linux下USB無線網卡WL-167G、TL-WN321G驅動安裝過程詳解

網卡 華碩WL-167G、TP-LINK TL-WN321G

驅動 RT73_Linux_STA_Drv1.0.3.6

下載下傳位址

http://dlsvr01.asus.com/pub/ASUS/wireless/WL-167g/Linux_1218.zip

一、 準備工作 解壓核心源碼,拷貝對應核心的makefile,并更改檔案屬性

[[email protected] RT73_Linux_STA_Drv1.0.3.6]# chmod 777 Module

[[email protected] RT73_Linux_STA_Drv1.0.3.6]# ls -al

總用量 16

。。。。。。。。。。

drwxrwxrwx 2 root root 4096 2006-07-04 Module

##確定檔案對任何使用者是可讀可執行的,否則可能不能make config,777可以保證所有權限

二、 添加對WL-167G ASUS 網卡的支援,注意官方的1218版本以前驅動包括網卡自帶的CD光牒裡沒有對此說明,否則驅動加載後會說找不到裝置

[[email protected] Module]# gedit rtmp_def.h

##add support for WL-167G ASUS

{USB_DEVICE(0x0B05,0x1723)}, /

{USB_DEVICE(0x0B05,0x1724)}, /

三、 配置、編譯 確定對應目錄下存在/usr/src目前系統運作的核心源碼,其他位置不行

1> $make config

## ensure there are such directories as /usr/src/linux-2.4.20-8 and /lib/modules/2.4.20-8/kernel/drivers/net, but they are your own kernel

2> $make all # compile driver source code

## ensure no problems occur

四、修改自啟動配置檔案ifcfg-rausb0并安裝RT73.o及添加alias rausb0 rt73

1> 修改目前目錄下的ifcfg-rausb0,若是動态IP則不需要修改

[[email protected] Module]# gedit ifcfg-rausb0

## edit the file according to your network system, and it can be auto loaded when booting system. and the file is as follows:

DEVICE=rausb0

ONBOOT=yes

## static for fixed ip

BOOTPROTO=static

IPADDR=192.168.0.31 ## 你自己的IP及其他相關設定

NETMASK=255.255.255.0

GATEWAY=192.168.0.1

2> 安裝子產品及其他自啟動設定

[[email protected] Module]# make install

install -m 755 -o 0 -g 0 -d /lib/modules/2.4.20-8/extra

………………

## 安裝完畢後請确認對應目錄下存在下列檔案

## 安裝完畢後modules.conf内容如下:

...............

alias rausb0 rt73

##安裝完畢後 ifcfg-rausb0 内容如gedit ifcfg-rausb0所設

五、拷貝系統固件及預設自啟動時的預設配置檔案

1> $cp rt73.bin /etc/Wireless/RT73STA/ # copy firmware

[[email protected] Module]# cp rt73.bin /etc/Wireless/RT73STA/

##必須先逐層建立目錄/etc/Wireless/RT73STA/後,再執行拷貝操作,否則報錯

2> $dos2unix rt73sta.dat

$cp rt73sta.dat /etc/Wireless/RT73STA/rt73sta.dat

[[email protected] Module]# dos2unix rt73sta.dat

dos2unix: converting file rt73sta.dat to UNIX format ...

## 拷貝完畢上述目錄确認存在此兩個檔案

# Use "vi -b rt73sta.dat" to modify settings according to your need.

六、動态加載子產品 用相關指令确認子產品加載成功

[[email protected] Module]# insmod rt73.o

[[email protected] Module]# cat /var/log/messages | tail

。。。。。。。。。。

Apr 14 14:05:44 dding kernel: rtusb init ====>

Apr 14 14:05:44 dding kernel: usb.c: registered new driver rt73

[[email protected] Module]# dmesg | tail

。。。。。。。。。。

rtusb init ====>

usb.c: registered new driver rt73

[[email protected] Module]# lsmod

Module Size Used by Not tainted

rt73 233632 0 (unused)

...............

usbcore 78784 1 [rt73 hid usb-uhci ehci-hcd]

## 也可以确認子產品是否加載成功

 七、插入網卡,看是否能夠識别

## insert the WL-167G card

[[email protected] Module]# cat /var/log/messages | tail

。。。。。。。。。。

Apr 14 14:07:58 dding kernel: idVendor = 0xb05, idProduct = 0x1723

Apr 14 14:07:59 dding /etc/hotplug/net.agent: invoke ifup rausb0

。。。。。。。。。。。

Apr 14 14:08:02 dding /etc/hotplug/usb.agent: Setup rt73 for USB product b05/1723/1

[[email protected] Module]# dmesg | tail

。。。。。。。。。。。

## pop out the WL-167G card insert the TL-WN321G card

[[email protected] Module]# cat /var/log/messages | tail

。。。。。。。。。。。。。

Apr 14 14:11:02 dding /etc/hotplug/usb.agent: Setup rt73 for USB product 148f/2573/1

Apr 14 14:11:02 dding devlabel: devlabel service started/restarted

## support for USB product 148f/2573/1, and all is ok

[[email protected] Module]# dmesg | tail

。。。。。。。。。。。。。。。

八、成功識别後,用iwconfig檢視無線網絡并進行相關設定

[[email protected] Module]# iwconfig

rausb0 RT73 WLAN ESSID:"lab706"

Mode:Ad-Hoc Channel:1 Cell: 00:18:F3:E5:9D:66

。。。。。。。。。。。。

[[email protected] Module]# iwconfig rausb0 mode managed

[[email protected] Module]# iwconfig

rausb0 RT73 WLAN ESSID:""

。。。。。。。。。。。。。

## Infrustructure mod, 預設ESSID:""為空,

[[email protected] Module]# iwlist rausb0 scan

rausb0 Scan completed :

Cell 01 - Address: 00:18:F3:E5:9D:66

ESSID:"lab706"

。。。。。。。。。。。。

Cell 02 - Address: 00:C0:02:0A:8D:52

ESSID:"A509-ID"

。。。。。。。。。。。

##将自動接收周圍的信标幀,并比較信号值自動進行聯接,也可以掃描手動設定

[[email protected] Module]# iwconfig

rausb0 RT73 WLAN ESSID:"lab706"

Mode:Managed Channel:1 Access Point: 00:18:F3:E5:9D:66

。。。。。。。。。。。。。

## AP端設定好後,TL-WN321G自動聯接到AP上了,太爽了,WL-167G還可以當AP用

## 在AP端加上了MAC控制清單防止其他使用者聯接到此網絡上

問題:驅動安裝完畢後,無線網卡ping不通AP

過程:

1、IP未配置

這是iwconfig的結果:

rausb0    RT73 WLAN  ESSID:"VeryBT" 

          Mode:Managed  Channel:6  Access Point: 00:19:E0:D8:E2:A8 

          Bit Rate=54Mb/s  

          RTS thr:off   Fragment thr:off

          Encryption key:7461-6E67-796F-6E67-3730-324C-42

          Link Quality:100/100  Signal level:-32 dBm  Noise level:-79 dBm

          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0

          Tx excessive retries:0  Invalid misc:0   Missed beacon:

這是ipconfig的結果:

rausb0    Link encap:Ethernet  HWaddr 00:1B:FC:45:54:58 

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:273 errors:0 dropped:0 overruns:0 frame:0

          TX packets:839 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:100

          RX bytes:30678 (29.9 Kb)  TX bytes:60322 (58.9 Kb

在ifcfg-rausb0裡面動态擷取的

BOOTPROTO=dhcp

但無線和有線不一樣,在該無線網卡未連入系統時,其可能無法和DHCP伺服器通信以獲得IP

上面的ifconfig的結果也證明了IP未能擷取成功

是以對于Linux下面的無線網卡要靜态配置Ip

#xuxunlin add follow

#BOOTPROTO=static

#IPADDR=192.168.1.101

#NETMASK=255.255.255.0

#GATEWAY=192.168.1.1                                                 

#add end

確定上面無線網卡的IP和AP的IP在同一個網段

2、掃描AP,確定已經連到對應的無線網絡上了

iwlist rausb0 scan

rausb0    Scan completed :

          Cell 01 - Address: 00:0F:66:B0:8F:84

                    ESSID:"WLANLAB"

                    Mode:Managed

                    Channel:11

                    Encryption key:off

                    Bit Rate:0kb/s

          Cell 02 - Address: 00:19:E0:D8:E2:A8

                    ESSID:"VeryBT"

                    Mode:Managed

                    Channel:6

                    Encryption key:on

                    Bit Rate:0kb/

iwconfig:

rausb0    RT73 WLAN  ESSID:"VeryBT" 

          Mode:Managed  Channel:6  Access Point: 00:19:E0:D8:E2:A8 

          Bit Rate=54Mb/s  

          RTS thr:off   Fragment thr:off

          Encryption key:7461-6E67-796F-6E67-3730-324C-42

          Link Quality:100/100  Signal level:-32 dBm  Noise level:-79 dBm

          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0

          Tx excessive retries:0  Invalid misc:0   Missed beacon:

ifconfig:

eth0      Link encap:Ethernet  HWaddr 00:0C:29:A5:8D:CD 

          inet addr:202.115.27.234  Bcast:202.115.27.255  Mask:255.255.255.0

          。。。。。。

lo        Link encap:Local Loopback 

       。。。。。。。。。。

rausb0    Link encap:Ethernet  HWaddr 00:1B:FC:45:54:58 

          inet addr:192.168.1.101  Bcast:192.168.1.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:32973 errors:0 dropped:0 overruns:0 frame:0

          TX packets:1555 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:100

          RX bytes:3840399 (3.6 Mb)  TX bytes:100306 (97.9 Kb

上述相關指令顯示IP位址設定正确,網卡已經連接配接到AP了

Access Point: 00:19:E0:D8:E2:A8  和

Cell 02 - Address: 00:19:E0:D8:E2:A8比對

但仍然ping不通

PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.

From 192.168.1.101 icmp_seq=1 Destination Host Unreachable

3、一般情況下Destination Host Unreachable是路由有問題,即資料包不能找到一條合适的路徑發送出去,是以确認網關正确

在圖形化界面裡面未找到rausb0的配置項,隻能通過指令配置

route add default gw 192.168.1.1

仍然不通,用netstat -r檢視目前存在的路由表項

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

192.168.1.0     *               255.255.255.0   U     0      0        0 rausb0

169.254.0.0     *               255.255.0.0     U     0      0        0 rausb0

127.0.0.0       *               255.0.0.0       U     0      0        0 lo

default         192.168.1.1     0.0.0.0         UG    0      0        0 rausb

192.168.1.0     *               255.255.255.0   U     0      0        0 rausb0

對應的網關為空

而default         192.168.1.1     0.0.0.0         UG    0      0        0 rausb

對應的網絡接口不是rausb0,但是以太網的default項接口肯定是eth0的,不是eth

是以添加完整的路由表項

route add -net 192.168.1.10 netmask 255.255.255.0 gw 192.168.1.1 

提示

route:netmask does‘t match route address

指令格式用錯了

-net指定網絡号,而非IP位址

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

netstat -r

Kernel IP routing table

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

192.168.1.0     192.168.1.1     255.255.255.0   UG        0 0          0 rausb0

192.168.1.0     *               255.255.255.0   U         0 0          0 rausb0

127.0.0.0       *               255.0.0.0       U         0 0          0 lo

default         192.168.1.1     0.0.0.0         UG        0 0          0 rausb

現在192.168.1.0     192.168.1.1     255.255.255.0   UG        0 0          0 rausb0表項完整了

ping 192.168.1.1的封包可以确定是通過上述表項對應的rasub0發送出去的

當有線和無線網卡在同一個網段時,可能存在無線對應的網段資料是通過eth0發送的,這個時候肯定是無法reach host的

配置好了上述路由後,仍然不通

Destination Host Unreachable

4、用traceroute追蹤路由

traceroute 192.168.1.1

 1  192.168.1.10 (192.168.1.10)  2653.335 ms !H  2998.934 ms !H  2999.653 ms !

沒有出現類似windows下面的

Trace complete提示

是以也沒有搞明白錯誤出現在哪一環

5、IP已經配置,連上AP了,路由表也配了,實在想不到還有什麼不對的地方,采用最原始的辦法:確定防火牆已關閉、網卡本身硬體沒問題,在windows下面嘗試确認是無線網卡驅動的問題還是網絡本身的問題

windows下面嘗試的結果是也無法ping通

因為windows的驅動是不用懷疑的,相關配置都是自動的

問題的原因進一步縮小,xuxunlin 很快找到了密碼的問題

重新更改密碼後,在Linux下面添加密匙

iwconfig rausb0 essid "xx" key s:xxx

即可ping通了

6、疑惑

因為看到iwlist之後iwconfig的結果中已經連接配接到AP了

總是覺得無線網絡本身是沒有問題的

因為按照無線的協定,掃描》認證》關聯,密匙不對是無法經過認證階段的

但現在iwconfig的結果卻顯示連接配接上了?

期待哪位大蝦解釋下iwconfig的結果

iwconfig:

rausb0    RT73 WLAN  ESSID:"VeryBT" 

          Mode:Managed  Channel:6  Access Point: 00:19:E0:D8:E2:A8 

          Bit Rate=54Mb/s  

          RTS thr:off   Fragment thr:off

          Encryption key:7461-6E67-796F-6E67-3730-324C-42

          Link Quality:100/100  Signal level:-32 dBm  Noise level:-79 dBm

          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0

          Tx excessive retries:0  Invalid misc:0   Missed beacon

繼續閱讀