【今回の目標】
前回のテーマは、HummingBoardにMiniPCIeカードのWiFiを載せることでした。OSはArmbianを使いました。
今回は、同じPCIeボードのIntelのWiFi Mini PCI カード(型番: 512AN_HMW)をAndroidKitkatから利用できるようにしてみました。これにより、WiFiを利用しながらもUSBの2ポートが使えるようになりました。
やることの大筋は、以下のようになります。Androidそのものはビルドし直すことは必要ないので最新のイメージを利用します。カーネルだけをAndroid用にビルドして入れ替えることとなります。
1. Android4.4.4のイメージをダウンロードしてくる
2. Linuxカーネルはソースをダウンロードしてきます
3. カーネルのコンフィグレーションを変更してmakeする。
4. モジュールをmakeする
5. ファームウェアをダウンロードしてくる
6. Androidのイメージを書き込んだSDを作成する
7. SDをLinuxPCにマウントし、カーネルを上記で作ったものに入れ替える
8. 続いてモジュール、ファームウェアを書き込む
9.できたSDをHummingBoardに挿して起動する
【インストール・検証手順】
ここから、インストール手順について説明します。
まずは母艦のLinux PCでの作業です。
1. SDカードにAndroidシステムを書き込む
(1) 2015/10/31現在で最新のAndroid 4.4.4のイメージファイル(cuboxi_AOSPBox-i_R1.6.img.xz)を、ここからダウンロードします。
(2) ダウンロードしたファイルを解凍します。
# xz -d cuboxi_AOSPBox-i_R1.6.img.xz |
(3) SDカードをPCにセットして次のようにしてAndroidシステム一式を書き込みます。
# dd if=file_name.img of=/dev/sdf |
/dev/sdfの部分は、実際にSDカードがアサインされているデバイス名を指定してください。
2. USB Wifiアダプタ対応のカーネルとモジュールを生成します
今回は、Android本体をソースからビルドし直す必要はないので、上記のように完成したイメージを用います。そのAndroid用にLinuxをビルドし直すので、以前に記載の記事の、ビルド環境の整備と、カーネルのソースを用意します。
(1) 「ソフトウェア TIPS (13) CuBox-i にKitKat を載せてみる(ソースからのビルドに挑戦)」に記述してあるツール類のインストールをして、前準備の部分
「最初に http://www.solid-run.com/community/topic1091.html
から 「Clone in Desktop」を使ってこれから作業しようとするディレクトリに入れます。もし、ZIPダウンロードで持ってきた場合は、ディレクトリ名の最後が.masterとなっているのでandroid-imx6-kitkat としておきます。
ここからビルドを行っていきます。原文のインストラクションの文中にコメントをいれてみます。」
と 9.および 10. の部分
「 9. git clone git://git.freescale.com/imx/linux-2.6-imx.git kernel_imx
Linuxカーネルをダウンロードしてきてkernel_imx 内に入れます
cd kernel_imx; git checkout kk4.4.2_1.0.0-ga
Alternative, until Freescale updates their tree tags, the kernel can be downloaded from –
http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tag/?id=kk4.4.2_1.0.0-ga
このように書いてますが、「別途ダウンロードしてきたもの」を使うと次のステップで git am が使えるようにするのに苦労します。git clone を使いましょう
10. Manually patch kernel_imx –
cd kernel_imx
git am < git tree location >/android-imx6-kitkat/kernel_imx/3.0.35/*
kernel_imxは実際にはkernel_imx.gitでした。これでソースへのパッチをあてることができます。」
が既にできているものとします。ここからは、上で記述のある “kernel_imx” ディレクトリにcdしているものとして説明を進めていきます。
(2) 環境変数をセットしておきます。
$ export ARCH=arm $ export CROSS_COMPILE=arm-linux-gnueabi- |
(3) IntelのWIFI Mini PCI カード・モジュールをmake対象にします
$ make imx6_cubox-i_hummingboard_android_defconfig $ make menuconfig |
GUI画面でIntelのWIFIをモジュールとして取り込むように指定しましょう。
トップメニューから下のようにサブメニュー”Wireless LAN —>”までたどっていきます。
Device Drivers ---> [*] Network device support ---> [*] Wireless LAN ---> |
このサブメニュー内のIntel関連のものを選択してモジュールとして組み込むように指定します。
[Exit]を何回か選択して、最後にこの設定を保存するか質問してきますまで[Save]を選択してGUIメニューを終了します。
(4) カーネルの生成です
make uImage |
これで、カーネルファイル arch/arm/boot/uImage が生成されました。
(5) 次に、モジュールを生成しましょう
$ make modules $ mkdir ../modules $ export INSTALL_MOD_PATH=../modules/ $ make modules_install |
これにより ../modules/lib/ の下にモジュール化したファイルが生成されました。
WiFiアダプタに関するモジュールのファイルは
lib/modules/3.0.35-06573-g475c029-dirty/kernel/drivers/net/wireless/iwlwifi/
の下に
iwlagn.ko
ができているはずです。
3. SDカードにカーネル、モジュールを書き込みます
先程、作成したSDカードをPCから一旦抜いて挿し直してください。
自動的に
/dev/sdf1 が /media/foo/boot に
/dev/sdf5 が /media/foo/12345 にマウントされたものとします。
(自動マウントしない場合は、ご自身でマウントしてください。)
a) カーネルの書き込み
$ sudo cp arch/arm/boot/uImage /media/foo/boot |
b) モジュールの書き込み
モジュールは全て、/media/foo/12345/lib/modules 直下に置きます。
$ cd ../modules/lib/modules/3.0.35-06573-g475c029-dirty/kernel/drivers/net/wireless/iwlwifi $ sudo cp iwlagn.ko /media/foo/12345/lib/modules/ |
4. WiFi Mini PCI カード用のファームウェアを書き込みます
(1) まず、適当なディレクトリを作成してhttps://packages.debian.org/ja/jessie/firmware-iwlwifi から firmware-iwlwifi_0.43_all.deb をダウンロードします。
(2) ダウンロードしたファイルを、アーカイブマネージャなどで展開して下さい。
firmware-iwlwifi_0.43_all/lib/firmware/
の下に作成される iwlwifi-*.ucode が必要になります。
(3) ファームウェアを、/media/foo/12345/etc/firmware の下に置きます。
|
5. Android起動時に自動的にモジュールをロードするようにします
テキストエディタを使って、/media/foo/12345//bin/wifi/rc.wifi ファイルの最後に以下の行を追加します。
# insmod for intel mini PCI WIFI insmod /system/lib/modules/iwlagn.ko |
これで、作業は終了です。SDカードの全パーティションをアンマウントしてPCから抜いて、HummingBoardに挿してAndroidが起動して、WIFIが利用できることを確かめてください。
本記事で紹介の”Android4.4.4 with Intel WiFi Mini PCIe” をSDでご希望される場合は、petapicoshop@petapico.biz までお問い合わせください。
コメントをお書きください