This content is not available in your preferred language.

The content is shown in another available language. Your browser may include features that can help translate the text.

Why Doesn’t My ARM-based Linux Real-Time Target Act as a 1588 Master?

Updated Aug 1, 2023

Reported In

Hardware

  • CompactRIO Controller

Operating System

  • NI Linux Real-Time

Issue Details

  • I use NI-TimeSync to have my CompactRIOs/sbRIOs support IEEE 1588-2008 Precision Time Protocol synchronization. However, my ARM-based NI Linux Real-Time (Linux RT) device always acts as a PTP slave, even if there are no 1588 masters present on the network. Why can’t I use my controller as a 1588 master?
  • When trying to set the BMCA mode of my ARM-based NI Linux Real-Time (Linux RT) to MasterSlave using the Monitor and Configure Time References.vi, the error -1073807240 shows up:
error.png

Solution

Support for Linux RT targets was added to NI-TimeSync with version 14.5. During development, National Instruments detected an intermittent loss of synchronization that only occurs when an ARM-based Linux RT target functions as the 1588 master. To prevent this, NI-TimeSync applies the slave-only setting to all ARM-based Linux RT targets (such as NI 906x controllers) by default. This prevents these devices from serving as a master.

Networks with systems requiring synchronization should contain at least one clock that is not set to slave-only.

You can override the slaveonly default setting on an RT Linux device, and configure a target to be masterslave. This is needed if none of the devices on the network is capable of acting as master, e.g. because all of them are RT Linux devices. Synchronization performance may degrade as a result. National Instruments recommends using a controller that is not affected by this intermittent synchronization loss as the 1588 master. You can also use a dedicated 1588 master to supply time to the system.

Complete the following steps to override the slaveonly setting:
  1. Navigate to /usr/local/natinst/share/TimeSync/TimeReferences/ (if using NI-TimeSync 18.6 or older) or /usr/lib/arm-linux-gnueabi/ni-timesync/timereferences (if using NI-Sync 19.0 or newer) and open ptp.conf.
  2. Change the appropriate line from Ptpengine:preset=slaveonly to read: Ptpengine:preset=masterslave
  3. Reboot the device

Additional Information

  • The operating system of your real-time target is listed on the System Settings tab of NI MAX. Targets affected by this issue will have an OS name beginning with NI Linux Real-Time ARM.
  • You can modify ptp.conf by using WebDAV to transfer the file to and from your host computer, or you can access and modify the file via the secure shell (SSH).
  • All non-RT-Linux controllers ship with masterslave as the default setting, meaning they can switch between the master and slave state. They will be be chosen as a 1588 master if their timekeeping ability is better than any other 1588 device on their network.
  • You can use the IEEE 1588-2008 Find Clocks.vi example VI shipped with NI-TimeSync to verify that there is a master available on your 1588 network. This VI is available in the NI Example Finder under Tasks»Hardware Input and Output»Timing and Synchronization»Time-based»IEEE 1588-208 Find Clocks.vi.
Run the VI on a host computer that is on the same subnet as the 1588 network. The VI will show information that includes the Clock ID and Clock State, as shown below. Note that National Instruments 1588 devices, as well as many others, use the MAC address as part of the clock ID.