首页 > 技术知识 > 正文

1. 前言

用bcm40181模组在android4.0平台上,通过命令行控制和和修改android层开启dnsmasq、nat服务实现wifi的station和softap功能共存功能给出的实现说明。

2. 文件目录结构说明

android4.0上已经跑通bcm40181的前提下,实现station和softap共存的修改文件和工具。

“辅助工具”文件夹中包含wl、dhd_helper两个辅工具,需要把这两个工具推送到系统的/system/bin/目录下,若是通过adb push把其推送进去,还需要通过chmod命令修改其权限。

步骤一: adb push xxx(wl和dhd_helper所在目录)/wl /system/bin/ adb push xxx(wl和dhd_helper所在目录)/dhd_helper /system/bin/ 步骤二: adb shell sync chmod 755 /system/bin/wl chmod 755 /system/bin/dhd_helper

若是通过在编译时就把其拷贝到系统则免除以上操作,可在平台下的crane_evb.mk文件做如下添加。

# add tools for broadcom PRODUCT_COPY_FILES += \ device/softwinner/crane-evb-v12r/tools/wl:system/bin/wl \ device/softwinner/crane-evb-v12r/tools/dhd_helper:system/bin/dhd_helper

wl和dhd_helper是实现station和softap共存功能所必须的两个工具,需要确保其在系统中并且具备执行权限。

README.txt文件是代理商给的实现station和softap功能的步骤说明。

“bcm40181-Station&Softap共存-修改patch”文件夹中包含实现station和softap共存功能所需要的驱动bcmdhd,需要将其替换lichee\linux-3.0\drivers\net\wireless目录下的bcmdhd。

3. 功能说明

在目前所有的android平台上,station和softap功能均是互斥的,同一时刻只能有一个功能存在,但市场提出station和softap功能共存的需要。

station和softap共存功能实现后的连接效果如图一示,A10 EVB板通过wifi连接可以直接上网,而其他移动设备通过softap与A10 EVB板相连接,通过共享A10 EVB的网络也实现其上网的功能。

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

4.实现细节

理论上station、softap共存实现的流程该如下: Android4.0 SOFTAP & STATION共存实现说明11

以上流程是根据broadcom给过来的驱动特性整理出来的, softap的开启必须在wlan0 up起来之后但还没连接上AP之前, 否则station、softap共存将无法实现,而且在wlan0 up了起来后就不能把wlan0 down下去,否则softap也会随着down下去(个人尝试过再重新把wlan0 up起来和再开启softap功能是不成功的), 需要当station、softap功能同时开启后就要保持wlan0 up的状态, 届时界面上关闭wifi将是假关闭,只是界面显示wifi是关闭的,实质上wifi是一直打开的。

此部分只是根据目前的实现方式而给出的,由于尝试过手动开启dnsmasq和nat服务不成功, 通过修改android层监听到wl0.1接口打开时就强制开启dnsmasq和nat两个服务,存在的不足是此时界面会显示softap开启,界面无法操作wifi的打开的关闭,只能通过命令方式连接AP,后续需要改进。 按照目前实现步骤做,可把station、softap两个功能共存实现, 实现流程如图三示。(最后的实现方式也可能与目前的实现方式不一样)

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

猜你喜欢