2015年7月31日金曜日

Linksys WRT54G V2 の SD カードは Tomato で動作

先日 SD カードソケットを追加したリンクシス WRT54G V2 ですが、OpenWrt で動作しませんでした。その後 Tomato ファームウェアにも SD カードに対応したファームウェアが存在していることを発見して、この SD カード対応の Tomato ファームウェアをインストールして動作確認を行いました。しかし SD カードが動作するまでには苦難の道のりが待っていました(笑)。

SD カード対応版の Tomato ファームウェアで確認ができました。
要点を最初に述べるべきなのか、それとも実際に苦労した過程の順番に記述するべきか悩みました。

・・・要点から述べることとしました。

SD カードソケットへの配線間違え

まず SD カードソケットへの配線が参考にした OpenWrt の Wiki のページに誤りがありました。その間違えに気づいたのが、SD カード対応の Tomato ファームウェアをインストールしてから判明しました。当初はやはり Tomato ファームウェアでも動作しませんでした。そこで再度 SD カードの配線を見直すことから始めました。

イーサネット・スイッチ IC の ADM6996L のデータシートを探し出し、ピン配置(pinout)から集合抵抗器の RP3 から SD カードソケットへどのように配線されているか観察しました。ここで間違えが判明しました。ADM6996L と RP3 の関係は次のようになっていました。参考にしたものは SD #5(CLK)SD #7(DO) が入れ違っていました。
ADM6996L #80(EECS)--RP3--GPIO2--(未使用)
ADM6996L #81(EECK)--RP3--GPIO3--SD #5(CLK)
ADM6996L #84(EDO)---RP3--GPIO4--SD #7(DO)
ADM6996L #79(EDI)---RP3--GPIO5--SD #2(DI)
WRT54G V2 の場合、このように SD カードへ配線してください。

GPIO の割り当て
 CS - GPIO7
 CLK - GPIO3
 DI - GPIO5
 DO - GPIO4
[ 補足説明 ]
イーサネット・スイッチ IC の ADM6996L と SD カードは、共に GPIO の DI(データ入力), DO(データ出力), CLK(クロック信号) の三つの信号を共用します。ADM6996L と SD カードは、CS(チップセレクト)信号により、どちらのデバイスを有効にするか指定します。そのため CS 信号は共用できない理由になっています。GPIO2 が ADM6996L、GPIO7が SD カードの割り当てとなっています。

Tomato ファームウェアのバージョン

上記の通り SD カードソケットへの配線間違えを修正しましたが、すぐに SD カードを認識してくれたわけではありませんでした。
元々は、私が愛用している 2.4 系 Linux を使用した Shibby 版の Tomato ファームウェア(tomato-ND-1.28.5x-124-SD-VPN.trx)で動作確認を行なっていました。この Shibby 版の Tomato ファームウェアでは、 SD カードのモジュールを有効にするとモジュールエラーとなってしまって、SD カードを認識することはありませんでした。単純なソフトウェア上の問題なのか?それともハードウェアに依存するエラーなのかは不明でした。

そこで SD カードモジュールが追加されたオリジナル版の Tomato ファームウェアをインストールしてみました。すると SD カードを認識して、読み書きも問題なく出来ました。

Tomato ファームウェアの SD カードの設定画面です。

FON2100E の SD カードの時もそうでしたが、古いバージョンで動作することがこの Tomato ファームウェアでみられました。どうも最近は SD カードを追加する改造をする人が少なく、このようなファームウェアの問題点を指摘する人も少なくなっているのでしょうか?
参考ウェブサイト
Tomato firmware with SDHC mod - Gemini
http://gemini.net.pl/~slodki/tomato-sdhc.html
tomato-sdhc-ND-1.28.01
http://gemini.net.pl/~slodki/tomato-sdhc-ND-1.28.01.7z

さてここまで検証したところで、真打の OpenWrt Attitude Adjustment 12.09 を再度インストールしなおして、動作確認をしてみました。やはり動作エラーで SD カードを認識しませんでした。どうも SD カード関連のモジュールエラーのようです。

OpenWrt の場合、システムメモリの容量不足で特定のバージョンまでしか十分に動作させることが出来ないようです。システムメモリを増加させた WRT54G で、新しいバージョンのファームウェアの検証が十分に行われていないのかもしれません。

WRT54G については、もう少し検証を重ねてみたいと思っています。

[追記:2015-07-30]

どうも無線LANの設定などを行うと、何故か SD カードの内容が破壊されてしまうようです。そのため SD カードが認識され無くなってしまいます。SD カードを再度フォーマットし直して、挿し直すと認識するようになります。どうもファームウェアが安定していないようです。

0 件のコメント:

コメントを投稿

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