Long Canyon Trail, Sedona, Arizona

One of the challenges you run in to when moving to GNU/Linux is that simple little things may not be supported. For example, updating the firmware on your router. Linksys provides some rinky-dink program to install the firmware from Windows, but doesn’t tell you how or if you can do it from GNU/Linux. (At least there wasn’t anything I could find on their site about this.)

I’ve had a Linksys BEFSR41 4-port wired router since 2000, and in the early days I upgraded the firmware from Windows a few times, but now haven’t touched it in many years, getting by just fine with the 1.37 firmware from Jan ’01. Recently I’ve been trying out OpenDNS, and from their site gathered that a newer firmware might allow me to statically set my DNS servers in the router, rather than having to set them on each computer.

So I went to Linksys, where I found that my router is so old it doesn’t even have the version number on there, which you need to know in order to pick the right firmware. Mine says BEFSR41B on the bottom. I guess that means I have version 1, for which the latest firmware is 1.46.02 from 3 Aug ’04.

Now, how to install it without a Windows box to run their setup software on? I do have Win XP running in a virtual machine, but didn’t want to have to resort to that. This is something I should be able to do with my OS of choice.

Fortunately, there is Google, and there is an old page at Practically Networked. (A site I read a bit back in my early router days.)

How To

You just need the .bin file for the firmware from Linksys, renamed to CODE.BIN, and tftp, the trivial file transfer program (a user interface for TFTP, the Trivial File Transfer Protocol).

Linksys’s Windows program is probably just a wrapper around tftp, and their firmware install instructions do mention TFTP as a filename, although not what it is. On my Ubuntu machine, it’s as easy to get as:

sudo apt-get install tftp

Then you temporarily set the password for the router to be blank, and from the dir that has CODE.BIN:

tftp 192.168.1.1
mode binary
put CODE.BIN

And that is that. Why couldn’t Linksys just say so in the support/downloads upgrade instructions?

The Practically Networked page says you can avoid the password reset with:

put CODE.BIN CODE.BINoctetpassword

Replacing “password” with your password, but I didn’t try that method.

I was happy with this simple, elegant solution. Anything that saves you from tedious dependence on Windows adds to that delicious sense of freedom.