TFTPでのインストール方法(3)OpenWRT-BHR-4GRV編


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

BHR-4GRVでのTFTPインストール方法を記述しますが、同様の手法が使える機種はそこそこありそうです。

BHR-4GRVでのTFTPインストール方法

作業用PCはWindowsを前提としますが、他のOSでも対応可能です。

準備

ソフトウェア

BHR-4GRV専用のOpenWrt 12.09 ファームウェアはありませんが WHR-HP-G450H のもので代用できます。以下のファームウェアをダウンロードし、C:¥ 直下に置いておきます。
openwrt-ar71xx-generic-wzr-hp-g450h-squashfs-tftp.bin

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

ハードウェア

あらかじめUSBポートに適当なUSBメモリを挿しておきます。標準ファームウェアのバックアップに使います。

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

debugモードの認証がうまくいかない場合には、一度全てのブラウザを閉じてから再度試してみてください。

debugモードへのアクセス

一度全てのブラウザを閉じてから、以下のURLにアクセスします。
http://<RouterのIP>/cgi-bin/cgi?req=frm&frm=py-db/55debug.html
例:  http://192.168.11.1/cgi-bin/cgi?req=frm&frm=py-db/55debug.html
ID:bufpy
Password: otdpopy + 管理者パスワード(設定してある場合)
成功するとdebugメニュー画面が出るので telnetd を選択して、telnetd を起動します。

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

flashメモリバックアップ

ルータのIPに対してtelnet接続した後、
USBメモリがマウントされている場所に移動します
#cd /mnt/usb0_0/

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

表示されたMTDブロックを確認し全てddで取得します。
#dd if=/dev/mtdblock/0 of=mtd0.dd
#dd if=/dev/mtdblock/1 of=mtd1.dd
#dd if=/dev/mtdblock/2 of=mtd2.dd
#dd if=/dev/mtdblock/3 of=mtd3.dd
#dd if=/dev/mtdblock/4 of=mtd4.dd
#dd if=/dev/mtdblock/5 of=mtd5.dd
#dd if=/dev/mtdblock/6 of=mtd6.dd
※4と6は少しが時間かかります。まれに再起動がかかることがありますが、落ち着いてやり直します。

flashパーティション情報もファイルに残しておきます。
#cat /proc/mtd > mtd.txt

次で確認するu-boot変数もファイルとして残しておきます。
#ubootenv list > ubootenv.txt

usbメモリ上にファイルができていて、容量が0byteではないことを確認します。
# ls -l /mnt/usb0_0/

uboot変数の確認と変更

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

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

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-22  ※ここのIP/MACアドレスは u-boot変数 ipaddr、uboot_ethaddrに準じます。MACアドレスの区切り文字は - に変えます。

Windows Vista 以降でうまく 機能しない場合には netsh コマンドを試してみてください。
C:\netsh interface ipv4 set neighbors "ローカルエリア接続" 192.168.11.1 02-AA-BB-CC-DD-22 store=active ※"ローカルエリア接続"のところは環境によって異なります。Windows8の場合は"イーサネット"になると思います。

登録できた場合には以下のコマンドで確認できます。
C:\>arp -a
インターフェイス: 192.168.11.2 --- 0x1
 インターネット アドレス 物理アドレス           種類
 192.168.11.1           02-aa-bb-cc-dd-22     静的 ←ここが動的ではなく静的になっていれば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-wzr-hp-g450h-squashfs-tftp.bin

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

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

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

赤い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できます。