移植wpa_supplicant 2.5 实现rtl8188可以无线上网

libnl-1.1.4.tar.gz    下载地址:http://www.infradead.org/~tgr/libnl/

openssl-0.9.8za       下载地址:ftp://ftp.openssl.org/source/old/0.9.x/

wpa_supplicant-2.5    下载地址:http://w1.fi/releases/

 

 

我这里使用的是wpa_supplicant-2.5.tar.gz和openssl-0.9.8za.tar.gz。

 

下载wpa_supplicant-2.5.tar.gz (openssl用到2.5提供的补丁)

#tar xvfz wpa_supplicant-2.5.tar.gz看到patches目录下

openssl-0.9.8za-tls-extensions.patch和openssl-0.9.8zf-tls-extensions.patch两个补丁文件,所以openssl要下载对应的0.98za或0.98zf版本

我们下载0.98za版本

#tar zxvf openssl-0.9.8za.tar.gz

分别解压wpa_supplicant-2.5.tar.gz和openssl-0.9.8za.tar.gz,把wpa_supplicant-2.5里面的patches文件夹下的openssl-0.9.8za-tls-extensions.patch文件拷贝到openssl-0.9.8za目录下,运行:

patch -p1 < openssl-0.9.8za-tls-extensions.patch

 

 

下面开始编译各个源码

需要使用root 权限,否则在install的时候会提示没有权限。

 

配置libnl(之前用了最新的libnl-3.4.0,编译wpa的时候会提示找不到-lnl,因为3.4编译完后生成的是libnl-3)

./configure --prefix=/usr/local/arm/libnl1.1

编译

make CC=arm-linux-gnueabi-gcc

make install

 

 

编译openssl

修改makfile 需要用绝对路径,否则会提示出错

CC= /home/zjf/R40/lichee/out/sun8iw11p1/linux/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-gcc

AR= /home/zjf/R40/lichee/out/sun8iw11p1/linux/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-ar $(ARFLAGS) r

RANLIB= /home/zjf/R40/lichee/out/sun8iw11p1/linux/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-ranlib

 

安装目录放在了openssl的目录下,没有试其它目录,因为在下面运行make install的时候会安装失败,是由于要安装man导致,所以在编译wpa_supplicant的时候直接选择主目录就可以了。

 

INSTALLTOP=/home/zjf/wifibuild/openssl-0.9.8za

OPENSSLDIR=/home/zjf/wifibuild/openssl-0.9.8za

 

执行 make && make install

 

 

 

编译wpa_supplicant(wpa还是用2.5版本,用2.6版本编译不过)

首先建立配置文件:

cp defconfig .config

然后修改.config,增加以下内容:

 

CC=arm-linux-gnueabi-gcc

CFLAGS+=-I /home/zjf/wifibuild/openssl-0.9.8za/include

LIBS+=-L /home/zjf/wifibuild/openssl-0.9.8za/lib

LDFLAGS +=-L /home/zjf/wifibuild/openssl-0.9.8za

LIBS+=-L /home/zjf/wifibuild/openssl-0.9.8za

 

CFLAGS += -I/usr/local/arm/libnl1.1/include/

LDFLAGS +=  -I/usr/local/arm/libnl1.1/include/

LIBS += -L/usr/local/arm/libnl1.1/lib

 

 

保存配置后执行 make ,完成编译。

把wpa_supplicant 下载到板子上后创建一下配置文件wpa_supplicant.conf

内容如下:

 

network={

ssid="z001"     

psk="1234567891"

}                                     

network={               

        ssid="z001"     

        psk="1234567891"

        priority=1      

        key_mgmt=WPA-PSK

}

然后运行下面命令

./wpa_supplicant -Dnl80211 -iwlan0 -c/tmp/wpa_supplicant.conf &

 

打印如下

# Successfully initialized wpa_supplicant

nl80211: Could not re-add multicast membership for vendor events: -2 (No such file or directory)

wlan0: Trying to associate with 6c:e8:73:27:42:68 (SSID='z001' freq=2437 MHz)

[22570.275881] cfg80211: Calling CRDA for country: US

[22570.282865] RTL871X: rtw_set_802_11_connect(wlan0)  fw_state=0x00000008

[22570.375384] RTL871X: start auth

[22570.381426] RTL871X: auth success, start assoc

[22570.393070] RTL871X: assoc success

wlan0: Associated with 6c:e8:73:27:42:68

[22570.403822] RsvdPageNum: 8

[22570.514479] RTL871X: send eapol packet

[22570.619330] RTL871X: send eapol packet

[22570.623993] RTL871X: set pairwise key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4) camid:4

[22570.718353] RTL871X: set group key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:1

[22570.718385] RTL871X: send eapol packet

wlan0: WPA: Key negotiation completed with 6c:e8:73:27:42:68 [PTK=CCMP GTK=CCMP]

wlan0: CTRL-EVENT-CONNECTED - Connection to 6c:e8:73:27:42:68 completed [id=1 id_str=]

[22571.736155] RTL871X: set group key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:1

[22571.736190] RTL871X: send eapol packet

wlan0: WPA: Group rekeying completed with 6c:e8:73:27:42:68 [GTK=CCMP]

 

然后用dhcp 获取ip地址

udhcpc -i wlan0

 

ping 一下,成功ping 通

 

为了方便可以搭建一个脚本

ifconfig eth0 down

ifconfig wlan0 up

sleep 2

./wpa_supplicant -Dnl80211 -iwlan0 -c/tmp/wpa_supplicant.conf &

sleep 5

udhcpc -i wlan0

 

以下是个很好的wpa_supplicant.conf例程

 

# 请不要修改下面这一行内容,否则将不能正常工作  

ctrl_interface=/var/run/wpa_supplicant  

  

# 确保只有root用户能读取WPA的配置  

ctrl_interface_group=0  

  

# 使用wpa_supplicant来扫描和选择AP  

ap_scan=1  

  

# 简单的情形:WPA-PSk密码验证方式,PSK是ASCII密码短语,所有合法的加密方式都允许连接  

network={  

  ssid="simple"  

  psk="very secret passphrase"  

  # 优先级越高,就能越早匹配到。  

  priority=5  

}  

  

# 与前面的设置相同,但要求对特定的SSID进行扫描(针对那些拒绝广播SSID的AP)  

network={  

  ssid="second ssid"  

  scan_ssid=1  

  psk="very secret passphrase"  

  priority=2  

}  

  

# 仅使用WPA-PSK方式。允许使用任何合法的加密方式的组合  

network={  

  ssid="example"  

  proto=WPA  

  key_mgmt=WPA-PSK  

  pairwise=CCMP TKIP  

  group=CCMP TKIP WEP104 WEP40  

  psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb  

  priority=2  

}  

  

# 明文连接方式(不使用WPA和IEEE802.1X)  

network={  

  ssid="plaintext-test"  

  key_mgmt=NONE  

}  

  

# 共享WEP密钥连接方式(不使用WPA和IEEE802.1X)  

network={  

  ssid="static-wep-test"  

  key_mgmt=NONE  

  # 引号包含的密钥是ASCII密钥  

  wep_key0="abcde"  

  # 没有引号包含的密钥是十六进制密钥  

  wep_key1=0102030405  

  wep_key2="1234567890123"  

  wep_tx_keyidx=0  

  priority=5  

}  

  

# 共享WEP密钥连接方式(无WPA和IEEE802.1X),使用共享密钥IEEE802.11验证方式  

network={  

  ssid="static-wep-test2"  

  key_mgmt=NONE  

  wep_key0="abcde"  

  wep_key1=0102030405  

  wep_key2="1234567890123"  

  wep_tx_keyidx=0  

  priority=5  

  auth_alg=SHARED  

}  

  

# 在IBSS/ad-hoc网络中使用WPA-None/TKIP  

network={  

  ssid="test adhoc"  

  mode=1  

  proto=WPA  

  key_mgmt=WPA-NONE  

  pairwise=NONE  

  group=TKIP  

  psk="secret passphrase"  

}  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值