もくじ
AirH"PHONEのLinuxや他OSへの対応や、ファームウェアのカスタマイズのために。情報比較的熱心に募集中〜
免責事項
- ここに書いてあることは嘘八百かもしれません。解析/運用はご自身の責任で。
一行コメント
現状
- 今のところ公式に公開されているファームウェアは1.16のみです。
- また、正式公開されていない部分のファームウェアも変更が予想されるので、例えば現状ではフォントやアイコンはどうしようも有りません。
ファームウェア1.16 (6/6:配布ファイルの作成日付)
- バージョンアップ
- PDL , WORKのアップデートを含む?
- PDLFlash 5/19 - サイズ不変
ファームウェア1.15 (4/25)
- 初の正式配布ファームウェア
- PDL , WORKのアップデートを含む
- PDLFlash 5/7
ファームウェア1.14
- ごく短期間公開されたファームウェア
- PDL , WORKのアップデートを含む
- PDLFlash 4/22
ファームウェア1.13
- 詳細不明
ファームウェア1.02 (03/28)
- 4/1発売時のファームウェア
- WORKのアップデートを含む。
- このバージョンもモトローラSファイルで提供されている。
- このバージョンもテストモード用の文字列を含む。
- PDLFlash 3/28
ファームウェア0.983 (03/06)
- いわゆるDEMO.exe版?
- 全てのアップデート(というよりダウンデート?)を含み、このバージョンはモトローラSファイルで提供されている。
- PDLFlash 2/27
ファームウェアアップデート1.15の明記されていない制限について
COMポートを16までしか捜査しません。つまり、COM17以降にAirH"PHONEが接続されている場合はファームウェアをそのままではアップデートすることは出来ません。
そのような場合はPDLFlash.exeにパッチを当てることでCOM127まで対応できます。
より建設的な解決手段
バイナリパッチではなく、割当てるCOMポートを変更することで解決することができるかも知れません。自分の場合はシリアル機器が多いのでこの方法は使えないのですが。
http://www.cory.to/98/w2k_port.html
パッチ当て(deprecated)
配布ファイルを解凍します。(配布ファイルはlhaの自動解凍書庫になっているので、-lh5-ヘッダ以降を保存して一般的なアーカイバで展開します
ファイルオフセット1d91を0x10から0x50位の適当な数値に変更。
この件についてはそのうちJRCに問い合わせようと思ってます。電話窓口しかないんですね…電話でコミュニケーション取ってる暇は流石に無いです…
とりあえず、HKEY_LOCAL_MACHINE\Hardware\DeviceMap\SerialCommのレジストリを参照することでCOM1から順番に試していくような実装にする必要は無いと思うのですが…
- 当り前ですが、このパッチに関しては自己責任でお願いします。
- パッチファイル作ってみました。http://okotama.org/test/PDLWIDEPATCH.zip
- というか、(使用中)のポートに割り当てても普通に使えるようです。よって不要ですね。 PDLFlash.exeのあるディレクトリで実行してください。
AirH"PHONEのファイル転送プロトコル
- 基本的にコマンドベースのシリアル通信です。
- この辺のツールでデータをぶっこ抜きつつ解析中…
- http://www.sysinternals.com/ntw2k/freeware/portmon.shtml
ポートの初期化
- 115200bps ストップビット1ビット ノンパリティー
初期化(AirH"PHONEの認識)
- ここには概略だけ… そのうち固定化したページ作ります…
(PC) -> (AH PHONE) ATZ -> OK ATE0 -> OK ATI3 -> JRC OK ATI4 -> AH-3002V OK
- ここまでは普通のATコマンドです。改行コードはcr+lf
転送
- これから先はコマンド文字列を渡して通信します。そのフォーマットは未解析です。 HEX:で始まる文字列は実際はバイナリです。同じ行に書いてあるのは送信されているものの実際のバイナリであって、同じような内容を2回送信してるわけじゃないです。
FT_START[0000] -> OK HEX:03 00 10 46 54 5F 53 54 41 52 54 5B 30 30 30 30 5D 0D 0A 15 94 -> 06 03 00 04 4f 4b 0d 0a 80 38 GET_LIST -> OK HEX:03 00 0A 47 45 54 5F 4C 49 53 54 0D 0A 81 9A -> 06 03 00 04 4f 4b 0d 0a 80 38 (バイナリ通信) HEX:06 -> 02 04 00 (ファイル情報がだらだらと HEX:06 0aで終了) HEX:06 -> OK -> HEX:06 GET_FILE[#pic00004#mar_i6.gif] -> OK HEX:03 00 20 47 45 54 5F 46 49 4C 45 5B 23 70 69 63 30 30 30 30 34 -> (バイナリがダラダラと)
コマンドのフォーマット
- 制御コードは大体これに近い。
- http://www.google.co.jp/search?q=cache:XgT32KeAOn8C:cgi2.osk.3web.ne.jp/~kazikeda/magazine/LIT0021.txt+ACK+ETX&hl=ja&lr=lang_ja&ie=UTF-8
- 通信ソフト側の解析はeula違反なので悩ましいところです。
現在発覚しているコマンド
- とにかく、チェックサムの算出方法が謎です。 CRC16-CCITT.コマンド部CR LFまでと思われます。
コマンドの形式(リクエスト)
- 基本的に、コマンド自体はテキストなのでそのまま読めますが、サイズなどの付加情報があります。
<0x03> <SIZE> <command> <CR> <LF> <CHECK SUM?>
- SIZEはコマンド全体の大きさで、恐らくビッグエンディアン。
- コマンドを正常に受信したら<ACK>を返す。 <ACK> = 0x06
- コマンドを正常に解釈したらOKを返す。
- FT_START[暗証番号]
- ファイル転送モードの開始
- GET_LIST
- ファイルリストの受信
- GET_FILE[#data_type#name]
- ファイルの取得
- PUT_FILE[?????]
- ファイルの送信
- OK
- コマンド/リクエスト結果の正常受信通知
ファームウェア
- この辺のツールで.MOTの中身は見れます。日立系のツールはモトローラSファイルを.Sでなく、.MOTとする傾向があるようです。(アセンブラソースの.Sと紛らわしいからかな…
- http://www.vector.co.jp/soft/dl/win95/util/se222578.html
ファームウェアアップデータに含まれる、*.flsとの数字の対応をあわせてみる。
jdpfud01.fls -> WORK jdpfud02.fls -> FONT jdpfud03.fls -> DIC jdpfud04.fls -> REC jdpfud05.fls -> PDL
以下の情報は全てファームウェア0.983のものです。
WORK
- $100000 - $3fffff 最終ワードはチェックサム?
- 3,145,728 bytes(WORK)
- SH系CPU?(SHMobile = SH3-DSP?)のコード
- 逆アセンブラDISSH有り。
- http://hp.vector.co.jp/authors/VA000177/Soft.html
- 文字列はSJISで格納されてる。CompactNetfrontはWORKに格納されていて、libpngを含んでいる。libpngは異なる2バージョンが存在する?
- 何らかの形で起動できるテストモードが存在する(オフセット0x2ca96c辺りに文字列テーブル)。
- その辺の文字列から判断すると、CPUクロックは16/48/96Mhzの可変。
- 拡張子の大小文字を別々にテーブルに持っているので、.bMpとかは読めないかも(?)
- x-avefront:// は動作未検証… ダメっぽ。通常テキストになります。(追試したい方はどうぞ: http://50mb.com/~s-ken/okuoku/ah/test.htm )
- デフォルト着信メロディはスタンダードMIDI形式(SMF1)で埋め込まれています。(MThdヘッダを検索)
- RECにも有るので微妙に謎。恐らく、実際に使われているのはREC側
アドレス
- このアドレステーブルに近いものが複数回出現しており、それなりに怪しい。
00155674 0016e1f4 .long 0x16e1f4 ;(1499636) 00155678 00151f3a .long 0x151f3a ;(1384250) 0015567c 00155a4c .long 0x155a4c ;(1399372) 00155680 003ca90c .long 0x3ca90c ;(3975436) 00155684 00151edc .long 0x151edc ;(1384156) 00155688 00008267 .long 0x8267 ;(33383) 0015568c 001522ea .long 0x1522ea ;(1385194) 00155690 0c046920 .long 0xc046920 ;(201615648) 00155694 00152512 .long 0x152512 ;(1385746) 00155698 001524aa .long 0x1524aa ;(1385642) 0015569c 0015f4c8 .long 0x15f4c8 ;(1438920) 001556a0 00151aea .long 0x151aea ;(1383146)
PDL
- $000000 - $02f2ef
- 193,264 bytes(DEMO)
- 恐らく、ブートストラップとか書き換えまわり。
- 日立のコピーライト文字列有り。
REC
- $440000 - $6fc3ef ヘッダ有り
- リソース(デフォルト着信メロディなど)
FONT
- $700000 - $7fc6bc ヘッダ有り
- 恐らく文字フォントとアイコンデータ。
- RECと同じようなヘッダを持つ。SoFFS仕様?
- 内容は恐らくベタデータ。また、正式版ファームウェアでは仕様が変更されている模様。(0.983のFONTは現行のファームウェアと互換性が無いらしい)
- *.gifファイルを含む。起動/終了スクリーン、カラー絵文字。
- BitPixを使って126ドット幅で見ると、アイコンが浮かんでる。->パッチ可能?
ファイルシステム
- 文字列から判断するに、内部フラッシュのファイルシステムはSoFFS。
- http://edevice.fujitsu.com/fj/PRODUCT/flashmemory/flash/flash_j.html
http://www.fmi.fujitsu.com/pdf/understd17n.pdf -- 構造?
ATコマンド
- 基本的なATコマンドはサポートしている。
↓文字列テーブルから拾っているので、存在しないコマンドも多々有ると思われる。 ATE ATQ ATV ATX AT%C AT%E AT\V AT\X AT&C AT&D AT&K AT&S AT#A AT#B AT#C AT#I AT@B AT@D AT@F AT@M AT@O
ファームウェアアップデートのプロトコル
同じバージョンのファームウェアを2回書き換えることは出来ないようなので、次のファームウェアアップデートまで進行できません…
57600bps
<- 43 3E 94 0D 0A 認識用のコード? 53 30 00 00 00 08 30 30 30 30 6B 3E FE 5F -> <- 43 30 28 0D 0A 43 0C CA 0D 0A 43 3A 09 0D 0A 43 27 7C 0D 0A 43 ... (この後、端末が再起動 -> 待ち受けに入る)
PHS側からのメッセージ
1ワードずつの転送と思われる。
PHS側からのメッセージは$43で始まり、cr lfでターミネイトされる。
PC側からのメッセージ
現在のところ未解明
ファイル転送とは異なるプロトコルであり、生のバイナリ通信?
*.flsファイル
ファイルは生のバイナリではなく、暗号化されている
ファイルサイズに大きな変化は無く、圧縮ではなく、単純なビット演算と思われる。
4 bytes 'JRCE' マジックナンバー long 0 long ?
(駄文)ハードウェア構成の妄想
基本的に書き換えられるフラッシュは全てSH-Mobileのもの?
SH-Mobileのやっていること
- SH-Mobile内部(仕様書が無いのでこちらも解析の必要アリ
- USB通信、LCD制御、入力
- SH-Mobile周辺IC
- 音源、ベースバンドIC(要は、電波を出すIC)
- NetFront
- avetcpによるTCP/IPプロトコルスタック
- NetFrontはWebだけでなく、TCP通信を伴うことを一手に引き受けている(Web以外にメールしか今のところ確認されていない。
- 恐らく、ATコマンドの一部はベースバンドプロセッサにより処理される。
- libpngは異なる2バージョンを持っているので、NetFrontを使わずに壁紙の表示などが行えているはず。
- その他
- 初期ブートストラップはCPU内蔵ROMの中?
解析の指針
エミュレータでも有れば話は早いのですが…
- スタートアップピクチャの読み込みルーチンを探し当てて、gifデコード -> LCD書き込みルーチンを探す。
- MIDI再生部を探し当てて、内蔵メモリファイルシステムを扱う部分を探す。
- ATコマンド処理部を探し当てて、USB通信部を探す。 SHMobileの仕様や評価ボードは個人で入手するのは難しそうです…
(駄文)ファームアップで出来る事/出来ない事
なんかファームウェアのアップデートを魔法の薬のように考えてる人も居るみたいですが…
基本的にはPCのBIOSやOSのアップデートと考えるくらいが丁度いいです。
これからのファームアップで可能になるかもしれないこと
- 辞書のPC側編集やWebブラウザの仕様改善などアプリケーション的なこと全般
- 辞書は別ファイルとして格納されているのでファームアップの形で新しい辞書が公開される可能性は十分考えられます。
- 新しいアイコン/フォントやデフォルト着信メロディ
ファームアップで起こり得ない事
- 液晶の品質が変化するなどのハードウェア的なこと
頻繁に書き換えて申し訳ないす -- .mjt