2012年3月25日日曜日

WLAN関係を一度整理してみる

ちょっとAndroid on x86でWLAN関係の調べたことをまとめてみる。
混乱してきたので覚え書き。

・ビルドの設定
 /vendor/asus/eee_701/BoardConfig.mkに以下の設定を追加
  WPA_BUILD_SUPPLICANT := true
  BOARD_WPA_SUPPLICANT_DRIVER := WEXT

 ※多分/external/wpa_supplicant/Android.mkに追加しても大丈夫なはず。。。

・WiFi下回り制御に手を入れる
 /hardware/libhardware_legacy/wifi/wifi.cに手を入れる。
 55行目くらいからモジュール名とかの設定があるので必要に応じて手を入れる。
 WLAN Driverをモジュール化しないで組み込んだ場合はダミーの値を上に戻すよう
 にするとGUIでそれっぽい動作ができる。
 手を入れるのは
  static int check_driver_loaded()
  static int wifi_load_driver()
  static int wifi_unload_driver()
 くらいにダミーの値を戻すように設定しておく。

・init.rcの設定
とりあえず、以下の設定を追加

mkdir /data/misc/wifi 0770 wifi wifi
mkdir /data/misc/wifi/sockets 0770 wifi wifi
mkdir /data/system/wifi/wpa_supplicant 0770 wifi wifi
mkdir /data/misc/dhcp 0770 dhcp dhcp
chown dhcp dhcp /data/misc/dhcp

setprop wifi.interface wlan0

on property:init.svc.wpa_supplicant=stopped
stop dhcpcd

service wpa_supplicant /system/bin/wpa_supplicant -Dwext -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -dd
user wifi
group wifi inet
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot

service dhcpcd /system/bin/logwrapper dhcpcd -d wlan0
disabled
oneshot

・wpa_supplicant.confを設定
 とりあえず、1ctrl_interface=wlan0をセットする。
 だめな場合、以下を試すようにとの記述もあった。
  ctrl_interface=DIR=/data/system/wpa_supplicant/ GROUP=system

ここまでやったら、とりあえずGUIからWLANの操作はできるようになったかの
ように見える。が、、、

wpa_supplicantが正常に動作していない。
managed modeにうまく設定できないみたい。
とりあえずエラーログを貼付けると

//system/bin/wpa_supplicant( 2064): Initializing interface 'wlan0' conf '/data/misc/wifi/wpa_supplicant.conf' driver 'wext' ctrl_interface 'N/A' bridge 'N/A'
I//system/bin/wpa_supplicant( 2064): Configuration file '/data/misc/wifi/wpa_supplicant.conf' -> '/data/misc/wifi/wpa_supplicant.conf'
I//system/bin/wpa_supplicant( 2064): Reading configuration file '/data/misc/wifi/wpa_supplicant.conf'
I//system/bin/wpa_supplicant( 2064): update_config=1
I//system/bin/wpa_supplicant( 2064): ctrl_interface='DIR=/data/system/wpa_supplicant GROUP=system'
I//system/bin/wpa_supplicant( 2064): eapol_version=1
I//system/bin/wpa_supplicant( 2064): ap_scan=1
I//system/bin/wpa_supplicant( 2064): fast_reauth=1
I//system/bin/wpa_supplicant( 2064): Initializing interface (2) 'wlan0'
I//system/bin/wpa_supplicant( 2064): EAPOL: SUPP_PAE entering state DISCONNECTED
I//system/bin/wpa_supplicant( 2064): EAPOL: KEY_RX entering state NO_KEY_RECEIVE
I//system/bin/wpa_supplicant( 2064): EAPOL: SUPP_BE entering state INITIALIZE
I//system/bin/wpa_supplicant( 2064): EAP: EAP entering state DISABLED
I//system/bin/wpa_supplicant( 2064): EAPOL: External notification - portEnabled=0
I//system/bin/wpa_supplicant( 2064): EAPOL: External notification - portValid=0
I//system/bin/wpa_supplicant( 2064): ioctl[SIOCSIWPMKSA]: Operation not permitted
I//system/bin/wpa_supplicant( 2064): ioctl[SIOCSIWMODE]: Operation not permitted
I//system/bin/wpa_supplicant( 2064): Could not configure driver to use managed mode
I//system/bin/wpa_supplicant( 2064): SIOCSIFFLAGS: Permission denied
I//system/bin/wpa_supplicant( 2064): Could not set interface 'wlan0' UP
I//system/bin/wpa_supplicant( 2064): SIOCGIWRANGE: WE(compiled)=22 WE(source)=21 enc_capa=0xf
I//system/bin/wpa_supplicant( 2064): capabilities: key_mgmt 0xf enc 0xf
I//system/bin/wpa_supplicant( 2064): WEXT: Operstate: linkmode=1, operstate=5
I//system/bin/wpa_supplicant( 2064): socket(PF_PACKET): Operation not permitted
I//system/bin/wpa_supplicant( 2064): Failed to add interface wlan0
I//system/bin/wpa_supplicant( 2064): State: DISCONNECTED -> DISCONNECTED
(以下略)

てな感じで設定に失敗している。
どうもドライバが正常に動作していないみたいだけど、何だろう。。。

0 件のコメント:

コメントを投稿