承接上一篇,这里主要说明相关修改
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 supportandroid部分,做了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?
免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:Android4.0 SOFTAP & STATION共存实现说明2 https://www.yhzz.com.cn/a/12670.html