Buffalo WBR-G54 のシステムメモリ 32MB 化

フラッシュメモリのバックアップの終わった バッファロー WBR-G54 のシステムメモリを 16MB から 32MB へ拡張しました。

メモリチップの交換

作業は以前行った WLA-G54 と全く一緒の作業を行いました。現在搭載されている二枚の 8MB SDRAM (VG36641641DT-7L) を取り外して、新しく 16MB SDRAM (MT 48LC8M16A2-75) をハンダ付けしました。

Buffalo WLA-G54 のメモリ増設
http://near-unix.blogspot.jp/2015/07/buffalo-wla-g54.html

元々搭載されていた 8MB SDRAM の VG36641641DT-7L です。
コテライザーのホットブローによってチップを取り外しました。
中央部の R320 もホットブローの熱で外れてしまいました(笑)。
ランド部分をハンダの吸取り線で綺麗にハンダを除去しておきました。
外れてしまった R320 はハンダ付けしておきました。
新しく16MB SDRAM (MT 48LC8M16A2-75) を取り付けました。

使用した SDRAM の MT 48LC8M16A2-75 は、WLA-G54 に取り付けたものを取り外して、本機へ再度ハンダ付けしました。何度もハンダ付けを繰り返したため、メモリチップのリード線が若干曲がりが大きくなっていて、ハンダ付けが難しくなっていました。ちょっと多めのハンダの盛り付けで何とか動作させることができました。

NVRAM の設定

メモリチップの交換によって 32MB 化されましたが、まだファームウェア上では 16MB の認識となっています。そこで NVRAM の設定を変更して 32MB の全域を認識させるようにしました。設定した値は WLA-G54 と全く同じ値を設定しました。

nvram set sdram_init=0x0c29
nvram commit
reboot

再起動後、DD-WRT のステータス画面を確認すると 32MB のメモリ全域を認識していました。

DD-WRT のステータス画面で 32MB 化されたことを確認しました。

これで WLA-G54 で検証することが出来なかった USB ポートの設置が出来るようになりました。OpenWrt Attitude Adjustment 12.09 をインストールした後、USB ソケットの取り付けなどを行なってみたいと思っています。

Buffalo WBR-G54 の CFE のバックアップを検証

先日 JTAG にて CFE のバックアップを行なっていたバッファロー WBR-G54 ですが、JTAG の動作の不安定さから一抹の不安もありました。そこで DD-WRT の機能として備わっている CFE のバックアップ機能を使って CFE をバックアップして JTAG でバックアップした CFE と比較してみることとしました。

WBR-G54 へ DD-WRT をインストール

操作をするパソコンと WBR-G54 をイーサネット・スイッチを経由して接続します。

WBR-G54 からイーサネット・スイッチを経由してパソコンへ接続します。

操作するパソコンの IP アドレスを 192.168.11.2 へ設定します。(192.168.11.2 から 192.168.11.254 までのアドレスを選択)

操作パソコンの端末から次のコマンドで DD-WRT をインストールします。

$ tftp 192.168.11.1
tftp> binary
tftp> trace
Packet tracing on.
tftp> rexmt 1
tftp> timeout 60
tftp> put dd-wrt.v24-13491_VINT_std.bin
— ここで WBR-G54 の電源を投入します–
sent WRQ <file=dd-wrt.v24-13491_VINT_std.bin, mode=octet>
sent WRQ <file=dd-wrt.v24-13491_VINT_std.bin, mode=octet>

sent WRQ <file=dd-wrt.v24-13491_VINT_std.bin, mode=octet>
sent WRQ <file=dd-wrt.v24-13491_VINT_std.bin, mode=octet>
     ↓
     ↓
received ACK <block=7400>
sent DATA <block=7401, 0 bytes>

received ACK <block=7401>

Sent 3788800 bytes in 131.7 seconds

tftp> quit
$

以上でパソコン側の操作は終了です。フラッシュメモリへファームウェアを書き終えるまで 2 〜 3 分程度待ちます。そしてパソコンの IP アドレスを 192.168.1.2 または DHCP で自動設定に変更して、ブラウザにて 192.168.1.1 をアクセスすると DD-WRT の設定画面が表示されます。

WBR-G54 へインストールした DD-WRT の設定画面

DD-WRT による CFE のバックアップ

DD-WRT が正常に動作していることを確認した後、ブラウザで次の URL へアクセスをします。するとダウンロードの案内ダイアログボックスが表示されますので、cfe.bin をダウンロードします。

http://192.168.1.1/backup/cfe.bin

バックアップした CFE の比較

ダウンロードした CFE と JTAG でバックアップした CFE を比較します。比較は md5 のハッシュ値を比較しました。

$ md5sum cfe.bin WBR-G54.CFE.BIN
99efda3f23780918712232d3942ceb36  cfe.bin
99efda3f23780918712232d3942ceb36  WBR-G54.CFE.BIN

cfe.bin = DD-WRT でバックアップしたもの
WBR-G54.CFE.BIN = JTAG でバックアップしたもの

同じハッシュ値であったことから、同じデータのバックアップであったことが判りました。これで CFE は正しいデータであることが証明されました。また JTAG も正常に動作していたことが証明されました。

Buffalo WLI2-TX1-G54 の筐体洗浄

昨晩、分解とフラッシュメモリのバックアップを試みた バッファロー WLI2-TX1-G54 の筐体を洗浄しました。

筐体の表面はすでに雑巾がけをして綺麗にしていましたが、やはり筐体の内側はかなりホコリの黒ずみが付着していました。いつものようにレンジ周り用の強力アルカリ洗剤で綺麗にしました。掃除はいつ行なっても気持ちのよいものです!

洗浄中の WLI2-TX1-G54 の筐体です。

PHILIPS 無線 LAN カード PH12127-B を入手

フィリップス・ブランドの無線 LAN カード PH12127-B をインターネット・オークションにて入手しました。

今回入手したフィリップス PH12127-B です。

ThinkPad 用のオプション部品の扱いのものです。ドライバ CD や超簡単な多言語の取扱説明書も一緒でした。

PH12127-B 本体の他、カード抑え金具やマニュアル類も一緒に入手しました。
かんたん過ぎる取説(笑)

ThinkPad R32 へ取り付け

今回入手した無線 LAN カード(PH12127-B)は、純正無線 LAN カードの判定が厳しい ThinkPad R32 へ取り付けたいと思って入手したものです。早速この無線LANカードを ThinkPad R32 の底面の蓋を開いたところにある Mini-PCI ソケットへ装着してみました。

PH12127-B を ThinkPad R32 へ装着してみました。
ThinkPad R32 へ PH12127-B を装着したところです。

どきどきしながら ThinkPad R32 の電源を投入してしばらくすると、いつもの嫌な画面が表示されました。この IBM 純正品の無線LANカードであっても、特定の無線LANカードしか受け付けないようです(涙)。警告コードに “01C9” が存在することから、Atheros のチップを使用した無線 LAN カードのようです。

ThinkPad R32 の起動画面で表示された警告とエラー案内

この無線 LAN カードの PH12127-B も ThinkPad R32 へ設置することができませんでした。やはり Mini-PCI の無線 LAN カードの設置は出来ないようです。残念ながら他の機種へ取り付けたいと思います。

FreeBSD Asterisk 1.8.32.3_2 へアップデート

FreeBSD の ports へ Asterisk のアップデート(1.8.32.3_1 から 1.8.32.3_2 へ)が到着していました。

今回のアップデートはリビジョン番号が若干向上しただけのもののように見えますが、保留音(Music on Hold)に MP3 プレーヤに対応するなど保留音関係に機能が追加されていました。以下にビルドオプションの画像を掲載していますが、+マークのある部分が新規追加の機能です。

Asterisk 1.8.32.3_2 のビルドオプション 1ページ目
Asterisk 1.8.32.3_2 のビルドオプション 2ページ目

以下はパッケージからのメッセージです。
“.asterisk.makeopts” が存在していると、ビルドオプションとして処理されるそうです。
その他メニューコマンドの取り扱いの説明があります。

===>>> pkg-message for asterisk18-1.8.32.3_2
###########################################################################

  This port supports custom Asterisk configurations using a *user-supplied*
  menuselect.makeopt file.

  This feature is of most value for users that want to disable or override
  default functionality that they dont want or need, particular in space
  and/or resource constrained, or embedded environments.

  If a file named “.asterisk.makeopts” is found in the ports files/
  directory, its contents will be used to configure Asterisk at the
  post-configure stage.

  If the file is *not* found, the port will default to a ‘normal’ Asterisk
  menuselect configuration, and only execute menuselect commands according
  to what port OPTIONS the user has selected.

  The format of this file is the same as the output of a standard
  `make menuselect` command, as per standard build instructions for
  Asterisk.

  NOTE: The contents of this file *MUST* be syntactically and semantically
       valid, as the port does *NOT* perform validation of this file.

        In particular, ensure that all Asterisk options have their
        dependencies met, using the corresponding port OPTIONS dependencies.

  The `menuselect –check-deps` command can be used to verify the
  configuration

  The following related documentation resources are also available:

    * https://wiki.asterisk.org/wiki/display/AST/Using+Menuselect+to+Select+Asterisk+Options
    * http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/installing_base_configuration.html#Installing_id293213

################################################################################

Buffalo WLI2-TX1-G54 の CFE バックアップ(失敗)

先日 WBR-G54 と一緒に入手していた WLI2-TX1-G54 を分解して、CFE のバックアップを行なってみました。

今回 JTAG でフラッシュメモリのバックアップを試みた WLI2-TX1-G54 です。

分解作業

分解作業は先日の WLI2-TX1-AMG54 と同じ手順で行いました。筐体の構造は全く一緒でした。アンテナの固定のためかホットボンドを使っているのを発見しました。

Buffalo WLI2-TX1-AMG54 を分解
http://near-unix.blogspot.jp/2015/08/buffalo-wli2-tx1-amg54.html

WLI2-TX1-G54 の筐体を半分に分割したところです。

ボードを観察

ボードは WLA-G54C と同じ BCM4702 が使用されていました。

WLI2-TX1-G54 のボードの様子です。
プロセッサに BCM4702 が使用されていました。

JTAG の端子を取り出す抵抗器のパッドを観察するとそこには 4.7KΩ の抵抗器が存在していました。また抵抗器の反対側はアースではなく 3.3V へプルアップされていました。少し改良?されていました!

R314〜R317の抵抗器が JTAG 用信号が届いているところです。

JTAG 用ピンヘッダ

JTAG 用のピンヘッダを小基盤へハンダ付けした後、この小基盤とボード上の JTAG 端子をリード線で接続しました。WLA-G54C の JTAG 端子を設置した時の記事を参考にしました。

Buffalo WLA-G54C へ JTAG アクセス
http://near-unix.blogspot.jp/2015/05/buffalo-wla-g54c-jtag.html

JTAG 端子へリード線をハンダ付けしたところです。
青:TMS
緑:TCK
橙:TDI
茶:TDO
小基盤にピンヘッダをハンダ付けしています。

JTAG でフラッシュメモリのバックアップ

早速 JTAG でフラッシュメモリの中の CFE のバックアップを開始しました。最初にバッファタイプの WIGGLER ケーブルで行いました。

WIGGLER ケーブルで接続しているところです。

とりあえずプローブ動作をさせてみました。/noemw /nocwd のオプションがなければプローブ動作も出来ない状況でした。なおこのオプションを設定した後は、ボードの電源を投入したままの状態でプローブ動作を繰り返しても動作しました。

# ./tjtag3 -probeonly /cable:wiggler /nocwd /noemw

================================================
 EJTAG Debrick Utility v3.0.2.1 Tornado-MOD
================================================

Detected IR chain length = 5
Number of device(s) = 1

IDCODE for device 1 is 0x0471017F

Probing bus … Done

Instruction Length set to 5

CPU Chip ID: 00000100011100010000000101111111 (0471017F)
*** Found a Broadcom BCM4702 Rev 1 CPU chip ***

    – EJTAG IMPCODE ……. : 00000000100000000000100100001000 (00800908)
    – EJTAG Version ……. : 1 or 2.0
    – EJTAG DMA Support … : Yes
    – EJTAG Implementation flags: R4k MIPS32

Intial value of Control register is 0000000C
Intial value of status register is  00000077
01110111 (00000077)

Status bit 7 Busy Inverted pin 11 = 1
Status bit 6 *Ack          pin 10 = 1
Status bit 5 Paper-out     pin 12 = 1
Status bit 4 Select        pin 13 = 1
Status bit 3 *Error        pin 15 = 0
* means low = true, e.g., *Error

VCC connected
values of Control register after init 0x0000000C
value of status register after init   0x00000077
system reset complete

Issuing Processor / Peripheral Reset … Done
Enabling Memory Writes … Skipped
Halting Processor … … Done
Init PrAcc … Skipped
Clearing Watchdog … Skipped

Chip ID a800
Chip Rev 11
Package Options f
Number of Cores 15
DMA Read Addr = 18000000  Data = (FFFBA800)ERROR ON READ
Core Revision 47
Core Type 8800
Core Vendor ID fffb0000
Flash Type 0
Flash Type = FLASH_NONE
Flash bus is 8 bits
Dest is bits 0
Flash is byteswapped 0
Endian Type is LE 0
PLL Type 00038000
Enter Flash Probe

Probing Flash at (Flash Window: 0x1fc00000) …
Done

Flash Vendor ID: 00000000000000000000000010001001 (00000089)
Flash Device ID: 00000000000000000000000000010110 (00000016)
*** Found a Intel 28F320J3 2Mx16       (4MB) Flash Chip ***

    – Flash Chip Window Start …. : 1FC00000
    – Flash Chip Window Length … : 00400000
    – Selected Area Start …….. : 00000000
    – Selected Area Length ……. : 00000000

 *** REQUESTED OPERATION IS COMPLETE ***

プローブ動作をさせてボードが安定したと思われる状態で、CFE のバックアップを四回行なって md5 のハッシュ値を取得してみたところ、全てのハッシュ値が異なっており、バックアップするごとにデータが異なっていました。

82bd833200984aa42cbac5437e5dfef1  CFE.BIN.SAVED_20150830_221823
2591443a219dc4bd19c899794f63d55b  CFE.BIN.SAVED_20150830_222254
d80483554955069c8b1c893328259d4d  CFE.BIN.SAVED_20150830_222731
b0c868af14f9a2ea80563a1c57e4ee49  CFE.BIN.SAVED_20150830_223318

そこで抵抗器で構成した DLC5 タイプのケーブルを使ってバックアップを試みました。これも WIGGLER ケーブルと同じようにバックアップデータが異なっていました。

1e4c82cf384c4fd79b1230234943e3d9  CFE.BIN.SAVED_20150830_224846
d7594b914a9787519ec1f4935ba29b43  CFE.BIN.SAVED_20150830_225524
da5b9cc35b82e7dc8dfecd6ac4623512  CFE.BIN.SAVED_20150830_230031
fbf046cf5d9651933e91ddbe1c3a6fa2  CFE.BIN.SAVED_20150830_230516

上記のようなグダグダな結果となりました。どうも BCM4702 が使用されているボードで JTAG 動作は難しいようです。

このような状況でしたので、CFE のみならずフラッシュメモリ全体のバックアップも中止しました。

Buffalo WLA-G54 へ WBR-G54 の CFE 書き込み

昨日フラッシュメモリのバックアップを行ったバッファロー WBR-G54 の CFE を USB 加工に失敗した WLA-G54 へ書き込みを試みました。

なお今回の書き込みにおいて、フラッシュメモリとシステムメモリ(SDRAM)は、もともとボード上に搭載されていたものに戻してあります。また JTAG 端子のところへ追加していたプルアップ抵抗器も除去しました。JTAG 動作が成功した WBR-G54 の状態に出来るだけ近づけて作業をしました。

WLA-G54 のフラッシュメモリへデータを JTAG 経由で書き込んでいるところです。

フラッシュメモリへ書き込みできませんでした

結論から先に述べますと、CFE への書き込みもフラッシュメモリ全体の書き込みも試みましたが、途中で JTAG 動作が停止してしまいました。結果書き込みできませんでした。CFE の書き込みでは 16% の同じ場所で停止していました。フラッシュメモリ全体の時も CFE の書き込みで停止した場所と思われるところで停止しました。どうも書き込みを停止させる何かの要因があるようです。

また JTAG 動作については、WBR-G54 のフラッシュメモリのバックアップで発見した赤い LED が四回点滅することを繰り返す動作ですが、この WLA-G54 では発生しませんでした。この WLA-G54 ではフラッシュメモリのデータが消去されているのでバッファローオリジナルのファームウェアが動作していないため、無線LANカードを撤去していても赤い LED が点滅しないようです。

そのため JTAG 動作方法としては、ボードの電源を投入すると同時に JTAG を操作しているパソコンから JTAG コマンドを実行させることを行いました。まずプローブ動作を行なって、ボード情報が表示された後、しばらくして再度プローブ動作をさせましたが、全て途中でフリーズしてしまいます。安定して JTAG 動作が出来ない状態なのです。

上記のフラッシュメモリへのデータ書き込みもプローブ動作をした後、書き込みを行ったのではなく、電源投入時に直ぐに書き込み動作をさせていました。何度行なっても前方部分は上手く書き込みを行うのですが、だんだんと書き込みが遅くなって、やがて停止する状態です。

ここまでくると、他のボード上でフラッシュメモリを書き込んだ後、WLA-G54 にフラッシュメモリを戻す方法しか手段がないかもしれません。

[考察]

今回の WBR-G54 と WLA-G54 の JTAG によるフラッシュメモリのバックアップと書き込みを行なっていて気になったことが一つあります。それはフラッシュメモリ上のブートコードのバックアップについてです。

この WBR-G54 と WLA-G54 の両者とも 4MB のトップ・ブート(TopB)のフラッシュメモリです。フラッシュメモリのゼロ番地ではなく、 4MB の最後の部分にブートコードが収容される形式(最後尾のフラッシュメモリのブロックが小さく区分けされている)となっています。フラッシュメモリ全体をバックアップしていたときに観察していた感じでは最後尾には “FFFF” ばかりの NONE 状態のデータが詰まっていました。このフラッシュメモリの形式に係わらずブートコードはゼロ番地から始まる部分に存在するのでしょうか? WLA-G54 が起動しなくなったのは NVRAM を JTAG で消去した後からということを考えると NVRAM の最後尾にはブートコードが存在していて、このブートコードが消去されたことから動作しなくなったとも考えられます。もちろん起動に必要なパラメータが NVRAM に存在していて、このパラメータを失ったことによって起動できなかった可能性もあります。

他の多くの無線LANルータでは、ゼロ番地側のフラッシュメモリのブロックの区画が小さく設定されているボトム・ブート(BotB)のフラッシュメモリが採用されていることもあり、トップ・ブート(TopB)のフラッシュメモリの取り扱いがよく解りません。