天天看點

linux無線網卡配置2

為什麼linux下無線不可用?

今天, 突然想用無線上網, 正要用iwconfig配置無線設定, 發現系統裡根本就沒有對應的

無線接口, 但在windows系統下, 無線卻用得很是正常.

[scr wifi]$ ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000

link/ether 00:24:54:9d:4e:e0 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.139/24 brd 192.168.1.255 scope global eth0

inet 10.3.1.4/24 brd 10.3.1.255 scope global eth0:0

3: sit0: <NOARP> mtu 1480 qdisc noop state DOWN

link/sit 0.0.0.0 brd 0.0.0.0

從"ip a"的輸出來看, 并沒有類似于wlan0的接口, 第一感覺應該是沒有安裝相應驅動.

驗證一下:

[root ~]# iwconfig

lo no wireless extensions.

eth0 no wireless extensions.

sit0 no wireless extensions.

确實, 這三接口都不支援無線, 這是對的.

[scr wifi]$ dmesg | grep wlan

[scr wifi]$ lspci -vnn

... ...

03:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11b/g LP-PHY [14e4:4727] (rev 01)

Subsystem: Askey Computer Corp. Device [144f:7179]

Flags: bus master, fast devsel, latency 0, IRQ 16

07:00.0 Ethernet controller [0200]: Marvell Technology Group Ltd. 88E8059 PCI-E Gigabit Ethernet Controller [11ab:4381] (rev 11)

Subsystem: Samsung Electronics Co Ltd Device [144d:c551]

Flags: bus master, fast devsel, latency 0, IRQ 45

Memory at fc800000 (64-bit, non-prefetchable) [size=16K]

I/O ports at 5000 [size=256]

[virtual] Expansion ROM at fc400000 [disabled] [size=128K]

Capabilities: <access denied>

Kernel driver in use: sky2

Kernel modules: sky2

從"lspci -vnn"的輸出, 終于可以确定是沒有安裝無線驅動, 因為"Broadcom

Corporation BCM4313 802.11b/g LP-PHY" 沒有對應的"kernel driver"等. 好吧, 下面

我們把驅動安裝上!

"Ethernet controller"是以态網, 就是有有線網絡.

2. Broadcom Corporation BCM4313 802.11b/g LP-PHY 對應的驅動是什麼? 在那下載下傳?

Broadcom Corporation BCM4313 802.11b/g LP-PHY 對應的驅動是什麼? 這我也不知道,

不過這好辦, google一下就ok了. 最終找到了一個非常靠普的:

http://www.broadcom.com/support/802.11/linux_sta.php , 該網頁上有兩個驅動包, 一

個是32位的, 另一個是64位; 但這一驅動合适我的機子嗎? "README"檔案

(http://www.broadcom.com/docs/linux_sta/README.txt)就是回答這一問題的根據了.

根據README, 先檢查一下, 我機子上的無線網卡是否被這一驅動包支援:

[scr wifi]$ pwd

// To find the Device ID's of Broadcom cards on your machines do:

[scr wifi]$ lspci -n | grep 14e4

03:00.0 0280: 14e4:4727 (rev 01)

對比了一下, 4727确實是支援的, 下面的工作就是把驅動包下載下傳下來, 然後按README一步

一步進行就OK了. 不過對于fedora沒這個必要, 因為在已提供了對應的yum源.

3. 安裝驅動(fedora版)

[root wifi]$ pwd

// 安裝相應的yum源

[root wifi]$ rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpmhttp://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

// 安裝驅動

[root wifi]$ yum -y install kmod-wl

完成後, 我們再驗證一下是否已成功安裝:

[scr wifi]$ iwconfig

eth1 IEEE 802.11 Nickname:""

Access Point: Not-Associated

Link Quality:2 Signal level:183 Noise level:162

Rx invalid nwid:0 invalid crypt:0 invalid misc:0

多了一下"eth1", 是"IEEE 802.11"的, 說明安裝已成功. 這命名比較奇怪, linux下無線

接口不應該是"wlanX"嗎...

再驗證一下:

Memory at fc700000 (64-bit, non-prefetchable) [size=16K]

Kernel driver in use: wl

Kernel modules: wl

可以看到, 對應的驅動(wl)已經安裝上了.

4. 配置無線網絡

4.1 用 iwconfig 和 iwlist

先掃一下, 看看都有什麼AP可用:

[root ~]# iwlist eth1 scanning

eth1 Scan completed :

Cell 01 - Address: 5C:63:BF:40:6B:1E

ESSID:"hellome"

Mode:Managed

Frequency:2.437 GHz (Channel 6)

Quality:2/5 Signal level:-71 dBm Noise level:-95 dBm

IE: IEEE 802.11i/WPA2 Version 1

Group Cipher : CCMP

Pairwise Ciphers (1) : CCMP

Authentication Suites (1) : PSK

IE: WPA Version 1

Encryption key:on

Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s

9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s

48 Mb/s; 54 Mb/s

有一個, ESSID是"hellome", 正是我自己的路由器, 對應密碼是"7878787878", PSK加密.

設定要連接配接到的AP, 和密碼:

[root ~]# iwconfig eth1 essid 'hellome'

[root ~]# iwconfig eth1 key 7878787878

Errorforwirelessrequest "SetEncode" (8B2A) :

SET failed on device eth1 ; Invalid argument.

設定essid沒任何問題, 但設定key卻不行! google一下, 有網友說是 iwconfig 工具不支

持PSK加密方式, 無奈隻能用别的了.

4.2 用 wpa_supplicant

wpa_supplicant是一個用于管理無線網絡的工具包, 很是好用, 它可以通過指令行的方式

來設定, 也可以通過讀取配置檔案的方式.

先建立或修改一下配置檔案:

[root ~]# vi /etc/wpa_supplicant/wpa_supplicant.conf

# 可有可無, 沒有的話無法用wpa_cli terminate來關閉wpa_supplicant

ctrl_interface=/var/run/wpa_supplicant

# 確定隻有root使用者能讀取WPA的配置, 可有可無, 尤其是在嵌入式裝置上

ctrl_interface_group=0

# 使用wpa_supplicant來掃描和選擇AP, 也可以設定成0或2, 但隻有1才能正确工作

ap_scan=1

network={

ssid="hellome" # AP的名字

psk="7878787878" # AP的key

}

設定IP并運作wpa_supplicant:

[root ~]# pwd

// 起用eth1

[root ~]# ifconfig eth1 up

// 設定ip位址

[root ~]# ifconfig eth1 192.168.1.156

// ## 運作 wpa_supplicant :

// # // -B 代表背景運作

// # // -Dwext 代表網卡晶片是wext

// # // -ieth1 代表使用裝置eth1

// # // -c 指定配置檔案

[root ~]# wpa_supplicant -B -Dwext -ieth1 -c/etc/wpa_supplicant/wpa_supplicant.conf

當網絡改變時,重新配置/etc/wpa_supplicant/wpa_supplicant.conf,先killall wpa_supplicant

[root ~]# ifconfig eth1 192.168.2.156

wpa_supplicant -B -Dwext -ieth1 -c/etc/wpa_supplicant/wpa_supplicant.conf。

測試一下, 網絡是否已連通(192.168.1.1是我的路由器的ip):

[root ~]# ping 192.168.1.1

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

64 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=1.74 ms

64 bytes from 192.168.1.1: icmp_req=2 ttl=64 time=1.58 ms

64 bytes from 192.168.1.1: icmp_req=3 ttl=64 time=1.98 ms

^C

OK! 沒問題, 能連上路由器了, 現試一下biadu:

[root ~]# ping www.baidu.com

ping: unknown host www.baidu.com

居然不通! 有可能是沒路由或沒DNS服務:

[root ~]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

172.16.198.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1

172.16.77.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8

嗯! 真的是路由問題, 預設路由沒有. 增加預設路由:

[root ~]# route add default gw 192.168.1.1

0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth1

再試:

PING www.a.shifen.com(220.181.111.147) 56(84) bytes of data.

64 bytes from 220.181.111.147: icmp_req=1 ttl=51 time=106 ms

64 bytes from 220.181.111.147: icmp_req=2 ttl=51 time=104 ms

OK!

可以把以上指令寫到 /etc/rc.d/rc.local 檔案下, 這樣開機無線就自動配置好了.

5. reference

Broadcom Corporation 802.11 Linux STA driver

http://www.broadcom.com/support/802.11/linux_sta.php

http://www.broadcom.com/docs/linux_sta/README.txt

Linux WPA/WPA2/IEEE 802.1X Supplicant

http://hostap.epitest.fi/wpa_supplicant/

Example wpa_supplicant configuration file

http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/wpa_supplicant.conf

wpa_supplicant使用筆記

http://hi.baidu.com/aberlee/blog/item/acb0a3d3ca0f64d9a9ec9af0.html/cmtid/76f0f80165cf8e081c958324