GUIで無線LANを有効にする(2.3.1_r1)

2.3.1_r1では、2.2_r1.3のwifi.cでは上手く接続できません。
直接的、かつ強引な手法ですが、下記のように修正することで接続可能になります。

  • hardware/libhardware_legacy/wifi/wifi.c (part1)
property_set( "ctl.stop" , "dhcpcd" );
sched_yield();
//property_set( "ctl.stop "  , "wpa_supplicant" );
//sched_yield();

int ret;
char command1[]="echo 1 > /sys/devices/platform/bwpm/wifi";
char command2[]="echo 1 > /sys/bus/platform/drivers/msm_sdcc/msm_sdcc.1/polling";
char command3[]="echo 0 > /sys/devices/platform/bwpm/wifi";
char command4[]="echo 0 > /sys/bus/platform/drivers/msm_sdcc/msm_sdcc.1/polling";
char command5[]="stop synergy_service";
char command6[]="start synergy_service";
char command7[]="start wpa_supplicant";
char command8[]="start dhcpcd";
char command9[]="stop wpa_supplicant";

ret=system(command5);
sched_yield();
usleep(500000);
ret=system(command3);
sched_yield();
usleep(100000);
ret=system(command4);
sched_yield();
usleep(100000);
ret=system(command1);
sched_yield();
usleep(100000);
ret=system(command2);
sched_yield();
usleep(100000);
ret=system(command6);
sched_yield();
usleep(1000000);
ret=system(command9);
sched_yield();
usleep(10000000);
ret=system(command7);
sched_yield();
usleep(10000000);
ret=system(command8);
sched_yield();
  • hardware/libhardware_legacy/wifi/wifi.c (part2)
    else
        LOGD( "wifi: %s(): wait for enable wlan0 ...." , __FUNCTION__ );

ret=system(command5);
sched_yield();
usleep(500000);
ret=system(command3);
sched_yield();
usleep(100000);
ret=system(command4);
sched_yield();
usleep(100000);
ret=system(command1);
sched_yield();
usleep(100000);
ret=system(command2);
sched_yield();
usleep(100000);
ret=system(command6);
sched_yield();
usleep(100000);
ret=system(command9);
sched_yield();
usleep(1000000);
ret=system(command7);
sched_yield();
usleep(1000000);
ret=system(command8);
sched_yield();

  • init.rc
chown system system /sys/bus/platform/drivers/msm_sdcc/msm_sdcc.1/polling
        class start default

insmod /system/lib/modules/unifi_sdio.ko
    setprop wifi.interface wlan0
    setprop wlan.driver.status ok
    ifup lo
    ifup wlan0
    hostname localhost
    domainname localdomain
    user system
service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant -Dwext -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -dd
    disabled

service dhcpcd /system/bin/logwrapper /system/bin/dhcpcd -d wlan0
    disabled
    oneshot
  • wifi.cのLOGDコマンドは省いています。デバッグ時には適宜入れたほうが良いかと。
  • usleepの値も適当です。もっと短く出来ると思います。
最終更新:2011年01月21日 00:30
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。