3. Installing OpenWrt

3.1. Hardware

3.1.1. How can I identify which hardware I have?

3.1.1.1. Linksys models

On the bottom of the device is a silver sticker with a Linksys logo on it, under this logo are the words "Model No." followed by the model number of the device (WRT54G, WRT54GS, WAP54G). If there isn't a version number (v1.1, v2.0, v2.2) after the model then it's a v1.0 device.

Warning

If you have a WRT54G v2.2 or a WRT54GS v1.1 then OpenWrt will not yet run on these models. Read on the OpenWrt forum for more information on the experimental releases for these models

3.1.2. Units that considered supported in the stable version (eg. known to work "out-of-the-box").

  • Asus WL-500B (version 1.0)

  • Asus WL-500G

  • Buffalo WBR-G54

  • Buffalo WLA-G54

  • Linksys WAP54G (version 1.0)

  • Linksys WRT54G (version 1.0, 1.1, and 2.0)

  • Linksys WRT54GS (version 1.0)

  • Siemens SE505

  • U.S ROBOTICS USR5430 (similar to WAP54g, ...tftp is factory enabled)

3.1.3. Additional units supported in the experimental version.

  • Asus WL-500G Deluxe (aka WL-500GD)

  • Buffalo WBR2-G54

  • Buffalo WLA2-G54L

  • Linksys WRT54G (version 2.2 and 3.0)

  • Linksys WRT54GS (version 1.1 and 2.0)

  • Motorola WR850G

  • Microsoft MN-700 ( more info )

3.1.4. Units that should work. (untested)

  • Asus WL-300G

  • Asus WL-500B (version 2)

  • Asus WL-HDD

  • Belkin F5D7130

  • Belkin F5D7231-4

  • Belkin F5D7231-4P

  • Belkin F5D8230-4

  • Buffalo WBR-B11

  • Buffalo WBR2-B11

  • Buffalo WBR2-G54S

  • Buffalo WHR-G54

  • Buffalo WHR2-G54

  • Buffalo WHR3-G54

  • Buffalo WLA-G54C

  • Buffalo WLA2-G54

  • Buffalo WLA2-G54C

  • Buffalo WLI2-TX1-G54

  • Buffalo WZR-RS-G54

  • Dell TrueMobile 2300

  • Linksys WAP54G (version 2)

  • Linksys WAP55AG (version 1)

  • Linksys WRT54GX

  • Linksys WRT55AG (version 1)

  • Motorola WA840G

  • Motorola WA840GP

  • Motorola WR850GP

  • Netgear FWAG114NA

  • Ravotek W54-AP

  • Ravotek W54-RT

  • Siemens SX550

  • SimpleTech SimpleShare Office Storage Server 250G

  • Sitecom WL-111

  • Svec FD2164

  • Toshiba WRC-1000

  • Trendnet TEW-410APB

  • Trendnet TEW-410APBplus

  • Trendnet TEW-411BRP

  • Trendnet TEW-411BRPplus

3.1.5. Units known to not work yet.

  • Belkin F5D7230-4 -- only 2M of flash

  • Netgear WGT634U

  • Netgear WG602 (version 3) -- only 2M of flash

3.2. Getting the firmware.

It is recommended to download the daily snapshots from the OpenWrt website. Currently you go best if you download from the experimental repositoty at http://openwrt.org/downloads/experimental/bin/.

Beside the OpenWrt website are other OpenWrt repositories on the Internet which provide modified OpenWrt images with different features like ipsec, radius or even openmosix. The best way to find them is to use the OpenWrt Package Tracker page located at http://nthill.free.fr/openwrt/tracker/.

Last but not least, there is the OpenWrt CVS. If it is the first time that you compile binaries from source, i would recommend to the two first possibilities. Otherwise go ahead and get the latest CVS.


$ cvs -d:pserver:anonymous@openwrt.org:/openwrt co buildroot
		

3.3. Installing the firmware.

CautionLOADING AN UNOFFICIAL FIRMWARE WILL VOID YOUR WARRANTY
 

OpenWrt is an unofficial firmware which is neither endorsed or supported by Linksys or any other vendor. OpenWrt is provided "AS IS" and without any warranty under the terms of the GPL.

To avoid potentially serious damage to your router caused by an unbootable firmware we strongly suggest enabling a setting known as boot_wait.

3.3.1. Enabling boot_wait

The router does not boot directly into the firmware, instead it boots into a program known as a bootloader which is responsible for initializing the hardware and loading the firmware. If the boot_wait variable is set, the bootup process is delayed by few seconds allowing a new firmware to be installed through the bootloader using tftp. Setting of the boot_wait variable is done through a bug in the Ping.asp administration page by pinging the certain "addresses" listed below

First, for this to work the "internet port must have a valid ip address", either from dhcp or manually configured from the main page - the port itself doesn't need to be connected unless using dhcp. Next, navigate to the Ping.asp page and enter exactly each line listed below, one line at a time into the "IP Address" field, pressing the Ping button after each entry.


;cp${IFS}*/*/nvram${IFS}/tmp/n
;*/n${IFS}set${IFS}boot_wait=on
;*/n${IFS}commit
;*/n${IFS}show>tmp/ping.log
			

When you get to the last command the ping window should be filled with a long list of variables including "boot_wait=on" somewhere in that list.

This ping exploit definitely works with WRT54G v2.0/GS v1.0 and there are documented cases of it working for the latest hardware release WRT54G v2.2/GS v1.1. You must have an address on the WAN port. In the Setup/Basic Setup/Internet Setup section you may wish to select Static IP and set IP=10.0.0.1, Mask=255.0.0.0, Gateway=10.0.0.2. Those values are meaningless; you'll be overwriting them soon with new firmware. Note : flashing a Linksys WRT54GS v1.1 via TFTP using is only possible using the Port 1 of the switch !

3.3.2. Using boot_wait to upload the firmware

Although the firmware can be installed through more traditional means, we recommend that you use boot_wait for your first install. This will confirm boot_wait is correctly enabled and provide a firmware recovery experience without the stress of a broken router.

While in the bootloader the linksys wrt54g(s) will be forced to a lan ip of 192.168.1.1. To use the bootloader's tftp server you need to use a standard tftp client -- the tftp clients provided by linksys will not work for this. The file to be uploaded depends on the model; non linksys models take a TRX file while linksys models take a BIN file.

Table 1. Firmwares

ModelFirmeware
WRT54Gopenwrt-g-code.bin
WRT54GSopenwrt-gs-code.bin
(other)openwrt-linux.trx

The BIN file is simply a TRX with some extra information at the start to indicate the model. The only difference between openwrt-g-code.bin and openwrt-gs-code.bin is the first 4 bytes which determine the model.

The basic procedure of using boot_wait is:

  • unplug the power to your router

  • start your tftp client

    • give it the router's address (always 192.168.1.1)

    • set mode to octet

    • tell the client to resend the file, until it succeeds.

    • put the file

  • plug your router, while having the tftp client running and constantly probing for a connection

  • the tftp client will receive an ack from the bootloader and starts sending the firmware

CautionPlease be patient, the reflashing occurs AFTER the firmware has been transferred. DO NOT unplug the router, it will automatically reboot into the new firmware.
 

OpenWrt will light the DMZ led while booting, after bootup it will turn the DMZ led off.

Table 2. LED

LED patternreason
Solid power & DMZOpenWrt is booting or (if prolonged) has failed to boot, try failsafe mode. (Usually caused by old/corrupt jffs2 data from a previous OpenWrt install)
flashing power, slow flashing dmzError flashing / Corrupt firmware

The tftp commands might vary across different implementations. Here are two examples, netkid's tftp client and Advanced TFTP (available from: ftp://ftp.mamalinux.com/pub/atftp/).

If you are a debian user, you can install the tftp-hpa client with apt-get

netkit's and tftp-hpa tftp commands:


tftp 192.168.1.1
tftp> binary
tftp> rexmt 1
tftp> trace
Packet tracing on.
tftp> put openwrt-g-code.bin
				

Setting "rexmt 1" will cause the tftp client to constantly retry to send the file to the given address. As advised above, plug your box after typing the commands, and as soon as WRT54G's bootloader start to listen, your client will successfully connect and send the firmware. You can try to run # ping -f 192.168.1.1 (as root) in a seperate window and fire the line put openwrt-g-code.bin as the colons stop running over your terminal when you power-recycle your linksys.

Advanced TFTP commands:


atftp
tftp> connect 192.168.1.1
tftp> mode octet
tftp> trace
tftp> put openwrt-g-code.bin
				

You don't have to tell atftp to retry file sending, that's default.

Note

Don't forget about your firewall settings, if you have one.

Table 3. TFTP error

TFTP errorreason
Code pattern is incorrectThe firmware image you're uploading was intended for a different model.
Invalid PasswordThe firmware has booted and you're connected to a password protected tftp server contained in the firmware, not the bootloader's tftp server.
TimeoutPing to verify the router is online Try a different tftp client (some are known not to work properly)

If your computer is directly connected to the router and you are consistently getting "Invalid Password" failures, try connecting your computer and the router to a hub or switch. Doing so will keep the link up and prevent the computer from disabling its interface while the router is off.

Windows 2000 has a TFTP server, and it can be used to flash with OpenWrt firmware. Note that the Windows PC needs to be configured with a static IP address in the 192.168.1.0/24 subnet, and cannot use a DHCP IP address when flashing the firmware.