[ntp:questions] proprietary hardware clock as NTP reference source
apobrienster at gmail.com
Thu Jun 17 15:59:56 UTC 2010
On Jun 13, 12:21 am, Rob Neal <hun... at comcast.net> wrote:
> On Fri, Jun 11, 2010 at 02:26:13PM -0700, apobrien wrote:
> > Hello list,
> > I have a set of proprietary hardware timing cards (Symmetricom
> > bc635PCIe) which synchronize their clocks using a dedicated
> > interconnect. As you might imagine the timing card conditioned time
> > drifts from that of the hosts they're installed in.
> > What I'd like to do is make the "master" timing card's time into a NTP
> > reference clock then use NTP to distribute that time to the other
> > hosts in the (private) network.
> > I've looked at Orphan mode and undisciplined local clocks but they
> > only refer to the host's software clock if I'm not mistaken. I've
> > also searched through the archive but I'm afraid I lack the
> > appropriate terminology to get meaningful results.
> > Can someone point me toward (some google words maybe) creating an
> > arbitrary NTP reference source (under Linux)? I think I'm just
> > missing something very basic.
> > I've been looking at the LinuxPPS project as these cards output a PPS
> > that I might use to condition the host clock using Linux PPS but I
> > don't have a 8250 serial port on these new fangled PCs.
> > TIA!
> > Andy
> > _______________________________________________
> > questions mailing list
> > questi... at lists.ntp.org
> Symmetricomm has a kernel mode driver for the bc635/7 cards, for Linux.
> If you have a copy you can use ntp reference clock 22 (bancomm) to
> feed the time to NTP
> refclock 127.127.16.u mode 2
> in the config file, where u is whatever unit your card presents as.
> The Symmetricom driver is proprietary, they charge for it, btw.
Thanks Rob, both for updating the driver and for alerting me to its
existence. It's exactly what I was looking for.
For those interested, here are the steps I followed to get it working
using Symmetricom's newer Linux software development kit (SDK). These
instructions reference ntp-4.2.6p2-RC6.
1) install the SDK by following their documentation. Copy the shared
library file, libbcsdk.so, to a standard directory (I used /usr/lib/
2) link the default SDK device file to the file expected by the
Bancomm reference clock driver: ln -s /dev/windrvr6 /dev/btfp0
3) untar the ntp source and modify ntpd/Makefile.am line 91 from
ntpd_LDADD = $(LDADD) $(LIBOPTS_LDADD) ../libntp/libntp.a -lm
ntpd_LDADD = $(LDADD) $(LIBOPTS_LDADD) ../libntp/libntp.a -lm -
lbcsdk @LCRYPTO@ @LSCF@
4) configure the source with the --enable-BANCOMM option. I used ./
configure --enable-BANCOMM --enable-clockctl
5) make, make install. If it doesn't compile complaining about
MOD_NANO, add the line
#define MOD_NANO ADJ_NANO somewhere in ntpd/ntp_loopfilter.c
6) edit ntp.conf as Rob suggests: I'm using
server 127.127.16.0 prefer mode 2 burst minpoll 4
After only a few minutes of operation the timing card and system clock
average only 2 microseconds disagreement with a [-0.000046, 0.000137]
range over 1,500,000 samples taken over a ~5 second interval!
More information about the questions