NOVO7 Fire CM10 で USB ドングルを使うテスト
公式 ROM だと使えるのですが CM10 だと使えなくなっているらしいのでいじってみるテスト。
やってみたこと。
- とりあえず、なんで動かないか眺めてみる。
- wpa_supplicant が NL80211 で呼んでいるのに 8192cu.ko が NL80211 で動いていないくさい。
- 8192cu.ko をコンパイルするに当たり NL80211 で呼ぶコンフィグがあったので有効にしてみる。
- insmod までは問題ないが Wi-Fi を ON にすると端末が再起動する。
- ログを見たいが USB にはドングルが挿さってるし USB デバッギングできん。
- この方法は保留。
なので逆転の発想。
- とりあえず wpa_supplicant を wext で呼ぶ方法に戻せば動くんじゃね。
- てことは init.rc の編集すりゃいいんじゃね。
てことで今回はその場しのぎとして wpc_supplicant 周りを動作実績のある公式 ROM のものに戻すことを考えます。
以下手順です。
0. ツールを準備
uImage を分解したりするツール
いろいろありますがコレを使ってみました。
mkimage
Gentoo ならパッケージがあります。
- dev-embedded/u-boot-tools-2011.12
- emerge u-boot-tools して下さい。
Gentoo 以外の人はどうだかわかりませんが、 Gentoo 以外のディストリにもあると思います。 Android のソースにも入ってます。Fire のソースの中にも入ってます。 (ainol-e4-release-code-20120821/common/arch/arm/boot/mkimage)
8192cu ドライバ
Realtek のサイトから落としてきます。
- http://152.104.125.41/downloads/downloadsView.aspx?Langid=1&PNid=21&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true
- RTL819xC_USB_linux_v3.4.4_4749.20120806.zip
1. カーネルを分解
カーネルは compatibility.zip の中に boot.img の名前で入っているので、コレを解凍、その後 uImage にリネームして extract-uImage-initramfs.sh で分解。
$ mv boot.img uImage $ sh extract-uImage-initramfs.sh >>>>> Remove old files >>>>> Checking for uImage magic word ( 27051956 ) : 4+0 レコード入力 0+1 レコード出力 4 バイト (4 B) コピーされました、 4.0236e-05 秒、 99.4 kB/秒 uImage acknowledged! >>>>> Remove header from uImage 3995610+0 レコード入力 3995610+0 レコード出力 3995610 バイト (4.0 MB) コピーされました、 7.29679 秒、 548 kB/秒 >>>>> Extracting kernel from uImage >>>>> Extracting initramfs from kernel 2215536+0 レコード入力 2215536+0 レコード出力 2215536 バイト (2.2 MB) コピーされました、 3.94931 秒、 561 kB/秒 . dev sys boot boot/mali.ko boot/ump.ko data init proc sbin sbin/adbd sbin/ueventd ueventd.rc default.prop system init.rc initlogo.rle.bak 4328 blocks initramfs of uImage extracted into initramfs
2. init.rc を編集
分解してできた initramfs ディレクトリ内の init.rc を開き、 wpa_supplicant のドライバ指定を nl80211 から wext に編集します。
--- initramfs/init.rc.orig 2012-11-05 22:00:12.620294791 +0900 +++ initramfs/init.rc 2012-11-05 22:00:57.703717471 +0900 @@ -906,14 +906,14 @@ disabled oneshot -service wpa_supplicant /system/bin/wpa_supplicant -Dnl80211 -iwlan0 -c /data/misc/wifi/wpa_supplicant.conf +service wpa_supplicant /system/bin/wpa_supplicant -Dwext -iwlan0 -c /data/misc/wifi/wpa_supplicant.conf class main socket wpa_wlan0 dgram 0660 wifi wifi group system wifi inet disabled oneshot -service p2p_supplicant /system/bin/wpa_supplicant -Dnl80211 -iwlan0 -c /data/misc/wifi/wpa_supplicant.conf +service p2p_supplicant /system/bin/wpa_supplicant -Dwext -iwlan0 -c /data/misc/wifi/wpa_supplicant.conf class main socket wpa_wlan0 dgram 0660 wifi wifi group system wifi inet
3. カーネルをリパック
編集した initramfs を含めてパッキングします。シェルスクリプト内部で mkimage コマンドをコピーしようとするので、まずこいつを持ってきます。
Gentoo の場合は /usr/bin/ から持ってくるだけです。その他の場合 Fire のソースの場所等に読み替えてください。
$ cp /usr/bin/mkimage ./
その後、シェルスクリプトを叩いてリパックします。
$ sh build-uImage.sh >>>>> Remove old files >>>>> Build initramfs 2215416 blocks >>>>> Checking for uImage magic word ( 27051956 ) : 4+0 レコード入力 0+1 レコード出力 4 バイト (4 B) コピーされました、 4.1053e-05 秒、 97.4 kB/秒 uImage acknowledged! >>>>> Remove header from uImage 3995610+0 レコード入力 3995610+0 レコード出力 3995610 バイト (4.0 MB) コピーされました、 7.1887 秒、 556 kB/秒 >>>>> Extracting kernel from uImage >>>>> Extracting initramfs from kernel 2215536+0 レコード入力 2215536+0 レコード出力 2215536 バイト (2.2 MB) コピーされました、 3.94285 秒、 562 kB/秒 . dev sys boot boot/mali.ko boot/ump.ko data init proc sbin sbin/adbd sbin/ueventd ueventd.rc default.prop system init.rc initlogo.rle.bak 4328 blocks >>>>> Fix initramfs size Add 120 bytes to initramfs.new.cpio 120+0 レコード入力 120+0 レコード出力 120 バイト (120 B) コピーされました、 0.000456803 秒、 263 kB/秒 >>>>> Size of initramfs fixed! >>>>> Rebuilding kernel Image 159672+0 レコード入力 159672+0 レコード出力 159672 バイト (160 kB) コピーされました、 0.282724 秒、 565 kB/秒 8594620+0 レコード入力 8594620+0 レコード出力 8594620 バイト (8.6 MB) コピーされました、 15.3296 秒、 561 kB/秒 >>>>> Compressing kernel Image to LZMA >>>>> Making uImage Image Name: CrayonMod Created: Mon Nov 5 22:10:01 2012 Image Type: ARM Linux Kernel Image (lzma compressed) Data Size: 3994403 Bytes = 3900.78 kB = 3.81 MB Load Address: 80008000 Entry Point: 80008000 >>>>> New uImage ready! <<<<< >>>>> ENJOY!!! :) <<<<<
うまくいけば NEWBOOT ディレクトリ配下に uImage が作成されます。これが新しい boot.img になりますので、こいつを Fire のカーネルとして起動してやれば OK です。
4. 8192cu ドライバのコンパイル
解説が面倒くさいので簡単に。
- Fire のソースをとってくる
- ARM 用のクロスコンパイラをとってくる
- Fire のソースを解凍
- ARM 用のクロスコンパイラを解凍
- 8192cu のドライバ zip を解凍
- Fire のソース内の common ディレクトリに移動
- ARCH=arm CROSS_COMPILE=クロスコンパイラのディレクトリ/bin/arm-none-linux-gnueabi- make prepare
- 8192ch ドライバソース内の driver ディレクトリに移動
- rtl8188C_8192C_usb_linux_v3.4.4_4749.20120730.tar.gz を解凍
- rtl8188C_8192C_usb_linux_v3.4.4_4749.20120730 に移動
- Makefile を適当に編集
- ARCH=arm CROSS_COMPILE=クロスコンパイラのディレクトリ/bin/arm-none-linux-gnueabi- make
5. 作った boot.img で起動
CWM なインストール zip を作るなり dd で焼き付けるなりすれば OK 。
6. wpa_supplicant 関連の差し替え
CM10 の wpa_supplicant は wext ドライバを使えないので…
# /system/bin/wpa_supplicant -h wpa_supplicant v2.0-devel-4.1.2 Copyright (c) 2003-2012, Jouni Malinenand contributors This software may be distributed under the terms of the BSD license. See README for more details. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) usage: wpa_supplicant [-BddhKLqqstuvW] [-P ] [-g ] \ -i -c [-C ] [-D ] [-p ] \ [-b ] [-f ] [-e ] \ [-o ] [-O ] \ [-N -i -c [-C ] [-D ] \ [-p ] [-b ] ...] drivers: nl80211 = Linux nl80211/cfg80211 options: ・ ・ ・
ので、適当な公式 ROM から
- /system/bin/wpa_supplicant
- /system/etc/wifi/wpa_supplicant.conf (要らないかも。試してない。)
これらを持ってきて上書きします。公式から持ってきた wpa_supplicant はこんなバージョンです。
# /system/bin/wpa_supplicant -h wpa_supplicant v0.8.x Copyright (c) 2003-2011, Jouni Malinenand contributors This program is free software. You can distribute it and/or modify it under the terms of the GNU General Public License version 2. Alternatively, this software may be distributed under the terms of the BSD license. See README and COPYING for more details. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) usage: wpa_supplicant [-BddhKLqqstuvW] [-P ] [-g ] \ -i -c [-C ] [-D ] [-p ] \ [-b ] [-f ] [-e ] \ [-o ] [-O ] \ [-N -i -c [-C ] [-D ] \ [-p ] [-b ] ...] drivers: wext = Linux wireless extensions (generic) options: ・ ・ ・
成果物
無保証です。最初の経緯の通りやっつけ仕事です。
(直接リンクはできるだけおやめ下さい)
不具合を発見した場合、情報の共有という意味で、ここにコメント・もしくは某巨大掲示板にレスつけるなり(笑)してくださると助かります。
よろしくお願いします。
【Flagship アンドロイド 4.0 】 Ainol NOVO7 Fire 烈焔 限定ドロイド君プリントケースセット android 4.0 7インチ タブレットPC Amlogic8726-M6 1GRAM 16GB IPS 液晶搭載 Novo7 Buring 売り上げランキング : 3186 Amazonで詳しく見る by G-Tools |