Slug Firmware Installation
From Buici
This is (yet another) version of the procedure for upgrading firmware on the Slug (Linksys NSLU2). It is here because the Slug wiki is difficult to read and does not appear to support enough formatting to improve it.
Firmware Installation with RedBoot and TFTP
This procedure uses RedBoot. There are two ways to get to RedBoot: by telnet'ing to the Slug when it boots, by adding a serial port to the slug. Once you've gotten to the RedBoot prompt, you may follow these instructions.
Setup TFTP server. You'll need a TFTP server from which the slug will download the firmware image. In this case, we'll use the the Linksys NSLU2_V23R25.bin firmware. Put the firmware file in the base directory of the TFTP server. The firmware files are 8MiB in length.
At the RedBoot prompt, setup the network interface. We use a network of 192.168.21/24. The server is at .1 and the Slug uses .2. This is only OK if you are talking to the Slug via the serial console.
RedBoot> ip_address -h 192.168.21.1 -l 192.168.21.2 IP: 192.168.21.2/255.255.255.0, Gateway: 192.168.0.1 Default server: 192.168.21.1, DNS server IP: 0.0.0.0
However, if you are using telnet to talk to the Slug, you must not change the local address. In this case, you'll have to give your tftp server an address on the 192.168.0/24 network. If you've given the server address 192.168.0.2, the ip_address command would look like this:
RedBoot> ip_address -h 192.168.0.2 IP: 192.168.0.1/255.255.255.0, Gateway: 192.168.0.1 Default server: 192.168.0.2, DNS server IP: 0.0.0.0
Transfer the firmware from the server to the slug.
RedBoot> load -v -r -b 0x01000000 NSLU2_V23R25.bin Using default protocol (TFTP) / Raw file loaded 0x01000000-0x017fffff, assumed entry at 0x01000000
Checksum verify the downloaded file. If the checksum is wrong, download the image again.
RedBoot> cksum Computing cksum for area 0x01000000-0x01800000 POSIX cksum = 3007264634 8388608 (0xb33f377a 0x00800000)
If you are using a different firmware image, you can produce the checksum from a Linux host with the cksum command.
linux-host# cksum NSLU2_V23R25.bin 3007264634 8388608 NSLU2_V23R25.bin
Erase the portion of flash that we're going to write. This does not include RedBoot, so don't fear. Also, this may seem redundant, but this step was added to make sure that flash is properly erased. Our experience shows that the automatic erase before write doesn't always work.
Be aware that you won't see the progress message when communicating via telnet. This is a bug in RedBoot's telnet daemon. You'll see all of the output when the command completes.
RedBoot> fis erase -f 0x50060000 -l 0x7a0000 ... Erase from 0x50060000-0x50800000: .........................
Write the portion of the image that has been erased.
Be aware that you won't see the progress message when communicating via telnet. This is a bug in RedBoot's telnet daemon. You'll see all of the output when the command completes.
RedBoot> fis write -f 0x50060000 -b 0x01060000 -l 0x7a0000
* CAUTION * about to program FLASH
at 0x50060000..0x507fffff from 0x01060000 - continue (y/n)? y
... Erase from 0x50060000-0x50800000: .........................
Firmware Installation with RedBoot and HTTP
The procedure for using a Web server and a TFTP server are nearly identical. Set the host address for the web server in the ip_address command and change the load command to use the http protocol. You may also need to specify a path for the file if it isn't in the base directory of the Web server.
RedBoot> load -v -r -b 0x01000000 -m http /firmware/NSLU2_V23R25.bin
My tests have not proven that this method works. The firmware download begins, and quickly stops. RedBoot freezes.
Resetting LinkSys Firmware SysConf
I cannot think of a reason you'd need to do this, but if you did, you would erase the SysConf partition as follows. Really though, you shouldn't need to do this.
RedBoot> fis erase -f 0x50040000 -l 0x20000 ... Erase from 0x50040000-0x50060000: . RedBoot>
--Elf 16:01, 6 April 2006 (PDT)

