Speaking of which, does anyone know the BestTM way to update the system clock using a DS1338 module? I did find a C script a while back that did it using the DS1307 specification (which the DS1338 is apparently compatiable with) but I can't find it now. I was wondering if Linux's rtc command could do it or if there's a daemon I could run on startup out of the box?
There is a driver in tree for DS1307 family (including DS1338). To use it will you probably have to modify the board config file for the Raspberry Pi and recompile your kernel. However, since the addresses of these devices can't change it's probably safe to put it in the default config file and build as a module, but that's something the foundation would have to do in their kernel tree, and may not want to.
Once the chip's internal NVRAM is set to make it act as an RTC (which you could do one time with the Linux i2c utilities before loading the module), it should work with the standard Linux hardware clock interface, and if your init scripts read/write the time using hwclock (and the module is loaded first / compiled in), they should pull the correct time from the module.
If you don't want to fiddle in the kernel it shouldn't be too hard to write a C program to interface manually via the i2c library to the chip instead.
I have a couple of receivers for those (IIRC I was going to hang them off a serial port) – one for the UK version, one for the German equivalent.
Along with other similar signals like DCF77, CHU and WWV. Many of these actually have soundcard-based decoders in the NTP sources, so all you need is a cheap USB soundcard and a shortwave radio to get within a few ms. Of course this is a lot more cumbersome than just attaching an RTC module.