Linux環境からTFTPでNetgearの無線LAN復活させた

Posted on May 11, 2015 at 00:09:54 UTC


先日、突如WNDR4500(Netgearの無線アクセスポイント)が再起動に失敗し電源ランプが点滅し動かなくなりました…。

ググってみるとファームウェアが壊れたときこうなってしまうそうです。文鎮化の危機。

TFTPでファームウェアを流し込むことによる文鎮からの回復

http://www.netgear.jp/faqDetail/671.html

公式ページによると、このアクセスポイントにはTFTPによる復活方法が備わってるとのこと。
(まあ大体のルータにはこれに類するものがあって改造するのによく使うのですが)

公式ページ上ではWindowsを使っていますが、手元に可搬性をもつWindows機がないのでとりあえずLinuxでやってみることにしました。

[email protected]:~/Downloads$ tftp 192.168.1.1
tftp> put WNDR4500-V1.0.1.40_1.0.68.chk
Sent 12210648 bytes in 38.5 seconds
tftp> 

転送はうまくいきました…、が何も起こらない。

10.ルータが新しいファームウェアを保存し再起動するまで
 しばらくお待ちください。ファームウェアの更新作業が
 正常に完了すると、電源LEDが緑点灯した状態になります。

うまくいくと再起動されるはずなのだが…。忍び寄る文鎮の影…。

そこでmanを確認してみるとこんなものが

http://linuxjm.sourceforge.jp/html/netkit/man1/tftp.1.html

mode transfer-mode
転送モードを設定する。 transfer-mode は ascii または binary である。 デフォルトは ascii である。

ファームウェアはどう考えてもbinaryだよな…。切り替えるの忘れてたよ…。

というわけで次のようにして再転送。

[email protected]:~/Downloads$ tftp 192.168.1.1
tftp> mode binary       
tftp> put WNDR4500-V1.0.1.40_1.0.68.chk
Sent 12116026 bytes in 38.2 seconds
tftp> 

今度は再起動が行われて無事に復活しました。なかなか気に入ってた無線アクセスポイントなので文鎮にならなくてよかった。

実は…

よく見ると、Windows版のコマンド例では-iオプションが付いています。

tftp -i 192.168.1.1 put WNDR4500xxx.chk

どうやらこれはバイナリモードでの転送を意味するものだとのこと。

http://www.atmarkit.co.jp/fwin2k/win2ktips/561tftpd/561tftpd.html

実は普通に書いてあったのか…。