Here are a few tips / notes on how to boot your own Linux on this router. I tried not to explain too much, I don't want to ruin your fun. If you have any problems (unsolvable within an hour of googling and hard thinking) feel free to mail me.
Oh, and if you have IPv6 connectivity, you might get to a page served by router I experimented on, maggie.


Things described on this page will void your router's waranty. It is also possible that your router will not work after trying anything suggested here. You do everything described here on your own risk. If you don't agree with this, leave, otherwise, have fun!

Serial port

I guess you could upload firmware through a web interface, but if you make a mistake there (and believe me, you will) you'll end up connecting to serial interface anyway, so here are a few tips, how to do it.

Open the router, locate serial port connections (btw. that site describes how to add usb ports to it, should be another fun project). Four of those 8 pins are connected, 3.3 V, GND, RX and TX. Figure out which is which, by looking at ADM5120 specifications.
To connect it with a PC you need to transform those UART signals into PC compatible ones. Fortunately MAXIM makes chips that do exactly that. You should use MAX3232, although MAX232 (much cheaper) worked for me as well. Look at specifications how to connect everything together.
Open up minicom, set it to 115200 bits/second and look at nice boot messages.


Download binutils source, ./configure --target=mipsel-linux --disable-nls, build, install.

Download gcc-core, ./configure --target=mipsel-linux --enable-languages=c --disable-shared --with-gnu-ld --disable-nls --disable-threads, make, install.
I think I had problems with this reporting "as: unrecognized option `-EL'", it took me like a day to figure out there are two locations for as (/usr/local/bin/mipsel-linux-as and /usr/local/mipsel-linux/bin/as) and that I have to prepend $PATH with location of the latter, to compile gcc.

Root filesystem and kernel

Build your root filesystem; for devices you need at least /dev/null, /dev/zero and /dev/console. Because you will use initramfs (rootfs included in kernel image, neat thing) you also need /init (just link to busybox or whatever does the trick too, and obviously you need all dependent libraries; I had wrong symlinked name of a library, this also took me a day).
Download kernel from linux-mips cvs (plain kernel 2.6.12/2.6.13-rcX does not work). Apply patch from linux-mips site (or my forward port, which should work) and try compiling. Symlink your rootfs to usr/root/. Don't forget about ARCH=mips and use vmlinuz target.
Upload to router, "b" option, upload to ram takes vmlinuz, "a" option takes a firmware, which I create with cat csys.bin vmlinuz > firmware. Yeah, a bit weird.

Useful links