在FLX6410上调试88W8787的AP模式

  180人阅读  评论(0)  收藏  举报

    88W8787是Marvell的新一代SDIO WIFI 蓝牙和FM三合一的芯片,不仅性能出众,功耗控制也做相当不错。除了功能三合一外,芯片最大的特色就是其Simultaneous UAP-STA的工作模式,通俗一点说,就是芯片可以同时作为无线网卡(STATION)和无线接入点(AP)使用。大部分支持AP模式的wifi芯片都只能在STATION和AP中选择一种当前的工作模式,要么做STATION,要么做AP,不能既当STATION又当AP,而8787则可鱼与熊掌同时兼得。

     之前已经在FLX6410的平台上移植过8787的驱动程序了(详见:http://blog.csdn.net/sdecat/article/details/7514576),这次为了方便,依旧在FLX6410的平台上进行调试。调试前,先把平台的软硬件情况大概列一下:

    CPU:S3C6410 OC to 1GHz

    RAM: 512MB mDDR

    硬盘: Seagate 2.5'  80GB IDE Harddisk(工作于UDMA66模式)

    声卡:WM9713

    有线网卡: DM9000 100M FastEthernet

    无线网卡: Marvell 88W8787 SDIO WIFI BLUETOOTH FM 3in1

     

    OS:Debian6.06

    Kernel: 2.6.38.2

    Native GCC: 4.4.5


    与上次不一样的是:上次使用的是3.2.5版本内核的驱动程序,这次为了支持Simultaneous UAP-STA的特性,需要使用最新3.6.6版本内核的驱动。由于内核需要保留2.6.38.2的版本不升级,这次仍然使用大名鼎鼎的compat-wireless。到官网上下载最新3.6.6-1版本的compat-wireless,解压后在工程目录中执行make && make install  然后就是耐心等待编译和安装的完成。一切正常的话,编译出来的驱动会被安装在系统的/lib/modules/2.6.38.2的updates目录当中。驱动安装完毕,插入8787网卡试试:

mmc0: new high speed SDIO card at address 0001
bus: 'mmc': driver_probe_device: matched device mmc0:0001 with driver mmcblk
bus: 'sdio': driver_probe_device: matched device mmc0:0001:1 with driver mwifiex_sdio
mwifiex_sdio mmc0:0001:1: WLAN FW is active
mwifiex_sdio mmc0:0001:1: driver_version = mwifiex 1.0 (14.66.9.p96)

root@ArmCat:~# iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

pan0      no wireless extensions.

mlan0     IEEE 802.11bgn  ESSID:"wireless"  
          Mode:Managed  Frequency:2.462 GHz  Access Point: 39:85:38:DB:CE:66   
          Bit Rate=54 Mb/s   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on
          Link Quality=32/70  Signal level=-78 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

uap0      IEEE 802.11bgn  Mode:Master  
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          
root@ArmCat:~# 

驱动已经跑起来了,生成两个网络设备mlan0和uap0,其中mlan0和上次的一样,而uap0则是驱动新增的专用于AP的网络设备。

    驱动搞定,下一步就是编译建立AP用的hostapd软件了,同样,从官网上下载个最新v2.0-devel版本的hostap源码,解压后进入工程目录的hostapd目录中,把defconfig拷贝一份cp defconfig .config, 编辑.config, 把CONFIG_DRIVER_NL80211=y之前的注释符“#”去掉,保存后退出编辑状态,执行make 编译工程。完成后,当前目录下面就能看到编译出来的 hostapd 程序了。接下来就需要修改hostapd的启动配置文件了,把当前目录中的hostapd.conf拷贝一份cp hostapd.conf myap.conf,编辑myap.conf,为了简单起见,先不使用加密,使能下面这几项:

interface=uap0
driver=nl80211
ssid=ArmCat
hw_mode=g
channel=8
macaddr_acl=0
ignore_broadcast_ssid=0

保存,退出编辑状态,激动人心的时刻到了,执行./hostapd ./myap.conf,此时就可以在手机和电脑的无线网络中搜索出没有加密的ArmCat接入点了,赶紧连上去看看,手机和电脑上一直显示“正在获取IP地址”,过一会又断开重连,始终无法成功接入。看样子是缺少个分配IP的关键服务程序dhcpd了。懒得找源码编译了,把板子连入因特网,用root用户执行apt-get install udhcpd ,不到一分钟udhcpd程序就自动下载和安装好了,这就是Debian系统的方便之处,需要什么软件,联网后用root直接发个apt-get install命令完事了,自动把有依赖关系的软件包一起下载并依次安装,省力又省心,这对早期调试专注主线,排除干扰,避免节外生支起到了非常重要的作用。要知道,Linux的库依赖关系有时候可以非常的错综复杂,譬如为了运行A,需要库B,而库B又依赖于库C,库C依赖于库D...最后晕头转向的把库Z整起来后,突然发现自己都不知道到底要干什么了。还好,这里我还记得现在需要修改刚装好的udhcpd的配置文件/etc/udhcpd.conf。 编辑文件,使能下面这些项:

start           192.168.0.20    #default: 192.168.0.20                          
end             192.168.0.254   #default: 192.168.0.254  
interface       uap0            #default: eth0 

opt     dns     192.168.1.1
option  subnet  255.255.255.0
opt    router  192.168.0.1                                                     
#opt    wins    192.168.0.1                                                     
option  dns     192.168.1.1     # appened to above DNS servers for a total of 3
option  domain  local
option  lease   864000          # 10 days of seconds  
      
这里说明一下,FLX6410板子是通过mlan0接入到一个无线的ADSL modem,自动获取192.168.1.0/24网段的IP地址,然后在uap0上建立一个192.168.0.0/24网段的AP供电脑的无线网卡接入测试,192.168.0.0/24网段的dns全部指向192.168.1.0/24网段的网关,即无线ADSL modem的IP,由其转发处理0网段内的dns请求。

配置文件编辑好后保存退出编辑状态,用root先给uap0配个IP作为0网段的网关:ifconfig uap0 192.168.0.1 netmask 255.255.255.0 up 再执行/etc/init.d/udhcpd restart即可启动dhcpd服务器。现在接入ArmCat的电脑和手机就可以自动获取到0网段的IP地址了。

    为了能使0网段的电脑和手机能通过1网段的无线ADSL接入到internet,还要做一个NAT的转发。用root执行下面两条命令:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o mlan0 -j MASQUERADE

echo "1" > /proc/sys/net/ipv4/ip_forward

    至此,8787的Simultaneous UAP-STA模式就完全跑起了,FLX6410板子也就成了个简单的无线路由器了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值