Android4.0 SOFTAP & STATION共存实现说明2

free-jdx 2021-04-10 14:21:38 5123
1.前言

承接上一篇,这里主要说明相关修改

https://www.ebaina.com/articles/140000012358

2. 驱动及工具说明

station和softap共存功能是在驱动的debug模式开启的前提下实现的,因为需要在Makefile文件中把debug模式的宏DHD_DEBUG添加上,若不把该宏添加上,当使用dhd_helper命令开启station、softap共存功能时会提示dhd_helper命令无效。
(估计目前实现的station、softap共存功能的方式是broadcom在调试过程早就实现的,只是出于性能和市场没这个需求而没公布)

wl工具在目前调试过程会用来连接AP和查看连接状态,也会被dhd_helper隐式调用到(只知道dhd_helper会调用到wl,因为若无wl工具,使用dhd_helper会提示wl不存在,具体调用wl实现什么功能就不清楚,因为看不到dhd_helper的实现代码)

dhd_helper工具最显著的作用就是在开启了station功能的前提下,把softap功能也开启起来。
通过dhd_helper可对softap作初始化,包括设备信道、AP名、加密方式等,下面例举dhd_helper的7种设备方式。

Initial AP mode with SSID: tttb_apsta
EX1: 802.11 B only, Channel 3, Open system, No encryption, without hidden SSID
dhd_helper ssid tttb_apsta hidden n bgnmode b chan 3 amode open emode none

EX2: 802.11 G only, Channel 3, Open system, WEP ASCII 5 encryption and key is 12345 with hidden SSID
dhd_helper ssid tttb_apsta hidden y bgnmode g chan 3 amode open emode wep key 12345

EX3: 802.11 B/G mixed, Channel 3, Open system, WEP HEX 10 encryption and key is 1234567890 without hidden SSID
dhd_helper ssid tttb_apsta bgnmode bg chan 3 amode open emode wep key 1234567890

EX4: 802.11 G only, Channel 3, Shared key authentication, WEP ASCII 13 encryption and key is 1234512345123 without hidden SSID
dhd_helper ssid tttb_apsta bgnmode g chan 3 amode shared emode wep key 1234567890123

EX5: 802.11 B/G mixed, Channel 3, Shared key authentication, WEP HEX 26 encryption and key is 12345678901234567890123456 without hidden SSID
dhd_helper ssid tttb_apsta bgnmode bg chan 3 amode shared emode wep key 12345678901234567890123456

EX6: 802.11 B/G mixed, Channel 3, WPA-PSK authentication, TKIP encryption and key is 12345678 without hidden SSID
dhd_helper ssid tttb_apsta bgnmode bg chan 3 amode wpapsk emode tkip key 12345678

EX7: 802.11 B/G/n mixed, Channel 3, WPA/WPA2-PSK authentication, TKIP/AES encryption and key is 12345678 without hidden SSID
dhd_helper ssid tttb_apsta bgnmode bgn chan 3 amode wpawpa2psk emode tkipaes key 12345678
3.前提修改

内核部分,需要把bcm40181的驱动编译成ko形式,具体修改如下:

/lichee/linux-3.0目录下,输入make ARCH=arm menuconfig,然后做如下选择
Device Drivers  --->
[*] Network device support  --->
[*]   Wireless LAN  --->
<M>   Broadcom 40181/40183 wireless cards support

android部分,做了3处修改,下面只做简要说明,详细的修改可参考“bcm40181-Station&Softap共存-修改patch”中的文件。

第一:device/softwinner/crane-xxx/overlay/frameworks/base/core/res/res/values/config.xml
修改了softap的接口名,改为wl0.1,以便于监听到wl0.1接口打开后就去开启dnsmasq和nat服务

第二:frameworks/base/services/java/com/android/server/connectivity/Tethering.java
修改了当wl0.1接口被打开时,强制开启nat服务,以实现数据转发功能

第三:frameworks/base/wifi/java/android/net/wifi/WifiStateMachine.java
修改了当wl0.1接口被打开时,开启dnsmasq服务,以实现动态分配IP功能
4. 目前实现步骤详说

确保前提修改已经做了,然后按如下步骤开启station和softap功能。
步骤一:
系统启动完成后,命令行输入如下命令加载驱动和指定fw、nvram文件。

insmod /system/vendor/modules/bcmdhd.ko "firmware_path=/system/vendor/modules/fw_bcm40181a2_apsta.bin nvram_path=/system/vendor/modules/bcm40181_nvram.txt"

提示:fw_bcm40181a2_apsta.bin固件是带station和softap功能的,fw_bcm40181a2.bin固件是带station和wifi direct功能的。

成功加载驱动后,输入netcfg命令可以看到wlan0接口,接口状态是down,IP地址为0。

步骤二:
通过ifconfig命令把wlan0 up起来。

ifconfig wlan0 up

成功把wlan0 up起来后,再通过netcfg命令可以看到wlan0的状态是up,IP地址为0。

步骤三:
通过dhd_helper命令把softap功能也开启起来,以下是演把softap名设为tttb_apsta,无加密的方式开启softap。

dhd_helper ssid tttb_apsta hidden n bgnmode b chan 3 amode open emode none

由于android层会监听wl0.1,在监听到wl0.1接口后会强制开启dnsmasq和nat服务,因而若dhd_helper执行成功,输入netcfg命令就会看到wl0.1已经是up了起来并启已分配到IP地址,到这步station与softap共存功能已经实现了。

提示:
1、若输入dhd_helper提示无此命令或权限不够,请检查dhd_helper是否已推进系统和是否有执行权限。
2、若想给softap设置密码和修改通道等,可参考工具说明部分的dhd_helper。(注意:个人尝试给softap加密后其他设备是无法连接上softap的)

步骤四:
通过wl命令连接AP,为了调试方便,可把AP设成不加密方式,然后用如下命令连接AP。

wl join AP名字

执行完连接操作后,可通过wl ssid命令查看是否连接成功。

步骤五:
通过dhcp给wlan0分配IP地址,相关命令如下。

netcfg wlan0 up

执行完以上命令后,通过netcfg命令可以看到wlan0会分配到IP地址,此时可以通过ping命令检查是否连通到互联网了。

以上五步成功执行后,就可通过其他设备去连接softap后看能否正常上网检验station和softap共存功能,若能正常上网则说明station和softap共存功能已实现。

5. 存在的问题

目前station和softap共存的功能虽然是实现了,还需要一系列完善才能真正投入到实现应用去,station和softap共存实现后的性能还需要进一步验证。下面将罗列出个人认为存在的问题:

第一、目前只是通过命令方式操作实现station和softap共存,而且界面会显示softap打开的图标,用户不能通过界面打开和关闭wifi(届时实现的界面的打开和关闭wifi均是假的,实质上wifi一直处于打开状态);

===》需要通过脚本代替手动的设备。
===》需要对wifi的广播消息做处理,使得界面能正常显示,让用户感觉不出差异。

第二、softap设成有加密的方式后其他设备连接上AP后会一直断开再重连,由打印看是驱动不支持softap设成加密方式,目前只能把softap设成不加密方式。

===》该问题应与驱动的支持有关,会向代理反馈问题并跟进。

第三、station和softap功能同时开启并正常运行后,无法再次通过dhd_helper命令修改softap的设置。

===》极可能是由于驱动的限制了,在wlan0 up起来并已连上ap后就无法通过dhd_helper修改softap配置,需向原厂确认,可能需要通过把配置保存到一个文件,然后重启系统把新的配置设进去。

第四、station和softap共存实现后,由于wifi既要与AP交互数据,还要与其他连接上softap的移动设备交互数据,会导致wifi处于不过来,整体上网性能下隆。

===》应该为本质问题了,station和softap均工作在2.4Ghz频段,会有干扰,改进wifi芯片,使用双天线?一个2.4G,一个5G?

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
free-jdx
红包 98 7 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
free-jdx
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区