FT701Wでロゴを差し替える

前回の LiveCD ですが、多くのダウンロード、多くの動作報告あり難うございました。

おかげさまで大きな問題もなく、ちゃんと動作していることがわかり安心しました。

また、シーダーとしてご協力いただいたみなさま、ありがとうございました。おかげでサーバ負荷も最低限で済みました。

シーダーが増えなかったらどうしようと思っていたのですが、私が見たときは 10 近くのシーダーの方がいらっしゃって、ちょっと感動しました。改めてお礼申し上げます。

 

さて、今回はロゴの変更です。2ch でロゴを入れ替えると言った話題があがっていたので私も試してみました。

logo.img を解析すると、前半は単純に 24bit BMP のようなので、1024×600 で適当に壁紙を作ってみました。

作成した背景
作成した背景 

横浜の赤レンガ倉庫と奥に見えるのは横浜ベイブリッジです。横浜は夜景が綺麗です。

さて、意気揚々に logo パーテーションに書きこんで再起動すると・・・

 

あちゃー。ロゴの位置が固定らしいです。 これも 2ch に書かれていたとおりです。

そこで u-boot を解析してセンタリングするようにバイナリを書き換えてみました。

 全面に表示できた
全面に表示できた!

こういう小細工はおもしろいし、大好きです(^^)

いじった u-boot のバイナリを置いておきます。元々 u-boot は GPL なので、Frontier 製のu-boot バイナリも再配布して問題ないでしょう。ソースはないですが。 

画像サイズは 1024×600 以下であれば表示できると思いますが、横幅は 4 の倍数のほうが無難だと思います。時間がなくて確認してませんが、アセンブラを読んだ感じでは BMP の1ラインごとのパディングが考慮されていなそうだったので。

u-boot や logo を書き換えるには、ロゴ画像や bootloader-centering を adb push で転送した後、以下のような感じで書き換えます。 

※書き換えるには root 権限が必要です 

# cat bootloader-centering > /dev/block/platform/mmci-omap-hs.1/by-name/bootloader
# cat ft701w.bmp > /dev/block/platform/mmci-omap-hs.1/by-name/logo

朝で時間がなく、駆け足に書いたため、乱文ですいません。。

FT701W LiveCD & OTA イメージからのリカバリ

前回公開した FT701W 用バックアップ/リストアスクリプトは、おかげさまでたくさんの動作報告をいただきました。みなさんありがとうございました。

今回はもっと手間を減らせるように FT701W 用の Live CD を作ってしまいました。

2015/5/5追記ここから

トラフィックも少ないと思われるので、ISOファイルをサーバに置きました。

2015/5/5追記ここまで

torrent での配布は初めてなので、問題があったら教えていただけるとありがたいです。

回線が細いものの、このサーバもシーダーになっているので、時間をかければダウンロードできると思います。また、ダウンロード完了後は可能なら、しばらくシーダーとして配布にご協力していただけると助かります。

さて、今回の Live CD では以下の機能追加と、修正が入っています。

  • LiveCD 化によりネットワーク設定が不要に
  • ota_package.zip からのリカバリ
  • device ID の判定見直し
  • 2GB以上4GB以下のバックアップイメージに対応

今回の目玉は、LiveCD 化と、ota_package.zip からのリカバリ機能です。

まず  Live CD の使い方です。

iso を焼いた CD or USB メモリで起動すると、以下のような画面になります。

README.TXT に手順が書かれているので、これをダブルクリックで開いて読みながら操作してください。

コマンドを打たなくてもアイコンをダブルクリックすれば、Backup, Restore, Recovery ができるようになっています。

以下、簡単に各手順を書いておきます。

バックアップ

  1. 2GB以上の空きのある microSD をFT701Wに挿入
  2. LiveCD で PC を起動し、Backup(赤い矢印)のアイコンをダブルクリック
  3. USBで FT701W を PC に接続    (FT701Wは電源ONでもOFFでもよい)
  4. バックアップが開始される。microSD の /bak/emmc-all.bin.gz に書きだされる。
  5. バックアップ後、FT701W は自動で再起動する。
  6. PC に表示されているログを確認し、7632MB まで進んでいれば成功。

リストア

  1. バックアップイメージの入った microSD をFT701Wに挿入
  2. LiveCD で PC を起動し、Restore(青い矢印)のアイコンをダブルクリック
  3. USBで FT701W を PC に接続    (FT701Wは電源ONでもOFFでもよい)
  4. リストアが開始される。
  5. リストア後、FT701W は自動で再起動する。
  6. PC に表示されているログを確認し、7632MB まで進んでいれば成功。

OTAイメージからのリカバリ

  1. 公式サイトで配布されている ota_package.zip を microSD のトップディレクトリにコピー (アップデート時と同じ)
  2. 上記 microSD をFT701Wに挿入
  3. LiveCD で PC を起動し、Recovery from OTA(緑の矢印)のアイコンをダブルクリック
  4. USBで FT701W を PC に接続    (FT701Wは電源ONでもOFFでもよい)
  5. リカバリの下準備が行われ、すぐ再起動がかかる。
  6. FT701W が再起動後、標準のアップデート画面が表示され、アップデート(リカバリ)が実施される。
  7. アップデート後、FT701W は自動で再起動する。

※注意※ リカバリを行うと、ユーザーデータは全て初期化されるのでご注意ください。
LiveCD 内の README.txt には /data は消えないと書いて有りますが、実際は消去します。

 

リカバリについてですが、K牧師さんが調査されたアップデートの方法(FT701W wiki 参照)を使わせていただいてます。

万能ではありませんが、ロゴループなどの大抵の状態からはリカバリできるはずです。

以下のようなケースではリカバリできないのでバックアップからのリストアをしてください。

  • パーテーションテーブルが壊れている or パーテーション構成が変わっている
  • recovery 用のイメージを書き換えている (今後カスタムリカバリが出た場合など)
  •  /system, /cache, /oem パーテーションのいずれかがマウントできないほど破壊されている

おそらく、OS を入れかえるなどの派手ないじり倒しをしていない限りは、リカバリできると思います。

 

FT701W用バックアップ/リストアスクリプト

だいぶ間があいてしまいましたが、ひとまず完成しました。 

今回は Linux 初心者向けにしようと試行錯誤したのですが、うまくいかない部分があって、"初級者" レベルになっています。

本当は Windows 環境の人でも簡単に実施できるように VMware で動かしたかったんですが、どうしても安定して動かせませんでした。 

以下のものを用意してください。 

  • Ubuntu 11.10 日本語版のISOイメージ (ubuntu-ja-11.10-desktop-i386.iso)
    ここ からダウンロードできます。

英語版でも機能的には問題ありません。

Ubuntu 12.04 でも動くと思いますが、確認してません。

一応念の為書いておきます。とても危険なツールです。動作保証はできませんので、自己責任でお使いください。危険を犯したくない方は、動作報告がある程度揃ってから試されることをお勧めします。

作者としては、ヒトバシラーになってくださる方大歓迎です。 

Ubuntuで起動する 

1. Ubuntu の ISO イメージを CD に書きこむ

CD の書き方は以下を参照してください。 

https://wiki.ubuntulinux.jp/UbuntuTips/Install/BurningISO 

2. 作成した CD で起動する

今回は Ubuntuを PC にインストールせず、LiveCD 上で操作を行います。 

1 台の PC で作業する場合、このページを見ながら作業できないので、以下のことだけを覚えていてください。 

  •  Ubuntuが起動したら「Ubuntuを試す」をクリック
  • マウスカーソルを一番左に移動するとアイコンが出るので、Firefox を起動させる
  • Firefox で「ぷちのいず」を検索

この3点だけです。以下は Ubuntu 上の Firefox でこのページを参照しながら作業を進めてください。 

 

下準備

1. FT701W の 「USB デバッグ」を有効にする

2. 電源の入った FT701W を USB で PC に接続

3. Ubuntu 上で Windows キーを押し、terminal[Enter] とキーボードから打ち込む。

下の画像では VMware のツールバーが映ってますが、無視してください 

Windowsキーを押して terminal と入力

4. ターミナルが起動するので、以下のコマンドを打つ

lsusb

5. lsusb の結果に ID 25d6:0001 が表示されることを確認

ID 25d6:0001を確認 

これが表示されれば、UbuntuからFT701Wが見えていることになります。

6. 以下のコマンドを実行し、スクリプトをダウンロードする。

wget https://petit-noise.net/system/files/boot-with-image
chmod +x boot-with-image

これで準備完了。

 

バックアップするときは

1. FT701W に 2GB 程度の空きがある microSD が挿入されていることを確認

2. FT701W を PC から一度外す

3. ターミナルで以下のコマンドを実行

./boot-with-image backup

スクリプトやイメージなどのダウンロードが完了すると、以下のような行が表示される

==Waiting for FT701W...
==Waiting for FT701W...
==Waiting for FT701W...
==Waiting for FT701W... 

4. FT701W を PC に接続

5. FT701W が自動的に再起動しバックアップが開始される

ターミナルの表示に変化があり、Android が起動している場合は FT701W が自動的に再起動する。以下のように表示され、自動的にバックアップが開始される。

==Waiting for FT701W...
Bus 001 Device 065: ID 25d6:0001  
FT701W adb device found!!
==Waiting for adb...
-----adb devices-----
List of devices attached 
F1B0135000000000 device
---------------------
FT701W normal device found.
==Reboot device!!
==Waiting for FT701W...
Bus 001 Device 066: ID 0451:d00f Texas Instruments, Inc. 
TI OMAP boot device found!!
using built-in 2ndstage.bin
reading ASIC ID
CHIP: 4430
IDEN: 0000000000000000000000000000000000000000
MPKH: 0000000000000000000000000000000000000000000000000000000000000000
CRC0: 9c669ad9
CRC1: 00000000
sending 2ndstage to target... f0030002
waiting for 2ndstage response...
sending image to target...
==Waiting for FT701W...
==Waiting for FT701W...
==Waiting for FT701W...
==Waiting for FT701W...
==Waiting for FT701W...
Bus 001 Device 067: ID 25d6:0001  
FT701W adb device found!!
==Waiting for adb...
-----adb devices-----
List of devices attached 
0123456789ABCDEF device
---------------------
Ramdisk FW device found.
==Starting Backup script
37 KB/s (1551 bytes in 0.040s)
==Mounting microSD card...
   ... OK
442MB available
==Starting Backup to bak
==== Backup eMMC data to bak/emmc-all.bin.gz
12/05/10 08:36:32   0% (0B)
12/05/10 08:36:34   0% (10MB)
12/05/10 08:36:40   0% (20MB)
12/05/10 08:36:42   0% (30MB)
12/05/10 08:36:46   0% (40MB)
12/05/10 08:36:50   0% (50MB)
12/05/10 08:36:56   0% (60MB)
12/05/10 08:37:00   0% (70MB) ---------省略-------- 

6. バックアップが終わると FT701W は自動的に再起動する

7. 7632MB まで進んでいれば成功

Disk Full などの際に、エラーメッセージが表示されずに終了することもあるようです。かならず、下記のように 7632MB が最後に表示されていることを確認してください。

12/05/10 08:20:49   99% (7620MB)
12/05/10 08:20:50   99% (7630MB)
12/05/10 08:20:50   100% (7632MB) 

 

バックアップファイルは microSD の /bak/emmc-all.bin.gz というファイルに書き出されます。

8GB のイメージを全部コピーするため、バックアップには 30 分程度かかります。その間、PC がサスペンドしないようにしてください。

軽度の圧縮を行っているため、microSD に 8GB の空きは不要ですが、使っている状況によっては 2GB の空きでは足りないかもしれません。私が試したところでは、1GB 程度で済みました。

もし、4., 5. でエラーが出た場合は、FT701W電源スイッチを 10 秒以上押して完全に電源を切り、USB を一度抜き、もう一度挿しなおしてみてください。

 

リストアするときは

1. FT701W にバックアップイメージが入った microSD が挿入されていることを確認

2. FT701W を PC からはずす

3. ターミナルで以下のコマンドを実行

./boot-with-image restore

スクリプトやイメージなどのダウンロードが完了すると、以下のような行が表示される

==Waiting for FT701W...
==Waiting for FT701W...
==Waiting for FT701W...
==Waiting for FT701W... 

4. FT701W を PC に接続

5. FT701W が自動的に再起動しバックアップが開始される

ターミナルの表示に変化があり、Android が起動している場合は FT701W が自動的に再起動する。

以下のように表示され、自動的にリストアが開始される。

==Waiting for FT701W...
Bus 001 Device 054: ID 0451:d00f Texas Instruments, Inc. 
TI OMAP boot device found!!
using built-in 2ndstage.bin
reading ASIC ID
CHIP: 4430
IDEN: 0000000000000000000000000000000000000000
MPKH: 0000000000000000000000000000000000000000000000000000000000000000
CRC0: 9c669ad9
CRC1: 00000000
sending 2ndstage to target... f0030002
waiting for 2ndstage response...
sending image to target...
==Waiting for FT701W...
==Waiting for FT701W...
==Waiting for FT701W...
==Waiting for FT701W...
==Waiting for FT701W...
Bus 001 Device 055: ID 25d6:0001  
FT701W adb device found!!
==Waiting for adb...
-----adb devices-----
List of devices attached 
0123456789ABCDEF device
---------------------
Ramdisk FW device found.
==Starting Restore script
30 KB/s (1264 bytes in 0.039s)
==Mounting microSD card...
   ... OK
==Starting Restore bak to eMMC
12/05/10 08:03:52   0% (0B)
12/05/10 08:03:54   0% (10MB)
12/05/10 08:03:55   0% (20MB)
12/05/10 08:03:56   0% (30MB)
12/05/10 08:03:58   0% (40MB)
12/05/10 08:04:00   0% (50MB)
12/05/10 08:04:02   0% (60MB)
12/05/10 08:04:04   0% (70MB)
--------省略--------
12/05/10 08:20:43   99% (7570MB)
12/05/10 08:20:44   99% (7580MB)
12/05/10 08:20:45   99% (7590MB)
12/05/10 08:20:46   99% (7600MB)
12/05/10 08:20:47   99% (7610MB)
12/05/10 08:20:49   99% (7620MB)
12/05/10 08:20:50   99% (7630MB)
12/05/10 08:20:50   100% (7632MB)
==Unmount microSD...
==Done.
==Reboot FT701W

6. リストアが終わると FT701W は自動的に再起動する 

私の環境ではリストアは 15 分程度でした。

圧縮を行う分、バックアップの方が時間がかかってます。また、microSD が書き込み速度が遅い物であるのも原因の1つかもしれません。

7. ターミナルの出力に Error や Fatal などの文字が出力されていなければ成功

 

LiveCD ではない環境での注意事項

boot-with-image では、以下のファイルを書き換えます。ご注意ください。

  • ~/.android/adb_usb.ini
  • /etc/udev/rules.d/51-android.rules

また、スクリプト中で sudo を使っているため、パスワード入力を促されますので、パスワードを入力してください。

FT701W用保守イメージ

なかなか時間が取れず、時間が長くかかってしまいましたが、omap4boot で Linux を起動できるファームウェアを作成しました。内蔵パーテーションのデータを使っていないので、文鎮化していても起動するはずです。

これを使うと、内蔵ストレージのバックアップやリストアができるようになりますが、それらはコマンドを叩く必要があります。Linux に詳しくない人や自信が無い人は使わないでください。

アーカイブを展開すると、以下のファイルが展開されます。 

  • readme.txt
  • usbboot
  • ft701w-ramdisk-120428.img 

usbboot  コマンドも同梱しています。Ubuntu 11.10 で実行できることを確認しています。

使い方は以下のとおりです。

$ sudo ./usbboot ft701w-ramdisk-120428.img
using built-in 2ndstage.bin
waiting for OMAP44xx device...

この状態で、FT701W を USB で PC に接続します。

$ sudo ./usbboot ../../../ft701w-ramdisk-120428.img
using built-in 2ndstage.bin
waiting for OMAP44xx device...
reading ASIC ID
CHIP: 4430
IDEN: 0000000000000000000000000000000000000000
MPKH: 0000000000000000000000000000000000000000000000000000000000000000
CRC0: 9c669ad9
CRC1: 00000000
sending 2ndstage to target... f0030002
waiting for 2ndstage response...
sending image to target...

これで FT701W 内部でファームウェアが実行されます。

5 秒程度で adbd が起動しますので、adb shell などでログインすることが可能です。 

あとは /dev/block/platform/mmci-omap-hs.1/by-name/system などを dd でバックアップ/リストアしたり、マウントしてファイルを編集したりが可能です。

microSD は /dev/block/mmcblk1p1 です。マウントすればバックアップしたイメージを保存するなどに使用できます。 

 

14800円でも十分な破格だったんですが、その後一時的に 9980円 で販売されていたようですね。 安くなってちょっとがっかりな気もする反面、ユーザーが増えるのは喜ばしいことです。実験機としても、実用としても結構いい機種なんじゃないかと思います。

ファームの書き換えが自由にできるようになったので、これで少しでも開発が進めば嬉しいです。

だれか ICS とかチャレンジしないかなぁ。kernel のソースコード公開してくれれば可能なんだけどな。

FT701Wでomap4bootに成功!

色々と問題はありますが、FT701Wで本体内蔵のファームを書き換えることなく、USBからカーネルを送り込んで起動することに成功しました!

ファームを解析して omap4boot に FT701W の初期化コードを追加してみました。

修正した omap4boot は github で公開してます。

ビルド方法は codesourcery の toolchain を使うので、今回は詳細は割愛しますが以下のような感じです。いろいろ整理ができたら詳しく書きます。

$ make TOOLCHAIN=??????/arm-2011.03/bin/arm-none-eabi- BOARD=ft701w

まだ実用じゃないですが、とりあえず使い方を。

  1. FT701Wのファームを展開し boot.img を取り出す
  2. FT701W の電源を落とす
  3. Linux PC 上で以下のコマンドを実行
    $ usbboot boot.img
    using built-in 2ndstage.bin
    waiting for OMAP44xx device...

    これで接続待ち状態になる

  4. FT701W と Linux PC をUSBで接続する。Linux PC で以下のような表示になれば成功
    reading ASIC ID
    CHIP: 4430
    IDEN: 0000000000000000000000000000000000000000
    MPKH: 0000000000000000000000000000000000000000000000000000000000000000
    CRC0: 9c669ad9
    CRC1: 00000000
    sending 2ndstage to target... f0030002
    waiting for 2ndstage response...
    sending image to target...

とりあえず、オリジナルのカーネルを起動することはできたのですが、なぜか画面が表示されません。画面周りはu-bootで初期化してるのかもしれないです。

また、今回の手順では rootfs もオリジナルのファームそのままなので、画面が出ないものの、中では Android が起動してます。

画面は出ませんがUSBは使えるので、adbでログインすることができます。

kernel はソースがないのでいじれないですが、rootfs はいじれるので、ひとまず簡単にファームの保存、復帰できるイメージでも作ってみますかね。