After ongoing issues with maintaining a reliable Internet connection at home I decided to add a router box to the network in charge of assigning IP addresses and sharing our Internet connection with the rest of the network. I wanted something with at least two Ethernet ports so that all Internet traffic would flow through the device and allow bandwidth hogs to be identified at times when the connection appeared flooded.
After a bunch of research into appropriate hardware and software I decided on a PC Engines ALIX single board computer (alix2d13). The ALIX is a small board about the size of a CD case with the following features:
- 500Mhz AMD Geode (x86 compatible) CPU
- 256Mb RAM
- 2 × USB ports
- 3 × 10/100 Ethernet ports
- Mini-PCI socket (for WiFi if desired)
- RS-232 serial port
- CompactFlash socket
Along with the board I ordered one of PC Engines cases (case1s2u) to go with it.
For the software I settled on OpenWRT. I chose it for a number of reasons:
- Good support for ALIX boards.
- Designed to run from Flash and read only file systems.
- Great binary package manager that allows additional software to be installed.
- Lightweight Lua based Web UI available (LuCI).
After learning to use the excellent OpenWRT build system I was able to build a custom CompactFlash image for the board to run. I also created a package for my weather logging software so that the ALIX can do all my weather station logging.
This setup has been extremely reliable. I’ve pushed all services on to it that my ADSL modem and AirPort base station used to be responsible for. Including maintaining the PPPoE connection to my ISP. I’d certainly recommend a set up like this to anyone who is looking for a small dedicated home router.
If you don’t like the prospect of building your own custom OS image I’d also highly recommend m0n0wall, which is a FreeBSD derived router system. I ran this on the ALIX initially and it was very easy to get up an running (write image to CF card, boot from card - default settings worked fine but can be changed via a web UI) and very reliable.