ファームウェアの改変方法

目的

このページでは吸い出したファームウェアをパソコン上で書き換える方法を説明します。
次のような場合に、以下の手順に従って書き換えることが可能です。

  • 言語設定を日本語以外にしたまま吸い出してしまった
  • 名前を後から変えたくなった
  • 誕生日の設定を間違えていた

尚、このページはこちらのサイトの情報を元に書きました。

必要なもの

  • ファームウェアファイル (firmware.bin)
  • バイナリエディタ (Stirling がオススメ)
  • CRC16(Modbus) を算出出来る術(今回はこちらのオンラインサイト)

方法

変更手順

例として、言語設定を書き換える方法で説明します。

  1. バイナリエディタで firmware.bin を開く。
  2. アドレス 0x03FE64 の値を 0x00 に書き換える。
    (日本語:0×00 英語:0×01 フランス語:0×02 ドイツ語:0×03 イタリア語:0×04 スペイン語:0×05)
  3. 0x03FE00 から 0x03FE6F までをコピーして、上記 CRC16(Modbus) 算出サイトの入力欄にペーストして、Hex にチェックを入れてぽちっとする。
  4. 算出された CRC-16 (Modbus) を 0x03FE720x03FE73 に書き込む。
    ただし算出された値が 0x B8 A7 だった場合、書き込むのは 0x A7 B8 にする。(1バイト目と2バイト目を逆転させる)
  5. 同様にアドレス 0x03FF64 の値を 0x00 に書き換えて 0x03FF00 から 0x03FF6F までをコピーして、CRC16(Modbus) を算出し、その値を逆転させて 0x03FF720x03FF73 に書き込む。
  6. 保存する。

以上です。
適宜バイナリエディタのマーク機能等を使って、間違えたアドレスを書き換えないようにしてください。
尚、CRC があわない場合や、値が想定外範囲 (例:誕生月を 12 月にしたくて 0x12 とやっちゃうと、18 月になるので想定範囲外)な場合は、初期設定の画面からスタートになります。

分かりやすくするために画像にしました。

#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (stirling.png)
  • 青い部分が言語設定の部分です。(正確にはその下部3ビット分です)
  • 薄い赤い部分が設定値を書き込む部分であり、CRC16(Modbus) を算出する元となる値です。
  • 緑の部分が反転させた CRC16(Modbus) を書き込む部分です。
  • 名前やコメントを編集する際は、メニューで文字コードを utf-16(unicode) にして下さい。

アドレス一覧

アドレス一覧
FW アドレス RAM アドレス バイト数 値の意味
0×03Fx00 0×023FFC80 1 バージョン (デフォルトは 0x05?)
0×03Fx02 0×027FFC82 1 ユーザーカラー ※1
0×03Fx03 0×027FFC83 1 誕生月
0×03Fx04 0×027FFC84 1 誕生日
0×03Fx06 0×027FFC86 20 名前 (UTF-16)
0×03Fx1A 0×027FFC9A 1/2 名前の文字数(例:名前が 10 文字なら 0x0A に。)
0×03Fx1C 0×027FFC9C 52 コメント (UTF-16)
0×03Fx50 0×027FFCD0 1/2 コメントの文字数
0×03Fx52 0×027FFCD2 1 アラームの時(hour)
0×03Fx53 0×027FFCD3 1 アラームの分(minute)
0×03Fx56 0×027FFCD6 1 0×80=enable alarm, bit 0..6=enable?
0×027FFCD8 12 タッチスクリーンキャリブレーションデータ
0×027FFCE4 bit 0..2 言語設定 ※2
0×027FFCE4 bit 3 GBAソフトの画面 (0=上画面, 1=下画面)
0×027FFCE4 bit 6 起動モード 0=マニュアルモード, 1=オートモード
WIFI power calibration
0×03Fx70 1/2 update counter (used to check latest)
0×03Fx72 2 CRC16(Modbus)

アドレスの 0x03F x XX の x EF で読み替えてください。

※1 ユーザーカラー一覧
値(10進数) RGB
0 グレー (12, 16, 19)
1 茶色 (23, 9, 0)
2 (31, 0, 3)
3 ピンク (31, 17, 31)
4 オレンジ (31, 18, 0)
5 黄色 (30, 28, 0)
6 黄緑 (21, 31, 0)
7 (0, 31, 0)
8 深緑 (0, 20, 7)
9 青緑 (9, 27, 17)
10 水色 (6, 23, 30)
11 (0, 11, 30)
12 群青 (0, 0, 1)
13 青紫 (17, 0, 26)
14 赤紫 (26, 0, 29)
15 マゼンタ (31, 0, 1)


※2 言語設定一覧
言語
日本語 0
英語 1
フランス語 2
ドイツ語 3
イタリア語 4
スペイン語 5

変更例

  • 例1:言語設定でスペイン語にしたければ、0x03Fx64 (つまり 0x03FE64 と 0x03FF64) を 0x05 に書き換えて、CRC 算出&書き換え。
  • 例2:名前を hogehoge にしたければ、0×03Fx06 を起点に hogehoge と (画像のようになるように右半分の部分で) 入力し、ついで 0×03Fx1A を 8 文字にあわせて 0x08 と書き換えて、CRC 算出&書き換え。
  • 例3:誕生日を 12 月 23 日にしたければ、0×03Fx030x0C0×03Fx040x17 に書き換えて、CRC 算出&書き換え。
  • 例4:ユーザーカラーを水色にしたければ、0×03Fx020x0A に書き換えて、CRC算出&書き換え。
最終更新:2009年03月05日 17:39