DIY Low Power Serial Console Servers, on a Shoestring Budget

I try to keep my home computer setup minimal, low power and out of sight. There is no dedicated computer space, everything is either portable, resides in the media centre and/or runs headless by default. It’s is great for keeping the house neat, but a pain when something goes wrong and I need to debug it in place.

For years, I had kept a USB serial cable ready to go beside the Soekris router, in case I needed to get in the console. But hauling the floating monitor up to the attic whenever the NAS had an issue became an inconvenience. So I came up with an idea from my professional life, console servers.

But there were two problems, what cheap, low power device to use, and how to get a serial port on the NAS? Turns out the second question was easily addressed when I noticed the COM connector in the main board in the NAS. I just needed to add a DB9 connector, or so I thought. Despite trying a variety of settings and speeds, I could never quite get the output at the correct speed and settings, which is a solvable problem, with enough time. I was prepared to live without serial support into the BIOS.

For the low power devices themselves, I considered SheevaPlugs, GuruPlugs etc but always held off since I didn’t want to have to spend over €100 (plus shipping) for each device. So I kept hauling the monitor around, up until last year when the Raspberry Pi was released. The 1 unit per order slowed me down for a few months, but I managed to amass 3 of them (2 console servers, and 1 toy) by the end of 2012. I got a handful of 16GB, recognizably branded SD cards from Amazon and I was making progress. I also needed cases for them, since the Soekris is in a cat accessible places, and I’m sure a cat would be curious about a circuit board at some point. So I got 3x of the elegantly designed AdaFruit cases from a UK reseller^Wcutter, which did the job very nicely indeed.

The result?

3 Raspberry Pis, in cases

I now have a Raspbian (eventually I’ll swap it out for FreeBSD after some testing) console server on my Soekris, which has already been invaluable flashing it’s BIOS and getting in via the console via SSH. I have another Raspberry Pi in the attic, ready for action once I solve the serial port issues on the NAS (which is in progress, but worthy of it’s own post). I’m even toying with a 3G modem on the Raspberry Pi on the Soekris as a complete out of band solution to fixing my home internet when I’m not there. Once I get that working, I’ll declare my home network over engineered. 🙂

Installing FreeBSD 9.0 amd64 on a Soekris net6501 (the long way)…

I figured I should document this here, since it really does belong somewhere on the internet.

I’ve been using Soekris systems as my home route/firewall/misc Unix box for about 5 years now and I’m quite a fan. I’ve slowly been coming to the realisation that my trusty old net5501-70 is going to become more and more of a bottleneck for me, I decided to jump to the new shiny, a net6501-70

It seems there is a known issue with FreeBSD 9.0 amd64 and the net6501, the GENERIC kernel fails to boot since an optional driver is required. So the options seem to be either install FreeBSD 9.0 in 32 bit, or do something a little creative to install 64 bit mode. In the end, I did both.

Originally, I tried in vain to replace the GENERIC kernel on the memstick installer with a custom compiled kernel, which didn’t work out so well. Next I tried to build a custom memstick image on one of my other FreeBSD amd64 systems, using the make scripts provided within /usr/src/release/. It seemed to be going well, but it was taking a number of days, which seemed way too long to build a 700MB iso image, so I gave up on that. I came very close to simply installing a freshly built world and custom kernel, but ran into issues I now know are FreeBSD boot loader stage issues (they’re just very poorly documented).

In the end, I installed FreeBSD 9.0 i386 on the net6501-70, and then using i366->amd64 migration steps, I did a side step over to amd64 (ignoring the parts about broken ports since I hadn’t installed anything from ports). I now have a freshly installed amd64 system I can continue to setup, it just took me a number of weeks to get here.

At least it wasn’t entirely wasted, I’ve learnt a lot more about FreeBSD boot stages and symptoms debugging problems. I’ve also learnt to use gpart, which is so much more intuitive to use than bsdlabel

Posted from Dublin, County Dublin, Ireland.