|
openwrt版本 Chaos Calmer ,无线驱动是qsdk的驱动,CPU是IPQ4018.
参考帖子:
https://www.chiphell.com/thread-1727517-1-1.html
https://www.reddit.com/r/openwrt/comments/515oea/finally_got_80211r_roaming_working/
http://www.hivmr.com/db/fz7amfsa8a1733x7j17k7c9jdj3119ps
一、添加package
默认的hostapd包
- hostapd-2016-10-02.tar.bz2
复制代码 在.config里面选了wpad以后,编译失败。
所以我升级hostapd到
- hostapd-2016-12-19-ad02e79d.tar.xz
复制代码 ps:中间遇到编译失败,我将src目录下的ap目录和utils目录直接放到hostapd-2016-12-19-ad02e79d.tar.xz中,再编译就没有出错。
添加 wpad-full版本
如果原来有wpad-mini,需要先删除
- opkg update
- opkg remove wpad-mini
- opkg install wpad
复制代码
二、修改wireless配置文件
- config wifi-device 'wifi0'
- option type 'qcawifi'
- option channel 'auto'
- option country 'CN'
- option hwmode '11g'
- option htmode 'HT20'
- config wifi-iface
- option device 'wifi0'
- option network 'lan'
- option mode 'ap'
- option ssid 'openwrt_2g_admin'
- option encryption 'psk2'
- option key 'openwrt123456'
- config wifi-device 'wifi1'
- option type 'qcawifi'
- option channel '157'
- option hwmode '11ac'
- option country 'CN'
- option txpower '10'
- option htmode 'HT40'
- config wifi-iface
- option device 'wifi1'
- option network 'lan'
- option mode 'ap'
- option ssid 'openwrt_5g_admin'
- option encryption 'psk2'
- option key 'openwrt123456'
- option rsn_preauth '1'
- option ieee80211r '1'
- option mobility_domain 'e612'
- option pmk_r1_push '1'
- option nasid 'kuaiyue'
- option r1_key_holder 'C0F036BBCCE0'
- list r0kh '00:11:22:BB:CC:E0,kuaiyue,8a7fcc966ed0691ff2809e1f38c16996'
- list r0kh '00:11:22:AA:BB:CF,kuaiyue,8a7fcc966ed0691ff2809e1f38c16996'
- list r1kh '00:11:22:BB:CC:E0,00:11:22:BB:CC:E0,8a7fcc966ed0691ff2809e1f38c16996'
- list r1kh '00:11:22:AA:BB:CF,00:11:22:AA:BB:CF,8a7fcc966ed0691ff2809e1f38c16996'
复制代码
list r0kh 第一个ap的ath1的mac地址,nasid,128位密钥
list r0kh 第二个ap的ath1的mac地址,nasid,128位密钥
list r1kh 第一个ap的ath1的mac地址,第二个ap的ath1的mac地址,128位密钥
三、修改hostapd.sh文件
hostapd.sh这个脚本在openwrt系统下的路劲
在源码里面的路劲
- qsdk/qca/feeds/qca/net/qca-hostap/files
复制代码
无线启动的时候,通过hostapd.sh脚本,提取wireless配置文件中的option生成hostapd需要的配置文件
/var/run/hostapd-ath0.conf
/var/run/hostapd-ath1.conf
默认通过hostapd.sh生成的hostapd-ath0.conf配置里面的r0kh,r1kh都不对,所以需要修改hostapd.sh里面生成r0kh,r1kh的地方
- Index: files/hostapd.sh
- ===================================================================
- --- files/hostapd.sh
- +++ files/hostapd.sh
- @@ -681,14 +681,28 @@
- config_get ft_over_ds "$vif" ft_over_ds
- [ -n "$ft_over_ds" ] && append "$var" "ft_over_ds=$ft_over_ds" "$N"
-
- - config_get nasid2 "$vif" nasid2
- - config_get ap_macaddr "$vif" ap_macaddr
- - config_get ap2_macaddr "$vif" ap2_macaddr
- - config_get ap2_r1_key_holder "$vif" ap2_r1_key_holder
- -
- - append "$var" "r0kh=$ap_macaddr $nasid $kh_key_hex" "$N"
- - append "$var" "r0kh=$ap2_macaddr $nasid2 $kh_key_hex" "$N"
- - append "$var" "r1kh=$ap2_macaddr $ap2_r1_key_holder $kh_key_hex" "$N"
- + #config_get nasid2 "$vif" nasid2
- + #config_get ap_macaddr "$vif" ap_macaddr
- + #config_get ap2_macaddr "$vif" ap2_macaddr
- + #config_get ap2_r1_key_holder "$vif" ap2_r1_key_holder
- + config_get r0kh_list "$vif" r0kh
- + config_get r1kh_list "$vif" r1kh
- +
- + for i in $(seq 1 10);do
- + r0_list=`echo $r0kh_list | cut -d ' ' -f $i`
- + r0_list_tmp=${r0_list//,/" "}
- +
- + [ -n "$r0_list_tmp" ] && append "$var" "r0kh=$r0_list_tmp" "$N"
- +
- + r1_list=`echo $r1kh_list | cut -d ' ' -f $i`
- + r1_list_tmp=${r1_list//,/" "}
- +
- + [ -n "$r1_list_tmp" ] && append "$var" "r1kh=$r1_list_tmp" "$N"
- +
- + #append "$var" "r0kh=$ap_macaddr $nasid $kh_key_hex" "$N"
- + #append "$var" "r0kh=$ap2_macaddr $nasid2 $kh_key_hex" "$N"
- + #append "$var" "r1kh=$ap2_macaddr $ap2_r1_key_holder $kh_key_hex" "$N"
- + done
- fi
-
- config_get_bool wnm_sleep_mode "$vif" wnm_sleep_mode
复制代码
最后两个ap的无线名称和密码要一直就可以实现漫游了。
|
|