[上に戻る]

WZR-HP-AG300H/VにOpenWRTをインストールする手順とまとめ

シリアルポートをつかえるようにする:TTLコンバータの製作

JP版は,ロックされているため,そのままでは,OpenWRTをインストールできません.シリアルポートをつないで,ロック解除のコマンドを入れるか,ロック状態でもインストールできる,DD-WRTをいれてからOpenWRTを入れる方法があります.でも,シリアルポートがあれば,ほとんどの問題に対応できますし,内部の状況もよくわかりますので,シリアルポートを使えるようにTTL-232レベルコンバータを作成します. なお,一個作っておけば,いろんな組み込み製品で使えます.

基板上のシリアルポートは,TTLレベルのため,PCのシリアルポート(RS232)で利用出来るようにするためには,EIA232レベルへ変換(TTL-232コンバート)する必要があります.これには,チャージポンプSipex SP3232などを使います.回路図は,以下の通りです.(WZRは,Vcc 3.3Vなので,MAX232はつかえません.3.3-5V VCC対応のSP3232をおすすめします.また,MAX232を使うときは,コンデンサを1uFにしてください.)WZR側のTTL出力は,基板上の隅っこにあるMOVIEエンジンスイッチ(300H/V)近くにある,「■◎◎◎」から取り出せます.順に,VCC-GND-TX-RXです.この穴にピンヘッダをハンダコテを使って実装し,ケーブルにピンソケットを実装した方がよいでしょう.写真は,1列ICソケットを4ピン分切り出して取り付けたもので,コネクタ側は,ピンヘッダにケーブルを取り付けたものです(説明の逆の構成ですね).このコンバータは,いろんな機器につかえるので,コネクタ-ソケット接続構成にしておきましょう.

コンバータの製作 費用は,SP3232が,100円程度,秋月電子なら,0.1uFコンデンサ・ソケットを付けて売ってます(250円).DSUB9付き基盤が,300円程度,配線は,ピンヘッダソケットが,40円,IDEでつかっていたリボンケーブルやLANケーブルを切り出してつかってます.つまり,約600円程度.ハンダコテ(800円)・ハンダ(210円)がないなら,1600円程度かとおもいます.全部,秋月電子通商の通販で手に入ります.

TTL-232端子

OpenWRTのファームを送り込む

すでにOpenWRT化が完了している場合,OpenWRT機上でのscp/wgetなどによる新ファームウェアのダウンロードと,sysupgradeコマンドにて対応するのが簡便です.詳しくは,こちらをどうぞ. DD-WRT等のWEB上の「ファームウェアアップデート機能」を使って,OpenWRTファームをインストールする場合は,当該機能で,*-factory.binファイルをアップロードします.

Windows 7を利用した作業例です.作成したシリアルポートとパソコンを接続し,パソコン上で, ターミナルソフト(TeraTermやRlogin,minicomなど)を起動します.シリアルポートのパラメータは,11500bps,フロー制御無しです.WZRの電源を入れます.ブートローダが起動し,以下のようなメッセージがでてきた時点で,CTRL-Cを連打すると,起動をキャンセルして,プロンプトに落とせます.

eth1: Phy Specific Status=0010
eth1: 02:aa:bb:cc:dd:21
eth1 up
eth0 02:AA:BB:CC:DD:20
, eth1 02:AA:BB:CC:DD:21

enet0 port0 up
pll reg 0x18050010: 0x110000

(この辺で,CTRL+Cを連打)
tftp server(receive) go, waiting:
eth0 link down
Load address: 0x84000000

Abort
no file was loaded.
ar7100> (プロンプトに落ちた)

で,ファームウェアを受け付けさせるために,以下のコマンドを入力します.ついでに,tftpの待ち時間を10秒にしておきます.saveenvは設定を保存するコマンドです.

setenv accept_open_rt_fmt=1
setenv tftp_wait=10
saveenv

なお,printenvコマンドで現在の設定パラメータを確認できます.
後述する作業において,うまくいかないときは,バッファロー純正ファームで起動し,以下のコマンドを実行してください.

ubootenv set accept_open_rt_fmt 1
ubootenv set tftp_wait 10

 

WZR側の準備は,完了です.そのままにしておきます.

つぎに,Windows側です.(Windows 7 を例にしています)tftpクライアントをつかうので,コントロールパネルからプログラムと機能を開き,Windowsの機能の有効化または無効化から,「TFTPクライアント」をチェックしてインストールしてください.

なお,うまくいかない場合は,Windows Firewall等のFirewallでのTFTPの許可,または,アップロード作業中のみ,Windows Firewallや,ウイルス対策ソフトなどのFirewall機能をオフにしてください.

そして,WZRは,boot loader時に,DHCPやARPに応答しないので,Win7側に,192.168.11.2/ 255.255.255.0のアドレス,arp table(ipv4 neighbors table) へ,192.168.11.1 を02-11-bb-cc-dd-20 として登録します.

登録には,netshコマンドを使います.Windows 7の管理者権限でCMD.EXEか,PowerShellを実行します.そして,以下のコマンドを実行します.以下の1行目のコマンドは,lan0という名前のインターフェースに対して,192.168.11.2/24のアドレスを静的に登録するnetsh コマンドです.すでに,IPアドレスを設定済みの場合は,不要です.2行目のコマンドは,arp tableへ登録するコマンドです.正しく設定されたかどうかは,netsh int ipv4 show neig コマンドで確認できます.

netsh int ipv4 set add lan0 static 192.168.11.2 255.255.255.0
netsh int ipv4 add neig lan0 192.168.11.1 02-aa-bb-cc-dd-20

なお,コマンド例のlan0部分は,各自の環境にあわせたインターフェース名(ローカルエリア接続など)を指定してください.以下のように,各インターフェース名を入力しやすい名前に変更するのもよいとおもいます.また,インターフェース名の代わりに,インターフェース番号を使うこともできます.

interfaces

インターフェース番号の確認は,netsh int ipv4 show interface コマンドや,route print コマンドで,表示されるインターフェース一覧から,192.168.11.1を割り当てたインターフェースを探し,そのインターフェース番号を指定してください.

コマンドによる,インターフェース番号の把握


NETSHコマンドの場合:
PS C:\Windows\system32> netsh int ipv4 show int

Idx Met MTU 状態 名前
--- ---------- ---------- ------------ ---------------------------
1 50 4294967295 connected Loopback Pseudo-Interface 1
11 25 1500 connected wlan0
13 5 1500 disconnected wwlan0
14 5 1400 disconnected ローカル エリア接続
15 5 1500 disconnected lan0
25 0 1400 disconnected ローカル エリア接続 4
22 20 1500 connected VMware Network Adapter VMnet8

↑↓インターフェース名に対する出力結果の先頭の数字がインターフェース番号

route コマンドの場合:
PS C:\Windows\system32> route print
===========================================================================
インターフェイス一覧
15...5c ff 35 ## ## ## ......Intel(R) 82577LM Gigabit Network Connection
11...00 23 15 ## ## "" ......Intel(R) Centrino(R) Advanced-N 6250 AGN
1...........................Software Loopback Interface 1
17...00 00 00 00 00 00 00 e0 Microsoft 6to4 Adapter
12...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
29...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2
23...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #5

===========================================================================

次に,OpenWRTからファームウェアを入手します.WZR-HP-AG300Hは,開発トラック(trunk)のar71xx系なので,
http://downloads.openwrt.org/snapshots/trunk/ar71xx/
から,ファイル名が,wzr-hp-ag300h-*-tftp.bin をダウンロードします.*の部分は,お好みのファイルシステムを選びます.良くわからないときは,openwrt-ar71xx-generic-wzr-hp-ag300h-jffs2-tftp.bin でよいです.

ここからはタイミングが肝心です.コマンドプロンプトなどに,以下のコマンド入力しエンターを押さずに待機します.

tftp -i 192.168.11.1 PUT ダウンロードしたOPENWRTファームのファイル名

そして,閉じてる場合は,再度シリアルコンソールなどを開いて,WZRのシリアルをモニターする体制を整え,もし,ブートローダが起動しているなら, reset を入力(純正ファームが起動している場合は,rebootを入力)し,エンターキーを押します.これで,WZRの再起動ができます.または,電源OFF/ONにより,WZRを起動します.

起動が開始され,シリアルコンソール上に,以下のメッセージがでたら,先ほどの入力したtftpコマンドをエンターキーを押して実行します.電源投入から,約11秒程度です.

eth0 02:AA:BB:CC:DD:20
, eth1 02:AA:BB:CC:DD:21


enet0 port0 up
pll reg 0x18050010: 0x110000
tftp server(receive) go, waiting:10[sec]
Load address: 0x84000000【この辺りで,tftpコマンド実行のエンターキー押す.起動時から約11秒程度】

成功すると,プロンプト側は,

転送を正常に完了しました: 1 秒間に 2555940 バイト、2555940 バイト/秒

と表示され,シリアルコンソールには,以下のような表示がでます.

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
tftp server done
Bytes transferred = 3276836 (320024 hex)

Airstation Public header
Recv fw image [3276804] bytes, now writing...

flash-addr 0xBF060000 - 0xBF38FFFF
search sector 0xbf060000 - 0xbf38ffff
BANK #1 (6 : 56)
000 PPPP.Poooooooooooooooooooooooooo
032 ooooooooooooooooooooooooo.......

成功したときは,エンターキー直後に,「正常に完了」とでますので,2秒まって,出なかったときは,すかさず,CTRL-Cして,再度 tftpコマンドを送ってください.もし,上記のメッセージがなく,「Uncompressing Kernel Image ... OK」というように出た場合は,電源をきって,やり直してください.

インストールが完了すると,OpenWRTが起動します.

BusyBox v1.19.4 (2012-07-03 16:55:03 UTC) built-in shell (ash)
Enter 'help' for a list of built-in commands.

_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
ATTITUDE ADJUSTMENT (Bleeding Edge, r32587)
-----------------------------------------------------
* 1/4 oz Vodka Pour all ingredients into mixing
* 1/4 oz Gin tin with ice, strain into glass.
* 1/4 oz Amaretto
* 1/4 oz Triple sec
* 1/4 oz Peach schnapps
* 1/4 oz Sour mix
* 1 splash Cranberry juice
-----------------------------------------------------
root@OpenWrt:/#

tftpが完了した後は,先ほどのarp登録を削除しておきます.

netsh int ipv4 del neigh 15 192.168.11.1 02-aa-bb-cc-dd-21

OpenWRT in WZR-HP-AG300H の初期状態では,4ポートのLAN端子(黒い部分)は,各ポートが,L2スイッチ,その上のL3として,br-lan0 192.168.1.1/24が割当されており,青い端子は,上位のネットワークへの接続が想定されており,DHCPクライアントによるIPアドレス取得待ち状態となっています.

そこで,以下のように Windows 側に 192.168.1.2/24 を固定アドレスを割り当てて,telnetやsshにてOpenWRTへアクセスできるようにします.

netsh int ipv4 set add lan0 static 192.168.1.2 255.255.255.0

IPアドレス設定後に,LANケーブルを4ポートLAN端子に接続します.初期状態ならば,telnetにて接続可能です.

telnetやシリアルから,passwdにて,rootパスワードを設定した時点で,telnetが disableされ,以後は,シリアルか,sshでの接続になります.

なお,Windows側のIPアドレスをDHCP取得に戻すときは,

netsh int ipv4 set add lan0 source=dhcp

です.

【Tips】Windows Firewallの設定

tftp転送が成功しない場合,Windows Firewall を疑ってください.シリアルコンソール上で,以下のような感じの表示のあと,Timeoutする症状が該当します.

O O O O O

Windows 7での対応は,,Firewallの設定において,tftpクライアント,つまり,「管理ファイル転送アプリケーション」を許可する必要があります.もし,ウイルス対策ソフトなどにFirewall機能がある場合は,同様に,許可を設定してください.

具体的には,「コントロールパネル」-「Windows ファイヤーウォール」-「Windowsファイヤーウォールを介したプログラムまたは機能を許可する」を開き,「設定の変更」をクリック.「別のプログラムの許可..」で「参照」で,\Windows\System32\tftp.exe を指定し,「追加」をします.

tftp.exe

あとは,「簡易ファイル転送プロトコルアプリケーション」にたいして,「ホーム/社内」(「パブリック」は不要だとおもいますが)を許可すれば,完了です.

 

以上です.