博通wifi驱动详解(一)
1 WLAN技术
WLAN是英文WirelessLAN的缩写,就是无线局域网的意思。无线以太网技术是一种基于无线传输的局域网技术,与有线网络技术相比,具有灵活、建网迅速、个人化等特点。将这一技术应用于电信网的接入网领域,能够方便、灵活地为用户提供网络接入,适合于用户流动性较大、有数据业务需求的公共场所、高端的企业及家庭用户、需要临时建网的场合以及难以采用有线接入方式的环境等。
2 802.11协议简述
2.1.1 概述
主要内容:
1.802.11工作方式
2.802.11物理层
3.802.11b的增强物理层
4.802.11数字链路层
5.联合结构、蜂窝结构和漫游
3 802.11四种主要物理组件
3.1 工作站(Station)
构建网络的主要目的是为了在工作站间传送数据。所谓工作站,是指配备无线网络接口的计算设备。
3.2 接入点(Access Point)
802.11网络所使用的帧必须经过转换,方能被传递至其他不同类型的网络。具备无线至有线的桥接功能的设备称为接入点,接入点的功能不仅于此,但桥接最为重要。
3.3 无线媒介(Wireless Medium)
802.11标准以无线媒介在工作站之间传递帧。其所定义的物理层不只是一种,802.11最初标准化了两种射频物理层以及一种红外线物理层。
3.4 分布式系统(Distribution System)
当几个接入点串联以覆盖较大区域时,彼此之间必须相互通信以掌握移动式工作站的行踪。分布式系统属于802.11的逻辑组件,负责将帧转送至目的地。
下图为802.11网络的基本服务集(basic service set),其中包含了这四种物理组件。
4 WIFI适配层
一类是命令相关的(控制)函数,就是在JNI层android_XXX_Command()函数所调用 的Wifi_Command()函数,调用流程如下:
android_XXX_command()=>docommand()=>wifi_command()=>wifi_send_command()=>wpa_ctrl_require()。
5 wpa_supplicant
5.1 wpa_ctrl的作用
5.2 WPA_SUPPLICANT
5.2.1 概念
5.2.2 Wpa_supplicant与驱动的交互
5.2.2.1 wpa_supplicant.c
首先定义一个驱动操作数组externstructwpa_driver_ops *wpa_supplicant_drivers[],然后是系列wpa_supplicant_XXX()函数,很多函数里面调用 wpa_drv_XXX()函数,这些函数是wpa_supplicant_i.h中实现的函数。几乎每个函数都需要一个wpa_supplicant结 构,对其进行所有的控制和通信操作。
5.2.2.2 Wpa_supplicant_i.h
其中定义了一个重要数据结构wpa_supplicant,其中有一个重要的driver成 员,它是wpa_driver_ops类型,可以被用来调用抽象层的接口。接下来是系列函数声明,这些函数声明在wpa_supplicant.c中实现,然后就是wpa_drv_XXX函数,这些函数就是在 wpa_supplicant.c中被wpa_supplicant_xxx函数调用的,而这些wpa_drv_xxx函数也都有一个 wpa_supplicant结构的变量指针,用来调用封装的抽象接口,而这些抽象接口的实现在driver_wext.c中(如果使用的汉斯WEXT驱动)。
这里要注意的是:在wpa_suppliant.c文件中定义的很多函数是在该头文件中声明的,而不是在wpa_supplicant.h中声明的。
5.2.2.3 Driver_wext.c
对wpa_drvier_ops的个函数的具体实现,该结构指针在wpa_supplicant注册一个网络接口时会被初始化赋予指定的操作指针,wpa_supplicant.c中的wpa_supplicant_xxx函数通过wpa_supplicant结构中的该操作指针调用WEXT的实现接口。
就是在该文件中,创建了三个socket:ioctrl_socket,event_socket和mlme_socket,它们分别有自己的用途,如ioctrl_socket用于发送控制命令,event_socket用于监听驱动传来的event事件等。Wpa_supplicant通过这三个socket与wifi驱动关联,这里的socket同fd(文件描述符)类似。
6 Wpa_cli调试工具
6.1 启动wpa_supplicant
wpa_supplicant-Dwext -iwlan0 -C/data/system/wpa_supplicant-c/data/misc/wifi/wpa_supplicant.conf
为了确保wpa_supplicant真的启动起来了,使用“ps”命令查看。
6.2 连接wpa_cli到wpa_supplicant
wpa_cli-p/data/system/wpa_supplicant -iwlan0
然后,就可以使用wpa_cli调试工具进行wifi调试了,下面列出了一些常用的调试命令:
>set_network<network id> <variable> <value> //设置网络
>select_network<network id> //选择网络,禁用其它网络
>disable_network<network id> //禁用网络
>enable_network<network id> //启用网络
6.3 示例
6.3.1 无密钥认证AP
>add_network (返回可用networkid, 假定返回0)
如果上面的操作正确,我们会连接到一个AP,它的SSID为“666”,现在需要一个IP来访问internet:
6.3.2 WEP认证AP
>set_network 1 wep_key0 “ap passwork”
>set_network 1 wep_tx_keyidx 0
>select_network 1 (如果你已经连上了其它的AP,那么就需要这个命令来禁用其它的网络)
6.3.3 WPA-PSK/WPA2-PSK认证AP
>set_network 2 psk “your pre-shared key”
还有其它的命令进一步设置网络,不过wpa_supplicant已经给了我们一些默认的配置。
6.3.4 隐藏藏AP
原则上应该只要在上面的基础上去set_network netid scan_ssid 1即可,测试过无加密的Hidden AP,WEP/WPA/WPA2应该道理一样。
博通wifi驱动详解(一)相关推荐
- 博通wifi驱动详解
1 WLAN技术 WLAN是英文WirelessLAN的缩写,就是无线局域网的意思.无线以太网技术是一种基于无线传输的局域网技术,与有线网络技术相比,具有灵活.建网迅速.个人化等特点.将 ...
- 博通wifi驱动详解(三)
1 WLAN驱动结构介绍 1.1 SDIO驱动 在drivers/mmc下面是mmc卡,SD卡和SDIO卡驱动部分,其中包括host驱动,card驱动和core部分,由于网络接 ...
- 博通wifi驱动详解(四)
1 IOCTL的调用逻辑 之所以要分析这个,是因为上层wpa_supplicant和WIFI驱动打交道的方式,多半是通过ioctl的方式进行的,所以看看它的调用逻辑(这里只列出其主要的调 ...
- 博通wifi驱动详解(二)
1 Wifi模块解析和启动流程 1.1 框架分析 WIFI整体框架如图所示: 首先,用户程序使用WifiManager类来管理Wifi模块,它能够获得Wifi模块的状态,配置和 ...
- linux 博通wifi驱动,博通WiFi驱动
补: //调用bcm_wlan_set_power,将ap6335的12脚拉低,让其内部电源稳压器工作.上电完成返回TRUE.上电正常返回值err=0. [cpp] view plain copy 7 ...
- LCD液晶屏驱动详解
开发环境: 开发板:JZ2440V3 CPU:samsunS3C2440 内核:Linux3.4.2 编译工具:arm-linux-gcc 4.3.2 LCD:4.3存液晶屏AT043TN24 参考文 ...
- LCD 液晶屏驱动详解
LCD液晶屏驱动详解 开发环境 开发板:JZ2440V3 CPU:samsunS3C2440 内核:Linux3.4.2 编译工具:arm-linux-gcc 4.3.2 LCD:4.3存液晶屏AT0 ...
- 博通wifi 芯片配置工具wl 详解
wl是博通wifi 芯片配置工具,除可以设置phy芯片的一些硬件参数如信道.频宽.和信道带宽外,还可以查看phy芯片的一些状态和参数.在配置phy芯片一些硬件参数之前要执行wl down 将芯片关闭, ...
- Pixhawk(PX4)之驱动详解篇(0)_前期准备(招贤令)
Pixhawk(PX4)之驱动详解篇(0)_前期准备(招贤令) 原创 2017年03月01日 22:58:39 标签: 开发人员 / UAV / 软件 / 硬件 一.开篇 开源精神常在!!! 谁说软件 ...
最新文章
- linux存储--从内核文件系统看文件读写过程(四)
- 怎么在css中加横线分层,CSS分层
- 不需要SFU实现WebRTC联播实践
- linux C 应用消息队列在两个进程间通信
- Python2.7.16安装(Win10)
- 2020 年,程序员如何拥抱 5G ?
- 面向对象——意图与逻辑
- LIRE的使用:搜索相似的图片
- 山重水复 Thinkpad T61改装记
- node.js读写文件操作
- 几款对于学习前端比较好用的软件或网址
- 天猫精灵家居对接第三方设备(详细版)
- 计算机用三角函数时如何用弧度制,弧度制 三角函数的简单应用
- 量化C++国产框架千星+ WonderTrader
- java基础知识【第12期】-- 集合之Set
- PSP实机用虚拟机wifi网卡联机
- 万字深度好文!VL最强总结!
- 5G大数据时代到来是全面多领域的变革
- 2018年9月网易游戏雷火防护工程师秋招线下笔试
- android 滑动导航栏颜色渐变,Android App页面滑动标题栏颜色渐变
热门文章
- tp6 tinkphp6导出 通用导出 phpoffice/phpspreadsheet
- 【id:417】【15分】D. 【课程设计】Search
- 数据库索引原理,及MySQL索引类型
- 扩展 Jianyi的SmartQuery,正式发布 ListQuery WebPart,已发布到Codeplex.CamlQuery项目中...
- 想要开一家汽车美容养护店服务项目包括什么
- mybatis报错:前言中不允许有内容
- 小马哥 IOC学习笔记
- 进入游戏开发公司后的感想
- SQLite 创建表
- vue中 关于$emit的用法