電源が入らないというジャンクで出品されていたWRC-X3200GST3だけども、とりあえずRAMで起動して問題ないことがわかったし、Flashも実は問題なさそうだったのでどうにかFlashから起動できるように改造してみた。
といってもFlashの中身が飛んだ状態で売られていたジャンク品なのでPreloaderやubootのバックアップはないし…
ということで他の機種のデータを使えないか試してみた。MT7622搭載デバイスのデータで色々試してみたんだけど、他の機種だと1ddrとかの制約があったのでE8450化してうまくフラッシュから起動することができるようになった。
Linksys E8450のリカバリ方法をそのまま実行すればUBIバージョンのLinksys E8450になることがわかった。
実行したのはLinksys E8450のリカバリのRecovery instructions - Reload OpenWRT 24.10 from scratchのところ。
WRC-X3200GST3の方はmtk_uartbootでE8450のデータでブートするところまでやって、Ctrl+Cで
MT7622> <INTERRUPT> MT7622>
のところまでやっておく。あとTFTPでデータを転送するために
setenv ethaddr 00:11:22:33:44:55 setenv eth1addr 00:11:22:33:44:56 setenv serverip 192.168.1.254 setenv ipaddr 192.168.1.1
まで設定を済ませておく。これで本体側の準備はOK
PC側もファイルをダウンロードしてファイル名を変更しておく。
openwrt-mediatek-mt7622-linksys_e8450-ubi-preloader.bin
openwrt-mediatek-mt7622-linksys_e8450-ubi-bl31-uboot.fip
openwrt-mediatek-mt7622-linksys_e8450-ubi-initramfs-recovery.itb
factory.bin
これらのファイルをダウンロードしておく。ダウンロードしたファイル名とリンクのファイル名が違うので、リンクのファイル名に直しておく。
ファイル名を上のリンクどおりに揃えたらTFTPサーバの直下に置いておく。
ubi detach; mtd erase ubi && ubi part ubi
mw $loadaddr 0xff 0x1f000
run boot_tftp_write_bl2
run boot_tftp_write_fip
tftpboot 0x48000000 factory.bin
ここでRAM上に読み込んでいるfactory.binにMACアドレスを書き込む。もしかしたらfactory.binを編集してからTFTPで流し込んでもいいのかも。順番はWAN、LAN、2.4GHz、5GHzなんだけどラベルに貼ってあったMACアドレスがWANらしいのでそれを基準に入れてみた。ラベルのSSIDはWAN-1の値だったのでそこから推測。これをやっておかないとMACアドレスがランダムになってしまう。
mw.b 0x4807FFFA 0x04 mw.b 0x4807FFFB 0xab mw.b 0x4807FFFC 0x18 mw.b 0x4807FFFD 0xc0 mw.b 0x4807FFFE 0x7c mw.b 0x4807FFFF 0x24 mw.b 0x4807FFF4 0x04 mw.b 0x4807FFF5 0xab mw.b 0x4807FFF6 0x18 mw.b 0x4807FFF7 0xc0 mw.b 0x4807FFF8 0x7c mw.b 0x4807FFF9 0x25 mw.b 0x48000004 0x04 mw.b 0x48000005 0xab mw.b 0x48000006 0x18 mw.b 0x48000007 0xc0 mw.b 0x48000008 0x7c mw.b 0x48000009 0x23 mw.b 0x48005004 0x04 mw.b 0x48005005 0xab mw.b 0x48005006 0x18 mw.b 0x48005007 0xc0 mw.b 0x48005008 0x7c mw.b 0x48005009 0x22
MACアドレスを書き込んだら念のため呼び出してみる。
md.b 0x4807FFFA 6 md.b 0x4807FFF4 6 md.b 0x48000004 6 md.b 0x48005004 6
うまく書き込めていたらリカバリモードで起動する。
ubi create factory $filesize static && ubi write $loadaddr factory $filesize
run boot_tftp_recovery
これでOpenWRTがリカバリモードで起動するはず。E8450とWRC-X3200GST3のLANポートの割り当てが少し違うので注意。WRC-X3200GST3のWANはE8450でいうLAN1で、WRC-X3200GST3のLAN1はE8450でいうWANになっている。なのでPCをつなぐときはWRC-X3200GST3のLAN2~4かWANに繋いでおかないと繋がらない。とりあえずPCをLAN4に繋いで192.168.1.1に接続。SystemのBack up/Flash Firmwareからopenwrt-25.12.5-mediatek-mt7622-linksys_e8450-ubi-squashfs-sysupgrade.itbにアップデートして完了。
これでSPI Flashにうまく書き込まれてるようで普通に起動するようになった。E8450として起動するのでPower LEDがついていない。2.4GHzのLEDは点灯している。
cat /sys/class/gpio/gpiochip*/base | head -n1
が512だったのでPower LED(緑)がGPIO 49ということなので
echo "561" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio561/direction
echo "1" > /sys/class/gpio/gpio561/value
でPowerを緑色で点灯することが出来た。スタートアップスクリプトにでも入れておこう。
#Power Green echo "561" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio561/direction echo "1" > /sys/class/gpio/gpio561/value #2.4GHz LED echo "597" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio597/direction echo "1" > /sys/class/gpio/gpio597/value #5GHz LED echo "601" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio601/direction echo "1" > /sys/class/gpio/gpio601/value
これで起動するとそれなりにLEDが光る。ちなみにResetとWPSボタンのGPIOは同じなのでそのまま動くはず。
とりあえずLAN1をWANに設定して、WANをbr-lanに含める設定をしてみた。
MT7915もちゃんと認識してるし、スキャンも出来てるので使えそう。
シリアルコンソールで見てたらubootの方のMACアドレスが飛んでるのでシリアルコンソールからubootに入ってMACアドレスを設定してみる。カウントダウンが始まったあたりでCtrl+Cを押して、MT7622>ってなったら
setenv -f ethaddr 04:ab:18:c0:7c:24 saveenv
のようにスタンドに書いてあったMACアドレスを入力して保存してみた。これでブートローダー起動時のNo MAC Addressは消えた。
とりあえず文鎮化していたジャンクなWRC-X3200GST3をE8450として蘇らせることが出来たっぽい。LEDの設定とかちゃんとすればそこそこ使えるんじゃないかな。
あとおそらく前オーナが文鎮化させてしまった原因の可能性であるoverlay領域の少なさもE8450化で解決しているような。WRC-X3200GST3のOpenWRTだと8MBぐらいしか無いDisk SpaceもE8450化したことによって86.91MBもあるし。大きなモジュールもインストールできちゃう。
MACアドレスもfactory.bin転送後にラベルと合わせたのでちゃんと認識されている。
とりあえずだいぶ安くゲット出来たジャンク品が普通に使えるようになったので何より。いまのところ問題が出ていないけどGPIOがどこにつながってるかわからないので問題が起きても自己責任で。
1000円未満のジャンクにしてはだいぶ遊べたし勉強になった。12V 1.5AのACアダプタのほうが高い…







