Eee Note EA800 日本語化計画 調査中 その1


ASUS Eee Note EA800のインタフェースを日本語にしようと、調査中。
その途中経過の報告です。

内蔵microSDHCカードのパーテーション5番の/local/eTabletディレクトリ以下にメインメニューに表示されるアプリ群が入っている。

binディレクトリ内に各アプリケーションが入っており、stringsをかけてみると、英語のメッセージが出てくる。
translatorディレクトリの中にアプリ名のディレクトリがあり、その中に「アプリ名_tc.qm」といったファイルがある。
「tc」というのは、システム内部の「/eTablet/etc/setting/sys.config」で指定されている「default=tc」の値にひも付いていると想定される。

公開されているソースコードにQtがある、拡張子が「.qm」ということから考えると、アプリはQtで作成されており、アプリが表示するメッセージについては、Qtの国際化の仕組みを利用しているものと想定される。

さて、Qtの国際化を調べてみる。

Qtの場合、拡張子「.ts」のxmlファイルを記述し、.qmを作成しているらしい。
今回、.tsの元ファイルは無いので、qmからtsが生成できるのか?、という点が重要である。

「qt qm ts」でググるとML:q-interestのConverting *.qm to *.tsという質問記事がでてきて、「できないよー」と言われてるからあきらめかけてたんだけど、よく見てみれば、2001年の記事。

さらに調べてみると、技評の2009年記事が出てきた。

進化するQt-Qt最新事情2009 第5回 Qt Linguistの進化
「バイナリの.qmファイルがテキストフォーマットの.tsなどに変換できるようになったのは,内容を確かめるのにとても便利です。」
まじで!?

なので、現在、qtをコンパイルして、必要な環境の構築中。
バイナリ配布のやつはCentOS 5.5だと「/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9′ not found 」と言われて実行できないんですよ・・・
LD_LIBRARY_PATHとかLD_PRELOADとかを駆使してごまかせばいいんですけど、それをやるよりは、まずは正攻法かな、ということころで・・・

その2へ続く

EA800の登録フォント一覧


ASUS Eee Note EA800で使用するフォントは、「/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/fonts/」にある模様。
なので、リストをとってみたところ、後述のようなフォントがあった。

デフォルトで使用するフォントの指定は「/eTablet/etc/setting/sys.config」のfontセクションだと思われるが、そこでは「DejaVu Sans」となっている。
でも、日本語の内容を表示させた時の見た目としては、Androidでよく見かける中華フォント(俗称)っぽいんだけどなぁ・・・と思っていたんですが、「DroidSansFallback.ttf」なんてものを発見。
これはまさしくAndroidの中華フォント(俗称)。ライセンス的に収録できて、なおかつ、ファイルサイズ的に有利な多言語対応フォントですから、採用されてるっぽいです。

-rw-r--r--    1 root     root       466696 Nov  1 14:10 DejaVuSans-Bold.ttf
-rw-r--r--    1 root     root       441736 Nov  1 14:10 DejaVuSans-BoldOblique.ttf
-rw-r--r--    1 root     root       434576 Nov  1 14:10 DejaVuSans-Oblique.ttf
-rw-r--r--    1 root     root       622020 Nov  1 14:10 DejaVuSans.ttf
-rw-r--r--    1 root     root       229460 Nov  1 14:10 DejaVuSansMono-Bold.ttf
-rw-r--r--    1 root     root       177780 Nov  1 14:10 DejaVuSansMono-BoldOblique.ttf
-rw-r--r--    1 root     root       184896 Nov  1 14:10 DejaVuSansMono-Oblique.ttf
-rw-r--r--    1 root     root       237788 Nov  1 14:10 DejaVuSansMono.ttf
-rw-r--r--    1 root     root       201516 Nov  1 14:10 DejaVuSerif-Bold.ttf
-rw-r--r--    1 root     root       180948 Nov  1 14:10 DejaVuSerif-BoldOblique.ttf
-rw-r--r--    1 root     root       179872 Nov  1 14:10 DejaVuSerif-Oblique.ttf
-rw-r--r--    1 root     root       210416 Nov  1 14:10 DejaVuSerif.ttf
-rw-r--r--    1 root     root      3081908 Nov  1 14:10 DroidSansFallback.ttf
-rw-r--r--    1 root     root          915 Nov  1 14:10 README
-rw-r--r--    1 root     root        75363 Nov  1 14:10 UTBI____.pfa
-rw-r--r--    1 root     root        72834 Nov  1 14:10 UTB_____.pfa
-rw-r--r--    1 root     root        74892 Nov  1 14:10 UTI_____.pfa
-rw-r--r--    1 root     root        72354 Nov  1 14:10 UTRG____.pfa
-rw-r--r--    1 root     root        65932 Nov  1 14:10 Vera.ttf
-rw-r--r--    1 root     root        63208 Nov  1 14:10 VeraBI.ttf
-rw-r--r--    1 root     root        58716 Nov  1 14:10 VeraBd.ttf
-rw-r--r--    1 root     root        63684 Nov  1 14:10 VeraIt.ttf
-rw-r--r--    1 root     root        55032 Nov  1 14:10 VeraMoBI.ttf
-rw-r--r--    1 root     root        49052 Nov  1 14:10 VeraMoBd.ttf
-rw-r--r--    1 root     root        54508 Nov  1 14:10 VeraMoIt.ttf
-rw-r--r--    1 root     root        49224 Nov  1 14:10 VeraMono.ttf
-rw-r--r--    1 root     root        60280 Nov  1 14:10 VeraSe.ttf
-rw-r--r--    1 root     root        58736 Nov  1 14:10 VeraSeBd.ttf
-rw-r--r--    1 root     root        40766 Nov  1 14:10 c0419bt_.pfb
-rw-r--r--    1 root     root        39511 Nov  1 14:10 c0582bt_.pfb
-rw-r--r--    1 root     root        40008 Nov  1 14:10 c0583bt_.pfb
-rw-r--r--    1 root     root        39871 Nov  1 14:10 c0611bt_.pfb
-rw-r--r--    1 root     root        33799 Nov  1 14:10 c0632bt_.pfb
-rw-r--r--    1 root     root        35229 Nov  1 14:10 c0633bt_.pfb
-rw-r--r--    1 root     root        34869 Nov  1 14:10 c0648bt_.pfb
-rw-r--r--    1 root     root        35118 Nov  1 14:10 c0649bt_.pfb
-rw-r--r--    1 root     root       126064 Nov  1 14:10 cour.pfa
-rw-r--r--    1 root     root       126868 Nov  1 14:10 courb.pfa
-rw-r--r--    1 root     root       125201 Nov  1 14:10 courbi.pfa
-rw-r--r--    1 root     root       122124 Nov  1 14:10 couri.pfa
-rw-r--r--    1 root     root        54914 Nov  1 14:10 cursor.pfa
-rw-r--r--    1 root     root         3109 Nov  1 14:10 fixed_120_50.qpf
-rw-r--r--    1 root     root         2567 Nov  1 14:10 fixed_70_50.qpf
-rw-r--r--    1 root     root       263331 Nov  1 14:10 japanese_230_50.qpf
-rw-r--r--    1 root     root        77488 Nov  1 14:10 l047013t.pfa
-rw-r--r--    1 root     root        78101 Nov  1 14:10 l047016t.pfa
-rw-r--r--    1 root     root        77941 Nov  1 14:10 l047033t.pfa
-rw-r--r--    1 root     root        78500 Nov  1 14:10 l047036t.pfa
-rw-r--r--    1 root     root        70121 Nov  1 14:10 l048013t.pfa
-rw-r--r--    1 root     root        72496 Nov  1 14:10 l048016t.pfa
-rw-r--r--    1 root     root        72332 Nov  1 14:10 l048033t.pfa
-rw-r--r--    1 root     root        71902 Nov  1 14:10 l048036t.pfa
-rw-r--r--    1 root     root        93860 Nov  1 14:10 l049013t.pfa
-rw-r--r--    1 root     root        92799 Nov  1 14:10 l049016t.pfa
-rw-r--r--    1 root     root       102798 Nov  1 14:10 l049033t.pfa
-rw-r--r--    1 root     root        94877 Nov  1 14:10 l049036t.pfa
-rw-r--r--    1 root     root         1602 Nov  1 14:10 micro_40_50.qpf
-rw-r--r--    1 root     root      1215089 Nov  1 14:10 unifont_160_50.qpf

そんなわけで、フォント変更したい人へのヒント
・/usrパーテーションはreadonlyなので、read/write可にしなければいけない
・/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/fonts/にttfファイルをおけばいい
・sys.configを書き換えればフォントを書き換えられるかと「モトヤLベルマリ3等幅」としてみたがうまくいかなかった
・Android的にDroidSansJapanese.ttfでもおけばいいかな?と期待したが、うまく行かず、DroidSansFallback.ttfを置き換えた
・成功したらdvt_checkスクリプトのファイル名を変更しておかないと、毎回電源on時に実行されるので注意

変更前のサンプル

モトヤLベルマリ3等幅に変更したサンプル

ちなみに以下にあげた文字が中華フォントを使う際に違和感を覚えるものです。

液状「化」
後「悔」
雲「海」
常軌を「逸」した
「羅」列
「突」然
「終」末
「空」中

これ以外だと「今」とか「~」とかがあります。

台湾版EA800を英語表記に変える


開腹手術しなくてもASUS Eee Note EA800 台湾版のインタフェースを英語にする方法が発見されました。
ネタ元:#54 wahaha432さんの書き込み

手法のまとめ
・EA800の外部microSDHCスロットに指すmicroSDHCカード内に「dvt_check」を置くと起動時に読み込まれる
・EA800内部の「/eTablet/etc/setting/sys.config」に「default=tc」とあるのを「default=en」に変える
・というわけなので、microSDHCカード内に「dvt_check」というファイルを作ってsys.configを書き換えるスクリプトを書く
・dvt_checkファイルはUTF-8で、改行コードはLFで作る

で、どうすればいいのか?

1.microSD/microSDHCカードを用意します
2.TeraPadなどを使って「dvt_check」というファイルをカードの一番上のディレクトリに作ります。txtなどの拡張子をつけないこと
3.以下を書きます

#!/bin/sh
cp /eTablet/etc/setting/sys.config /mnt/extsdcard/enote/old.sys.config
sed -e 's/default=tc/default=en/' /eTablet/etc/setting/sys.config > /mnt/extsdcard/enote/sys.config
cp /mnt/extsdcard/enote/sys.config /eTablet/etc/setting/

4.上記の改行コードはLFで保存します
5.microSD/microSDHCカードに「enote」というディレクトリを作成します。
6.EA800にカードを挿します
7.EA800のスイッチを長押しして、shutdownし、そして電源を入れ直す。
8.起動完了すると英語になっている。

これでうまく行かない場合は、初期化が必要らしい
・「設定」を開き、2ページ目の「回復出廠状態:執行」を選択し、「確定」する
・再起動し、画面に「Formatting user partition, please wait…」と表示されますのでしばらく待ちます
・画面に「Please Reboot the eNote」と出たら底面左隅にある「RESTART」ボタンを押します。

英語版にしたことによる影響
・画面が英語になる
・漢字対応の文字サイズでデザインされているので、英語で表示すると文字が大きすぎて若干切れるところがある
・日本語の表示状態は台湾版の時と変わらずにちゃんと表示できる
・Firmwareのバージョンは台湾版(V1.0.5.81 TW)のまま変化はない
・Eee Note SyncでバックアップしてあったデータはRestoreできるけど、設定の反映状況が少しおかしい気がする
・ブラウザは英語表記にはならず

あまり問題となるような点はありません。
簡単に戻せるのでやってみてもいいんじゃないでしょうか?
戻す時は、↑のスクリプトを使っているのであれば、前のsys.configがold.sys.configという名前で保存されているので、「dvt_check」を以下の内容に書き換えればokです

#!/bin/sh
cp /mnt/extsdcard/enote/old.sys.config /eTablet/etc/setting/sys.config

EA800をばらしてみた


中にあるというmicroSDHCスロットにささってるmicroSDHCカードを引っこ抜くため、ASUS Eee Note EA800を分解してみた。

上下4カ所を小さなトルクスねじで留めてあるんだけど、実はマイナスドライバで無理矢理対応可能です。
そんなわけで精密ドライバーセットにはいってたちっちゃなマイナスドライバで開腹しました。

そして、無事、microSDHCカードを取り出し完了。

苦労した点
その1:ねじをはずした後、上下の部分がどうはずれるのかがわかりにくかった。
結局、上も下も、それぞれ2カ所にストッパがあるので、それをうまく外せば簡単にはずれる、ということでした。
結構丈夫なので、そこそこ力をいれれば大丈夫です。

少しでも助けになるよう、拡大写真をはっときます。

その2:どっちに引き抜くのか迷った
↑の方にある写真の通り、上側にスライドさせて抜きます。

その3:microSDHCスロットの開け方がわからなかった。
スロット自体に「←LOCK」「↑OPEN」と書いてあるのを手がかりにあけたのが↑の写真です。
あと、この開け方でわかるように、開腹手術をしないと外に取り出せません。

EA800のfirmwareが解析中 その2


その1からの続き。

Mobile01 討論群組:ASUS Eee Note 無法更新解決?法
要約
————————————————–
Eee Note EA800のfirmwareがバージョンアップされたというけど、
ぼくのはアップデートされない。
新しいのは1.0.5.81だというけれど、ぼくのは1.0.1.71。
いろいろ調べてみたら、無理矢理アップデートする方法発見したよ!

Eee Note Syncはhttp://dlcdnet.asus.com/pub/ASUS/LiveUpdate/Release/Eee%20Family/EeeNote.idxをチェックしてバージョン確認している。
でも、このファイルの内容が0バイトだった。
だから、何もやってくれないみたい。

元ファイルはftp://ftp.asus.com.tw/pub/ASUS/LiveUpdate/Release/Eee%20Family/EeeNote.idxにあるから、これをローカルにダウンロードして、このファイル内の>zip-path<にてpub/ASUS/EeeAP/~.zipが指定されているので、そのファイルもダウンロードしてくる。

/pub/ASUS/EeeAP/
ENote_0_Boot_US_4.zip 
ENote_0_Rom_TW_81.zip 
ENote_0_Sync_44.zip 

これらのファイルを自前でたてたwebサーバに以下の様に配置する
/pub/ASUS/LiveUpdate/Release/Eee%20Family/EeeNote.idx
/pub/ASUS/EeeAP/~.zip
そして/etc/hostsを修正して、「dlcdnet.asus.com」のIPアドレスとして、自前WebサーバのIPアドレスを指定する。

そうすればokになるはず。
ftp.asus.com.twでhttpが上がってれば話は簡単だったんだけどねぇ・・・
————————————————–

この情報を元に、上記で出てきたファイル群を調べてみた。

2011/01/28 11:20(JST)現在、http://dlcdnet.asus.com/pub/ASUS/LiveUpdate/Release/Eee%20Family/EeeNote.idxの中身は正常。
>zip-path<中で指定されているURLも正常。

01/27/2011 05:17午後      3,329,725 ENote_0_Boot_US_4_0126.zip
01/27/2011 05:29午後    226,947,051 ENote_0_Rom_TW_81_0126.zip
01/27/2011 05:17午後     10,749,324 ENote_0_Sync_44_0126.zip

むしろ、ファイルが1/27付けになってるので、いろいろあった結果、修正されてるっぽい

アップデートできなかった人は、再度試してみると、うまくいく可能性あり?

[2011/01/30 追記]
予想通り、アップデートできなかった人もアップデートできるようになっていたそうです。