2015年4月18日土曜日

Linksys E3000 の CFE 復旧後の出来事

[お詫び] この記事で記述しているファームウェアの TFTP の流し込みインストールですが、いろいろと検証すると間違えでした。この方法で解決できるわけではありません。

先日、ようやく CFE 部分の復旧ができましたが、動作状況は、良い意味でも・悪い意味でも以前と変わりませんでした。DD-WRT などのファームウェアを TFTP により、流し込もうとしても、途中で転送が中断してしまいます。また E3000 側から TFTP で吸い上げる方法でも、やはり転送が途中で止まってしまいます。

新しい CFE での挑戦

もしかしてダウンロードしてきた CFE に問題があったのではないかと考えて他に E3000 用の CFE はないものかと探してみました。以下の URL に別の CFE (e3000_cfe_V21.bin)を発見しました。
dd-wrt.com Forum -- Change your 610n V2 into an E3000
http://www.dream-it.dd-wrt.de/phpBB2/viewtopic.php?t=279325&view=next&sid=ae449a4fe4d926c59272855aa5d1476f

e3000_cfe_V21.bin をダウンロードした後、バイナリエディタの ghex によって、mac , serial-number , pin-code を書き換えました。編集が終了した e3000_cfe_V21.bin を CFE.BIN と名前を変更して TJTAG 3.0.2 Final で Jtag 経由で書き換えました。

CFE の消去
# ./tjtag3 -erase:cfe /fc:43 /cable:DLC5 /byte_mode /skipdetect

CFE の書き込み

# ./tjtag3 -flash:cfe /fc:43 /cable:DLC5 /byte_mode /skipdetect /noerase

新しい CFE の書き換え終了後に、早速再起動してみましたが、TFTP によるファームウェアの転送が出来ない状態に変化はありませんでした。


ifconfig で E3000 の eht0 を変更

CFE の変更でも変化がなかったことからかなり落胆をしてしまいました。
やはり TFTP 転送でデータが転送できない原因を突き止める必要がありました。
CFE のプロンプト画面で help コマンドにより、一つずつコマンドを確認してみました。E3000 用の CFE コマンドは、他の CFE 搭載の機種よりもコマンド数がかなり数が少なくなっていて、設定できることが限られていることが特徴でした。

以前、イーサネットのスピードの問題が DD-WRT の掲示板などに掲載されていたことから、この転送速度を制約する方向で設定の見直しなどを行なってみましたが、全然状況に変化がありませんでした。

いろいろとイーサネット関連のコマンド(et, ifconfig)を行なっていたところ、E3000 の IP アドレスを変更しようとしても、常に 192.168.1.1 に固定されている状況が気になっていました。なぜ変更できないのか不明なまま、変更作業を繰り返していると、ようやく IP アドレスの変更ができるようになりました。一度 ifconfig コマンドの -off オプションでイーサネット・デバイスを停止させた後に IP アドレスが変更できることを発見しました。
CFE> ifconfig eth0 -off
CFE> ifconfig eth0 -addr=192.168.1.2 -mask=255.255.255.0

これにより、新しく 192.168.1.2 という新しい IP アドレスが設定できました。また CFE 部分で動作していた DHCP サーバも停止するようです。


DD-WRT のインストール

この状態で 192.168.1.2 へ TFTP 転送で DD-WRT のファームウェアを流し込むと途中で停止することなく最後までファームウェアを読み込んでくれました。
E3000 の CFE 上での作業
CFE> flash -ctheader : flash1.trx
Reading :: CODE Pattern is CORRECT!
upgrade_ver[v4.20.6] upgrade_ver[42006] 4712_ver[0]
Done. 5006336 bytes read
fname=flash1.trx
CODE Pattern is correct! (61XN)
Programming...done. 5006304 bytes written
*** command status = 0


パソコン(Debian Wheezy)上の TFTP 作業
$ tftp 192.168.1.2
tftp> binary
tftp> trace
tftp> rexmt 1
tftp> timeout 60
tftp> put dd-wrt.v24-14929_NEWD-2_K2.6_std_usb_ftp-e3000.bin

CFE のプロンプトが戻ってきたところで go コマンドで DD-WRT を起動させてみました。
CFE> go
  ↓
  ↓
Kernel panic - not syncing: No init found.  Try passing init= option to kernel.

残念ながらカーネル・パニックで停止してしまいました。このあと、CFE 上で nvram erase コマンドを使って、NVRAM を初期化してみましたが、少し状況が変わっただけでカーネル・パニックとなってしまいました。


Shibby 版 Tomato のインストール

そこで Shibby 版の Tomato ファームウェア(tomato-E3000USB-NVRAM60K-1.28.RT-MIPSR2-128-VPN.bin)を上記と同じ方法でインストールしてみました。インストールは成功したものの、やはりカーネル・パニック状態となってしまいました。ここで NVRAM の初期化を行なって再起動させたところ、とんでもない状況になってしまいました。起動からすぐに再起動を繰り返して、CFE のプロンプトを表示させることが出来ない状態です。私が入手した当時の状況になってしまいました。これは、元の状態まで戻ってきたという意味でもあります。

今後の作業予定

もう CFE 部分を消去してしまうという間違えは犯しません(笑)。 
JTAG で kernel と nvram の部分を消去した後、再度、他のファームウェアをインストールして、動作状況を確認してみたいと思っています。
 

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。