基于飞凌2440开发板rt3070工作在AP模式

========================================================

作者:guanlei<995318056@qq.com>

内核版本:linux-3.0

交叉编译器:arm-linux  4.5.4

开发平台:fl2440

==========================================================================


       本篇文章介绍的是如何使用rt3070芯片工作在AP模式,在此声明发射的wifi并不能上网,只能连接用作局域网

访问外网请看续篇!

 1:配置内核支持无线网卡softAP模式


在--Networking support 

      <*>RF switch subystem support  ---->   //这个一定要选上不然会出错

错误提示

>:hostapd  hostapd.conf

Configuration file:hostapd.conf

rfkill:Cannot open RFKILL control device

在移植hostapd之前要移植openssl和libnl,只是因为在移植hostapd时候需要openssl和libnl这两个库

1.1移植Openssl-0.9.8e

     下载地址 http://www.openssl.org/source/old/0.9.x/

      解压修改Makefile  (严格按照makefile格式,不要多空格)

29: INSTALLTOP=/home/guanlei/fl2440/3rdparty/rt3070/openssl-0.9.8e/install



#mkdir install

#sudo make &&make install     (如果出错了检查你的makefile是不是哪里改的不对,有没有按照makefile的格式来,或者没有多加的空格!!!!这个错误要命的)


1.2移植 libnl-1.1.4

下载地址http://www.infradead.org/~tgr/libnl/   

解压开始安装

./configure --prefix=/home/guanlei/fl2440/3rdparty/rt3070/libnl-1.1.4/install(指定安装路径) --host=arm-linux 

#make CC= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc

# sudo make install 

在你的安装目录里边找到libnl.so.1下载到你的开发板上

1.3 移植Hostapd-1.0.tar.gz

  下载地址http://download.chinaunix.net/download.php?id=40061&ResourceID=4450 

   解压修改Makefile 和.config

  # cp defconfig .config

  #vi  .config

   23:CONFIG_DRICER-NL80211=Y 

  #vi Makefile     (这里就用到了openssl和libnl的头文件和库了 一定要保证之前都没出错!)

 12 CFLAGS +=-I/home/guanlei/fl2440/3rdparty/rt3070/libnl-1.1.4/install/include/
 13 CFLAGS +=-I/home/guanlei/fl2440/3rdparty/rt3070/openssl-0.9.8e/install/include/
 14 LIBS +=-L/home/guanlei/fl2440/3rdparty/rt3070/libnl-1.1.4/install/lib/
 15 LDFLAGS +=-L/home/guanlei/fl2440/3rdparty/rt3070/libnl-1.1.4/install/lib/
 16 LIBS +=-L/home/guanlei/fl2440/3rdparty/rt3070/openssl-0.9.8e/install/lib/
 17 LDFLAGS +=-L/home/guanlei/fl2440/3rdparty/rt3070/openssl-0.9.8e/install/lib/

  #make CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-inux-gcc

  #sudo make  install

  这时就生成了hostapd和配置文件hostapd.conf (这个文件可以看就一下) 

  在配置hostapd.conf时参考了网上的很多资料,参考如下:

              http://www.linuxidc.com/Linux/2012-12/75869.htm

              http://blog.sina.com.cn/s/blog_8f5893e501016kd8.html

  在面是我的配置

interface=wlan0   
driver=nl80211
ssid=guanlei
channel=3
hw_mode=g
ignore_broadcast_ssid=0
auth_algs=1
wpa=3
wpa_passphrase=12345678   
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

上面列出的配置基本上是必须的,其中:

  • ssid:别人所看到的我们这个无线接入点的名称;
  • hw_mode:指定802.11协议,包括 a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g;
  • ===================================================================

    无线局域网标准 IEEE 802.11协议

    *IEEE 802.11, 1997年,原始标准(2Mbit/s,工作在2.4GHz)。

    *IEEE 802.11a1999年,物理层补充(54Mbit/s,工作在5GHz)。

    *IEEE 802.11b1999年,物理层补充(11Mbit/s工作在2.4GHz)。

    *IEEE 802.11g2003年,物理层补充(54Mbit/s,工作在2.4GHz)。

    使用最多的应该是802.11n标准,工作在2.4GHz频段,可达600Mbps(理论值)

    ===================================================================


  • channel:设定无线频道;
  • interface:接入点设备名称,注意不要包含ap后缀,即如果该设备称为wlan0ap,填写wlan0即可;
  • bridge:指定所处网桥,对于一个同时接入公网、提供内部网和无线接入的路由器来说,设定网桥很有必要;
  • driver:设定无线驱动,我这里是nl80211;
  • macaddr_acl:可选,指定MAC地址过滤规则,0表示除非在禁止列表否则允许,1表示除非在允许列表否则禁止,2表示使用外部RADIUS服务器;
  • accept_mac_file:指定允许MAC列表文件所在;
  • deny_mac_file:指定禁止MAC列表文件所在;
auth_algs=1

其中auth_algs指定采用哪种认证算法,采用位域(bit fields)方式来制定,其中第一位表示开放系统认证(Open System Authentication, OSA),第二位表示共享密钥认证(Shared Key Authentication, SKA)。我这里设置alth_algs的值为1,表示只采用OSA;

  wpa=2
  wpa_passphrase
=12345678
  wpa_key_mgmt
=WPA-PSK
  #wpa_pairwise
=TKIP CCMP
  rsn_pairwise
=TKIP CCMP

现在推荐的加密方式是WPA/WPA2,由于时间紧迫,我没有怎么去了解过这两者的差别。不过配置是很简单的:

  • wpa:指定WPA类型,这是一个位域值(bit fields),第一位表示启用WPA,第二位表示启用WPA2。在我的配置中,无论设置成1、2或3,都可以正常连接;
  • wpa_passphrase:WPA/WPA2加密需要指定密钥,这个选项就是配置WPA/WPA2的密钥。注意wpa_passphrase要求8~63个字符。另外还可以通过配置wpa_psk来制定密钥,不过要设置一个256位的16进制密钥,不适合我们的需求;
  • wpa_pairwise/rsn_pairwise:如果启用了WPA,需要指定wpa_pairwise;如果启用了WPA2,需要指定 rsn_pairwise,或者采用wpa_pairwise的设定。都可以设定成TKIP、CCMP或者两者都有,具体含义我也没仔细弄清楚。一篇比较 老的文章说TKIP不兼容Windows Mobile。

在板子上直接执行hostapd -B hostapd.conf 即可

如果编译过程出现缺少库的错误,请自行检查你hostapd所依赖的libnl库和openssl库是否成功交叉编译。

若出现读取random随机数错误,可采用符号链接的方法解决:
# mv /dev/random /dev/random.org
# ln -s /dev/urandom /dev/random 

=========================================================================================

Linux中的随机数可以从两个特殊的文件中产生,一个是/dev/urandom.另外一个是/dev/random。上述两种方式都可以产生随机数,dev/urandom  dev/random都是产生用不为空的随机字符流,但区别是:/dev/random设备会封锁,直到系统产生的随机字符流已经充分够用,所以耗用时间较长。/dev/urandom设备不会封锁,数据的随机程度不高,但是一般情况已经够用。

========================================================================================

更详细的文章链接: http://www.linuxidc.com/Linux/2012-05/60476.htm
 1.4.配置udhcpd
修改/opt/busybox-1.20.2/examples/udhcp/udhcpd.conf然后拷贝到开发板/etc目录下
修改是参考了这几个文档:
http://jingyan.baidu.com/article/4853e1e573c4661908f7264f.html
下面是我的修改


1,修改IP池

起始IP的后两位可以随意,但必须在一个网段

192.168.x.y

192.168.x.z

2 修改执行dhcp功能的接口

可以用过ifconfig -a或者iwconfig命令来查看接口

3,修改DNS、网关、netmask等

opt     dns  8.8.8.8 # DNS地址

option  subnet  255.255.255.0 #子网掩码

opt router 192.168.2.1 #网关

其他默认即可



1.5 自动分配ip链接wifi

>: ifconfig wlan0 192.168.2.1 netmask 255.255.255.0   (先把要接入点设备设置好)

>: udhcpd  -f /etc/udhcpd.conf  

    (注意!!!)这里执行的时候可能会出错!!!

    >: udhcpd -f /etc/udhcpd.conf 
       udhcpd (v1.20.2) started
       udhcpd: can't open '/var/lib/misc/udhcpd.leases': No such file or directory

解决办法:

可能会提示没有一个叫做udhcpd.release的租赁文件,这个只要在相应的文件夹下创建即可。执行下面两条命令:

#mkdir -p /var/lib/misc/
#touch /var/lib/misc/udhcpd.leases

再次执行!

>:udhcpd  -f /etc/udhcpd.conf 
udhcpd (v1.20.2) started
Sending OFFER of 192.168.2.20
Sending ACK to 192.168.2.20
Sending ACK to 192.168.2.20
Sending ACK to 192.168.2.20

现在打开手机的wifi看一下能不能连上wifi


连接成功!!!但是还不能上网!!!如果想通过wifi上网见续篇!!!





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值