版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/huangweiqing80/article/details/82500213

Porting Android WiFi主要分两步进行,首先在kernel 把wifi网卡跑通,能够ping通外网,这样就确保了首先wifi driver应该是没有问题的。然后在将wifi Porting到Android。

这里以BCM43569 USB wifi Porting到IMX 6Q Android6.0平台为例进行讲解Linux WiFi Porting。
wifi 驱动一般原厂会给到我们,但是我们需要针对不同的kernel版本修改适配驱动代码,使驱动能在平台kernel中编译通过,一般Broadcom 的wifi驱动编译出来会有三个文件:bcmdl、wl、wlan.ko.其中bcmdl工具是用来加载固件的,wl是wifi tool。wlan.ko就是驱动文件了。
模块是USB接口的,当我们把模块插入平台之后我们可以通过lsusb查看到我们的模块是否有接入到平台,如果我们连lsusb查看USB设备的时候都看不到我们的模块设备VID 和 PID,那么就说明我们的模块硬件有问题USB无法识别,可以插拔几次确。以本公司的模块为例:

#lsusb
Bus 001 Device 006: ID 0a5c:bd27

1. 加载固件

#./bcmdl -n bcm43242_nv_fw/bcm43242.nvm firmware/43242a1-roml/usb*.bin.trx

如果固件加载成功,模块 PID会改变,否则则说明我们的固件没有加载成功,或者固件不对

#lsusb
Bus 001 Device 007: ID 0a5c:0bdc

一般wifi固件会去K tx power值和频偏等值,修改固件的值可以通过Linux 下vim工具去修改
https://blog.csdn.net/lucky_liuxiang/article/details/68063241

2 insmod driver
由于一般的wifi网卡都需要依赖nl80211协议的,所以我们还应该去报kernel中打开了cfg80211驱动,并且在平台已经加载了cfg80211.ko,然后我们将驱动push到平台,insmod wlan.ko

驱动加载成功我们可以通过
ifconfig -a查看到wifi网卡

ifconfig wlan0 up 将网卡up

3 在kernel中连接AP
只有当网卡UP起来之后,我们才能连接AP。连接AP的wifi tool有很多,一般模块驱动中会自带有wifi tool,如Broadcom 的wl 工具,MTK的iwprive工具,这些模块厂商自带的tool一般都需要依赖于厂商驱动
3.1下面以wl 工具连接AP为例:
wl工具:wl –help

#wl up
#wl auth 2
#wl infra 1
#wl wsec 6
#wl wpa_auth 128
#wl sup_wpa 1
#wl set_pmk "iton1234"
#wl ssid "TP-LINK_792F"
#wl status

3.2通用WiFi tool

3.2.1通用的WiFi tool有wpa_supplicant

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

在/data/misc/wifi/创建wpa_supplicant.conf配置文件:
ctrl_interface=/data/misc/wifi/tiwlan0
update_config=1
network={ssid="TP-LINK_792F"psk="iton1234"key_mgmt=WPA-PSKpriority=1
}

#wpa_supplicant -Dnl80211 -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf &
#ps |grep wpa
#wpa_cli -iwlan0 -p/data/misc/wifi/tiwlan0
>scan
>scan_result
>add_network
>set_network 1 ssid "TP-LINK_792F"
>set_network 1 psk "iton1234"
>enable_network 1

3.2.2使用:iw

#iw list  // 列出WIFI网卡的性能
#ifconfig wlan0 up
#iw dev wlan0 scan   // 扫描WIFI AP
#iw wlan0 connect dswei  // 连接到WIFI AP:dswei (open)
#iw wlan0 connect dswei keys d:0:baiwenwang123 // 连接到WIFI AP:dswei (WEP)d: default, 0: 第0个密码
#ifconfig wlan0 192.168.1.55
#ping 192.168.1.1
#iw wlan0 disconnect

3.4 分配IP

连接上AP之后需要给网卡分配IP才能ping AP网关

3.4.1手动分配IP
busybox ifconfig wlan0 192.168.250.166 netmask 255.255.255.0

3.4.2自动分配IP

自动分配IP的工具有udhcpc和dhcpd
udhcpc是集成在busybox里面的,所以在编译busybox制作文件系统的时候加入dhcp的选项就可以了。
如果没有udhcpc的执行文件,可以手动连接一个:ln -s /bin/busybox /sbin/udhcpc
直接使用udhcpc只能分配ip地址,但是没有写入到设备中,即这个ip地址并没有生效。因为udhcpc需要一个默认的配置文件default.script,查看这个配置文件,它实际的作用就是将分配到的ip地址通过ifconfig命令写入设备中。
用udhcpc自动获取IP
udhcpc -i eth1 -p /var/run/udhcpc.pid -S -s /etc/udhcpc.sh
用dhcpcd自动获取IP
dhcpcd -f /system/etc/dhcpcd/dhcpcd.conf -d wlan0
ping 192.168.250.1

3.4.3 DNS域名解析
现在我们还只能ping通IP,当然如果路由器连接了外网,我们使能ping 通外网IP的,但是如果想要ping www.baidu.com
我们还需要dns lib和conf文件才能进行域名解析DNS问题以后有空另写一篇博客详解
这样我们在底层就已经将wifi调通了,当然如果

Linux WiFi Porting相关推荐

  1. cups源码下载 linux_正点原子Linux第七十章Linux WIFI驱动实验

    1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 第七十章Linux WIFI驱动实验 WIFI的使用已经 ...

  2. Linux SDIO WIFI Marvell8801/Marvell88w8801(六) --- Marvell Linux Wi-Fi driver介绍-WIFI插入卡槽内发生的事情

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  3. Linux SDIO WIFI Marvell8801/Marvell88w8801(八) --- Marvell Linux Wi-Fi driver 对接芯片上行下行接口介绍

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  4. Linux Wifi共享上网脚本,类似win 7的Connectify工具

    翊轩LeOn 黑夜给了我黑色的眼睛,而我却用它来寻找光明. 目录视图 摘要视图 订阅 CSDN学院讲师招募,诚邀您加入!    博客Markdown编辑器上线啦    PMBOK第五版精讲视频教程   ...

  5. 嵌入式Linux——WIFI网卡

    CSDN仅用于增加百度收录权重,排版未优化,日常不维护.请访问:www.hceng.cn 查看.评论. 本博文对应地址: https://hceng.cn/2018/06/21/嵌入式Linux--W ...

  6. Linux SDIO WIFI Marvell8801/Marvell88w8801(四) --- Linux Wi-Fi架构

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  7. 【正点原子Linux连载】第七十章 Linux WIFI驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  8. linux wifi模组网络延迟问题

    1.linux wifi模组:WiFi设置为sta模式后,连接上路由器,Ping路由器的时候发现数据传输的延时不稳定 解决的方法: <1>.修改驱动关闭power save低功耗Makef ...

  9. 共享wifi 软件 linux,Linux Wifi共享上网脚本,类似WIN 7的Connectify工具

    最近在Ubuntu找了很久,也找不到一个可以将无线网卡作AP的软件,试了网上很多方法都不行,有些是可以搜到热点,但我的Android手机连上去的时候获取不了ip地址.研究了几天,昨晚花了一晚时候,去写 ...

最新文章

  1. AI一分钟 | 比特大陆递交招股书,募资用于AI芯片研发;泰晤士2019全球大学排行榜:清华列亚洲第一...
  2. Linux服务器网页显示乱码
  3. linux kref详解
  4. POJ3041Asteroids(二分图最少顶点覆盖)
  5. cocoapos错误信息
  6. ElasticSearch探索之路(三)分布式原理:分布式路由、存储、搜索原理
  7. vs工程 更换opencv版本_Windows下opencv源代码转化和编译
  8. ASP.NET CORE 使用Consul实现服务治理与健康检查(2)——源码篇
  9. Android基础知识点的整理3
  10. Linux Bash严重漏洞修复紧急通告
  11. 路由器总是有信号无网络连接到服务器,路由器信号满格但是没有网络怎么办
  12. Python 快速入门实战教程
  13. LAMP兄弟连 视频教程集
  14. 【力扣面试】面试题 04.02. 最小高度树(就是创建二叉平衡树)
  15. pycharm双击打不开,无响应,下列第二种方法我亲测有效
  16. KDD 2021 | 基于多智能体协同竞价博弈的电商搜索广告多目标竞价优化
  17. 如何高效地从BAM文件中提取fastq
  18. Vue.js 使用cordova camera插件调取相机
  19. 转载:BP(反向传播算法)公式推导及例题解析
  20. IPv6 地址数量有多少,能够分配到地球上的每一粒尘埃吗

热门文章

  1. python微信点赞脚本_Python爬取微信公众号评论、点赞等相关信息
  2. chrome浏览器开发者工具network面板过滤、隐藏指定的请求
  3. 谷歌浏览器查看请求头
  4. 变频器与PLC通讯的精简设计
  5. 数字摘要和数字签名等概念
  6. 在线运行python 怎么安全_Python安全开发与测试 - 安全牛课堂 - 领先的信息安全在线教育平台...
  7. 51nod1266 蚂蚁
  8. ubuntu16.04安装 petalinux记录
  9. net change
  10. 一篇震惊西方世界的中国人的论文!