Cross compiler:arm-linux-gcc-4.5.4
Linux kernel version:linux-3.0
Development board:fl2440
Author: Yuzhonghan <754270866@qq.com>
-----------------------------------------------------------------------
这篇博文是介绍fl2440开发板rt3070芯片工作在AP模式
1. 配置内核的支持
[*] Networking support --->
Networking options --->
<*> Packet socket
<*> Unix domain sockets
< > PF_KEY sockets
[*] TCP/IP networking
[*] IP: multicasting
[ ] IP: advanced router
[*] IP: kernel level autoconfiguration
[*] IP: DHCP support
[*] IP: BOOTP support
[*] IP: RARP support
[*] IP: multicast routing
<*>RF switch subystem support ---->
[*] Network packet filtering framework (Netfilter) --->
--- Network packet filtering framework (Netfilter)
[ ] Network packet filtering debugging
[*] Advanced netfilter configuration
Core Netfilter Configuration --->下面的不选
< > Transparent proxying support (EXPERIMENTAL)
< > set target and match support
< > CHECKSUM target support
< > "CLASSIFY" target support
< > "CT" target support
< > "DSCP" and "TOS" target support
< > "NOTRACK" target support
< > "TRACE" target support
<*> IP set support ---> <*>
--- IP set support
(256) Maximum number of IP sets
<*> bitmap:ip set support
<*> bitmap:ip,mac set support
<*> bitmap:port set support
<*> list:set set support
IP virtual server support --->以下不选择
--- IP virtual server support
[ ] IP virtual server debugging
[ ] SCTP load balancing support
< > FTP protocol helper
< > SIP persistence engine
IP: Netfilter Configuration --->全选
2.移植Openssl-0.9.8e
下载地址 http://www.openssl.org/source/old/0.9.x/
解压并修改Makefile(一定要严格按照makefile的格式)
29 INSTALLTOP=/home/Ciel/fl2440/3rdparty/rt3070/openssl/openssl-0.9.8e/install
62 CC= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc
63 CFLAG= -O
64 DEPFLAG= -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_GMP -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779
65 PEX_LIBS=
66 EX_LIBS=
67 EXE_EXT=
68 ARFLAGS=
69 AR=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ar $(ARFLAGS) r
70 RANLIB= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ranlib
接着 mkdir install
make
make install
如果是权限不够就使用sudo命令
3.移植libnl-1.1.4
下载地址http://www.infradead.org/~tgr/libnl/
解压安装
./configure --prefix=/home/Ciel/fl2440/3rdparty/rt3070/libnl-1.1.4/install --host=arm-linux
make CC= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc
make install
这里得到文件 libnl.so.1 ,需要将这个文件tftp到开发板上,放到 /lib 目录下
4.0 移植Hostapd-1.0.tar.gz
下载地址:http://download.chinaunix.net/download.php?id=40061&ResourceID=4450
解压并修改Makefile 和.config
Makefile的修改:
12 CFLAGS += -I/home/Ciel/fl2440/3rdparty/rt3070/libnl-1.1.4/install/include
13 CFLAGS += -I/home/Ciel/fl2440/3rdparty/rt3070/openssl/openssl-0.9.8e/install/include/
14 LIBS +=-L/home/Ciel/fl2440/3rdparty/rt3070/libnl-1.1.4/install/lib/
15 LDFLAGS +=-L/home/Ciel/fl2440/3rdparty/rt3070/libnl-1.1.4/install/lib/
16 LIBS +=-L/home/Ciel/fl2440/3rdparty/rt3070/openssl/openssl-0.9.8e/install/lib/
17 LDFLAGS +=-L/home/Ciel/fl2440/3rdparty/rt3070/openssl/openssl-0.9.8e/install/lib/
.config 修改:
22 # Driver interface for drivers using the nl80211 kernel interface
23 CONFIG_DRIVER_NL80211=y
make CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-inux-gcc
make install
PS: 如果不能成功的 make ,就要仔细的查看你前面移植的libnl-1.1.4 和Openssl-0.9.8e 是否错误,或者是Makefile编译的路径不对。
得到了hostapd和配置文件hostapd.conf,需要tftp到你的开发板上。 hostapd 需要到 /bin 目录下
修改 hostapd.conf:
interface=wlan0
driver=nl80211
ssid=yuzhonghan
channel=3
hw_mode=g
ignore_broadcast_ssid=0
auth_algs=1
wpa=3
wpa_passphrase=123456789
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
PS:这是本人的配置,如需要进行相关了解配置方面的信息
请参考如下网址信息:
http://www.linuxidc.com/Linux/2012-12/75869.htm
http://blog.sina.com.cn/s/blog_8f5893e501016kd8.html
5.在板子上执行hostapd -B hostapd.conf
>: hostapd -B hostapd.conf
Configuration file: hostapd.conf
phy0 -> rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin'.
phy0 -> rt2x00lib_request_firmware: Info - Firmware detected - version: 0.36.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 0 - CWmin: 3, CWmax: 4, Aifs: 2, TXop: 102.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 4, CWmax: 5, Aifs: 2, TXop: 188.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 5, CWmax: 10, Aifs: 3, TXop: 0.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 5, CWmax: 10, Aifs: 7, TXop: 0.
Using interface wlan0 with hwaddr 00:24:25:50:a9:4d and ssid 'yuzhonghan'
random: Cannot read from /dev/random: Resource temporarily unavailable
random: Only 0/20 bytes of strong random data available from /dev/random
random: Not enough entropy pool available for secure operations
WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 0 - CWmin: 2, CWmax: 3, Aifs: 1, TXop: 47.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 3, CWmax: 4, Aifs: 1, TXop: 94.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 4, CWmax: 6, Aifs: 3, TXop: 0.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 4, CWmax: 10, Aifs: 7, TXop: 0.
PS:若出现读取random随机数错误,可采用符号链接的方法解决:
mv /dev/random /dev/random.org
ln -s /dev/urandom /dev/random
6.修改 /opt/busybox-1.20.2/examples/udhcp/udhcpd.conf 然后拷贝到开发板/etc目录下
更改配置如下:
# The start and end of the IP lease block
start 192.168.3.20
end 192.168.3.254
# The interface that udhcpd will use
interface wlan0
# Examples:
opt dns 8.8.8.8
option subnet 255.255.255.0
opt router 192.168.3.1
>: ifconfig wlan0 192.168.3.1 netmask 255.255.255.0 //设置你的IP地址和子网掩码
>: udhcpd -f etc/udhcpd.conf
udhcpd (v1.20.2) started
Sending OFFER of 192.168.3.20 //这时候就是已经连上你开发板的wifi
Sending ACK to 192.168.3.20 //此时还不能上网!!!
可以试着 ping 192.168.3.20 看看是否能连接。
7.移植 iptables (关于iptables的相关知识,有兴趣可以去了解,在此不做说明 )
下载地址:http://www.netfilter.org/projects/iptables/downloads.html
建议选用 iptables-1.4.12.tar.bz2 ,解压
mkdir install
./configure --host=arm-linux --enable-static --disable-shared --prefix=/home/Ciel/fl2440/3rdparty/rt3070//iptables-1.4.12/install --disable-ipv6 --disable-largefile
make CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc CFALGS=--static LDFLAGS=-static
make install
cd /install/sbin
sudo /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-strip xtables-multi
将/install/lib文件夹和xtables-multi打包放到开发板/lib和/bin目录下,赋予可执行权限后将xtables-multi改名为iptables
8.使用iptables命令接着配置nat转发表
/*将局域网内地址通过eth0接口伪装后转发出去*/
>:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/*开启转发功能,允许已建立连接及相关连接对内转发*/
>: iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISH -j ACCEPT
/*对外转发,数据包从wlan0流向eth0*/
>: iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
>:echo "1" >/proc/sys/net/ipv4/ip_forward
首先把你的网线连接开发板和路由器,设置ifconfig eth0 和 netmask ,使用hostapd -B hostapd.conf开通手机连接开发板的wifi,设置ifconfig wlan0 和 netmask,接着ping 路由器 和 ping 外网看是否能ping通,一定要完成 路由器和外网的 连接,不然手机连上开发板的wifi 是不能上外网的,
接着使用步骤8 的命令,最后使用 udhapd -f etc/udhapd.conf 连接。