[ntp:questions] Help getting IRIG working

Jim Kusznir jkusznir at gmail.com
Fri Apr 1 17:57:20 UTC 2011

Hello all:

I'm trying to set up a linux ntp server using IRIG as a time source,
from a SEL 2407 (http://www.selinc.com/sel-2407/).  Unfortunately,
I've not managed to get this running yet.

I'm running IRIG as this clock does not put out NEMA.  I am presently
working with PPS from this clock, which I guess is working, but I
would like to also be able to number the seconds without dependence on
external network-based time sources.

I've been trying to make it work off and on for the past 6 months,
with many hours work recently.  I feel the effort has devolved into
guess-and-check, and that I haven't been able to find enough docs to
answer questions necessary in this case, and most importantly, haven't
been able to debug the problems.

This clock puts out various IRIG options.  I've tried all of them in
every combination I can come up with, all without success.  From
reading the manual for the clock, it can put out at least 3 or 4
different forms of IRIG-B:

[From the manual]

IRIG-B is a serial data time format consisting of a 1-second frame that
contains 100 pulses divided into fields. The time-synchronized device decodes
the second, minute, hour, and day fields and sets the device internal time clock
upon detecting valid time data in the IRIG time mode.

The SEL-2407 provides both modulated and unmodulated IRIG-B outputs
according to the 200-98 standard. Modulated IRIG-B is IRIG-B12X.
Unmodulated IRIG-B timecode is IRIG-B00X. The last digit, either 2 or 0,
indicates the coded expression(s).
The timecode format IRIG-BXX2 is binary-coded decimal (BCD) timecode
(HH,MM,SS,DDD). This format represents traditional or legacy IRIG-B.

The timecode format IRIG-BXX0 consists of BCD timecode
(HH,MM,SS,DDD), plus straight binary seconds (SBS) of the day
(0–86400 s), and also contains control function extensions that include data
for the following: year, leap second, daylight time, UTC time offset, time
quality, parity.

These control function extensions are described in IEEE 1344, Annex F, or in
IEEE C37.118

[end quote]

As I gather from the manual and others, and working with this clock
with other equipment, it boils down to "standard IRIG-B" and "High
precision IRIG-B".  Also, the back of the clock has several outputs
that can put out unmodulated IRIG, but it has only one "Modulated
IRIG".  From reading the NTP docs I've found, I gather that I need
modulated IRIG.  There is a dip switch that changes 3 unmodulated and
the modulated output between standard precision and high precision;
I've tried both.  Which one is the correct one, or will either work?

Next: physical connection

The clock puts out all of its signals on BNC.  I'm not clear on the
"nomral" assumptions with such wiring; for example, does one normally
connect everything with BNC-T's, with the first and last T terminated
with a 50ohm resister, or should I just connect direct through?

What I've been working with mostly is a radio-shack cable that's RCA
to 3.5mm headphones jack, and a bnc to rca on the back of the clock.

I've attached it into the Line In on the sound card, set the mixer to
max capture, and ran arecord.  With the cable unplugged, arecord just
printed {{{{{; whereas when I plugged it in, I got a lot of garbage,
which would suggest that the sound settings are routing successfully
to the line in / capture codec.

Based on a comment from time-nuts, I set the alsa mixer settings to
max, and put in line a volume pot adjustment, and tried playing with
that to find a level that works, but no success.

On the software side, I've got just the IRIG audio driver and the
fudge factor to select line-in input (fudge2 1 IIRC).  My tc output
from ntpq primarily shows "3c" as the error code, with nothing else.
I've messed with the volumes, and it will change the error code
briefly, but then it sets back to 3c.

This is where its perhaps most problematic for me...how do I know
what's wrong with the input?  How do I know what the input is supposed
to do?  It seems, for example, level adjustment is just guess-and-test
with no way to know if I'm making it better or worse..how should one
normally do this?

Any other suggestions?

BTW: when I finish this and get it running, I plan to make this
available to the NTP pool as well as the entire university campus; its
not just for "my own good".


More information about the questions mailing list