kb:driver_software:driver_software_for_openbsd:3rd_party_driver_software_for_openbsd

3rd Party Driver Software for OpenBSD

Currently there is no driver package for OpenBSD provided by Meinberg.

In 2006/2007 there has been an approach by one of the OpenBSD developers to support a few specific Meinberg PCI cards under OpenBSD, namely PCI32, PCI509, PCI511, PEX511, GPS170PCI :

Subsequently there was also some support for one specific USB device, namely USB5131 :

Next some support was added for the serial Meinberg Standard Time String, which can be transmitted by most standalone Meinberg devices:

In March 2019 support support for the DCF600USB was implemented, which provides the same API as the USB5131, but just has a different USB device ID:

Most of the supported devices are now out-of-date and have been replaced by newer models that are not yet supported.

Also, these drivers only implement a timedelta sensor which just reads the time from a particular device but doesn't support any extended API calls to monitor or configure the devices.

The common approach for Meinberg driver packages is to use a kernel driver that supports all Meinberg devices and provides basically the same API calls on all supported operating systems, usually via IOCTL calls and a shared object library or DLL. See Meinberg Driver And API Concepts.

Most of Meinberg's PCI and USB devices provide some functions that can be used to configure the device. For example, if you use one of Meinberg's Time Code Receivers (e.g. TCR180PEX, TCR51USB, etc.) then you have to configure the device first when you put it into operation, and select the time code that is actually applied to the device's input. If you don't do this the device will not synchronize to any input signal. This is a precaution to avoid ambiguities in the time code which could lead to decoding a wrong date, which could unexpectedly cause your system date to be changed.

With only the timedelta sensor approach currently implemented in OpenBSD it is not possible to do this.

A better approach would be to add support for OpenBSD to the Meinberg driver library which is also used for Windows, Linux, FreeBSD, and NetBSD, so all the standard API calls would also be available on OpenBSD, and the command line tools mbgtools could be used to configure or monitor each device.

Support for new devices or features would be implemented by Meinberg in the shared driver code and thus would be available in the same way on all operating systems that use that use this source code. The kernel driver also cares about concurrent access to each device, and the driver packages provide APIs from user mode as well as at the kernel level to retrieve very accurate time from PCI cards.

Anyway, if the shared code could also be used on OpenBSD it would be easy to support all past, current and future devices, provide the possibility to monitor and configure each device, and a single timedelta sensor interface could be implemented on top of the shared driver code to make all devices usable on OpenBSD.

Unfortunately there is yet no USB support at the kernel level in the driver packages fro FreeBSD and NetBSD, but it should not be too hard to port this from the Linux driver.

There have been rumours that someone else has ported the Meinberg Driver Package for FreeBSD to OpenBSD, but yet we have found no clue.

If someone wants to play with this stuff, needs implementation details, or would like some discussion, please contact Martin Burnicki martin.burnicki@meinberg.de.


Martin Burnicki martin.burnicki@meinberg.de 2019-03-27

  • kb/driver_software/driver_software_for_openbsd/3rd_party_driver_software_for_openbsd.txt
  • Last modified: 2020-09-21 12:45
  • by 127.0.0.1