WRT54G
Hardware
Linksys WRT54G specs summary
Specs
Ports:
- WAN: One 10/100 RJ-45 port for WAN connectivity
- LAN: Four 10/100 RJ-45 Auto-MDI(X) switched ports
- WLAN: 54mbps 802.11g on a MiniPCI card (1.0)/built-in (1.1) with dual external RP-TNC antenna ports
LED Indicators (1.0):
- Power, DMZ, Diag
- WLAN: Act, Link
- LAN: Link/Act, Full/Col, 100
- Internet: Link/Act, Full/Col, 100
Channels: 1-11 (USA)
System requirements: One PC (200MHz or Faster Processor) with: 64MB RAM, Internet Explorer 4.0 or Netscape Navigator 4.7 or Higher for Web-based Configuration, CD-ROM Drive, Microsoft Windows 98, Me, 2000, or XP, a 802.11g or 802.11b Wireless Adapter with TCP/IP Protocol Installed or Network Adapter with Category 5 Ethernet network cable and TCP/IP Protocol installed
In the box: Wireless-G Broadband Router, Power Adapter, Setup CD-ROM with User Guide, Ethernet Network Cable, Quick Installation guide, Registration Card
Device details:
- Width: 7.32 inches
- Height: 1.89 inches
- Depth: 6.89 inches
- Warranty, parts: 1-year limite
- Warranty, labor: 1-year limited
Transmit Power: 15 dBm (Can be increased to 20db/84mw) (FIX: 84mw=19.24db) Info: 15db=31mW 17db=50mW 20db=100mW
Receiver Sensitivity (unconfirmed):
- -65db for ofdm 802.11g 54 megs
- -80db for dsss 802.11b 11 megs
Power (1.0?): 5V @ 2.0A, center
Power (2.0): 12V @ 1.0A, center positive. (Regulated internally down to 3.3V by an AnaChip? 1501-33, so the unit should be very tolerant of input fluctuations from 5 to 40 volts. Get the polarity right and it'll make do with whatever you give it.)
To turn on ripd and zebra, go to Advanced -> Routing -> Dynamic Routing and click Apply."
Processor
The Linksys processor is a 200MHz MIPS32 core which has a memory management unit with simple fixed mapping translation (FMT) - see this link for more details - so FreeBSD may be possible!
description of MIPS32 core
Reminder of other details:
RAM: 2 x IC42S16400, 64Mbit (4M X 16) RAM chips (16MB) Flash: Intel TE28F320 C3 flash 32Mbit chip (4MB) CPU: Broadcom [WWW]BCM4712KPB, running at 200MHz Ethernet: [WWW]ADMtek ADM6996 5 port 10/100 switch Wireless: On board; Broadcom BCM2050KWL
Firmware
Sveasoft
linksys: adding files to the code.bin firmware
Community I developed a script to add custom files into the Linksys filesystem. This was needed, for example, to add ripd.conf and zebra.conf to /usr/local/etc for the zebra routing daemon.
This is how it works ($LINKSYS_SRC is the directory of your linksys source code eg. /home/djohnson/downloads/linksys/sveasoft/Alchemy-2.3.4/)
1. Copy the script (makeimage.sh) to $LINKSYS_SRC/src/router 2. Copy files that you need to the $LINKSYS_SRC/src/router/mipsel-uclibc/target directory (you can make directories and add/delete files in here) 3. Execute the makeimage.sh script from the $LINKSYS_SRC/src/router directory 4. A new code.bin will be built which can be uploaded to the linksys box
The makeimage.sh script looks as follows:
- $include .config
- iLINUIXDIR=(shell pwd)
- echo $LINUXDIR
- export LINUXDIR
- export PLATFORMDIR := $(TOP)/$(PLATFORM)
- export INSTALLDIR := $(PLATFORMDIR)/install
- export TARGETDIR := $(PLATFORMDIR)/target
../linux/linux/scripts/squashfs/mksquashfs mipsel-uclibc/target mipsel-uclibc/target.squashfs -noappend cp ../linux/linux/arch/mips/brcm-boards/bcm947xx/compressed/vmlinuz mipsel-uclibc ../../tools/trx -o mipsel-uclibc/linux.trx mipsel-uclibc/vmlinuz mipsel-uclibc/target.squashfs
cp ../linux/linux/arch/mips/brcm-boards/bcm947xx/compressed/zImage mipsel-uclibc dd conv=sync bs=64k < mipsel-uclibc/zImage > mipsel-uclibc/linux.bin cat mipsel-uclibc/target.squashfs >> mipsel-uclibc/linux.bin
cp mipsel-uclibc/linux.trx ../../image/linux.trx cp ../../image/linux.trx ../../image/code.bin
Compiling Satori 4.0 with latest tool chain
To compile using the latest toolchain:
1) Apply this patch (also fixes zebra): http://www.greyskydesigns.com/~lonewolf/satori_fix.patch
Code: lonewolf@lonewolf:/data4/wrt54g/satori/WRT54G$ patch -p1 --dry-run patching file src/router/rc/writeimage.c patching file src/router/zebra/Makefile patching file src/router/zebra/lib/Makefile patching file src/router/zebra/ospfd/Makefile patching file src/router/zebra/ripd/Makefile patching file src/router/zebra/zebra/Makefile lonewolf@lonewolf:/data4/wrt54g/satori/WRT54G$ patch -p1 patching file src/router/rc/writeimage.c patching file src/router/zebra/Makefile patching file src/router/zebra/lib/Makefile patching file src/router/zebra/ospfd/Makefile patching file src/router/zebra/ripd/Makefile patching file src/router/zebra/zebra/Makefile lonewolf@lonewolf:/data4/wrt54g/satori/WRT54G.orig$
2) Run 'make'
3) When 'make' errors out, run 'for i in src/router/iproute2/lib/*.a; do mipsel-uclibc-ranlib $i; done'
4) Run make again
5) for i in src/router/iproute2/tc/*.a; do mipsel-uclibc-ranlib $i; done
6) make yet again
Check out here for the forum discussion at sveasoft on the topic