1. 從這裡下載固件

http://extranet.marvell.com/drivers/driverDisplay.do?driverId=203

26409.p45-GPL 是為 Linux內核 2.6

解壓它,你會發現兩個文件 helper_sd.bin 和 sd8686.bin.

重新命名 helper_sd.bin 至 sd8686_helper.bin (不要問為什麼名稱不同)

2. 你有兩個選擇使用sd8686的WiFi,你可以把sd8686_helper.bin和sd8686.bin放到內核或把它放在文件系統中。

這是內核模式或模塊的模式。據我而言,我把它放到內核,因為我仍然有NAND空間為zImage。

#make xconfig

Device Drivers --->
Generic Driver Options --->
() External firmware blobs to build into the kernel binary
() Firmware blobs root directory

設置“External firmware blobs” = "sd8686_helper.bin sd8686.bin"
設置"Firmware blobs root directory" = "firmware"
把這些文sd8686_helper.bin,sd8686.bin件放在firmware中

這是.config配置文件,還有一些配置請看看Real6410 Android 2.0使用手?V1.2.
.....
#
# Device Drivers
#

#
# Generic Driver Options
#
C
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
CONFIG_FIRMWARE_IN_KERNEL=y
C
C
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
.....

這是目錄
.....
drwxr-xr-x 3 root root 4096 2010-05-17 14:24 crypto
drwxr-xr-x 82 root root 4096 2010-01-20 20:27 Documentation
drwxr-xr-x 84 root root 4096 2010-05-17 18:14 drivers
drwxr-xr-x 18 root root 4096 2010-05-17 18:06 firmware
drwxr-xr-x 63 root root 12288 2010-05-17 14:26 fs
drwxr-xr-x 28 root root 4096 2010-05-17 18:14 include
drwxr-xr-x 2 root root 4096 2010-05-17 18:14 init
drwxr-xr-x 2 root root 4096 2010-05-17 14:23 ipc
-rw-r--r-- 1 root root 2430 2009-12-12 13:18 Kbuild
drwxr-xr-x 6 root root 12288 2010-05-17 14:23 kernel
drwxr-xr-x 6 root root 12288 2010-05-17 18:07 lib
-rw-r--r-- 1 root root 106036 2009-12-12 13:18 MAINTAINERS
-rwxr-xr-x 1 root root 57211 2010-02-25 14:48 Makefile
....

現在可以建立內核

#make -j2 sdk

3. Android使用一個修改過的wpa_supplicant為 WiFi支持,您需要啟用wpa_supplicant. 打開BoardConfig.ml加上一行代碼:

BOARD_WPA_SUPPLICANT_DRIVER := WEXT


4. 您還可以啟用Debug為wpa_supplicant看更多一點信息
在external/wpa_supplicant/common.c 改變 wpa_debug_level = MSG_DEBUG
在external/wpa_supplicant/common.h 改變 ....if ((level) >= MSG_INFO) 至 if ((level) >= MSG_DEBUG)

5 創建配置文件 /Android-2.1/system/core/rootdir/etc/wifi/wpa_supplicant.conf 它會複製到 /system/etc/wifi/wpa_supplicant.conf

ctrl_interface=eth1
update_config=1

6. 添加路徑,權限和服務 init.rc (如果權限有問題,自己改改)

mkdir /system/etc/wifi 0770 wifi wifi
chmod 0770 /system/etc/wifi
chmod 0660 /system/etc/wifi/wpa_supplicant.conf
chown wifi wifi /system/etc/wifi/wpa_supplicant.conf
mkdir /data/misc/wifi 0770 wifi wifi
mkdir /data/misc/wifi/sockets 0770 wifi wifi
chmod 0770 /data/misc/wifi
chmod 0660 /data/misc/wifi/wpa_supplicant.conf
chown wifi wifi /data/misc/wifi
chown wifi wifi /data/misc/wifi/wpa_supplicant.conf
....
on boot
# basic network init
ifup lo
ifup eth0
setprop net.dns1 202.14.67.4
setprop net.dns2 202.14.67.1
hostname localhost
domainname localdomain

# for wifi
setprop wifi.interface "eth1"
setprop wlan.driver.status "ok"
setprop wlan.interface "eth1"
# setprop wlan.modpath /system/lib
# setprop wlan.mod1 libertas_sdio.ko

# set RLIMIT_NICE to allow priorities from 19 to -20
setrlimit 13 40 40

....
service wpa_supplicant /system/bin/wpa_supplicant -dd -Dwext -ieth1 -c /system/etc/wifi/wpa_supplicant.conf
socket wpa_wlan0 dgram 660 wifi wifi
group system wifi inet
disabled
oneshot
service dhcpcd /system/bin/dhcpcd -f /system/etc/dhcpcd/dhcpcd.conf -d eth1
group system dhcp
disabled
oneshot

7. 這是因為我使用的內核模式下,我需要禁用insmod()和rmmod(),因為Android UI 打開Wifi和關閉Wifi將使用它:
/libhardware_legacy/wifi/wifi.c
....
static int insmod(const char *filename, const char *args)
{
/* for kernel mode wifi */
return 0;
void *module;
unsigned int size;
int ret;
module = load_file(filename, &size);
if (!module)
return -1;

ret = init_module(module, size, args);
.....
.....
static int rmmod(const char *modname)
{
/* for kernel mode */
return 0;

int ret = -1;
int maxtry = 10;
.....
....
8. 如果你想手動做試驗,這兩個命令可以幫助你, 用strace看看wpa_supplicant有或沒有問題
#strace /system/bin/wpa_supplicant -dd -Dwext -ieth1 -c /system/etc/wifi/wpa_supplicant.conf
果你沒有問題你可以:
#/system/bin/wpa_supplicant -dd -Dwext -ieth1 -c /system/etc/wifi/wpa_supplicant.conf&
這個互動式的命令:
/system/bin/wpa_cli -i eth1 -p /data/system/wpa_supplicant

9. 未解決的問題:
.....

更多相关文章

  1. Android(安卓)常用的adb命令
  2. 开关飞行模式
  3. Android(安卓)飞行模式的设置(打开/关闭飞行模式,获取飞行状态状
  4. [置顶] Android系统安全之旅 第1章 运行编译过的Android系统
  5. Android(安卓)Linux开发准备
  6. Android(安卓)启动模式
  7. 安卓android模拟器使用命令行
  8. 关于Ubuntu 13.04 64位系统配置Android(安卓)SDK环境变量的问题
  9. android5.1-在系统设置里添加设置选项 以及 USB-OTG 模式切换

随机推荐

  1. Android(安卓)ImageView点击变暗效果
  2. Android(安卓)L SystemUI 流程简要分析
  3. Android(安卓)logcat 常用参数
  4. Android中使用HTTP服务上传文件
  5. Android(安卓)okhttp3中的坑
  6. Android(安卓)中 Socket 基于TCP 传输大
  7. Android(安卓)相关七种 CPU 架构适配
  8. 百度地图开发的两个应用源码共享(android
  9. cocos2d-x在android中响应返回键编译报错
  10. android 超简单处理国际化