2026年7月11日土曜日

起動しないWRC-X3200GST3のFlashを覗いてみる

 この前購入したジャンクのWRC-X3200GST3-Bなんだけど、Flashメモリを剥がす前にとりあえずmtk_uartbootからinitramfs用なOpenWRTを起動できるのでそこからFlashメモリをいじってみることに。フラッシュメモリが壊れたのか、前オーナーがフラッシュメモリ飛ばしてしまったからジャンクとして売り飛ばしただけなのかを確認してみることに。

まずは前回同様に別なモデルのFIPを使ってmtk_uartbootで起動して、TFTPでinitramfsのOpenWRTを流し込む。openwrt-25.12.5-mediatek-mt7622-bananapi_bpi-r64-snand-bl31-uboot.fipでも起動することが出来た。

インターネットに繋ぎたいのでWANにインターネットに繋がってるLANケーブルを接続。

mtd-rwをインストールする。

インストール完了したらSSHで接続し、

insmod /lib/modules/$(uname -r)/mtd-rw.ko i_want_a_brick=1

mtdの書き込みを有効にする。これでdmesgを見てみると

[ 6014.438259] mtd-rw: mtd0: setting writeable flag
[ 6014.493693] mtd-rw: mtd1: setting writeable flag
[ 6014.549047] mtd-rw: mtd2: setting writeable flag
[ 6014.604385] mtd-rw: mtd3: setting writeable flag
[ 6014.659727] mtd-rw: mtd4: setting writeable flag
[ 6014.715091] mtd-rw: mtd7: setting writeable flag
[ 6014.770468] mtd-rw: mtd8: setting writeable flag
[ 6014.825809] mtd-rw: mtd9: setting writeable flag
[ 6014.881170] mtd-rw: mtd10: setting writeable flag

のようにmtdパーティションが書き換え可能になる。

試しに書き換える前になんか入ってるのか確認してみる。

root@OpenWrt:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00080000 00020000 "Preloader"
mtd1: 00040000 00020000 "ATF"
mtd2: 00080000 00020000 "u-boot"
mtd3: 00080000 00020000 "u-boot-env"
mtd4: 00100000 00020000 "factory"
mtd5: 00600000 00020000 "kernel"
mtd6: 01300000 00020000 "ubi"
mtd7: 00500000 00020000 "tm_pattern"
mtd8: 00100000 00020000 "tm_key"
mtd9: 00f00000 00020000 "user_data"
mtd10: 04500000 00020000 "reserved"
root@OpenWrt:~# hexdump -C -n 64 /dev/mtd0
00000000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00000040
root@OpenWrt:~# hexdump -C -n 64 /dev/mtd1
00000000  55 42 49 23 01 00 00 00  00 00 00 00 00 00 00 02  |UBI#............|
00000010  00 00 08 00 00 00 10 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 40 93 2d 8c  |............@.-.|
00000040
root@OpenWrt:~# hexdump -C -n 64 /dev/mtd2
00000000  55 42 49 23 01 00 00 00  00 00 00 00 00 00 00 01  |UBI#............|
00000010  00 00 08 00 00 00 10 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 7f 58 53 19  |.............XS.|
00000040
root@OpenWrt:~# hexdump -C -n 64 /dev/mtd3
00000000  55 42 49 23 01 00 00 00  00 00 00 00 00 00 00 01  |UBI#............|
00000010  00 00 08 00 00 00 10 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 7f 58 53 19  |.............XS.|
00000040
root@OpenWrt:~# hexdump -C -n 64 /dev/mtd4
00000000  55 42 49 23 01 00 00 00  00 00 00 00 00 00 00 01  |UBI#............|
00000010  00 00 08 00 00 00 10 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 7f 58 53 19  |.............XS.|
00000040
root@OpenWrt:~#

なんかおかしい…
よく確認してみると128KiBごとにUBI#が並んでる。ユーザー容量増やそうとして他のパーティション飛ばしてしまったのでは…

試しに適当なデータを焼いても読めているので、Flashは問題ないかも。

純正のPreloaderとかubootとか持ってないしどうしようかなぁ
RAM上で問題なく起動できるのでもったいない。
どうせフラッシュの中身空っぽなんだし他のデバイスのファームウェアでも焼いてみるか…

0 件のコメント:

コメントを投稿