Windows上でのTFTPことはじめ

なにこれ

今までOpenWrtを焼く際やファームウェア破壊した際や,Cisco*1*2とかする際には適当なLinuxマシンでシリアルポート接続をして修復していた.
Windows上では出来ないのかと思い色々試した結果を書いておく.
対象としてはOpenWrt焼くのにポピュラー(?)な WZR-HP-G302H でいきます.*3*4

用意するもの

おもちゃ

ソフトウェア

  • ファームウェア binファイル
    言わずもがな
  • tftpd64
    TFTPサーバとして
    cmd.exeでTFTPコマンド使ってもPUTが思うように動かないので専用ソフトウェア用意しました.
    install版だとインストールの必要があるのでportable版にしてる.
  • Stirling
    バイナリエディタ
  • Teraterm
    コンソール接続に使う

tftpd64

これの設定を無視していたので時間が溶けた.*5
tftpd64を動作させ,Settingsをこんな感じにしておく.
TFTP Client が生きているとうまくいかなかった.
ここではTFTP ServerとDHCP Server以外は無効化する.

f:id:eraiza2580:20200222194651p:plain
tftp64 setting

f:id:eraiza2580:20200222194823p:plain
tftp64 setting TFTP
Bind TFTP to this addr を適切なNICのアドレスを選択し固定する.
イーサネットですね.

Logは取らなくても平気.*6

Stirling

焼きたいファームウェアを用意した後にバイナリ 27 05 19 56 をファイルの先頭にしたいので これより前を消す.

焼く

WindowsIPアドレスを固定して焼く.
192.168.11.2とか.
最近の(5Ghz対応のAP)は焼き込みの際にu-boot上でアドレスや,ファームウェアファイル名の指定ができるので簡単になりましたね.
ここから先はLinuxでやる知識をそのまま使えるのでおしまい.

こぼれ話

シリアル接続の際にPL2303が使えないよ!

f:id:eraiza2580:20200222195702p:plain
PL2303 OPEN error
調べたら出てきた.

www.totalcardiagnostics.com

中華コピー品対策で古い純正品もまとめてディスコンされたそうです.ベンダーがチップレベルでこういうのやると被害が広範囲ですね.
対策もなんか非公式なソフトウェアでドライバのバージョンを対策以前の物にバインドして,更にレジストリを書き換えてWindows Update等で更新されない様に制御されるです.
実際に使ってみたけどWindows起動前にPL2303を接続していないと上手くいかなかったりして不安定だったので復元ポイントで戻しました.PL2303はLinux限定で動作するくらいに思っておいた方がいいのかもしれません.
PL2303好きだったんだけどなぁ... 手持ちのUR232Rが死んだときの為にPL2303での解法を見つけておかなきゃ.

*1:Ciscoは名詞ですよ???

*2:この投稿内ではCiscoについては書かれていません.

*3:ポピュラーとか書いてますがコイツはハードウェア構成が型番で異なっていて ファームウェアアップデートのミスが多い困ったちゃんです.

*4:僕が持っているのはwzr-hp-g300nhのファームウェアが適用できました.

*5:以前使った際はデフォルトの設定で動いたのに,更新されてからダメになったようです.

*6:僕は取ってるけど