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用バックアップ/リストアスクリプト” への41件のフィードバック

  1. 情報公開ありがとうございます。
    早速スクリプト見てみましたが、makeをこういう風に使う発想に感心しましたw

    情報に感謝しつつ、早速使わせていただきます。
    ありがとうございました。

    1. K牧師さん、こんばんわ。
      はじめは shell script で書いていたのですが、エラー処理が煩わしくて make にしてしまいました。
      make ならコマンドがエラーになったときに勝手に止まってくれるため、
      エラーチェックを省けるので楽ですし、エラー処理がない分、見た目がスッキリするので。

      1. isoのDLすらしていないのですが…
        シェルスクリプトのエラー処理なら、set -eとtrap arg 0という手もアリでは?
        余計なお世話だったらすいません。

        1. 恥ずかしながら、set -e, trap でのエラー処理を初めて知りました。
          勉強になりました。
          こういうものもあるんですね。やはり奥が深い・・。
          情報ありがとうございました!

  2. 文鎮状態の者です。情報を公開して頂きありがとうございます。
    是非とも人柱になりたいのですが、バックアップイメージが無い状況です。
    もしも可能でしたら、factory image的なモノがあれば喜んで試してみたいと思います。

    1. こんばんわ。
      著作権的に、バックアップイメージを公開することはできないのですが、
      バックアップイメージがなくても、公式の ota_package.zip に入っている recovery.img で usbboot してあげれば、アップデートモードに入れると思います。(試してないですが)

      $ sudo ./usbboot recovery.img

      こんなかんじで。

      ota_package.zip を microSD に入れておいて、アップデートモードで起動すれば、本来のファームウェアのアップデート機能で、/system を復元してくれそうな気がします。

      手が開いたら試してみますね。うまく行くようなら、ブログにまとめようと思います。

      1. ちょっと思うところがあって、adbからreboot recoveryできないか
        試したことがあるんですが、ただrecoveryブートしただけではドロ
        イド君にびっくりマークの画面になってしまってできませんでした。

        SystemUpdate.apkを解析してみたりいろいろした結果、
        /cache/recovery/commandファイルにリカバリー用のパラメータを
        書いておかないとota_package.zipファイルからのリカバリーは
        できないっぽいです。
        commandファイルの内容はFT701W wikiに書いておいたのでそちらを
        参照していただくとして、文鎮化した状態からリカバリーしようと
        思ったら、

        1)bucchiさんのイメージでboot
        2)cacheパーティションをマウントして、commandファイル作成
        3)sudo ./usbboot recovery.img

        というような手順になるかもしれません。

        1. なるほど。SystemUpdate.apk で細工をしているんですね。
          Wiki のページも見つけました。
          http://www32.atwiki.jp/ft701w/pages/26.html

          なるほど、この手順なら自動化できますね。

          /cache/recovery/command を作成して、
          /system/build.prop を強制的にチェックが通る値に書き換えて
          recovery.img で usbboot すれば文鎮からでも 005 へリカバリできそうです。

          有用な情報ありがとうございました!

  3. 早速使わせていただきました。
    が、バックアップデータが2GBを越えてしまい、リストアがうまくいきません。
    対処法はありますでしょうか?

    1. もっくんさん、こんばんわ。

      SD の空き容量が大きい物で試してみてください。
      8GB あれば(当たり前ですが)確実にバックアップできるはずです。

      もしくは、動画や画像など、圧縮効率の悪いデータを本体から削除することで、
      バックアップイメージを小さくすることができ・・・・そうですが、
      よく考えたらできないですね。

      うーん。一度 eMMC にデータを大量に書いてしまうと、ファイルを消しても
      データは残っているので、圧縮効率は下がったままですね・・・。
      ちょっと対処法を考えます・・・。

      まずは、8GB 以上の microSD を使ってください。

        1. あ!確かにそんな上限だった!
          と思って調べてみたら FAT16 が 2GB で、FAT32 が 4GB でした。
          仮に 4GB でも、8GB のバックアップはできないので、何らかの対策を
          考えないといけないですね。

          1. FAT32のファイル上限は4Gなんですけど、stdoutをリダイレクトする場合だと
            2Gが上限になりそうな気がしますw
            DOSで昔そんな制限があったような…

            かといって、ntfs.koがあるわけでもないのでNTFSは使えないし、ネットワーク
            も使えないし、現実味があるのはext4でSDカードをフォーマットしてマウン
            トするくらいかなーと考えたりはします。

            うは、コメントしすぎてスパム臭い言われましたw

          2. バックアップでできたファイルが2.2GBあり
            standard input: Value too large for defined data type
            でリストアが完了せずrebootがかかり終わってしまうという状況です。

            バックアップのほうはSDに移せるものは移して、スリムな状態にしてまた試してみます。

          3. なるほど。バックアップアップはできても、リカバリができないということですね。
            調査して対応しようと思います。ご報告ありがとうございました。

          4. gzip -dc /mnt/$save_file | progress -m $sd_size | dd of=$EMMC_DEV

            ファイルからのリダイレクトのせいだと思うんですけど、これで解決しな
            いかな…
            リダイレクトするより3倍くらい遅いですけど、ddのブロックサイズ調整
            すれば早くなるかも?

          5. この件について調べてみた所、gzip が Large File を有効にしてビルドされて
            いなかったのが原因でした。
            次のリリースではビルドしなおした gzip に入れ替えます。
            ただ、それでも、FAT32 の 4GB の壁は存在するんですけどね・・・。

            また、リダイレクトのほうが早いんですかね?速度的にはあまり変わらなそうな
            きがするのですが・・。私の方でもちょっと試してみます。

            フォローありがとうございました。

  4. 有線でLANつなげてない初心者さんにはUbunts起動した時点で進めなくなりますねw

    1. あ。たしかにそうですね。
      Linux での無線LANは鬼門ですからね。
      有線LAN環境なので気づきませんでした。
      ちょっと考えます・・・。

  5. 一番最初のadb deviceのところで、解説だとF1B013500000000となり進んでいくところが
    見つかるデバイスがF1B01952000000となりunkown deviceと言われて止まります。
    なのでスクリプトの方を書き換えたらうごきだしたのですが
    問題ないものなのでしょうか。
    まだバックアップが終わってないのですが
    もし無事終わったとして出来上がったファイルが
    使い物になるのかどうか心配です。

    1. おぉ。デバイスIDが違いましたか!
      ファームウェアのバージョンが違うせいかもしれないですね。
      ファームウェアのバージョン(「設定」→「端末情報」の「ビルド番号」)を教えていただけますか?

      スクリプトを書き換えて合わせてもらえれば、動作としては問題ないです。
      ID の判定は、Android が起動しているのか、カスタム ramdisk イメージが
      起動しているのかを判定しているだけですので。

      バージョンが変わると ID が変わるとなると、判定が面倒ですね・・・。
      貴重な情報ありがとうございました!

      1. ご返答ありがとうございます。
        ビルド番号はFT701-005となっております。
        最新ファーム?をFRONTIERから
        ダウンロードしてアップデートしてます。

    2. ライブCDからの起動でもスクリプトの書き換えは出来るのでしょうか?

      1. 書き換えは可能ですけど、どうやって…っていう話がありますね。
        エディタは使えるんですけど、手順を示せを言われるとちょっとめんどいw

        で、件のDEVICE IDチェックですが、FT701W接続待ちのときに
        「USBデバッグをONにしたFT701Wを接続する」
        のではなく
        「電源をOFFにしたFT701Wを接続する」
        にすれば最初のDEVICE IDチェックはされません。

        FT701Wの電源はUSBでPCと接続したら勝手に入るようで、特になにもしなく
        てもスクリプトの処理は自動的に進みます。

        ただまあ、スクリプトの仕様の想定外のやり方なので、実際にやるかどう
        かは自己責任の下でご自分で判断されてください。

        私はこのやり方で「一度も起動したことがないFT701Wのバックアップ」に
        成功しています。

        1. K牧師さん、フォローありがとうございます。

          K牧師さんの書かれている通り、下準備での接続確認は省いて、
          バックアップ/リストア時に「電源をOFFにしたFT701Wを接続」でも問題ありません。
          USBでの認識や、接続に関する問題を先にクリアしておきたいという意図で
          手順を分けているだけです。

          ただこれは、当初 VMware を想定していたので、USB 接続周りの問題が多発すると
          考えていたからで、LiveCD の環境ではあまり意味ないかもしれないですね。

  6. Ubuntu 11.10のライブCDを焼き、backupを試させて頂きました。
    PCはAthron64 X2 4400+、タブレット側のmicroSDは32GB class10 (Silicon Power)で少しアプリが入った状態、約20分程でbackupが終了、bakフォルダに346,893KBのemmc-all.bin.gzファイルができました。

    FT701Wのファームウェアバージョンは FT701-004 で、デバイスIDは F1C0005500000000 なのでスクリプトを修正しました(久しぶりにviを使いました)。タブレットの再起動を手動にすれば、デバイスIDの判定は避けられるかも知れませんね。

    1. Tmshinza さん、こんにちわ。
      ご報告ありがとうございました。

      他の方の報告なども見ると、デバイスID はデバイスかロットごとに
      変わってくるのかもしれないですね。
      デバイスID の判定はちょっと見なおします。

      ありがとうございました。

  7. ありがとうございます。
    リカバリーに成功し、文鎮状態から、起動まで確認できました。
    (知人にFT701を借りバックアップを作成)

    他の方同様、デバイスに関係する箇所のみ修正をし、以外の部分は bucchiさんの手順通りに進めて完了しました。

    本当にありがとうございました。

    1. うささん、こんにちわ。

      文鎮からの復旧おめでとうございます!
      これは非常に意味のある実績になりました。
      ご報告ありがとうございます。

      デバイス ID は皆さん違っているようですね。
      ちょっと判定を変更しようと思います。

      ありがとうございました。

  8. ==Restart adb server
    make: ./adb: コマンドが見つかりませんでした
    make: *** [/home/ubuntu/.android/adb_usb.ini] エラー 127
    と出るようになってしまったんですが、何が原因でしょうか?

    1. 最初からやり直したらできました。
      お騒がせしました。

  9. /systemのmountすらできない状態の文鎮から生還しました。
    確認した動作環境はubuntu 12.04 64bitです。
    素晴らしい情報を公開いただきありがとうございました。

    1. 文鎮からの生還おめでとうございます!
      お役に立てたようで私も嬉しいです。
      喜んでいただけると、開発者冥利に尽きますね。

  10. 遅ればせながら動作報告です。

    一度も起動したことがない別の個体からバックアップしたデータを通常運
    用してる個体にリカバリーしてみましたが、無事リカバリーできました。

    どうもうちのFT701WはSDカードリーダーの接触があんまりよろしくないよ
    うでリカバリーが途中で止まってしまい、再度やったら0%でストップして
    完全に文鎮化してしまいました。
    SDカードを変えて試したところ、無事リカバリーが完了したのですが、思
    わぬところで文鎮化個体の復旧まで試せてしまいましたw

    よいツールを提供していただきまして、本当にありがとうございます。

    これでより攻撃的なカスタマイズができるようになりました。

    1. K牧師さん、こんばんわ。
      返信が遅くなってごめんなさい。

      文鎮からの復活おめでとうございます(^^)
      SDカードの相性(?)もあるんですかね。
      うちの FT701W は microUSB のコネクタが接触不良気味で、バックアップ中に
      adb が切断されてしまうことがよくありました。

      > これでより攻撃的なカスタマイズができるようになりました。
      そうです。これが本来の目的なんです!
      これでカスタマイズから OS の入れ替えまで、安全にチャレンジできるので、
      どんどん開発が進んでほしいですね。

      K牧師さんもどんどんいじっていただいて、余裕があれば公開してもらえると
      うれしいです(^^)

      動作報告ありがとうございました!

  11. はじめまして

    Googleアカウントが無いと、何かと不便ですが、その前にバックアップを取っておきたいと思っていたところ公開いただき早速試してみようと思いました。

    なんとか LiveCDまではできたのですが、terminalがみつからず
    苦労しました。(結局ホームフォルダー開いて検索しました)

    lsusb と入力すると最後は

    Bus 005 Device 002: ID 0925:1234 Lakeview Research

    となります。
    これはうまく認識出来ていないのでしょうか?

    できないとしたら怪しいのはUSBケーブルなんでしょうね。

    1. 常に最後の行に表示されるわけではないです。
      lsusbで表示される情報のどこかにID 25d6:0001が表示されていれば認識
      されています。
      ご確認ください。

      1. ありがとうございます。

        Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root Hub
        Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 1.1 root Hub
        Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 1.1 root Hub
        Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 1.1 root Hub
        Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 1.1 root Hub
        Bus 005 Device 001: ID 0925:1234 Lakeview Research

        となってます。
        USB接続後しばらくは充電中の青ランプも点灯します。

        1. 電源ランプが点灯するのは充電用ケーブルの挙動に見えますねー。

        2. PAO さん、K牧師さん、こんにちわ。

          認識されていないようですね。
          USB ケーブルは充電専用じゃなく、データ転送にも対応したものですか?

          また、これをしなくても認識されるはずですが、
          「設定」→「アプリケーション」→「開発」→「USB デバッグ」にチェックがあるか
          確認してみてください。

          あと、PC と FT701W をUSBで接続したときに、FT701W の一番上の通知領域に、
          「USBデバッグが接続されました」や、「USB接続」と表示されるか確認してみてください。

          1. 通信ケーブルではなく、充電ケーブルでした。

            そういえば、B端子の機器でUSBストレージとして接続した事が1度もありませんでした。

            今思えば、これ位は質問する前に試せたと思うのにお恥ずかしい。

            確か通信ケーブルも購入したと思ったのですが、どれを使ってもうまく行かなかったのですが、Idea Pad A1のケーブルが箱に入ったままありましたので、接続したところ、無事USBストレージとして使えることを確認。

            その後、無事CDから起動して、lsusbにて正しく認識する事を確認。

            手順通りにバックアップが完了しました。

            本当にどうもありがとうございました。

bucchi へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です