Android4.0 SOFTAP & STATION共存实现说明2
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?
- 分享
- 举报
-
浏览量:4905次2021-04-10 14:11:46
-
浏览量:5294次2020-10-15 15:43:43
-
浏览量:7122次2021-01-16 14:52:44
-
浏览量:5568次2021-04-12 16:15:46
-
浏览量:5124次2020-12-19 16:14:06
-
浏览量:5477次2020-10-15 16:38:57
-
浏览量:6487次2018-08-28 16:40:09
-
浏览量:4874次2021-03-26 15:39:50
-
浏览量:5062次2021-03-29 14:17:09
-
浏览量:12125次2020-08-23 21:54:03
-
浏览量:2359次2019-12-05 16:46:00
-
浏览量:5131次2020-08-25 18:07:54
-
浏览量:14919次2020-11-13 15:08:38
-
浏览量:1876次2020-07-07 09:07:51
-
浏览量:5056次2021-04-15 15:05:49
-
浏览量:1783次2020-03-09 11:29:00
-
浏览量:2433次2023-04-19 09:15:44
-
浏览量:2977次2020-08-03 13:44:18
-
浏览量:4100次2020-10-30 15:15:24
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
free-jdx
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明