ts2phc - Synchronizes one or more PTP Hardware Clocks using
external time stamps.
ts2phc [ -hmqv ] [ -c device|name ] [
-f config ] [ -l print-level ] [ -s
device|name ] [ long-options ] ...
ts2phc synchronizes PTP Hardware Clocks (PHC) to external
time stamp signals. A single source may be used to distribute time to one or
more PHC devices.
- -a
- Adjust the direction of synchronization automatically. The program
determines which PHC should the reference clock for time distribution and
which should be the destinations by querying the port states from the
running instance of ptp4l. Note that using this option, the PPS
signal distribution hierarchy still remains fixed as per the configuration
file. This implies that using this option, a PPS source of the PHC kind
may become a target clock, and a PPS sink may become a reference clock.
Other, non-PHC types of PPS sources (generic, NMEA) cannot become target
clocks. Clocks which are not part of ptp4l's list of ports are not
synchronized. This option is useful when the boundary_clock_jbod
option of ptp4l is also enabled.
- -c
device|name
- Specifies a PHC to be synchronized. The clock may be identified by its
character device (like /dev/ptp0) or its associated network interface
(like eth0). This option may be given multiple times.
- -f config
- Read configuration from the specified file. No configuration file is read
by default.
- -h
- Displays the command line help summary.
- -l
print-level
- Sets the maximum syslog level of messages which should be printed or sent
to the system logger. The default is 6 (LOG_INFO).
- -m
- Prints log messages to the standard output.
- -q
- Prevents sending log messages to the system logger.
- -s
device|name
- Specifies the source of the Time of Day (ToD) data. Use the key word
"generic" for an external 1-PPS without ToD information. When
using a PHC as the time source, the clock may be identified by its
character device (like /dev/ptp0) or its associated network interface
(like eth0). Use the key word "nmea" for an external 1-PPS from
a GPS providing ToD information via the RMC NMEA sentence.
- -v
- Prints the software version and exits.
Each and every configuration file option (see below) may also
appear as a "long" style command line argument. For example, the
use_syslog option may be set using either of these two forms.
--use_syslog 1
--use_syslog=1
Option values given on the command line override values in the
global section of the configuration file.
The configuration file is divided into sections. Each section
starts with a line containing its name enclosed in brackets and it follows
with settings. Each setting is placed on a separate line, it contains the
name of the option and the value separated by whitespace characters. Empty
lines and lines starting with # are ignored.
There are two different section types.
- 1.
- The global section (indicated as [global]) sets the program options
and the default time sink options. Other sections are clock specific
sections, and they override the default options.
- 2.
- Time sink sections give the name of the configured PHC (e.g.
[eth0]). Time sinks specified in the configuration file need not be
specified with the -c command line option.
- first_step_threshold
- The maximum offset, specified in seconds, that the servo will correct by
changing the clock frequency (phase when using nullf servo) instead of
stepping the clock. This is only applied on the first update. When set to
0.0, the servo will not step the clock on start. The default is 0.00002
(20 microseconds).
- free_running
- When set to 1, no PHC will be adjusted. This option can be useful in test
scenarios, for example to determine how well synchronized a group of local
clocks are to each other. The default is 0 (adjust the clocks).
- leapfile
- The path to the current leap seconds definition file. In a Debian system
this file is provided by the tzdata package and can be found at
/usr/share/zoneinfo/leap-seconds.list. If a leapfile is configured it will
be reloaded if modified. The default is an empty string, which causes the
program to use a hard coded table that reflects the known leap seconds on
the date of the software's release.
- logging_level
- The maximum logging level of messages which should be printed. The default
is 6 (LOG_INFO).
- max_frequency
- The maximum allowed frequency adjustment of the clock in parts per
billion. This is an additional limit to the maximum allowed by the
hardware. When set to 0, the hardware limit will be used. The default is
900000000 (90%).
- message_tag
- The tag which is added to all messages printed to the standard output or
system log. The default is an empty string (which cannot be set in the
configuration file as the option requires an argument).
- step_threshold
- The maximum offset, specified in seconds, that the servo will correct by
changing the clock frequency instead of stepping the clock. When set to
0.0, the servo will never step the clock except on start. The default is
0.0.
- ts2phc.nmea_remote_host,
ts2phc.nmea_remote_port
- Specifies the remote host providing ToD information when using the
"nmea" PPS signal source. Note that if these two options are
both specified, then the given remote connection will be used in
preference to the configured serial port. These options default to the
empty string, that is, not specified.
- ts2phc.nmea_serialport,
ts2phc.nmea_baudrate
- Specifies the serial port and baudrate in bps for character device
providing ToD information when using the "nmea" PPS signal
source. Note that if the options, ts2phc.nmea_remote_host and
ts2phc.nmea_remote_port, are both specified, then the given remote
connection will be used in preference to the configured serial port. The
default serial port is "/dev/ttyS0". The default baudrate is
9600 bps.
- ts2phc.perout_phase
- Configures the offset between the beginning of the second and the PPS
source's rising edge. Available only for the PHC kind of PPS source. The
supported range is 0 to 999999999 nanoseconds. The default is 0
nanoseconds, but leaving this option unspecified will not transmit the
phase to the kernel, instead PPS will be requested to start at an absolute
time equal to the nearest 2nd full second since the start of the program.
This should yield the same effect, but may not work with drivers that do
not support starting periodic output at an absolute time.
- ts2phc.pulsewidth
- The pulse width of the external PPS signal in nanoseconds. When
'ts2phc.extts_polarity' is "both", the given pulse width is used
to detect and discard the time stamp of the unwanted edge. In case the PPS
source is of the PHC kind, an attempt is made to request the kernel to
actually emit using this pulse width. If this fails, it is assumed that
the specified pulse width is correct, and the value is used in the edge
rejection algorithm. The supported range is 1000000 to 990000000
nanoseconds. The default is 500000000 nanoseconds.
- ts2phc.tod_source
- Specifies the source of Time of Day (ToD) data. Use the key word
"generic" for an external 1-PPS without ToD information. When
using a PHC as the time source, the clock may be identified by its
character device (like /dev/ptp0) or its associated network interface
(like eth0). Use the key word "nmea" for an external 1-PPS from
a GPS providing ToD information via the RMC NMEA sentence. The default is
"generic"
- use_syslog
- Print messages to the system log if enabled. The default is 1 (enabled).
- verbose
- Print messages to the standard output if enabled. The default is 0
(disabled).
- ts2phc.channel
- The external time stamping or periodic output channel to be used. Some PHC
devices feature programmable pins and one or more time stamping channels.
This option allows selecting a particular channel to be used. When using a
PHC device as the PPS source, this option selects the periodic output
channel. The default is channel 0.
- ts2phc.extts_correction
- The value, in nanoseconds, to be added to each PPS time stamp. The default
is 0 (no correction).
- ts2phc.extts_polarity
- The polarity of the external PPS signal, either "rising" or
"falling". Some PHC devices always time stamp both edges.
Setting this option to "both" will allow the ts2phc program to
work with such devices by detecting and ignoring the unwanted edge. In
this case be sure to set 'ts2phc.pulsewidth' to the correct value. The
default is "rising".
- ts2phc.master
- Setting this option to 1 configures the given PHC device as the source of
the PPS signal. The default is 0 for the time sink role.
- ts2phc.pin_index
- The pin index to be used. Some PHC devices feature programmable pins, and
this option allows configuration of a particular pin for the external time
stamping or periodic output function. The default is pin index 0.
Be cautious when sharing the same configuration file between
ptp4l, phc2sys, and ts2phc. Keep in mind that values specified in the
configuration file take precedence over the default values. If an option
which is common to the other programs is set in the configuration file, then
the value will be applied to all the programs using the file, and this might
not be what is expected.
It is recommended to use separate configuration files for ptp4l,
phc2sys, and ts2phc in order to avoid any unexpected behavior.