World IPv6 Day

Today is World IPv6 Day. The idea is that lots of companies will be enabling IPv6 on their web sites and other public services to make sure that everything works OK. IPv6 is a new Internet Protocol, to replace the now-obsolete IPv4, because we’ve nearly run out of addresses the protocol can use.

My home network has been fully IPv6 enabled since we moved to Devon all of 5 years ago (through my fantastic ISP, Andrews & Arnolds). I’ve been happily browsing away on the small number of web sites that offer IPv6 outside of World IPv6 Day. My day-to-day Googling and YouTubing have all been IPv6 for a long time now. Today sees us use Facebook over IPv6 and a bunch of other sites, but without looking it up I don’t even know which – you can’t tell the difference.

But one thing that isn’t IPv6 enabled yet, to my great chagrin, is my server. This web site and all the others I run, my email, my customers’ virtual machines… None of that is on IPv6, because the ISP my server is colocated with cannot get its act together. I have emailed RapidSwitch (IWNL) on multiple occasions asking when IPv6 will be available and they just keep burying their head in the sand. Apparently I’m one of only a small handful of customers who have asked for this, so there’s no ‘business’ reason to implement it. Well when it finally hits them in the face they won’t be ready for it and it’ll be a scramble. Great joy.

Update: I should add that I have a Linode virtual machine on a server somewhere in New Jersey, which is my “disaster recovery” machine in case anything should happen to the main server. That one is fully IPv6 enabled, so secondary DNS and my backup MX are reachable over IPv6. At least someone can do it right!

I guess I wait for and put up with the mad dash when it needs to be done, or find an alternative place to host my server and deal with all that fallout.

Happy IPv6 day!

PolyController Update

PolyController Main Board

PolyController Main Board

I haven’t posted about this for a while, but the project is definitely progressing. The hardware is complete—PCBs have been manufactured, I’ve soldered them up, and they have been fitted into enclosures. The firmware is also progressing well, though much slower than I had hoped due to being quite busy at the moment! The PCBs have had quite a few minor changes since I last posted pictures, especially on the main controller PCB. Some of the connectors were relocated and quite a few mistakes were fixed before production. Even so, as with almost any first revision PCB, there have been a few mistakes…

The Mistakes!

The first mistake is on the 32.768KHz clock line from the RTC to the AVR microcontroller. The clock output is open drain on the RTC, so this requires a pullup resistor to get a meaningful signal. The AVR I/O port has an internal pullup that can be enabled if required so I thought I could use that, but it turns out that doesn’t work if you use the port as a clock input rather than a general purpose I/O. This is easily fixed with greenwire and a 1K resistor.

Continue reading

Hacking the Emprex NSD-100

Emprex NSD-100 P2P Download Device

I recently got an Emprex NSD-100 from eBuyer, as they were dirt cheap. The purpose of this device is to sit on your network and have a hard disk attached, and sit there just doing BitTorrent downloads all the time, even when your computer is off. Needless to say this is no use to me at all, but it’s a low-power, small box with an ARM processor, 64MB of RAM, USB and Ethernet that other people have hacked to use their own Linux systems on.

Cracking it open

The best way to get Linux on this thing is to get to its bootloader. This is the piece of software that first runs on the device, a bit like the BIOS on your home PC. Its job is to set up the hardware ready for things like a kernel to run, and in our case it can also download a kernel from a TFTP server and run it instead of the built-in version.

Serial Header with Ribbon Cable

To communicate with the bootloader, we need a serial port. Once you open the NSD-100 there is an obvious single unpopulated header, which serves as the serial port. All you need to do is solder on a ribbon cable on the underside of the board, and you get a 3.3V TTL level serial port. By soldering a ribbon cable on the underside of the board, there is no need to remove the EMI shield on the top side of the board.

Continue reading


So I’ve been working on a bit of a pet project lately – which I’ve been calling the PolyController. Slightly fed up with our central heating controller and thermostat being so stupid, I thought I could do better myself and build my own. Our current controller is nothing but a time switch, and the thermostat a manual dial one that has unfortunately been mounted right next to the main central heating feed pipes and hence is mostly useless.

The idea started with a simple microcontroller operating 4 relays and getting fed temperature information over the network from my already existing 1-Wire temperature sensors. My thoughts were to run a simple program to feed the controller the temperature information and it could determine whether the central heating and/or hot water needed to operate. A simple schedule could determine if/when heat was needed and what temperature to aim for – that way you could keep the heating on at a lower level during the night for example, or offer frost protection when you’re on holiday.

Continue reading

Apple Time Machine and Netatalk

Please note: This guide assumes you are using Snow Leopard. For Lion, things are a little different. I’m writing a new guide with Lion in mind but I haven’t got round to finishing it yet – the short version is: you need Netatalk 2.2 with its Avahi support built-in, and remove any manual Avahi service files you have created.

There are many guides on the Internet that deal with getting Apple’s Time Machine to back up to a network disk, however all of those that I managed to find rely on setting a hidden system preference to show unsupported disks – and hence don’t help with the problem of restoring from backup should the worst happen.

There is a way, though, to get Time Machine backing up to a Linux server without jumping through any hoops on the client. The backup volume just appears in the Time Machine preference pane, and the Mac OS X Install DVD’s restore mode also can see and restore from the network volume.
Continue reading

Processes on Linux

I’ve been asked by my manager to create a short ‘course’ on how processes work under Linux. I’m going to cover everything from how they are started, what they do when they are running, and how they die. This will be posted on this blog, and I’ll eventually bundle it up in a PDF when I’ve finished for easy printing. As noted at the bottom of every page on my blog, the course is entirely CC licensed. Please note it’s still a work in progress and thus will change and contains errors!

Comments are now closed due to the sheer amount of SPAM this entry gets…


As some of you may know, I own a Soekris net4801 I affectionately call Piccolo. It runs Linux, and it’s my router, firewall, and does a few other odd jobs on my network. Basically, it governs my connection to the Internet, and if it goes down I’m offline until I get it sorted.

In the last couple of days I decided to no longer run its OS off the small laptop hard disk I installed in it, but instead off a CompactFlash card like one uses in photo cameras. It has a nice slot specially for this purpose, and I even bought a 512MB card to use with Piccolo when I got it many months ago. So I set out to build a version of Debian Sarge (testing) that would run off a read-only filesystem (since CompactFlash only has a limited amount of write cycles), and out of that came PicoDebian, a small version of Debian suitable for use on small systems like the Soekris net4801.

Linux Software RAID Hack

You need to install a piece of software that requires 66GB of free space, but you don’t have that much in one place. Sure, you have 30GB free on one partition, and another 40Gb free on another, but the installer will still complain about the lack of space. How do you combine the free space on those two parititions into a new, much larger partition, without reformatting the existing partitions?
Continue reading