無線LANを有効にする

無線LANを有効にするには…


wpa_supplicant の Android.mk を編集
$ANDROID_SRC/external/wpa_supplicant/Android.mk
$ diff -ubB Android.mk.orig Android.mk
--- Android.mk.orig	2010-12-28 11:11:31.411768956 +0900
+++ Android.mk	2011-01-05 18:15:19.260587500 +0900
@@ -22,12 +22,14 @@
 LOCAL_PATH := $(call my-dir)
 
 WPA_BUILD_SUPPLICANT := true
-ifneq ($(TARGET_SIMULATOR),true)
+BOARD_WPA_SUPPLICANT_DRIVER := WEXT
+
+#ifneq ($(TARGET_SIMULATOR),true)
   ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),)
     WPA_BUILD_SUPPLICANT := true
     CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) = y
   endif
-endif
+#endif
  
 include $(LOCAL_PATH)/.config
make する。
wpa_supplicant を生成、実機に転送する。


init.rc を編集。
カーネルモジュールの insmod や wpa_supplicant、dhcpcd、
その他serviceを起動するようにする。
1.6 のほぼ全ての service や ディレクトリ構成を引用してきて、
明らかにエラーな service は停止する。


1.6の wpa_supplicant.conf をすげ替え環境にコピーする。
wpa_supplicant.confを編集する。
update_config=1
の行の下にに下記をを追加
ctrl_interface=DIR=/data/misc/wifi/sockets
しておくと、安心かもしれない。
次のディレクトリは init.rc にて、作成、own、mod を正しく設定するようにする。
/data/misc/wifi/sockets


Linux native環境(Terminal)で動くか試す。
エラーが出る場合は →permissionの無線LANについてを確認してみる。
# chown system system /sys/bus/platform/devices/msm_sdcc.1/polling
は init.qcom.rc にて行われているかと思う(完全に解説するのを忘れていました。。。)
さらに、忘れ発覚。
デフォルトの
/system/etc/firmware
以下すべてを symlink 環境の同位置にコピーしておく事。

# echo 1 > /sys/devices/platform/bwpm/wifi
# echo 1 > /sys/bus/platform/drivers/msm_sdcc/msm_sdcc.1/polling
以上を行って
# dmesg
で確認してみる。
失敗した場合は、permissionやownerが異なっている可能性がある。
# echo 0 > /sys/devices/platform/bwpm/wifi
# echo 0 > /sys/bus/platform/drivers/msm_sdcc/msm_sdcc.1/polling
で一端、無線LANをoffにして再度確認してみると良い。

下記は init 及び、 init.rc のログレベルを上げている。(修正(パッチ)で行った変更の通り)
<3>[ 6147.362606] [bwpm] bwpm_wifi_on: RF ON
<3>[ 6147.400039] [bwpm] bwpm_wifi_on: change status (0->1)
<6>[ 6153.012392] mmc1 mmc_rescan detect a newly inserted card
<3>[ 6153.054239] mmc1: Command timeout(CMD = 8, ARG = 0x000001AA)
<6>[ 6153.059259] mmc1 mmc_rescan search SDIO card
<6>[ 6153.123512] mmc1: new high speed SDIO card at address 0001
<6>[ 6153.126392] init: event { 'add', '/devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1:0001', 'mmc', '', -1, -1 }
<6>[ 6153.129706] init: event { 'add', '/devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1:0001/mmc1:0001:1', 'sdio', '', -1, -1 }
<4>[ 6153.130079] sdio bus_id:      mmc1:0001:1 - UniFi card 0x1 inserted
<6>[ 6153.132966] init: event { 'add', '/devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/unifi/unifi1', 'unifi', '', 229, 2 }
<6>[ 6153.136572] init: event { 'add', '/devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/unifi/unifiudi1', 'unifi', '', 229, 3 }
<4>[ 6153.205499] Unifi: Fetching firmware patch for firmware build 0
<6>[ 6153.205519] unifi1: Initialising UniFi, attempt 1
<6>[ 6153.205839] unifi1: Chip ID 0x07  Function 1  Block Size 512  Name UniFi-4(UF602x)
<6>[ 6153.250066] unifi1: Chip Version 0x2822
<6>[ 6153.250079] unifi1: Falling back to software hard reset
<6>[ 6153.250092] unifi1: Chip ID 0x07  Function 1  Block Size 512  Name UniFi-4(UF602x)
<4>[ 6153.340866] Unifi: Firmware build 743
<4>[ 6153.340879] Unifi: Fetching firmware patch for firmware build 743
<6>[ 6153.340892] unifi mmc1:0001:1: firmware: requesting unifi-sdio-1/a05/sta.xbv
<6>[ 6153.343599] init: event { 'add', '/devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/firmware/mmc1:0001:1', 'firmware', 'unifi-sdio-1/a05/sta.xbv', -1, -1 }
<6>[ 6153.344199] init: firmware event { '/devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/firmware/mmc1:0001:1', 'unifi-sdio-1/a05/sta.xbv' }
<6>[ 6153.348612] init: firmware copy success { '/sys/devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/firmware/mmc1:0001:1/', '/etc/firmware/unifi-sdio-1/a05/sta.xbv' }
<6>[ 6153.351692] init: event { 'remove', '/devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/firmware/mmc1:0001:1', 'firmware', 'unifi-sdio-1/a05/sta.xbv', -1, -1 }
<6>[ 6153.351819] init: waitpid returned pid 2108, status = 00000000
<3>[ 6153.351839] init: untracked pid 2108 exited
<6>[ 6153.351946] unifi1: unifi_dl_patch 8db5937c 0100060e
<6>[ 6153.682166] unifi1: UniFi f/w protocol version 8.0 (driver 8.0)
<6>[ 6153.682179] unifi1: Firmware build 743: 2009-09-08 16:22 cindr0201_core_sta_rom_sdio_gc
<6>[ 6154.935879] init: event { 'add', '/devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/wlan0', 'net', '', -1, -1 }
<5>[ 6154.938939] unifi1: unifi1 is wlan0
<6>[ 6154.939546] unifi1: UniFi ready
等と出れば成功。
続いて、
# bysubox ifconfig -a
で確認してみる。
wlan0     Link encap:Ethernet  HWaddr A0:DD:E5:22:22:22  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
と最後の方に出てくれば、Linuxレベルでは wlan0 を認識している。

参考:Android1.6 起動時のdmesg より(initのログレベルが通常の場合)
また、IS01のGPLソース、wifi_kernel_driver_build198.tar.gz も参考になるかと思う。
ただ、量が量なのでちゃんと見ていない。
<3>[ 0.951760] [bwpm] Bluetooth/Wifi Power Management
<3>[ 30.899419] [bwpm] bwpm_wifi_on: RF ON
<3>[ 30.930073] [bwpm] bwpm_wifi_on: change status (0->1)
<6>[ 30.932859] mmc1 mmc_rescan detect a newly inserted card
<3>[ 30.974273] mmc1: Command timeout(CMD = 8, ARG = 0x000001AA)
<6>[ 30.979286] mmc1 mmc_rescan search SDIO card
<6>[ 31.024239] mmc1: new high speed SDIO card at address 0001
<4>[ 31.028126] sdio bus_id: mmc1:0001:1 - UniFi card 0x1 inserted
<4>[ 31.056186] Unifi: Fetching firmware patch for firmware build 0
<6>[ 31.056206] unifi1: Initialising UniFi, attempt 1
<6>[ 31.056546] unifi1: Chip ID 0x07 Function 1 Block Size 512 Name UniFi-4(UF602x)
<6>[ 31.100066] unifi1: Chip Version 0x2822
<6>[ 31.100079] unifi1: Falling back to software hard reset
<6>[ 31.100099] unifi1: Chip ID 0x07 Function 1 Block Size 512 Name UniFi-4(UF602x)
<4>[ 31.190059] Unifi: Firmware build 743
<4>[ 31.190073] Unifi: Fetching firmware patch for firmware build 743
<6>[ 31.190093] unifi mmc1:0001:1: firmware: requesting unifi-sdio-1/a05/sta.xbv
<6>[ 31.198033] init: waitpid returned pid 1439, status = 00000000
<3>[ 31.198053] init: untracked pid 1439 exited
<6>[ 31.198173] unifi1: unifi_dl_patch 8c9a837c 0100060e
<4>[ 31.380126] uart_ioctl() >> msm_hs_request_clock_off()
<4>[ 31.390073] uart_ioctl() >> msm_hs_request_clock_on()
<6>[ 31.532179] unifi1: UniFi f/w protocol version 8.0 (driver 8.0)
<6>[ 31.532193] unifi1: Firmware build 743: 2009-09-08 16:22 cindr0201_core_sta_rom_sdio_gc
<5>[ 32.820539] unifi1: unifi1 is wlan0
<6>[ 32.820566] unifi1: UniFi ready
<5>[ 32.935346] init: starting 'wpa_supplicant'
<6>[ 32.935826] init: Created socket '/dev/socket/wpa_wlan0' with mode '660', user '1010', group '1010'

インタフェースをアップした後は、
# start wpa_supplicant
# start dhcpcd
busybox ifconfig -a 等で、IPが取れているか確認する。
wlan0 が有り、IPが取得できていれば init.rc の編集は成功している。
ただし、IPアドレスが自分のネットワークと違う場合はDHCPサーバからIPを取得出来ていない可能性がある。

wpa_supplicant の動作確認は、init.rc にserviceを登録していれば、
# start wpa_supplicant
登録していないか、登録に失敗しているならば、
# /system/bin/wpa_supplicant -Dwext -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -dd &
で行う。
# ls /data/misc/wifi/sockets
# wlan0
と wlan0 ファイルが出来ていれば、wpa_supplicant は起動に成功している。
# wpa_cli -p/data/misc/wifi/sockets -iwlan0
で、動作確認をする。
wpa_cli v0.5.11
Copyright (c) 2004-2008, Jouni Malinen <j@w1.fi> and contributors
(省略)
Interactive mode
となれば、成功。
引き続き、確認を行う。
> scan
 OK
> status
 現在の状態が表示される。
> help
(コマンドヘルプが表示される)
> quit
#
quite で終了。bash を入れていれば、Ctrl+c でもOK。


無線LAN APに接続する。
# start dhcpcd
もしくは、
# /system/bin/dhcpd -dd wlan0
busybox の ifconfig -a 等でIPが確認できる。
#ifconfig -a
IPアドレスが取れていれば成功。

次では、Android 画面上で無線LANを有効にしてみます。
GUIで無線LANを有効にする

comment
  • Android.mk でなく、 /build/target/board/generic/BoardConfig.mk に、"WPA_BUILD_SUPPLICANT := 1" と "BOARD_WPA_SUPPLICANT_DRIVER := WEXT" を記述すると同じ効果が得られます。パラメータ類は此処に書くのが良いようです。 -- RO215IS01 (2011-01-14 04:25:20)
  • ありがとうございます。助かります。 vendorディレクトリから作るとより良いかもしれませんね。 -- is01rebuild (2011-01-14 18:58:45)
  • コピーした1.6の wpa_supplicant.confを編集するとき注意。"network={" 内に "disabled=1"が定義されていれば消す必要がある。 複数APで運用していた人のwpa_supplicant.confには"disabled=1"が記述されているのかも・・・。 -- 初心者 (2011-01-18 19:14:45)
名前:
コメント:













最終更新:2011年01月21日 23:45
ツールボックス

下から選んでください:

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