enable wifi using GUI on android

Kernel
將wireless adapter driver編成module, 放置android fs的/system/lib/modules

The patches for android source
$ vi external/wpa_supplicant/Android.mk
WPA_BUILD_SUPPLICANT := true
$ vi external/wpa_supplicant/.config
CONFIG_DRIVER_WEXT=y
$ vi build/target/board/generic/system.prop
wifi.interface=wlan0
$ vi hardware/libhardware_legacy/wifi/wifi.c
//vanix
static const char DRIVER_MODULE_NAME[] = "zd1211";
static const char DRIVER_MODULE_TAG[] = "zd1211 ";
static const char DRIVER_MODULE_PATH[] = "/system/lib/modules/zd1211rw.ko";

//註解wifi_load_driver function
int wifi_load_driver()
{
char driver_status[PROPERTY_VALUE_MAX];
int count = 100; /* wait at most 20 seconds for completion */

return 0;

/*
if (check_driver_loaded()) {
return 0;
}

if (insmod(DRIVER_MODULE_PATH) <>
return -1;
property_set("ctl.start", FIRMWARE_LOADER);
sched_yield();
while (count-- > 0) {
if (property_get(DRIVER_PROP_NAME, driver_status, NULL)) {
if (strcmp(driver_status, "ok") == 0)
return 0;
else if (strcmp(DRIVER_PROP_NAME, "failed") == 0)
return -1;
}
usleep(200000);
}
property_set(DRIVER_PROP_NAME, "timeout");
return -1;
*/
}
$ vi frameworks/base/wifi/java/android/net/wifi/WifiStateTracker.java
private static final boolean LOCAL_LOGD = Config.LOGD || true;
The patches for android fs
$ vi init.rc
#wifi
mkdir /data/misc/wifi 0770 wifi wifi
mkdir /data/misc/wifi/sockets 0770 wifi wifi
mkdir /data/system/wpa_supplicant 0770 wifi wifi
mkdir /data/misc/dhcp 0770 dhcp dhcp
chown dhcp dhcp /data/misc/dhcp

#service name一定要是wlan_loader
service wlan_loader /sbin/wlan_loader
oneshot
disable

service wpa_supplicant /system/bin/wpa_supplicant -Dwext -iwlan0 -c /system/etc/wifi/wpa_supplicant.conf
group system wifi
disabled
oneshot

service dhcpcd /system/bin/dhcpcd wlan0
group system dhcp
disabled
oneshot

$ vi /sbin/wlan_load
#!/system/bin/sh
insmod /system/lib/modules/zd1211rw.ko
$ vi /system/etc/wifi/wpa_supplicant.conf
ctrl_interface=DIR=/data/system/wpa_supplicant GROUP=system
update_config=1

# 如果有紀錄加入過的網路的話, 會自動出現在檔案下方
network={
ssid="W320AP4"
key_mgmt=NONE
}

network={
ssid="Mtube5566"
psk="password"
proto=RSN
key_mgmt=WPA-PSK
group=CCMP TKIP
priority=4
}


留言

  1. 請問一下
    如果devkit8000要移植 WIFI到android上
    方法是否雷同?
    把 zd1211rw.ko 改成 rt3070sta.ko ?
    再重新編譯android ?

    回覆刪除
  2. 方法上大致相同,我的經驗是可以使用但不保證穩定
    可能是wireless driver跟android hal銜接上的問題
    ps: 這是修改donut的部份,現在已經到gingerbread了 :s

    回覆刪除
  3. 作者已經移除這則留言。

    回覆刪除
  4. 目前還沒有使用gps module的經驗 : )

    回覆刪除
  5. 好快的回答!!
    謝謝你
    那我試試看donut的版本

    最後 祝你新年快樂!!

    回覆刪除
  6. 光碟上有WF8000 的source code
    我知道在linux2.6.28下編譯是可以的
    修改了Makefile裡的
    ifeq ($(PLATFORM),PC)
    # Linux 2.6
    #LINUX_SRC = /lib/modules/$(shell uname -r)/build
    # Linux 2.4 Change to your local setting
    LINUX_SRC = /home/embest/linux-2.6.28-omap
    LINUX_SRC_MODULE = /lib/modules/$(shell uname -r)/kernel/drivers/net/wireless/
    CROSS_COMPILE = arm-none-linux-gnueabi-
    endif

    但是 當我打下
    make ARCH=ARM
    出現以下錯誤
    make[2]: *** [/home/ndhu/WF8000/os/linux/../../common/crypt_md5.o] Error 1
    make[1]: *** [_module_/home/ndhu/WF8000/os/linux] Error 2
    make[1]: Leaving directory `/home/embest/linux-2.6.28-omap'
    make: *** [LINUX] Error 2

    回覆刪除
  7. 我下載新版的網卡驅動
    參考你某一篇文章成功編譯出來
    此方法是以SD卡啟動吧

    有沒有方法直接寫入到system.img裡呢
    以NAND方式啟動?

    回覆刪除
  8. 參考devkit8000燒錄root filesystem的方法
    我想0xdroid應該會有說明

    回覆刪除
  9. 請問您有關beageleboard xm問題, 您是否有將非ti的wifi module for SDIO interface移植到beagleboard xm的經驗?
    是否跟這篇介紹的方式雷同?

    回覆刪除

張貼留言

熱門文章