Marvell w8782 sdio wifi AP模式设置
http://blog.csdn.net/junllee/article/details/8895908
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:$>
http://blog.csdn.net/chinazjn/article/details/9134157
手头产品是类似于IPC的设备,通过wifi传输视频。目标客户可能在户外使用较多,这就要求wifi 应该是Ap模式工作。Marvell sd8782 Src 源码下载
根据习惯,度娘上一顿收缩,参考博文一篇。
测试uaputl 工具报错,所有命令全部不能配置。因为实际使用的marvell驱动是芯片家直接给的,而手头有的源码版本要低些,uaputl工具是低版本源码编译的,可能这里有版本差异在里面了,先放放,后面拿到源码再试这个。
那我用iwpriv 工具来配置网卡了。
一、装一堆驱动模块
#insmod rfkill_backport.ko;
#insmod compat_firmware_class.ko;
#insmod compat.ko;
#insmod cfg80211.ko;
#insmod mlan.ko
#insmod sd8xxx.ko drv_mode=2&
#echo 1 > /sys/class/compat_firmware/mmc1\:0001\:1/loading
#cat "/lib/firmware/sd8782_uapsta.bin" > /sys/class/compat_firmware/mmc1\:0001\:1/data
#echo 0 > /sys/class/compat_firmware/mmc1\:0001\:1/loading
上面三行命令作用是,我们使用的底层驱动有bug,自己找不到sd8782_uapsta.bin文件(无论是直接编译进内核,还是用udev,nxp技术支持大哥这么解释)。手工指定个路径暂时解决下。
二、iwpriv配置
#iwpriv uap0 apcfg "ASCII_CMD=AP_CFG,SSID=TEST_uAP,SEC=open,CHANNEL=8"
#iwpriv uap0 start
#iwpriv uap0 bssstart
这时可以识别到uap0了
/drivers # iwconfig
lo no wireless extensions.
dummy0 no wireless extensions.
uap0 IEEE 802.11-DS ESSID:""
Mode:Master Frequency:2.437 GHz Access Point: Not-Associated
Encryption key:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
三、配置Ip地址
/drivers # ifconfig uap0 192.168.1.2
/drivers # ifconfig
uap0 Link encap:Ethernet HWaddr 48:02:2A:31:37:26
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
四、用手机测试下,能识别到这个无线网络了,但是链接不上,这时udhcp要上场了。
下载交叉编译udhcp,当然busybox里面已经带udhcp的,独立编译或着编译busybox都可以。
本人选择独立编译,省事。
修改makefile: CROSS_COMPILE=arm-linux-
#make
把udhcpd copy到您的文件系统下(PS,我还编译了dhcpd,出来有5M多)。
在samples下拷个udhcpd.conf放到/etc/下。
然后自己对udhcpd.conf修修改改,就可以跑来了。
Marvell w8782 sdio wifi AP模式设置的更多相关文章
- Arduino IDE for ESP8266教程(二) 创建WIFI AP模式
创建WIFI热点 #include <ESP8266WiFi.h> void setup() { Serial.begin ( 115200 ); Serial.println(" ...
- ARM WIFI AP 模式 使用 iptables nat 转发 通过 LAN 网线上网
编译内核,支持 iptables 和 forward 和 nat. 编译内核,使用新内核启动arm 开发板. 编译内核支持 iptables-> Networking support (NET ...
- Android KitKat 4.4 Wifi移植AP模式和网络共享的调试日志
Tethering技术在移动平台上已经运用的越来越广泛了.它能够把移动设备当做一个接入点,其它的设备能够通过Wi-Fi.USB或是Bluetooth等方式连接到此移动设备.在Android中能够将Wi ...
- 树莓派配置AP模式
所需硬件:树莓派.无线网卡 1.查看无线网卡是否被识别 pi@raspberrypi ~ $ sudo lsusb Bus Device : ID : Standard Microsystems Co ...
- ESP8266-Soft AP模式 —— 谁想连上我
AP是Access Point简称,也就是访问接入点,是网络的中心节点.一般家庭的无线路由器就是一个AP,众多站点(STA)加入到它所组成的无线网络,网络中的所有的通信都通过AP来转发完成. 软AP也 ...
- 华硕RT-AC86U路由器 AP模式实现多路由器组网,扩展主路由器的无线网范围
描述: 宽带拨号上网的路由器为 TP-LINK TL-WAR1200L,由于室内空间大,遂在此路由器下接入一个 华硕RT-AC86U路由器: 配置使该 华硕路由器与 TP-LINK 路由器的网段相同 ...
- 关于 RTL8723BS 同时开启 STA/AP 模式
最近接到一个调试 wifi 驱动的任务,使用的是 rtl8723bs 芯片组.要求是让无线设备工作在 station 模式的时候同时开启一个 ap 热点.简单来讲就是连接其他 wifi 的同时发出一个 ...
- orangepi one AP模式配置
前两天买了一块orangepi one开发板,目的是做个局域网共享目录,具体共享协议用samba:这块板子有两个网卡,一个有线一个无线:有线主要用来ssh登陆调试,修改配置. 首先下载armbian的 ...
- MT7601 AP模式移植
MT7601 的 STA 模式和 AP 模式的驱动,是不一样的. 所以,需要另外移植驱动 驱动源码位置 https://github.com/eywalink/mt7601u 下载之后,先修改 Mak ...
随机推荐
- How to insert a segment of noise to music file
如何向音频文件中插入噪声 为了研究噪声和音乐对EEG的的影响,实验前需要准备一段夹杂噪声的音乐. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...
- 「caffe编译bug」 undefined reference to `boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11
CXX/LD -o .build_release/tools/test_net.binCXX/LD -o .build_release/tools/convert_annoset.binCXX/LD ...
- 第一天开始使用Oracle
上半年虽然已经学习了Oracle,但是基本上实验课都没怎么实践过,感觉自己之前过得太水了! 在我的印象里,Oracle 的难度相当于工程师的建设一个亚洲最大的医院一样,也如医生的99%失败率的手术: ...
- linux nginx php-fpm被攻击
1.nginx错误日志:报错 2018/05/30 16:30:55 [error] 8765#0: *1485 connect() to unix:/tmp/php-70-cgi.sock fail ...
- 转:google测试分享-测试经理
原文: http://blog.sina.com.cn/s/blog_6cf812be0102vode.html 前言:这个系列分享的内容大部分都是出自于<google是如何测试的>的书, ...
- /proc文件夹介绍
Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过 ...
- Oracle与MySQL连接配置
MySQL: Driver: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/GBDSPT(数据库名称) Oracle: Driver:o ...
- C# asp.net 实现导出Excel
原文地址:传送门 这段时间用到了导出Excel的功能,这个功能还是比较常用的,我常用的有两个方法,现在整理一下,方便以后查看. 1.实现DataTable数据导出到本地,需要自己传进去导出的路径. / ...
- thinkphp5.0模块设计
5.0版本对模块的功能做了灵活设计,默认采用多模块的架构,并且支持单一模块设计,所有模块的命名空间均以app作为根命名空间(可配置更改). 目录结构 标准的应用和模块目录结构如下: ├─applica ...
- LCA:倍增与tarjan
学了好久(一两个星期)都没彻底搞懂的lca,今天总算理解了.就来和大家分享下我自己的心得 首先,如果你还不懂什么是lca,出门左转自行百度 首先讲倍增 倍增的思想很简单,首先进行预处理,用一个深搜将每 ...