Marvell w8782 sdio wifi AP模式设置

       w8782工作在station模式一切正常,于是想试试AP模式(master mode):

 Arm-linux:$> iwconfig mlan0 mode master
Error for wireless request "Set Mode" (8B06) :
    SET failed on device mlan0 ; Invalid argument.

Arm-linux:$> iwconfig mlan0 mode ad-hoc

Arm-linux:$>

     设置master模式失败,而设置ad-hoc模式是正常的, 没有出错。

     检查移植过来的w8782的驱动,在moal_wext.c 和 moal_uap_wext.c中都有一个名为woal_set_bss_mode()的函数用于设置工作模式。

跟踪了一下,发现使用iwconfig mlan0 mode master 或 iwconfig mlan0 mode managed 时,都调用到moal_wext.c中的woal_set_bss_mode()函数,

而这个函数中,如下所示,竟然没有对maser 模式 IW_MODE_MASTER的处理,看来8782的ap模式不能用iwconfig来进行配置?!!

 394     switch (*uwrq) {
 395     case IW_MODE_INFRA:
 396         bss->param.bss_mode = MLAN_BSS_MODE_INFRA;
 397         break;
 398     case IW_MODE_ADHOC:
 399         bss->param.bss_mode = MLAN_BSS_MODE_IBSS;
 400         break;
 401     case IW_MODE_AUTO:
 402         bss->param.bss_mode = MLAN_BSS_MODE_AUTO;
 403         break;
 404     default:
 405         ret = -EINVAL;
 406         break;
 407     }

 

    仔细检查w8782驱动原码中附带的文件,发现一个README_UAP文件,仔细研读一下,原来是需要使用另外一个称为uaputl的工作进行AP模式的配置。

uaputl在驱动原码中的mapp/uaputl 下面。 交叉编译后生成uaputl,拷贝到开发板中:

 

    终端运行 uaputl bss_start后,用手机搜索wifi,新发现了一个名为 "Marvell Micro AP"无线网线,无加密。连上后查看一下IP地址,是169.254.201.15

 

    使用WPA2加密:

       uaputl bss_stop                                              //if started, stop it first
       uaputl sys_cfg_protocol 32                             //choose WPA2 protocol
       uaputl sys_cfg_wpa_passphrase 1234567890   //set encryption keys
       uaputl sys_cfg_cipher 8 8
       uaputl bss_start 

    再用手机搜索wifi,又新出现一个名为 "Marvell Micro AP"的WPA2加密的无线网线,输入密钥:1234567890,OK,连接成功。

 

   前面提到,连上后IP地址是169.254.201.15, 这是因为板子上Linux没有启动DHCP服务的原因,client使用伪随机算法,使得

   地址取得分布在169.254.1.0和169.254.254.255之间。下面启动dhcpd(busybox中带有udhcpd,可直接用):

   创建udhcpd.conf文件,放在/etc/目录,内容如下所示:

start 192.168.0.20

end 192.168.0.254

interface uap0

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

 

  配置AP的IP地址:ifconfig uap0 192.168.0.1 netmask 255.255.255.0 up

  启动dhcpd : udhcpd /etc/udhcpd.conf

  重新启动AP: uaputl bss_stop

                           uaputl bss_start

 

    用手机重新搜索 "Marvell Micro AP"并连接后,查看其IP地址为: 192.168.0.21 , 在板子上ping 192.168.0.21, OK.

Arm-linux:$>ping 192.168.0.21
PING 192.168.0.21 (192.168.0.21): 56 data bytes
64 bytes from 192.168.0.21: seq=0 ttl=128 time=13.971 ms
64 bytes from 192.168.0.21: seq=1 ttl=128 time=2.805 ms
64 bytes from 192.168.0.21: seq=2 ttl=128 time=2.680 ms
64 bytes from 192.168.0.21: seq=3 ttl=128 time=2.958 ms
64 bytes from 192.168.0.21: seq=4 ttl=128 time=2.839 ms
64 bytes from 192.168.0.21: seq=5 ttl=128 time=2.839 ms
^C
--- 192.168.0.21 ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 2.680/4.682/13.971 ms
Arm-linux:$>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值