Since I asked in an earlier thread, and nobody answered, I'll share, in hopes that the magic of Google will make this available to anyone else who wants to know if this can be done… (tl;dr summary: Yes, with a few caveats.)
I tried to set up ntpd on a N16 under dd-wrt; it didn't work (dd-wrt folks apparently screw with kernel headers, and break some network apps, notably 'bind', but also 'ntpd').
I reflashed to TomatoUSB (Toastman extras build), installed the optware ntpd, pointed it at the ntp.org pool, and fired it up. It works. Victory!
I plugged in a USGlobalSat BU-353 USB GPS dongle (it's the generic round $30 one). The N16 is going somewhere with extremely limited network connectivity, so network timesync isn't really a viable option. After I added the appropriate module (pl2303, if I recall correctly - it's in the build), /dev/ttyUSB0 popped up.
I reconfigured ntpd to use the GPS (ttyUSB0) as a reference clock, and restarted. Ntpd picked it up. So far, everything works great. Mostly.
What I wanted, and what I (think I) got was my wifi router acting as a GPS-sync'ed NTP server. (Not one reliable beyond roughly 10 milliseconds, but far, far better than some of the "drifts a couple seconds per hour" instruments I'm dealing with.)
Things that didn't quite work as expected (I don't think these are bugs in TomatoUSB, just integration problems):
1. If you start ntpd (with GPS) with the system date at 0 (1 Jan 1970), it will eventually correct to time-of-day, but not day/month/year (it may correct over the course of days, but it didn't in the 2 hours I let it run).
2. GPS dongle works fine at 9600bps. And at 57,600bps. Cranking up ntpd debugging shows it reading incoming data at 56k, no prob. But ntpd won't actually process incoming data unless the incoming data is at 4800bps.
3. Setting up an undisciplined local clock doesn't work. (It'll show up on the clock list, but it will never increment)
4. gpsd (a shim that has hardware-specific drivers for the SiRF-III GPS chipset, allowing potentially higher resolution) works, but gpsd/ntpd integration doesn't. Also, shutting down gpsd at a bad time will result in the GPS dongle being left in a mode where it is apparently dead (I had to track down a windows-only utility to reset it to a working configuration)
If this is wiki-worthy, I'll be happy to put up specific config details (but if you don't deviate from the most basic config, stuff just works).
Thanks to everyone (especially Toastman) involved in making TomatoUSB!
