andriod 2.3.3 跟新后wifi移植修改文件备忘 2011-08-04:
硬件:marvell 8787
1、device\honmax\product\init.rc
wlan0 -> mlan0
//这个名字是你驱动注册的网卡的名字,我的是mlan0
2、device\honmax\PAD1051\init.rc
这个的路径可能是device\honmax\product\init.rc 我这是分开了,自己添加的东西放在device\honmax\PAD1051\init.rc里面,方便管理。
如果没有
device\honmax\PAD1051\init.rc 那就在device\honmax\product\init.rc改,一样。
service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \
-Dwext -imlan0 -c/data/misc/wifi/wpa_supplicant.conf
user root
group wifi inet
socket wpa_mlan0 dgram 660 wifi wifi
disabled
oneshot
这个是启动wifi的wpa_supplicant服务线程用的是logwrapper工具、下面的屏蔽掉,因为要用wlan_tool还要修改些东西比较麻烦。
路径:system/wlan/atheros/AR6KSDK/host/tools/wlan_tool
#service wpa_supplicant /system/bin/wlan_tool wpa_supplicant
# socket wpa_mlan0 dgram 660 root wifi
# disabled
# oneshot
#service wlan_tool /system/bin/wlan_tool
# oneshot
3、device\honmax\PAD1051\BoardConfig.mk
#WIFI_DRIVER_MODULE_NAME := "ar6000"
#WPA_SUPPLICANT_VERSION := VER_0_6_ATHEROS
BOARD_WLAN_ATHEROS_SDK := system/wlan/atheros/AR6kSDK
#WPA_SUPPLICANT_VERSION := VER_0_6_ATHEROS
WPA_SUPPLICANT_VERSION := VER_0_6_X //会编译 external\wpa_supplicant_6\wpa_supplicant
#BOARD_WPA_SUPPLICANT_DRIVER := AR6000
BOARD_WLAN_CHIP_AR6102 := true
BOARD_WLAN_CHIP_AR6003 := true
BOARD_WPA_SUPPLICANT_DRIVER := WEXT
# Select Wake on wireless mode for AR6003 suspend/resume policy
BOARD_WLAN_PM_SUSPEND := 2
4、external\wpa_supplicant_6\wpa_supplicant\wpa_supplicant.conf
ctrl_interface=mlan0
update_config=1
ap_scan=1
5、 确定.config 中,是否存在以下3个选项支持wifi驱动的选项
CONFIG_WIRELESS_EXTENSION=y
CONFIG_CTRL_IFACE=y
CONFIG_DRIVER_WEXT=y
6、修改 frameworks/base/wifi/java/android/net/wifi/ WifiStateTrackey.java
public WifiStateTracker(Context context, Handler target) {
// mInterfaceName = SystemProperties.get("wifi.interface", "tiwlan0");
mInterfaceName = SystemProperties.get("wifi.interface", "mlan0");
7、 修改/hardware/libhardware_legacy/wifi/wifi.c
把驱动名称,路径啊什么的,换成你自己驱动(也就是ko文件)的名字和存放的路径。
8、在system/etc 下创建文件夹firmware/mrvl ,这个是用来存放 sd8787_uapsta_bin 的。
然后将你的 *.ko 放到 system/lib/modules 下面 ,7 中的路径就是这个了。
9、最后致意看下在system/etc/wifi/ 下的wpa_supplicant.conf文件中确认:
update_config=1
ctrl_interface=mlan0
ap_scan=1
10、注意上面8、9两条里面指的路径是指SD卡上的,或是你系统起来的路径
※ 注意: 在此版本中编译external\wpa_supplicant_6 ,在wifiservice.java中
Slog.e(TAG, "ath: load Wi-Fi driver for AP mode.");
if (!mWifiStateTracker.loadDriver()) {
// if (!mWifiStateTracker.loadApDriver()) {
系统默认会启动 loadApDriver(),这个是实现wifi共享的,把它改回 loadDriver() 就好,不然在wifi.c中不会去装载wifi驱动。