AP(Access Point)即无线接入点。我使用的是rt5370网卡(海思平台,工具链为:arm-hismall-linux-gcc),rt5370有三种模式:AP模式、STA模式以及STA-AP模式。
AP:即释放wifi热点供外部网卡(STA)连入。
STA:为普通网卡模式可连接外部路由器(AP)。
STA-AP:即可连接外部无线网络并将网络通过AP热点释放出去,供外部网卡(STA)连接。
而我只想用AP模式,所以,实现起来比较的简单,也不需要移植brctl指令,没有涉及网桥相关的东东。
实现步骤大致如下:
1)生成驱动
tar xjf 2011_0517_RT5370_RT5370_RT5390U_Linux_AP_V2.6.0.0_DPA.tar.bz2
修改MODULE目录下的Makefile,主要是工具链和内核源码,其他2个目录自动更新。
修改MODULE/include/iface/rtmp_usb.h里面BULKAGGRE_SIZE 12该为6/8。
Make
2)编辑RT2870AP.dat,主要修改下面几项:
SSID=huang //路由器ssid
AuthMode=WPA2PSK //加密模式
EncrypType=AES //加密类型
WPAPSK=12345678 //密码
接着拷贝到/etc/Wireless/RT2870AP/目录下。
cp RT2870AP.dat /etc/Wireless/RT2870AP/
3)依次加载驱动:
insmodUTIL/os/linux/rtutil5370ap.ko
insmod MODULE/os/linux/rt5370ap.ko
insmod NETIF/os/linux/rtnet5370ap.ko
4)启动网卡ra0
ifconfig ra0 up
就此,在手机或pc上就可以收到ssid为huang的热点了。
如果想使用网桥,则需要如下操作:
#ifconfig ra0 up
#ifconfig apcli0 up //(STA-AP模式)
#brctl addbr br0 //建立一个逻辑网段,名称为br0
#brctl addif br0 eth0 //让eth0成为br0的一个端口
#brctl addif br0 ra0 //让ra0成为br0的一个端口
#brctl addif br0 apcli0 //让apcli0成为br0的一个端口(STA-AP)
#ifconfig eth0 0.0.0.0
#ifconfig ra0 0.0.0.0
#ifconfig apcli0 0.0.0.0
#ip link set br0 up
5)DHCP服务器
mkdir -p /var/lib/misc/udhcpd.leases
ifconfig ra0 192.168.2.1
udhcpd /etc/udhcpd.conf & //udhcpd.conf配置中可以设置起始-结束ip地址以及网关等。
至此,AP模式已完成,每连接一个终端(手机/平板/pc等),都讲各自分配一个ip地址。他们都可以ping通huang这个AP热点,接下来,我们就可以通过socket编程了。
由于rt5370不支持AP与STA同在(也有支持2种模式的网卡),所以,当AP模式与STA模式切换时,需要依次卸载网卡驱动,然后启动相应的模式的驱动,就可以很方便的切换了。
6)驱动下载
鉴于比较多人私信我传驱动,所以,我已放到我资源里面,下载地址为:http://download.csdn.net/detail/huangminqiang201209/7113585