A while ago, Maurice Janssen (firstname.lastname@example.org) sent me a modification of the nmea(4) line discipline to support the Meinberg Standard Time String format. With only a few changes, nmea(4) was turned into the msts(4) line discipline to support Meinberg's serial data format that can be emitted by all their radio clocks. I modified the code a bit, added a manual page, and added the bits needed to attach msts(4) to a tty to the ldattach(8) command. The result is that OpenBSD now has support for virtually any Meinberg radio-clock ever built.
Meinberg C51 radio-clock. Photo courtesy of Maurice Janssen.
Meinberg produces a wide variety of stand-alone, PCI, or otherwise attached radio-clocks. All of them, not only the stand-alone receivers, have a serial port that can output the MSTS format at various speeds. The time strings consists of 32 ASCII characters, starting with a STX character and ending with an ETX character. The high precision receivers (GPS or PXF DCF77 correlation receivers) generate the initial ASCII character in hardware and it is synchronized to the real time with an accuracy of about 50 uSec.
A detailed description of the Meinberg Standard Time String Format can be found on the Meinberg website at http://www.meinberg.de/english/specs/timestr.htm.
With support for the MSTS format, a Meinberg receiver in a Computer that does not run OpenBSD can now be used to feed the time to an OpenBSD machine. In a setup where machines are physically separated and must not have any network connections, one system can use a Meinberg receiver to synchronize it's clock while the second machine gets the same time information over the serial port and decodes it using the msts(4) line discipline.
At the moment there is no way to configure a receiver card's serial port under OpenBSD, but support for that is something I plan to add to the mbg(4) driver.
Many thanks to Maurice Janssen for the initial effort.