Address: 127.127.6.u
Reference ID: IRIG
Driver ID: IRIG-AUDIO
Audio Device: /dev/irigu
Features: modified SPARC audio driver
This driver supports the Inter-Range Instrumentation Group standard time-distribution signal IRIG-B using the audio codec native to the Sun SPARCstation. This signal is generated by several radio clocks, including those made by Austron, TrueTime, Odetics and Spectracom, among others, although it is generally an add-on option. The signal is connected via an attenuator box and cable to the audio codec input on a Sun SPARCstation and requires a specially modified kernel audio driver described in the IRIG Support Using Sun SPARC Audio page.
The driver gadget uses a modified BSD audio driver for the Sun SPARCstation which provides a timestamp, raw binary timecode, status byte and decoded ASCII timecode. The data are represented in the structure in the sys/bsd_audioirig.h header file:
struct irig_time { struct timeval stamp; /* timestamp */ u_char bits[13]; /* 100 IRIG data bits */ u_char status; /* status byte */ char time[14]; /* time string (null terminated) */
where stamp represents a timestamp at the zero crossing of the index
marker at the second's epoch, bits is a 13-octet, zero-padded binary-
coded string representing code elements 1 through 100 in the IRIG-B code
format, and status is a status bute, The decoded timestamp is a 13-
octet, null-terminated ASCII string ddd hh:mm:ss*
, where
ddd is the day of year, hh:mm:ss the time of day and *
is a
status indicator, with ' ' indicating valid time and '?' indicating
something wrong.
The timestamp is in Unix timeval format, consisting of two 32-bit words, the first of which is the seconds since 1970 and the second is the fraction of the second in microseconds. The status byte is zero if (a) the input signal is within amplitude tolerances, (b) the raw binary timecode contains only valid code elements, (c) 11 position identifiers have been found at the expected element positions, (d) the clock status byte contained in the timecode is valid, and (e) a time determination has been made since the last read() system call.
The 100 elements of the IRIG-B timecode are numbered from 0 through 99. Position identifiers occur at elements 0, 9, 19 and every ten thereafter to 99. The control function (CF) elements begin at element 50 (CF 1) and extend to element 78 (CF 27). The straight-binary-seconds (SBS) field, which encodes the seconds of the UTC day, begins at element 80 (CF 28) and extends to element 97 (CF 44). The encoding of elements 50 (CF 1) through 78 (CF 27) is device dependent. This driver presently does not use the CF elements.
Where feasible, the interface should be operated with signature control, so that, if the IRIG signal is lost or malformed, the interface produces an unmodulated signal, rather than possibly random digits. The driver will declare itself unsynchronized in this case.
Element CF Function ------------------------------------- 55 6 time sync status 60-63 10-13 bcd year units 65-68 15-18 bcd year tens
Timing jitter using the decoder and a Sun IPC is in the order of a few microseconds, although the overall timing accuracy is limited by the wander of the CPU oscillator used for timing purposes to a few hundred microseconds. These figures are comparable with what can be achieved using the PPS discipline as describe elsewhere in this note.
When enabled by the flag4
fudge flag, every received
timecode is written as-is to the clockstats
file.
time1 time
time2 time
stratum number
refid string
IRIG
.
flag1 0 | 1
flag2 0 | 1
flag3 0 | 1
flag4 0 | 1
clockstats
recording if set.