今日のメモ (Android で無線 dongle 認識の巻 2)

7/9 に作成した Android なイメージは原因不明で起動せず。LogCat 確認してみたらいくつか例外なメセジが確認できるんですが、直接の原因は不明。
という事で、repo sync からヤリ直してみる事にしました。ログを以下に。

repo sync まで

ディレクトリを掘ります。

$ mkdir android/armadillo500fx-droid-eclair
$ cd android/armadillo500fx-droid-eclair
$ export ANDROID=~/android/armadillo500fx-droid-eclair

で、repo init 実行。

$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.1_r2

カーネルについては必要であれば git clone する方向としてこのまま sync 実行。

$ repo sync

終了したら a500fx なパッチなどを適用。

$ wget http://android-development-environment.googlecode.com/files/vendor_sola-a500fx-eclair.tar.gz
$ tar zxvf vendor_sola-a500fx-eclair.tar.gz -C $ANDROID/vendor/
$ $ANDROID/vendor/sola/a500fx/patch/armadillo500fx-patch.sh

buildspec.mk 作って

$ cd $ANDROID
$ echo "TARGET_PRODUCT:=a500fx" > buildspec.mk

無線 dongle とか wpa_supplicant 関連についての下準備。

vendor/sola/a500fx/system.prop 修正

以下を追加

wifi.interface=ra1
vendor/sola/a500fx/init.rc 修正
on boot
# basic network init
    insmod /system/lib/modules/rt2870sta.ko
    ifup lo
    ifup ra1
    hostname localhost
    domainname localdomain

# 中略して末端

service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant -Dwext -ieth1 -c /data/misc/wifi/wpa_supplicant.conf -dd 
    group system wifi
    disabled
#   oneshot
      :
service dhcpcdeth1 /system/bin/logwrapper /system/bin/dhcpcd eth1
    group system dhcp
    disabled
    oneshot

on property:init.svc.wpa_supplicant=stopped
    stop dhcpcdeth1
external/dhcpcd/android.conf 修正

ra1 に書き換え。

# interface wlan0
interface ra1
# dhcpcd-run-hooks uses these options.
option subnet_mask, routers, domain_name_servers
external/wpa_supplicant/Android.mk

OBJS_c に common.c を追加。
# 以下は一部のみを引用

INCLUDES = external/openssl/include frameworks/base/cmds/keystore
  
OBJS = config.c common.c md5.c md4.c rc4.c sha1.c des.c if_index.c
OBJS_p = wpa_passphrase.c sha1.c md5.c md4.c common.c des.c
OBJS_c = wpa_cli.c wpa_ctrl.c common.c
external/wpa_supplicant/wpa_supplicant.donf 修正

ctrl_interface=DIR=/data/system/wpa_supplicant GROUP=system
update_config=1

#ctrl_interface=wlan0

network={
ssid="fuga"
psk="hogehoge"
priority=1
}
|

ctrl_interface をコメントアウトして良いのかどうか不明。

とりあえず

ここまでで make してみました。make 実行開始したのが遅めな時刻だったので、終わるかどうか、という世界だったんですが、帰る間際に終了したので諸々確認。

  • out/target/product/a500fx/system/bin に wpa_supplicant があるか
    • 無いorz
    • external/wpa_supplicant/Android.mk 見たら BOARD_WPA_SUPPLICANT_DRIVER が云々な条件分岐がある
      • どうもこの変数に WEXT をセットしないとコンパイルしない模様orz
    • 代入するのは BoardConfig.mk らしい件

うーん。どうも BoardConfig.mk って色々な意味でポイント高いみたいですね。

ちなみに

gps_freerunner なナニについても現状の感触では

  • gps_freerunner なソレだと libfreerunner_gps が出てくる模様
  • external 配下にソース置く?
  • BoardConfig.mk にて BOARD_HAVE_FREERUNNER_GPS に true 代入
  • BoardConfig.mk にて BOARD_GPS_LIBRARIES に libfreerunner_gps 代入

で、libgps とリンク可能な形で、になるのかなぁ。shared の中身を覗いて云々みたいなバイナリアンの真似をしなきゃいけなくなるのかどうなのか。

明日は

体力的に微妙なので振替休日を頂戴してます。要は自宅対応で freerunner なナニを掘る、という事だったりするあたり、シャレになってないカンジ。
できれば http://vegeets.ti-da.net/ で開店直後から昼過ぎくらいまで、電源確保可能な席が取れれば非常に嬉しいんですが。