7.9.2011

Buffalo Router WHR-G mit SD-Card und Console

Inhalt:

  1. Motivation
  2. Serial port (Console)
  3. GPIO Ports
  4. DDR-SDRAM
  5. RAM-Upgrade
  6. OpenWrt Firmware
  7. OpenWrt-Build
  8. 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:

  

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. Ausführlich beschrieben ist der SD-Karten-Hack auch auf der Seite. 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 5 (Router on/off button, SW2)
  3. SD pin3, GND
  4. SD pin4, VCC (3.3V)
  5. SD pin5, CLK (clock) - GPIO 1 (LEDC10)
  6. SD pin7, DO (data out) - GPIO 3 (LEDC6)
Das Pinout vom SD-Adapter ist:
  1. Pin1 : +3.3V
  2. Pin2 : GND
  3. Pin3 : DO (GPIO3)
  4. Pin4 : DI (GPIO5)
  5. Pin5 : CLK (GPIO1)

Stock-RAM:

Im WHR-G125 ist ein 128MBit (16MByte) DDR-SDRAM verbaut, und zwar ein MIRA P2S28D40CTP (Datasheet lokale Kopie hier), im Datenblatt genauer spezifiziert als "4-bank x 2,097,152-word x 16bit double data rate synchronous DRAM". Der RAM hat also einen 16-bit breiten Datenbus (Pins DQ0-DQ15). Hier ein Photo vom RAM auf dem Board:


(zum Vergrößern aufs Bild klicken)

RAM-Upgrade:

Für einen aktuellen OpenWRT-Build (ab Version 12.09) ist dieser RAM zu klein, es sollten mindestens 32MB sein, damit es performant läuft. D.h. es käme nur ein 256MBit (oder größer) mit 16-bit breiten Datenbus in Frage. Für ein Upgrade braucht man DDR-SDRAM mit dem gleichen Pinout. Schaut man in die Datenblätter, dann unterscheidet sich das Pinout meist nur anhand der Datenbusbreite, d.h. mit 4-bit Datenbus DQ0-DQ3, 8-Bit Datenbus DQ0-DQ7 oder 16-bit breit mit DQ0-DQ15.

Bei den alten PC DDR-RAM Riegeln, die ich herumliegen habe, war leider keiner dabei. Die 512MB-RAM-Module hatten zwar Chips mit 256MBit, aber leider nur 8-Bit Datenbus (DQ0-DQ7), somit nicht kompatibel. Der Grund ist, daß auf den PC-DIMM's vergleichsweise viel Platz ist und dort ab 256MB Größe die 16-bit Datenbreite oft mit 2 Chips a 8-Bit Breite auf Vorder- und Rückseite realisiert wird. In Frage kam z.B. der 64MB Hynix RAM HY5DU561622CT-5 vom AVel LinkPlayer AVLP2/G, den ich aber nicht hierfür opfern wollte.

Schließlich bin ich bei einem Laptop SO-DIMM mit 512MB PC2700 fündig geworden. Die Vorder- und Rückseite war mit jeweils 4 Chips bestückt, das konnte bei insgesamt 8 Chips also nur 16-bit Datenbreite bedeuten. Das wären also mit 512Mbit pro Chip sogar 512Mbit / 8 = 64MByte RAM für meinen Router! Leider waren nur 32MB davon nutzbar (Row-Address A12 wird wohl auf dem Board nicht geroutet). Die Chips sind vom Typ K4H511638B TCB3 und nach Datenblatt als 4-bank x 8Mbit x 16bit organisiert. Von dem SO-DIMM habe ich dann 2 Chips (1 als Reserve) mit Heißluft (Rework Station) abgelötet:

Hier nochmal die beiden Chips in voller Schönheit:

Vor dem RAM-Tausch an dem WHR-G habe ich an einer alten kaputten Router-Platine (Buffalo WGR-614) noch das Aus- und Auflöten von RAM-Chips geübt:

Als ich genug Übung hatte, habe ich dann den von Werk aus verbauten MIRA-RAM vom WHR-G mit dem Heißluftkolben entfernt und die Pins mit Entlötlitze von Lötzinnresten befreit. Anschließend noch die Platine mit reinem Alkohol (aus der Apotheke) gereinigt um Lötreste zu entfernen:

Zum Schluß wurde dann der neue 64MBit DDR-RAM-Chip klassisch mit Lötkolben mit feiner Lötspitze und etwas Flussmittel aufgelötet:

OpenWrt Firmware:

Ich habe die Firmware (Backfire Release 10.03, trx-File) mit tftp und Linux auf den Router geladen, wie unter wiki.openwrt.org/doc/howto/generic.flashing.tftp beschrieben. Die openwrt-Images (Backfire Release) 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

Update:
Ein Test 2014 mit dem neuesten openwrt-Image 12.09 (Attitude Adjustment Release) - Download hier - war leider nicht sonderlich erfolgreich. Das Web-Interface hatte entweder lange Ladezeiten bzw. hing irgendwann ganz fest. SSH-Logins funktionierten nach einer Weile auch nicht mehr. In der Readme wird aber auch explizit darauf hingewiesen, daß für Low-End-Router mit 16MB RAM nach kurzer Zeit der knappe Speicher voll ist und empfehlen daher, das alte 2.4er Image zu nehmen.

"Known Issues: Lower end devices with only 16 MiB RAM will easily run out of Memory, for bcm47xx based devices is Backfire with brcm-2.4 recommended"

OpenWRT Build:

Mit einem eigenen OpenWrt-Build wollte ich noch versuchen, alle nicht notwendigen Features abzuschalten und ein minimales Image zu bauen. Vielleicht funktioniert es ja mit einem eigenen Build, mit den 16MB RAM und kleinen 4MB Flash auszukommen.

Wie sich zeigte, bleiben wegen CFE-Bootloader und NVRAM (siehe OpenWrt-Wiki flash.layout Seite) nur etwa 3.6MB vom Flash für ein eigenes Image übrig, in dem Kernel und rootfs Platz finden müssen (ganz abgesehen vom jffs-Overlay). Nach Anleitung im Wiki (siehe Openwrt build system - Usage) lieferte der Build mit make -j2 folgendes Image:

-rw-r--r-- 1 akagisan akagisan 3.2M Nov 29 17:57 bin/brcm47xx/openwrt-brcm47xx-generic-standard-squashfs.trx
	  
Das .config-File vom Custom-Build: .config
Und die Änderungen mit scripts/diffconfig.sh: mydiffconfig

Nach Programmieren des Images via atftp (siehe generic.flashing.tftp) gab es dann folgendes Boot-Log über die serielle Console:

[    0.000000] Linux version 4.1.35 (akagisan@d430) (gcc version 5.3.0 (OpenWrt GCC 5.3.0 50013) )
#1 Sun Nov 27 18:27:36 UTC 2016
[    0.000000] CPU0 revision is: 00029029 (Broadcom BMIPS3300)
[    0.000000] bcm47xx: Using ssb bus
[    0.000000] ssb: Found chip with id 0x5354, rev 0x02 and package 0x00
[    0.000000] can not parse nvram name (null)rxpo2g(null) with value 0xfff8 got -34
[    0.000000] ssb: Sonics Silicon Backplane found at address 0x18000000
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 01000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x0000000000ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x0000000000ffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000000ffffff]
[    0.000000] Primary instruction cache 16kB, VIPT, 4-way, linesize 16 bytes.
[    0.000000] Primary data cache 16kB, 2-way, VIPT, cache aliases, linesize 16 bytes
[    0.000000] Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 4064
[    0.000000] Kernel command line:  noinitrd console=ttyS0,115200
[    0.000000] PID hash table entries: 64 (order: -4, 256 bytes)
[    0.000000] Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000000] Memory: 12460K/16384K available
(2834K kernel code, 114K rwdata, 344K rodata, 152K init, 260K bss, 3924K reserved, 0K cma-reserved)
[    0.000000] NR_IRQS:128
[    0.000000] MIPS: machine is Buffalo WHR-G125
[    0.000000] clocksource MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 15927170388 ns
[    0.000032] sched_clock: 32 bits at 120MHz, resolution 8ns, wraps every 17895697403ns
[    0.000669] Calibrating delay loop... 239.61 BogoMIPS (lpj=1198080)
[    0.070006] pid_max: default: 32768 minimum: 301
[    0.070885] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.070958] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.081943] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.085220] NET: Registered protocol family 16
[    0.135831] Switched to clocksource MIPS
[    0.145544] NET: Registered protocol family 2
[    0.149245] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[    0.149437] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.149590] TCP: Hash tables configured (established 1024 bind 1024)
[    0.150323] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.150493] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.151597] NET: Registered protocol family 1
[    0.178978] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.186831] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.186900] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.193057] io scheduler noop registered
[    0.193118] io scheduler deadline registered (default)
[    0.193750] Serial: 8250/16550 driver, 2 ports, IRQ sharing enabled
[    0.196316] console [ttyS0] disabled
[    0.216675] serial8250.0: ttyS0 at MMIO 0xb8000300 (irq = 3, base_baud = 1562500) is a U6_16550A
[    0.534538] console [ttyS0] enabled
[    0.559659] serial8250.0: ttyS1 at MMIO 0xb8000400 (irq = 3, base_baud = 1562500) is a U6_16550A
[    0.571273] physmap platform flash device: 02000001 at 1c000000
[    0.577783] physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank. Manufacturer ID 0x0000c2 Chip ID 0x0022a8
[    0.588915] Amd/Fujitsu Extended Query Table at 0x0040
[    0.594266]   Amd/Fujitsu Extended Query version 1.1.
[    0.599639] number of CFI chips: 1
[    0.618109] 6 bcm47xxpart partitions found on MTD device physmap-flash.0
[    0.625078] Creating 6 MTD partitions on "physmap-flash.0":
[    0.631004] 0x000000000000-0x000000020000 : "boot"
[    0.639593] 0x000000020000-0x0000003f0000 : "firmware"
[    0.648468] 0x00000002001c-0x000000020918 : "loader"
[    0.657179] 0x000000020918-0x000000136400 : "linux"
[    0.665565] 0x000000136400-0x0000003f0000 : "rootfs"
[    0.674356] mtd: device 4 (rootfs) set to be root filesystem
[    0.680464] 1 squashfs-split partitions found on MTD device rootfs
[    0.687043] 0x000000310000-0x0000003f0000 : "rootfs_data"
[    0.696532] 0x0000003f0000-0x000000400000 : "nvram"
[    0.740161] libphy: Fixed MDIO Bus: probed
[    0.745598] bcm47xx-wdt bcm47xx-wdt.0: BCM47xx Watchdog Timer enabled (30 seconds, Software Timer)
[    0.755346] GPIO_WDT: failed to register misc device
[    0.762418] NET: Registered protocol family 10
[    0.774795] NET: Registered protocol family 17
[    0.779870] bridge: automatic filtering via arp/ip/ip6tables has been deprecated.
Update your scripts to load br_netfilter if you need this.
[    0.793086] 8021q: 802.1Q VLAN Support v1.8
[    0.816431] VFS: Mounted root (squashfs filesystem) readonly on device 31:4.
[    0.826730] Freeing unused kernel memory: 152K (8033a000 - 80360000)
[    3.246244] init: Console is alive
[    3.250496] init: - watchdog -
[    5.307791] pps_core: LinuxPPS API ver. 1 registered
[    5.313056] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti 
[    5.328998] PTP clock support registered
[    5.342042] b44: Broadcom 44xx/47xx 10/100 PCI ethernet driver version 2.0
[    5.361401] libphy: b44_eth_mii: probed
[    5.480197] b53_common: found switch: BCM5325, rev 0
[    5.485489] b44 ssb0:0: attached PHY driver [Broadcom B53 (1)] (mii_bus:phy_addr=1:1e)
[    5.493888] b44 ssb0:0 eth0: Broadcom 44xx/47xx 10/100 PCI ethernet driver 00:1d:73:4a:93:0a
[    5.509365] bgmac: Broadcom 47xx GBit MAC driver loaded
[    5.547262] init: - preinit -
[    6.527572] b44 ssb0:0 eth0: Link is up at 100 Mbps, half duplex
[    6.533851] b44 ssb0:0 eth0: Flow control is off for TX and off for RX
[    6.672741] random: procd urandom read with 10 bits of entropy available
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
[    8.475944] b44 ssb0:0 eth0: Link is Up - 100Mbps/Full - flow control off
[   10.433926] jffs2: notice: (249) jffs2_build_xattr_subsystem:
complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[   10.453698] mount_root: switching to jffs2 overlay
[   10.520778] b44 ssb0:0 eth0: powering down PHY
[   10.554792] procd: - early -
[   10.558290] procd: - watchdog -
[   11.475934] b44 ssb0:0 eth0: Link is Down
[   11.654413] procd: - ubus -
[   11.718097] procd: - init -
Please press Enter to activate this console.
[   14.507365] ip6_tables: (C) 2000-2006 Netfilter Core Team
[   14.552287] Loading modules backported from Linux version wt-2016-05-12-0-g7a54796
[   14.560302] Backport generated by backports.git backports-20160216-0-ge3c56e4
[   14.576168] ip_tables: (C) 2000-2006 Netfilter Core Team
[   14.609430] nf_conntrack version 0.5.0 (197 buckets, 788 max)
[   14.707185] xt_time: kernel timezone is -0000
[   14.934145] b43-phy0: Broadcom 5354 WLAN found (core revision 13)
[   14.964294] b43-phy0: Found PHY: Analog 6, Type 5 (LP), Revision 0
[   14.970894] b43-phy0: Found Radio: Manuf 0x17F, ID 0x2062, Revision 1, Version 0
[   15.000452] Broadcom 43xx driver loaded [ Features: PNL ]
[   15.821579] Broadcom 43xx-legacy driver loaded [ Features: PLD ]
[   35.491382] b44 ssb0:0 eth0: Link is up at 100 Mbps, full duplex
[   35.497814] b44 ssb0:0 eth0: Flow control is off for TX and off for RX
[   35.574856] device eth0.1 entered promiscuous mode
[   35.580051] device eth0 entered promiscuous mode
[   35.630094] br-lan: port 1(eth0.1) entered forwarding state
[   35.636196] br-lan: port 1(eth0.1) entered forwarding state
[   37.384907] b44 ssb0:0 eth0: Link is Up - 100Mbps/Full - flow control off
[   37.635956] br-lan: port 1(eth0.1) entered forwarding state

BusyBox v1.24.2 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 DESIGNATED DRIVER (Bleeding Edge, 50013)
 -----------------------------------------------------
  * 2 oz. Orange Juice         Combine all juices in a
  * 2 oz. Pineapple Juice      tall glass filled with
  * 2 oz. Grapefruit Juice     ice, stir well.
  * 2 oz. Cranberry Juice
 -----------------------------------------------------
root@OpenWrt:/# 
	  
Von der ARM MIPS CPU gibt es folgende Infos aus /proc/cpuinfo:
root@OpenWrt:/# cat /proc/cpuinfo 
system type		: Broadcom BCM5354
machine			: Buffalo WHR-G125
processor		: 0
cpu model		: Broadcom BMIPS3300 V2.9
BogoMIPS		: 239.61
wait instruction	: yes
microsecond timers	: yes
tlb_entries		: 32
extra interrupt vector	: yes
hardware watchpoint	: no
isa			: mips1 mips2 mips32r1
ASEs implemented	: mips16
shadow register sets	: 1
kscratch registers	: 0
package			: 0
core			: 0
VCED exceptions		: not available
VCEI exceptions		: not available	  
	  
Beim 16MB DDR-SDRAM sieht es so aus:
root@OpenWrt:/# cat /proc/meminfo 
MemTotal:          12612 kB
MemFree:            1424 kB
MemAvailable:       4176 kB
Buffers:            1116 kB
Cached:             2352 kB
SwapCached:            0 kB
Active:             3256 kB
Inactive:           1020 kB
Active(anon):        836 kB
Inactive(anon):       20 kB
Active(file):       2420 kB
Inactive(file):     1000 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:           812 kB
Mapped:             1512 kB
Shmem:                48 kB
Slab:               3844 kB
SReclaimable:        868 kB
SUnreclaim:         2976 kB
KernelStack:         272 kB
PageTables:          188 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:        6304 kB
Committed_AS:       2672 kB
VmallocTotal:    1048372 kB
VmallocUsed:         720 kB
VmallocChunk:    1044644 kB
	  
Hier noch die mtd-Partitionierung nach dem Booten (im Kernel fest vergeben):
root@OpenWrt:~# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00020000 00010000 "boot"
mtd1: 003d0000 00010000 "firmware"
mtd2: 000008fc 000008fc "loader"
mtd3: 00115ae8 00010000 "linux"
mtd4: 002b9c00 00010000 "rootfs"
mtd5: 000e0000 00010000 "rootfs_data"
mtd6: 00010000 00010000 "nvram"
	  
Die Größe der der Partitionen in KB (#blocks):
root@OpenWrt:~# cat /proc/partitions 
major minor  #blocks  name

  31        0        128 mtdblock0
  31        1       3904 mtdblock1
  31        2          2 mtdblock2
  31        3       1110 mtdblock3
  31        4       2791 mtdblock4
  31        5        896 mtdblock5
  31        6         64 mtdblock6
	  
Hier das vollständige Log vom Boot des eigenen "Bleeding-Edge" OpenWrt-Image: Boot-Log

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...

Links:

  1. dd-wrt
  2. openwrt Projekt
  3. Installing OpenWrt
  4. OpenWrt Docu zum Flash-Format der Images/Firmware
  5. Howto OpenWrt Firmware-Build: Openwrt build system - Usage
  6. Flashen der trx-Images generic.flashing.tftp


Next: Next topic.

zurück zur Übersicht