フォト
2017年5月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ

« Androidタブレット CubeU9GT5 のファームウェア更新 | トップページ | 無線LANルータ LAN-W300N/G8 のカスタムファームウェアの作成 »

2013年9月17日 (火)

無線LANルータ LAN-W300N/G8 のファームウェアの展開

ロジテック製 無線LANルータ LAN-W300N/G8 用ファームウェアの展開

現在公開されている v1.03のファームウェアをカスタマイズを考えています。
その準備として、ファームウェアのイメージファイルを解凍してファイルを取り出せる
ようにします。

イメージファイル: LAN-W300NG8_v1.03.bin

Realtek SDKやインターネット上の資料を元に調査したところ、イメージファイルは
次のような構造になっています。

3つのバイナリーブロックに分かれています。
 ブロック                  データ格納位置(16進)    サイズ(16進)          形式
[WEBPAGES]   00000000 - 000176c1   176b2     webpage :bzip2形式
[LINUX]           000176c2 - 000ee6d3   d7002     バイナリ
[ROOTFS]       000ee6d4 - 001ea6e3    fc002     Squashfs-lzma

まずは、各データの切り出し。作業はCentOS上で行いました。
# dd if=LAN-W300NG8_v1.03.bin of=webpages.bin bs=1 skip=16 count=95922
# dd if=LAN-W300NG8_v1.03.bin of=linux.bin bs=1 skip=95954 count=880642
# dd if=LAN-W300NG8_v1.03.bin of=rootfs.bin bs=1 skip=976612 count=1032194

それそれのブロックには16バイトのヘッダー情報がありその部分は、
スキップしています。
これで、webpages.bin、linux.bin、rootfs.bin が得られました。
念のためfileコマンドで確認します。
# file webpages.bin
    webpages.bin: bzip2 compressed data, block size = 900k
# file linux.bin
    linux.bin: data
# file rootfs.bin
    rootfs.bin: Squashfs filesystem, little endian, version 4.0, 1030543 bytes, 226 inodes,
    blocksize: 131072 bytes, created: Tue May  6 15:28:16 1902

次に各ファイルの解凍
1) webpages.bin
# bunzip2 webpages.bin
   bunzip2: Can't guess original name for webpages.bin -- using webpages.bin.out
   bunzip2: webpages.bin: trailing garbage after EOF ignored

なんかエラーでましたが、解凍はできました。
解凍ファイルはwebpages.bin.out となります。

webpages.bin.out は、ルータ内の/var/web下のファイルを1つに纏めたものものです。
更にこれの解凍が必要ですが、形式がSDK独自の形式で苦労しました。
結局、SDKのflashコマンドのソースを切り出してコマンドを自作しました。
weboutというコマンドです。

webpages.bin.out の解凍
# mkdir web
# webout webpages.bin.out web
size=657002
file=web/wizard.asp
file=web/macfilter.asp
file=web/home.asp
file=web/menu-images/menu_tee_minus.gif
file=web/menu-images/menu_tee.gif
・・・・
(以下省略)
# cd web
# ls

03

これで、webページのファイルが展開できました。

2)linux.bin
  このファイルはLinuxのカーネルです(たぶん)。
  特にいじる必要が無いのでこのままにします。

  2013/09/18 追記
 
カスタムファームウェア作成時、ヘッター部が必要なことが判明しました。
  linux.bin をヘッター部16バイト付の作成は次のコマンドを実行します。
  # dd if=LAN-W300NG8_v1.03.bin of=linux.bin bs=1 skip=95938 count=880658

3)rootfs.bin
  このファイルはルーターの / 以下のファイルシステムです。
  単なるSquashfs形式(圧縮ファイルシステム)かと思い、unsquashfs コマンドを
  試すと次のエラーが発生。
  # unsquashfs rootfs.bin
  Parallel unsquashfs: Using 2 processors
  zlib::uncompress failed, unknown error -3
  read_block: failed to read block @0xfb709
  read_fragment_table: failed to read fragment table index
  FATAL ERROR aborting: failed to read fragment table

  squashfs-toolsの最新版(4.2)のソースをコンパイルして試してもだめ
  # unsquashfs rootfs.bin
  Filesystem uses lzma compression, this is unsupported by this version
  Decompressors available:
     gzip
     xz

lzma形式未対応のようで、lzma対応版を入手して試す
#unsquashfs-lzma rootfs.bin
Parallel unsquashfs: Using 2 processors
uncompress failed, unknown error 1
read_block: failed to read block @0xfb709
read_fragment_table: failed to read fragment table index
FATAL ERROR aborting: failed to read fragment table

お手上げ状態。いろいろ調べ「ままれのblog」さんの記事に行きつきました。
参考にした記事:CQW-MRB2: ファーム更新失敗と復旧
   Edimax 3G6218Nのホームページへ行き、GPL Source Codeをダウンロードします。

のリンクから3G-6218n_RTL8196C_3G_GPL_20110121.zip を入手して
解凍しunsquashfs コマンド 取り出して利用しました。
あっけなく解凍できました。

  # unsquashfs rootfs.bin
  Parallel unsquashfs: Using 2 processors
  211 inodes (223 blocks) to write
  [==========================================================/] 223/223 100%
  created 99 files
  created 15 directories
  created 70 symlinks
  created 42 devices
  created 0 fifos


  # cd squashfs-root
  # ls -l
  合計 40
  drwxr-xr-x 2 root root 4096  9月 30 10:35 2011 bin
  drwxr-xr-x 2 root root 4096  9月 30 10:35 2011 dev
  drwxr-xr-x 4 root root 4096  9月 30 10:35 2011 etc
  drwxr-xr-x 2 root root 4096  9月 30 10:35 2011 home
  lrwxrwxrwx 1 root root    8  9月 17 20:42 2013 init -> bin/init
  drwxr-xr-x 2 root root 4096  9月 30 10:35 2011 lib
  drwxr-xr-x 2 root root 4096  9月 30 10:35 2011 mnt
  drwxr-xr-x 2 root root 4096  9月 30 10:35 2011 proc
  drwxr-xr-x 2 root root 4096  9月 30 10:35 2011 sys
  lrwxrwxrwx 1 root root    8  9月 17 20:42 2013 tmp -> /var/tmp
  drwxr-xr-x 3 root root 4096  9月 30 10:35 2011 usr
  rwxr-xr-x 2 root root 4096  9月 30 10:35 2011 var
  lrwxrwxrwx 1 root root    8  9月 17 20:42 2013 web -> /var/web
   
とりあえず、イメージファイルの解凍ができました。

2013/09/18 追記
  後からSDKを調べると、unsquashfs-tools のソースが含まれていました。
   # cd ./rtl819x-SDK-v3.2.3/rtl819x/users/squashfs4.0/squashfs-tools
   # make
  これでコンパイルすればunsquashfs、ununsquashfs が作成できます。
  このコマンドの利用で解凍できました。

次は、ファイルを固めてファームウェアファイル(イメージファイル)を作成する
方法と、tftpによるファームウェアの流し込み方法について調査します。

ここまでの作業で、次のサイトを参照させていただきました。感謝です。
ままれのblogCQW-MRB2: ファーム更新失敗と復旧
Royal WindowsRealtek SDK Firmware USBメモリの接続 MZK-MR150

 

« Androidタブレット CubeU9GT5 のファームウェア更新 | トップページ | 無線LANルータ LAN-W300N/G8 のカスタムファームウェアの作成 »

LAN-W300N/G8」カテゴリの記事

パソコン周辺機器」カテゴリの記事

コメント

おおお、素晴らしい! 調査お疲れ様です。かなり試行錯誤
なさっているご様子、更なる進捗に期待しております。

当方、LAN-W300N/G8絡みでは最近チップにヒートシンクを
取り付けてみました。やはりそれなりに熱を持つ様子ですので。

取り敢えず大小のチップ計4つに取り付けを行い、短時間
確認した所、まだ筐体の吸排気口には手を加えておりませんが
そこそこ上手く放熱出来ている模様です。

設定変更後の再起動時、たまに応答しなくなる事があったので
これで多少なりとも改善してくれれば良いのですが… 
ファーム起因なら無意味でしょうけどw

Very great post. I simply stumbled upon your blog and wanted to mention that I’ve really loved browsing your blog posts. After all I’ll be subscribing in your feed and I am hoping you write again soon!

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/571408/58214405

この記事へのトラックバック一覧です: 無線LANルータ LAN-W300N/G8 のファームウェアの展開:

« Androidタブレット CubeU9GT5 のファームウェア更新 | トップページ | 無線LANルータ LAN-W300N/G8 のカスタムファームウェアの作成 »