WRC-X1800GSにおいて、公式更新用FWおよびFlash内のファームウェア領域に投入されたファームウェアデータのヘッダ構造は以下の通り
0x0 0x4 0x8 0xc
+---------------------------------------------------------------+
0x00 | "ELECOM\0\0<MODEL>" -->|
+---------------------------------------------------------------+
0x10 |--> ("ELECOM\0\0<MODEL>") -->|
+-------------------------------+-------------------------------+
0x20 |--> ("ELECOM\0\0<MODEL>") | Version1 -->|
+-------------------------------+---------------+---------------+
0x30 |--> (Version1) |'C' 'O' 'M' 'C'| Data Length |
+---------------+---------------+---------------+---------------+
0x40 | Data CRC32 | ? | ? | Version2 -->|
+---------------+---------------+---------------+---------------+
0x50 |--> (Version2) -->|
+-------------------------------+-------------------------------+
0x60 |--> (Version2) |
+-------------------------------+
...
+---------------------------------------------------------------+
0x40000 |D0 0D FE ED ... (Flattened Image Tree) |
+---------------------------------------------------------------+
この中で Data Length は 0x40000 からファイル終端までのサイズを指定しなければならないようで、factoryイメージにおいてinitramfsからkernel + UBIの形式に転換し、kernelのみのサイズをセットした場合、成功のメッセージ無しで蹴られる
root@WRC-X1800GS:/tmp# ls -alh openwrt*.bin -rw-r--r-- 1 root root 7.3M May 12 01:45 openwrt-ramips-mt7621-elecom_wrc-x1800gs-initramfs-factory.bin -rw-r--r-- 1 root root 13.0M May 12 01:42 openwrt-ramips-mt7621-elecom_wrc-x1800gs-squashfs-factory.bin root@WRC-X1800GS:/tmp# mstc_fwcheck openwrt-ramips-mt7621-elecom_wrc-x1800gs-squ ashfs-factory.bin root@WRC-X1800GS:/tmp# echo $? 1
一方で、現在のinitramfsイメージベースのfactoryの場合、Data Length が末尾までである為問題無くチェックを通せる
root@WRC-X1800GS:/tmp# mstc_fwcheck openwrt-ramips-mt7621-elecom_wrc-x1800gs-ini tramfs-factory.bin Data checksum correct. root@WRC-X1800GS:/tmp# echo $? 0
なお、前者が蹴られる際、後者よりもずっと短い時間で終了する為、CRC32の算出が走らず、それ以前で蹴られていることが推測できる。
それと、前者の構成の場合、Data Length をUBIを含めて末尾までとし、CRC32もその範囲で算出したとしても、UBIの内容が状況により容易に変化し得る為、その後ブート時に行われるCRC32のチェックで蹴られる恐れがある。