7.9.2011

Buffalo Router WHR-G erweitert mit SD-Card und Console

Inhalt:

  1. Motivation
  2. Serial port (Console)
  3. OpenWrt Firmware
  4. GPIO Ports
  5. USB-Host

Motivation:

Ein Kollege hat mir bei seinem Umzug einen japanischen Buffalo WLAN-Router kostenlos überlassen, der mir zu schade zum Wegwerfen schien. Und zwar ein Buffalo AirStation WHR-G, das japanische Modell, das baugleich mit dem WHR-G125 ist. Eine ganze Photoserie zum Router gibt es hier.

http://images1.wikia.nocookie.net/__cb20100622231013/infodepot/images/thumb/c/ce/Buffalo_WHR-G125a.jpg/200px-Buffalo_WHR-G125a.jpg
(Quelle: infodepot.wikia.com)

Ich habe mich gefragt, ob man den Router mit Linux nicht etwas aufwerten kann, und nach kurzer Suche im Netz bin ich bei dd-wrt und OpenWrt.org fündig geworden.

Die ersten hilfreichen Hardware-Infos zum WHR-G125 finden sich bei wiki.openwrt.org oder auf en.wikipedia.org. Auf dem WHR-G ist ein BCM5354 Broadcom Chip verbaut, sowie 16MB DDR-SDRAM und 4MB Flash.

Serial port (Console):

Auf den dd-wrt/openwrt Websites hatte ich gesehen, daß der WHR-G einen Serial-Port hat.

Das Wichtigste war mir erstmal, Zugriff auf den Serial-Port vom Router zu haben, damit ich überhaupt etwas vom Boot-Vorgang, also Bootloader-Messages etc. mitbekomme. Bei der Installation der openwrt-Firmware mit tftp wollte ich auch nicht "blind" dasitzen, ohne zu wissen, was der Router gerade macht. Beim Boot-Prozess und dem tftp-Download kann man zwar rudimentär über die Diag-LED sehen, ob sich etwas tut, aber das ist nicht befriedigend.

Außerdem hilft ein Consolen-Port ungemein beim Testen der neuen Firmware, falls z.B. der LAN-Zugang und damit Web-Interface noch nicht funktioniert.

Der "Serial port pinout" vom Buffalo WHR-G ist auf www.dd-wrt.com für den WHR-G125 beschrieben. Beim WHR-G ist es Connector JP1. Der Connector hat im Originalzustand keine Stiftleise (Pin header) aufgelötet, daher habe ich das als erstes nachgerüstet (den 14-poligen JTAG-Connector JP2 habe ich bei der Gelegenheit auch gleich mit bestückt).

Das Pinout von JP1 (Pin 1 ausgehend vom JP1 Label):

  • Pin 1 - Vcc (3.3V)
  • Pin 2 - GND
  • Pin 3 - Tx
  • Pin 4 - Rx
Hier nochmal auf dem WHR-G Board aufgetragen:

Da der Router mit 3.3V (Vcc) versorgt wird, und keine 5V auf dem Board direkt verfügbar sind, habe ich auf einer kleinen Platine den ADM3202 als TTL/ RS-232 Pegelwandler verbaut, der mit 3.3V läft. Zu RS-232 gibt es reichlich Links, siehe dazu z.B. de.Wikipedia.org. Hier die Adapterplatine (Rückseite mit Freiverdrahtung):

  

Für den D-Sub-Stecker (DB9, korrekt: DE-9) auf RS-232 Seite (der am Router-Gehäuse noch plaziert wird) habe ich einen Male DB-9 Stecker mit folgendem Pinout (DCE) gewählt:

DB-9 Pinout:

  • Pin 2 - TxD (ADM3202 Pin14)
  • Pin 3 - RxD (ADM3202 Pin13)
  • Pin 7 - GND
Damit erübrigt sich ein Nullmodem-Kabel und ich kann meinen USB/Serial-Adapter (PL2303) direkt mit der Router-Console verbinden. Hier die Adapter-Platine mit DB-9 Stecker:

Später wurde noch ein kleiner Schlitz an der breiten Platinenseite gesägt, und die Platine an eine schmale Plastikkante im Router-Gehäuse geklemmt. So war keine Verschraubung bzw. kein Heißkleber notwendig und ich kann die Platine jederzeit wieder leicht entfernen:

Hier der Router mit RS-232 Adapter-Platine und dem DB-9 Stecker. Der AOSS-Button wurde entfernt (da ich dessen GPIO-Port für die SD-Karte verwendet habe):

Die Aussparung vom AOSS-Button habe ich dann mit der Feile vergrößert und den DB-9 Consolen-Stecker darin mit Heißkleber fixiert:

  

bash#

OpenWrt Firmware:

Ich habe die Firmware mit tftp und Linux auf den Router geladen, wie unter wiki.openwrt.org/doc/howto/generic.flashing.tftp beschrieben. Die openwrt-Images gibt es unter downloads.openwrt.org. Empfohlen wird das Image mit 2.4'er Kernel:

Download-Directory:
http://downloads.openwrt.org/backfire/10.03/brcm-2.4/
Firmware-Image bcrm-2.4:
openwrt-brcm-2.4-squashfs.trx

Allerdings habe ich mich später für das Image mit Kernel 2.6 entschieden, da das gpioctrl Tool zum Testen der gpio-Ports nur unter Kernel 2.6 verfügbar war.

Download-Directory:
http://downloads.openwrt.org/backfire/10.03/brcm47xx/
Firmware-Image bcrm47xx:
openwrt-brcm47xx-squashfs.trx

GPIO Ports:

Der Broadcom Chip hat 8 GPIO (General purpose I/O) Pins. Die Zuordnung von GPIO-Ports zu LEDS und Buttons kann man mit dem gpioctl herausfinden. Das Tool war bei openwrt nur mit Firmware Kernel 2.6. nutzbar.

Mit gpioctl get 1 liest man den Output von GPIO (Pin) 1. Hilfreich dazu war dieser Thread auf openwrt.org. Beim WHR-G ergab sich folgende GPIO Pin-Belegung:

  1. GPIO 0 : AOSS button
    Default: high
    Button pressed: low
  2. GPIO 1 : Router LEDC10
    (on - low, off - high)
  3. GPIO 2 : Wireless LEDC9
  4. GPIO 3 : Unused LEDC6
  5. GPIO 4 : Unknown (Reset button?)
  6. GPIO 5 : Router on/off SW2
    (on - high, off - low)
  7. GPIO 6 : Security LEDC11 (red)
  8. GPIO 7 : Diag LEDC8 (red)
Die Router-LEDS haben auf der Platine folgende Labels:
  1. LEDC7 - Power
  2. LEDC11 - Security
  3. LEDC9 - Wireless
  4. LEDC6 - Not used (no label)
  5. LEDC10 - Router
  6. LECC8 - Diag
Folgende Buttons/Switches existieren:
  1. SW1 - AOSS button
  2. SW2 - Router on/off switch
  3. SW3 - Reset button
Ich habe mich dann für dieses GPIO-Mapping zum Betrieb der MMC/SD-Card entschieden:
  1. SD pin1, CS (chip select) - GND
  2. SD pin2, DI (data in) - GPIO 3 (Unused LEDC6)
  3. SD pin3, GND
  4. SD pin4, VCC (3.3V)
  5. SD pin5, CLK (clock) - GPIO 0 (AOSS button)
  6. SD pin7, DO (data out) - GPIO 5 (Router on/off button)
Das Pinout vom SD-Adapter ist:
  1. Pin1 : +3.3V
  2. Pin2 : GND
  3. Pin3 : DO (GPIO5)
  4. Pin4 : DI (GPIO3)
  5. Pin5 : CLK (GPIO0)

USB-Host:

Leider findet sich im Web kein Hinweis, daß jemand den eigentlich auf dem Chip verbauten USB-Host beim WHR-G bzw. WHR-G125 in Betrieb nehmen konnte. Wahrscheinlich sind die Pins an dem BGA-Gehäuse nicht auf der Platine geroutet.

Nur einen üblen Hardware-Mod auf einer chinesischen Seite habe ich gefunden. Die haben dort eine Ecke vom Chip-Gehäuse freigelegt (weggebrochen) und auf der dünnen Chip-Platine selbst 2 feine Drähte aufgelötet. Das Risiko, damit den ganzen Router unbrauchbar zu machen, ist aber vergleichsweise hoch... Aber auf jeden Fall ein Hingucker. Glückwunsch an die Leute!

Links:

  1. dd-wrt
  2. openwrt
  3. Installing OpenWrt
  4. OpenWrt Docu zum Flash-Format der Images/Firmware


Next: Next topic.

zurück zur Übersicht