Linux 手动无线网卡 WiFi 配置

操作环境: ArchLinux Linux myhost 2.6.36-ARCH
硬件: USB 无线网卡 TL-WN821N

1. 安装 wireless_tools 和 madwifi

pacman -S wireless_tools madwifi

2. 查看网卡状态

lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 001 Device 003: ID 0cf3:7015 Atheros Communications, Inc. 

在USB接口001/003上检测到网卡。

iwconfig

lo        no wireless extensions.

eth0      no wireless extensions.

wlan0     IEEE 802.11bgn  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=0 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off

无线网卡为 wlan0

3. 激活网卡

ifconfig wlan0 up
因为我的网卡必需要先激活才能扫描,否则下一步scan会出现错误:wlan0 Interface doesn’t support scanning.

4. 扫描网络

iwlist wlan0 scan

wlan0     Scan completed :
          Cell 01 - Address: 54:E6:FC:22:E1:D2
                    Channel:1
                    Frequency:2.412 GHz (Channel 1)
                    Quality=53/70  Signal level=-57 dBm  
                    Encryption key:on
                    ESSID:"TP-LINK_22E1D2"
                    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
                    Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
                    Mode:Master
                    Extra:tsf=000000292a41bd80
                    Extra: Last beacon: 960ms ago
                    IE: Unknown: 000E54502D4C494E4B5F323245314432
                    IE: Unknown: 010882848B960C121824
                    IE: Unknown: 030101
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK

发现WPA2-PSK/WPA-PSK 加密网络 TP-LINK_22E1D2

因为加密方式为 WPA-PSK 所以得用 wpa_supplicant 而不能使用 iwconfig wlan0 key xxx 形式,iwconfig key方式适用于WEP。

5. 配置 wpa_supplicant

新建文件 /etc/my_wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
network={
	ssid="TP-LINK_22E1D2"
	psk="密码"
}

因为全部使用默认配置,所以配置文件非常简单。

6. 连接wlan0到网络,并以daemon方式运行

wpa_supplicant -B -i wlan0 -c /etc/my_wpa_supplicant.conf

-B Background 在后台以daemon 运行
-i interface
-c 配置文件

7. 设置IP地址

ifconfig wlan0 192.168.1.131

ifconfig 查看状态

wlan0     Link encap:Ethernet  HWaddr 54:E6:FC:03:0D:6B  
          inet addr:192.168.1.131  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:95 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:32434 (31.6 Kb)  TX bytes:576 (576.0 b)

8. 加入网关到路由

我的网关的是192.168.1.1
添加通过wlan0访问的网关
route add default gw 192.168.1.1 dev wlan0

route 查看route状态

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 wlan0
default         192.168.1.1     0.0.0.0         UG    0      0        0 wlan0

9. 设置完毕。

以后上线只需运行
wpa_supplicant -B -i wlan0 -c /etc/my_wpa_supplicant.conf
ifconfig wlan0 192.168.1.131
route add default gw 192.168.1.1 dev wlan0
即可

10. 相关命令

关闭连接
wpa_cli terminate
连接状态
wpa_cli status

题外话:无线网卡的自动配置

无线网卡的自动配置,可通过netcfg2,具体参见ArchLinux Wiki Netcfg 一文,非常详细。

共3条Pingback
共15条评论
  1. feiyu @ 2011-03-05 11:18:29 回复

    请问我的无线网络没有密码的话,第4步以后该如何做?
    直接在/etc/network/interfaces加入3行
    auto wlan0
    iface wlan0 inet dhcp
    wireless-essid my_essid
    就可以了么?
    会自动启用11N的模式么?
    madwifi跟ndiswrapper两种方式,哪种更加稳定、节约资源呢?

    • JiangMiao @ 2011-03-05 16:18:43

      如果手动的话 无密码为 5,6步并为
      iwconfig wlan0 essid ESSID 比如 我的是 iwconfig wlan0 essid TP-LINK_22E1D2
      如果有WEP密码则再加入 iwconfig wlan0 key PASSWORD
      余下的从7步设置ip和route即可。

      看你的interfaces配置应该是没问题的。可能再需要添加route的相关配置。比如
      up route del default
      up route add default gw 192.168.1.1 dev wlan0

      ndiswrapper 没用过,不好说,

  2. feiyu @ 2011-03-07 21:09:45 回复

    好不容易找到驱动了,TL-WN821N V3版的芯片是AR9271,之前一直以为是7010的,看到芯片信息0cf3 :7015,又看到有别人说是7010,就先入为主了,绕了弯路。这下既不用ndiswrapper,也不用madwifi了,用的是compat-wireless编译安装的Firmware。应该是最稳定的方案了吧,试用一段时间再看看。。。
    参考了2篇文章:http://linuxwireless.org/en/users/Drivers/ath9k_htc
    http://blog.sina.com.cn/s/blog_593c5b070100mcap.html

    • felonwan @ 2011-04-19 11:23:38

      你好,我在Ubuntu下使用下,在用TL-WN821N,看到的芯片信息也是0cf3:7015。

      不知道你现在用的情况怎么样?最后Firmware是用的7010还是9270?能不能把具体过程再详细点介绍一下?谢谢。

    • JiangMiao @ 2011-04-19 14:31:20

      请问哪步的结果和文章中显示的不一样?

  3. felonwan @ 2011-04-19 20:40:06 回复

    呵呵,搞定了。
    我是用了一个图形工具装了ath92_htc,里面带了ar9271和ar7010的firmware。
    可以很方便地用网络管理器管理无线连接。

  4. 请问一下,有试过一台设备有两个网络设备通讯问题嘛? @ 2012-02-17 00:03:28 回复

    你好!有没有试过一台设备有两个网络设备,一个是wifi ,一个是eth0(有线设备),并且它们都是处于同一个局域网内的,如何保证wifi和ethO不相互影响,比如说,当eth0异常时,我们仍然可以ping得wifi地址?

    • JiangMiao @ 2012-02-19 13:31:11

      没有很好的答案。思路是eth down时触发wlan up。

  5. 蒋カイセキ @ 2012-06-13 21:55:51 回复

    樓上的意思是想wlan0和eth0不同IP是能夠使用的,
    如果你想要使用同一個IP的話可以寫個腳本獲取eth0的連接狀態,如果掉線後就開啓wlan0,並且設置IP,不過當切換時會有個間隔

    • JiangMiao @ 2012-06-27 15:58:48

      这个方法好。

  6. cherish @ 2013-02-18 15:53:38 回复

    Encryption key:on 这个是不是标识网络是否加密的?
    Quality=53/70 这个是不是表示网络信号强度的?

  7. Jason @ 2014-04-29 20:11:54 回复

    非常感谢LZ,已经配置成功了,这么多命令参数不知道LZ是怎么学习的?可否赐教

  8. 小毛驴 @ 2014-04-29 21:23:42 回复

    请问不需要设定dns就可以上网么?

  9. 小郭 @ 2014-12-23 21:52:49 回复

    太厉害了!搜了好多方法也没有搞定。用了您的方法,一下就搞定了!

发表评论

电子邮件地址不会被公开。 必填项已用*标注