WLA-G54 WBR-G54 WLI-TX1-G54 などのシリアル通信


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

WLA-G54 WBR-G54 WLI-TX1-G54 などのシリアル通信

buffalo WLA-G54 WBR-G54 WLI-TX1-G54 など特定の世代のルータにおいて、シリアル通信ポートがない理由と、シリアル通信の機能を追加実現する仮説を、まとめてみました。

WLA-G54 WBR-G54 WLI-TX1-G54 など、初期の11g無線ルータは、 保守用のシリアルポートが、ありません。無線規格の主流が54Mbpsになる前の11b時代のルータにはシリアル通信が可能でした。またWBR2系(BCM4712)や、WHR系(BCM4704/BCM53xx系)型番など、2世代以降の11gルータも、シリアル通信が可能です。特定の世代の機種だけが、ないのです。

シリアルポートが隠されている、取り出し口がわかりにくいだけかと思い、基板を眺めるものの、見当たりません。 こんな仕様では、開発時にどうやってデバッグしてたのかと、釈然としません。

そこで、これらの製品に共通して搭載されているSoC「BCM4702」の仕様を調べました。 SoC「BCM4702」には、UART(シリアルポート)が搭載されていないことが判明しました。 プロモーション用データシートを見ると、UART機能は外付けオプションとの記載があるためです。

BCM型番の仕様一覧 Broadcom - WikiDevi https://wikidevi.com/wiki/Broadcom

BCM4702 News Release | Broadcom http://www.broadcom.com/press/release.php?id=332500

BCM4702 プロモーション用 概要PDF http://wikidevi.com/files/Broadcom/BCM94702AP_BCM94710AP.pdf

このPDFの「BCM94702AP System Diagram」をみると、UARTが「外付け」の扱いです。

出荷する前提の製品で、保守時にしか使わない通信機能を実装してもコストが上がるだけでメリットなし、 それならばと製品には搭載されない、という状況でした。

本体を分解してシリアル通信の基板パターンが見つからない理由は、これでした。 隠されているのでは無く、もともとのSoCから信号が存在しなかったと。


UARTを使うには、16550を取り付ければ可能

BCM4702でUARTを使用するには、シリアル通信チップである16550を、 SoCのバスにぶら下げる改造が必要です。

このチップは、大昔のAT互換機のマザーボードや、ISAバスのシリアルポート増設カードに、 当時は当たり前のように使われており、珍しい物ではありません。

が、いまは需要が激減したため、入手は中古で、しかも1990年代の相当古い製品をあたる必要があります。 Intel 386近辺のマザーボード以降は、Super IO chipという名称で、シリアル・パラレル・FDDインターフェースが 統合されたワンチップICに変化しました。おそらく今回の用途での部品取りでは使えないと思われます。

今回のような少ない需要を見込んだ、レガシーな16550を搭載した製品が、海外通販サイト等で存在することは確認しました。 これらを購入すれば、16550の入手は可能です。

そして、その16550を取り付ける改造を、実際にやってのけた凄い人が居らっしゃいます。


ASUS WL-500Gにて、16550を乗せた改造事例

BCM4702を搭載しているASUS製のブロードバンド無線ルータ WL-500Gにて、16550を実際に乗せてみて、ブートローダ「PMON」のメッセージや 通常時のシリアルデータの入出力に成功しています。

Make an expansion board with a serial port(s) for WL-500b/g http://wl500g.info/showthread.php?587-Make-an-expansion-board-with-a-serial-port%28s%29-for-WL-500b-g

UART Asus WL-500G Rev 2.40 - Viaccess for Free Forums http://dvbdataex.sat-fishers.com/forum/showthread.php?t=31423

この2つのページにて、写真付きで16550を取り付けた改造事例が掲載されています。 WL-500Gには、本体の基板に20pinのコネクタが搭載されています。

 --------
> D0  D1 |
| D2  D3 |
| D4  D5 |
| D6  D7 |
| A0  A1 |
| A2  A3 |
|+5V /CS |
|/RD /WR |
|INT GND |
| NC  NC |
 --------

このコネクタに、16550を取り付ければ、シリアル通信を実現できるという流れです。 ルータの開発時には、おそらくここへシリアル通信用の保守治具を差し込んで デバッグしていたのでしょう。


国内buffaloモデルにも保守ポートを発見、ピン配列はASUSと異なり独自の可能性

話を国内のbuffaloモデルに戻して・・・ 上記のasus WL-500Gの改造事例を知った後、あらためてWLA-G54 WLI-TX1-G54 等の基板を眺めた結果、 20pinのコネクタがしっかり搭載されていました。 バッファローの中の人たちは、ここへ保守治具を繋いでデバッグしたわけですね。

このコネクタについて情報を調べてみると、信号の配列(ピンアサイン)は、 asusの改造事例のモデルと異なるようです。 WLA-G54の配置を解析された方が、下記ページにいらっしゃいます。

http://www.right.com.cn/forum/thread-6084-1-1.html

http://wiki.openwrt.org/OpenWrtDocs/Hardware/Buffalo/WLA-G54C (現在はリンク切れ。上記ページに記載のあったURL情報)

GND CE QD7 QD6 QD5 QD4 QD3 QD2 QD1 QD0 
1 2 3 4 5 6 7 8 9 10 
11 12 13 14 15 16 17 18 19 20 
||GND NC NC WE OE NC A3 A2 A1 A0

この用語の「OE」はasusの資料で言う「/RD」かもしれません。以下はあくまで推測ですが、

RD・・・Read Data
OE・・・Output Enable

WR・・・WRite data
WE・・・Write Enable

CS・・・Chip Select
CE・・・Chip Enable

という、開発者あるいはメーカー定義の方言と思われる。

QDとDも同様で、双方向で流せるデータバスという意味での方言
A0-A3はアドレスバスで、これは共通

まとめると

  • 16550を最低限動かすための基板の制作は、ASUS WL-500gの記事を参考にする
  • 基板へ接続するデータバス/アドレスバス/コントロール信号は、buffalo独自の配列を使用する

以上の段取りで、もしかしたらbuffaloのルータでも、シリアルポートを 使うことが可能になるのでは無いか?

という仮説でした。

仮にこの接続が成功したら、WLA-G54等にて、ブートローダである CFE や PMON は生きてるけどrootFSやnvramが破損して 起動できなくなった文鎮状態を、シリアル通信経由でメンテすることが出来るようになります。