TFTPでのインストール方法(4)OpenWRT-WHR-G301N編


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

これはあくまで技術的インストール可否についての情報です。実運用を推奨するものではありません。

WHR-G301NでのTFTPインストール方法

手順はほとんど『TFTPでのインストール方法(3)OpenWRT-BHR-4GRV編』と一緒です。
機種ごとに違うMACアドレスやファイル名以外では
USBポートがないので、ファームウェアのバックアップがブラウザ経由になること位です。

準備

ソフトウェア

以下のWHR-G301N のファームウェアをダウンロードし、C:¥ 直下に置いておきます。
openwrt-ar71xx-generic-whr-g301n-squashfs-tftp.bin

TFTP Clientとtelnet/ssh clientを準備します。
TFTPクライアントはWindows Vistaなら標準でインストールされています。Windows7/8の場合は以下のようにしてインストールします。
コントロール パネル → プログラムと機能 → Windowsの機能の有効化または無効化 から 「TFTPクライアント」のチェックボックスをONにする。
telnet/sshクライアントは Teratermputty が有名です。この文書ではTeratermを前提とします。

ハードウェア


WHR-G301N と PCとをUTPケーブルで接続します。
LANポート Link upのタイムラグでタイミングが非常にシビアになるので、直結ではなく、間にSwitching Hubを経由して接続することを推奨します。

設定してないとdebugモードの認証がうまくいかないことがあるため、あらかじめ、WHR-G301Nには管理者パスワードを設定しておきます。

debugモードへのアクセス

WHR-G301Nはdebugモードに入れないとの情報が有りましたが、筆者の手持ち2台ではどちらも入れました。(別々に中古で購入)
一度全てのブラウザを閉じてから、以下のURLにアクセスします。
http://<RouterのIP>/cgi-bin/cgi?req=frm&frm=py-db/55debug.html
ID:bufpy
Password: otdpopy + 管理者パスワード
成功するとdebugメニュー画面が出るので telnetd を選択して、telnetd を起動します。

これでtelnetでルータのIPアドレスを指定すればアクセスできるようになります。

flashメモリバックアップ

ルータのIPに対してtelnet接続した後、
/tmp/フォルダに移動します。
#cd /tmp/

flashメモリのパーティションを確認します
#cat /proc/mtd

表示されたMTDブロックを確認し全てddで取得し、
#dd if=/dev/mtdblock/0 of=mtd0.dd
それをブラウザ経由でPCにdownloadします。
http://<ルータIP>//html/py-db/tmp/mtd0.dd
ramディスク容量を圧迫し、rebootすることがあるのでdownloadが終わったら、都度ファイルは削除します。
#rm -i mtd0.dd

mtd1とmtd5はファイルとしてダウンロードされず、ブラウザウィンドウ内に表示されるので、gzipで圧縮してから取得します。
#gzip mtd1.dd
http://<ルータIP>//html/py-db/tmp/mtd1.dd.gz

flashパーティション情報とu-boot変数はログをコピーしておきます。
#cat /proc/mtd
#ubootenv list

uboot変数の確認と変更

bootloader 「u-boot」用の変数(パラメータ)を確認します。
#ubootenv list

WHR-G301N Firmware 1.86 では以下のようになっていました。
変数名 デフォルト値 備考
accept_open_rt_fmt なし 標準ファームウェア以外のインストール可否。値が1で可。日本国内仕様の場合、デフォルトでは変数そのものが無いはずです。
tftp_wait 4 bootloader起動時のTFTP待受秒数。
uboot_ethaddr 02:AA:BB:CC:DD:1E TFTP待受時のMACアドレス。機種によって値が異なります。
ipaddr 192.168.11.1 TFTP待受時のIPアドレス。値が違う場合もあるかもしれません
serverip 192.168.11.2 TFTP転送を受け付けるIPアドレス=ここではPCのIPアドレス。値が違う場合もあるかもしれません
region JP リージョンコード。北米仕様はUSになります。

tftpでのファームウェアインストールをできるようにするために accept_open_rt_fmt を設定します。
#ubootenv set accept_open_rt_fmt 1

末尾に変数が登録されたことを確認します。
#ubootenv list

PCのアドレス設定

PCのIPアドレスを以下に設定します。
IPアドレス:192.168.11.2  ※このIPはu-boot変数の serverip の値と同じにします。
サブネットマスク:255.255.255.0

TFTP待受時のIPアドレスはarpに応答しないので、そのままではTFTP転送できません。
コマンドプロンプトを(アイコンを右クリックして)「管理者として実行」で開き、
以下のコマンドでPCのarpテーブルにMACアドレスをスタティックに登録します。

C:\>arp -s 192.168.11.1 02-AA-BB-CC-DD-1E  ※ここのIP/MACアドレスは u-boot変数 ipaddr、uboot_ethaddrに準じます。MACアドレスの区切り文字は - に変えます。

登録できた場合には以下のコマンドで確認できます。
C:\>arp -a
インターフェイス: 192.168.11.2 --- 0x1
 インターネット アドレス 物理アドレス           種類
 192.168.11.1           02-aa-bb-cc-dd-1e     静的 ←ここが動的ではなく静的になっていればOK

何度もarp -s していると登録できなくなることがありました。(Vistaで)。USB/PCMCIA-CARDのLANアダプタなら抜き差し。本体内蔵なら再起動が必要でしょう。
間にSwitchを経由させないで直結でつないでいる場合にはLANポートがupしていないとarp -s は出来ないはずです。

インストール

準備が整ったら、ルータを電源OFF/ONして再起動し、tftpでOpenWRTのファームウェアをインストールします。

C:\>tftp -i 192.168.11.1 PUT C:\openwrt-ar71xx-generic-whr-g301n-squashfs-tftp.bin

タイミングがシビアです。
実際にはコマンドプロンプトをあらかじめ開き、上記コマンドを準備しておいて、
ルータの電源ON後、約5~8秒位経過後に「Enter」を押すようにします。※待ち時間は機種により違うようです。Try & Error でお願いします。

成功した時のメッセージ
転送を正常に完了しました: 1 秒間に 2883620 バイト、2883620 バイト/秒

失敗した時のメッセージ
タイムアウトが発生しました
接続要求に失敗しました

赤いDIAG LEDが消灯し、POWER LEDだけが安定してGreenに点灯するようになったら、Flashへの書き込みは終わっています。

確認

arp テーブルを削除しておきます。
C:\arp -d 192.168.11.1

PCのIPアドレスをDHCP または 192.168.1.2 にでも変更します。

192.168.1.1 に ping 応答が有り、 http://192.168.1.1/ で OpenWrt | OpenWrt Attitude Adjustment 12.09 のログイン画面が表示されればインストール成功です。

初期の管理ID root で PasswordなしのままLoginできます。