WRT54G

From WirelessAfrica

Hardware

Linksys hack

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:

  1. $include .config
  2. iLINUIXDIR=(shell pwd)
  3. echo $LINUXDIR
  4. export LINUXDIR
  5. export PLATFORMDIR := $(TOP)/$(PLATFORM)
  6. export INSTALLDIR := $(PLATFORMDIR)/install
  7. 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

OpenWRT

Freifunk

DD-WRT