SSブログ

Buffalo WHR-G300N OpenWrt [OpenWRT/DD-WRT]

WHR-G300N 用の OpenWrt ファームウェアのビルドは、6ヶ月前に記事を書いていたが、その記事が中途半端な内容で、手順が分からなくなってしまった。
6ヶ月前位になるとほとんど忘れている。
確認が相当大変だったので、再確認した手順を書くことにした。

ビルドは BackTrack 5 R3 で行った。

adduser atc500
su - atc500
svn co svn://svn.openwrt.org/openwrt/trunk/ –r30645
cd trunk
./scripts/feeds update
./scripts/feeds install luci
./scripts/feeds install webif
./scripts/feeds install netperf

  • スナップショット 30645 より新しいリビジョンだと、ファームイメージファイル *whr-g300n-squashfs*.bin が生成されない。 
  • luci,webif は、OpenWrt の webUI。xwrt はwebif でインストールする。luciの最新版はエラーで開かないページがあった。 netperf はオプション。
  • 一般ユーザでビルドする。

cd trunk/target/linux/ramips/files/arch/mips/ralink/rt305x
vi mach-nw718.c   (最終行)
MIPS_MACHINE(RAMIPS_MACH_NW718, "NW718", "Netcore NW718", nw718_init);

  • mach-nw718.c の最終行が、たぶん間違っていて、赤字のところが WHR_G300N になっているのを、NW718に修正する。修正しないとNW718 用ファームになり、WHR-G300N では、kernel panic で起動できない。
  • もしも修正しないでビルドしてしまったら、trunk/build_dir 下の mach-nw718.c も探して修正する。

make menuconfig
-------
Target System (Ralink RT288x/RT3xxx)
Subtarget (RT305x based boards) 
Target Profile (Default Profile) 
Target Images  ---> [*] squashfs 
Administrations –> webif

  • WHR-G300N は RT3052なので RT305x を選択する。
  • イメージはsquashfs とする。
  • webif を選択すると、x-wrt が管理用 WebUI になる。

make V=99 j=4

  • trunk/bin/ramips/にビルドイメージが出来る。今回使うのは、openwrt-ramips-rt305x-whr-g300n-squashfs-sysupgrade.bin
  • 30645 以降のリビジョンでは、*-whr-g300n-squashfs*.bin が出来ない。

ビルドイメージでのファーム更新は、オリジナルのWeb管理画面のファーム更新機能で行える。

すでに OpenWrt が入っている場合は、scp でファイル転送して、ssh でsysupgrade コマンドを実行する。

ifconfig eth0 192.168.1.3
scp openwrt-ramips-rt305x-whr-g300n-squashfs-sysupgrade.bin 192.168.1.1:/tmp/.
ssh 192.168.1.1
sysupgrade –n –v /tmp/openwrt-ramips-rt305x-whr-g300n-squashfs-sysupgrade.bin

OpenWrt が起動不能(kernel panic 等)になってしまった場合、基板のシリアルのランドに、PC をシリアル接続して、run ut_fw コマンドを実行する。このコマンドは、tftp サーバからファイルを取得するので、WHRの黒LANポートのいずれかに、PCを接続する。

minicom –s
/dev/ttyUSB0 /57600 /8N /1 /No /No
WHR 起動
:
Please choose the operation:
   1: Load system code to SDRAM via TFTP.
   2: Load system code then write to Flash via TFTP.
   3: Boot system code via Flash (default).
   4: Entr boot command line interface.
   9: Load Boot Loader code then write to Flash via TFTP.
You choosed 4
:
RT3052 # run ut_fw

  • 起動直後メニューが表示されたら、 素早く 4 を入力する。
  • 次項のtftpサーバセットアップ後、run ut_fw を実行する。

cp openwrt-ramips-rt305x-whr-g300n-squashfs-sysupgrade.bin /tftpboot/firmware.bin
ifconfig eth0 192.168.1.3
atftpd --daemon /tftpboot

  • ファームイメージファイルは、firmware.bin にリネームする。
  • WHR は固定のIPアドレス 192.168.1.1 が設定されている。
  • PC は 192.168.1.3 に設定する必要がある。
    (WHR では、tftpサーバを 192.168.1.3 に設定しているため)

シリアル接続は、USBシリアル変換モジュールを使った。

WHR-G300N のシリアルのランドとアサインは以下のとおり。

 


【プラネックス MZK-MR150 Realtek ファームウェア】 [OpenWRT/DD-WRT]

MZK-MR150 で,Realtek SDKでビルドした FW が動作した。今のところ動作に不具合はない。
MZK-MR150はRealtek RTL8196C SoCチップが載っている。
このチップはOpenWrt未サポートだ。
RTL819XプロジェクトからSDKをダウンロードできる。

cd rtl819x
make menuconfig
make

オリジナルFWのWeb管理画面で,FWアップデートを試みたがエラーではじかれる。
ダウンロードした Realtek SDK の中に,SDK マニュアルがある。シリアルからのFW更新は,ESCキーでブートを中断して,ブートローダーのtftpd機能を使う。
いつもどおり,USBシリアル変換モジュールを接続して,PCをコンソール接続した。

P1070070

分解は,ネジ2本を外して,後はマイナスドライバ等でこじ開ける。前記事
基板のシリアルは,VCC-TX-RX-GND で四角枠がVCC。埋まっているハンダを取り除くとホールになるので,ピンヘッダをハンダ付けした。

PC (BackTrack linux)から,minicom でシリアル接続する。/dev/ttyUSB0, 38400
シリアルとLANでPCを接続して,MZKの電源オン,ESCでブートを中断する。

no sys signature at 000CF000!
Set 8196C PHY Patch OK

---Ethernet init Okay!
<RealTek>

PC からFWをtftp転送する。MZKは192.168.1.6 固定になる。

cd rtl819x-sdk-v2.5_2.5.1_2.5.2_boa/rtl819x/image
ifconfig eth0 192.168.1.3

atftp -p -l webpages-gw.bin 192.168.1.6
atftp -p -l root.bin 192.168.1.6
atftp -p -l linux.bin 192.168.1.6

FW転送時のコンソール表示

---Ethernet init Okay!
<RealTek>
*TFTP Client Upload, File Name: webpages-gw.bin
\
**TFTP Client Upload File Size = 1E368 Bytes at 80500000
Success!
<RealTek>
Webpages upgrade.
checksum Ok !
burn Addr =0x10000! srcAddr=0x80500000 len =0x1e368 
...............................
Flash Write Successed!
<RealTek>
**TFTP Client Upload, File Name: root.bin
|
**TFTP Client Upload File Size = FF012 Bytes at 80500000
Success!
<RealTek>
Root filesystem upgrade.
checksum Ok !
burn Addr =0x100000! srcAddr=0x80500010 len =0xff002 
.............................................................................................
Flash Write Successed!
<RealTek>
**TFTP Client Upload, File Name: linux.bin
\
**TFTP Client Upload File Size = C7C12 Bytes at 80500000
Success!
<RealTek>
Linux kernel (root-fs) upgrade.
checksum Ok !
burn Addr =0x30000! srcAddr=0x80500000 len =0xc7c12 
.............................................................................................
Flash Write Successed!
<RealTek>
reboot.......

転送が終わると,MZKは自動再起動する。

FW書き換え後のWeb管理画面

rtl8197c2

オリジナル

rtl8196c1

現状telnet接続ができない。またUSBデバイス*も認識しない。たぶんビルド時に選択できると思う。(*MZK-MR150はUSBコネクタが1つある,電源コネクタもUSB端子形状だ)

ブート表示

Booting...
========== SPI =============
 
---RealTek(RTL8196C)at 2010.09.10-11:24+0800 version v1.1f [16bit](390MHz)
no sys signature at 00010000!
no sys signature at 00020000!
no rootfs signature at 000E0000!
no rootfs signature at 000F0000!
no rootfs signature at 00130000!
no rootfs signature at 001D0000!
no rootfs signature at 001D1000!
no rootfs signature at 001D2000!
no rootfs signature at 001D3000!
no rootfs signature at 001D4000!
no rootfs signature at 001D5000!
no rootfs signature at 001D6000!
no rootfs signature at 001D7000!
no rootfs signature at 001D8000!
no rootfs signature at 001D9000!
no rootfs signature at 001DA000!
no rootfs signature at 001DB000!
no rootfs signature at 001DC000!
no rootfs signature at 001DD000!
no rootfs signature at 001DE000!
no rootfs signature at 001DF000!
no rootfs signature at 001E0000!
no rootfs signature at 001E1000!
no rootfs signature at 001E2000!
no rootfs signature at 001E3000!
no rootfs signature at 001E4000!
no rootfs signature at 001E5000!
no rootfs signature at 001E6000!
no rootfs signature at 001E7000!
no rootfs signature at 001E8000!
no rootfs signature at 001E9000!
no rootfs signature at 001EA000!
no rootfs signature at 001EB000!
no rootfs signature at 001EC000!
no rootfs signature at 001ED000!
no rootfs signature at 001EE000!
no rootfs signature at 001EF000!
no rootfs signature at 001F0000!
no rootfs signature at 001F1000!
no rootfs signature at 001F2000!
no rootfs signature at 001F3000!
no rootfs signature at 001F4000!
no rootfs signature at 001F5000!
no rootfs signature at 001F6000!
no rootfs signature at 001F7000!
no rootfs signature at 001F8000!
no rootfs signature at 001F9000!
no rootfs signature at 001FA000!
no rootfs signature at 001FB000!
no rootfs signature at 001FC000!
no rootfs signature at 001FD000!
no rootfs signature at 001FE000!
no rootfs signature at 001FF000!
no rootfs signature at 00200000!
no rootfs signature at 00201000!
no rootfs signature at 00202000!
no rootfs signature at 00203000!
no rootfs signature at 00204000!
no rootfs signature at 00205000!
no rootfs signature at 00206000!
no rootfs signature at 00207000!
no rootfs signature at 00208000!
no rootfs signature at 00209000!
no rootfs signature at 0020A000!
no rootfs signature at 0020B000!
no rootfs signature at 0020C000!
no rootfs signature at 0020D000!
no rootfs signature at 0020E000!
no rootfs signature at 0020F000!
Jump to image start=0x80500000...
decompressing kernel:
Uncompressing Linux... done, booting the kernel.
done decompressing kernel.
start address: 0x80003600
RTL8192C/RTL8188C driver version 1.4 (2010-12-22)
init started: BusyBox v1.13.4 (2012-07-02 18:56:22 JST)
Default configuration invalid, reset default!
MIB Version update
Init Start...
Init bridge interface...
Init Wlan application...
WiFi Simple Config v1.19 (2011.05.30-06:30+0000).
Register to wlan0
route: SIOCDELRT: No such process
iwcontrol RegisterPID to (wlan0)
IEEE 802.11f (IAPP) using interface br0 (v1.7)
Init WAN Interface...
#



【Buffalo WHR-G300N OpenWRT Reaver WebUI プログラム(試作)】 [OpenWRT/DD-WRT]

前にこの無線ルータでは,OpenWRT のビルドと reaver の実行に成功している。
Buffalo WHR-G300N の OpenWRT ビルドと reaver-wps

Haserl は,シェルスクリプトを使って cgi web スクリプトが作成できる。
reaver を web で実行するプログラムを作ってみた。
パソコンを WHR-G300N の LAN I/F に接続して,http://192.168.1.1/cgi-bin/r.cgi で接続する。
ターゲット AP の essid,mac(bssid),チャンネルを入力して実行すると,reaver がバックグラウンド起動する。
*** Reaver Web UI *** 

reaver14

reaver15

作成した haserl の cgi プログラムは,OpenWrt 上の /www/cgi-bin/r.cgi。
実行属性を追加する。 (chmod a+x r.cgi) 
*** プログラム r.cgi ***

#!/usr/bin/haserl
content-type: text/html
<html>
<body>
<form action="<? echo -n $SCRIPT_NMAE ?>" method="POST">
<h1>Reaver Web UI Form</h1>
<input type=hidden name=action value=post>
<? #ストップでreaverをkillしてmon0を削除,ログもクリア
   if [ "$GET_halt" = "on" ]; then
      echo -n "<pre>"
      pkill -f reaver
      rm /tmp/reaverlog
      airmon-ng stop mon0
      echo -n "<p>Reaver Stopped</p></pre>"
   fi
?>
<p>__essid_: <input type=text name=essid value="<? echo -n $FORM_essid ?>" size=20></p>
<p>__MAC_: <input type=text name=mac value="<? echo -n $FORM_mac ?>" size=20></p>
<p>channel: <input type=text name=ch value="<? echo -n $FORM_ch ?>" size=2></p>
<pre>
<? # ポストされたらreaverを実行
   if [ "$FORM_action" = "post" ]; then
       if ! [ -f /tmp/reaverlog ]; then
          iwconfig wlan0 essid $FORM_essid channel $FORM_ch
          ifconfig wlan0 up
          airmon-ng start wlan0
          reaver -i mon0 -b $FORM_mac -D -c $FORM_ch -o /tmp/reaverlog -vv
       fi
       tail -n 20 /tmp/reaverlog
?>
    </pre>
    <p><input type=submit value="Reload">
    <input type=button value="Stop" onClick="location.href='r.cgi?halt=on'"></p>
<? else ?>
    <p><input type=submit value="Start"></p>
<? fi ?>
</form>
</body>
</html>

<? ~ ?> のところに,リナックスのコマンドが書ける。$FORM_xxx で post されたフォームデータが参照できる。  

参考: OpenWrt / How do i get haserl to work?
       http://haserl.sourceforge.net/

reaver は,-o [file名]でファイル出力できる。また –D でデーモン起動できる。リロードした時に tail でログファイルを表示する。
エラー判定もしてないし,まだ試作段階なので,もっと工夫が必要だ。
haserl の情報はすごく少ないが,OpenWrt の X-Wrt(web管理画面)で使われているらしい。


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。