Provided by: linuxptp_4.4-0ubuntu1_amd64 bug

NAME

       ts2phc - Synchronizes one or more PTP Hardware Clocks using external time stamps.

SYNOPSIS

       ts2phc  [ -hmqv ] [ -c device|name ] [ -f config ] [ -l print-level ] [ -s device|name ] [ long-options ]
       ...

DESCRIPTION

       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.

OPTIONS

       -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.

LONG OPTIONS

       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.

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.

GLOBAL OPTIONS

       active_key_id
              Used  in  conjunction  with  spp  and sa_file directives to specify which key from the spp defined
              Security Association should be used for outbound icv calculations. All  Security  Assocations  are
              read from the file specified by sa_file. Requires spp and sa_file directives. Must be in the range
              of 1 to 2^32-1, inclusive. The default is 0 (disabled).

       clock_servo
              The servo which is used to synchronize the local clock. Valid values are "pi" for a PI controller,
              "linreg"  for an adaptive controller using linear regression, "ntpshm" and "refclock_sock" for the
              NTP SHM and chrony SOCK reference clocks respectively to allow another process to synchronize  the
              local  clock,  and  "nullf"  for a servo that always dials frequency offset zero (for use in SyncE
              nodes).  The default is "pi".

       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.  If the tag
              contains the string "{level}", it will be replaced with the log level of the message as a  number.
              The  default  is  an  empty  string  (which  cannot be set in the configuration file as the option
              requires an argument).

       ntpshm_segment
              The number of the SHM segment used by ntpshm servo.  The default is 0.

       pi_integral_const
              The integral constant of the PI controller. When set to 0.0, the integral constant will be set  by
              the following formula from the current sync interval.  The default is 0.0.

              ki = min(ki_scale * sync^ki_exponent, ki_norm_max / sync)

       pi_integral_exponent
              The  ki_exponent  constant  in  the formula used to set the integral constant of the PI controller
              from the sync interval.  The default is 0.4.

       pi_integral_norm_max
              The ki_norm_max constant in the formula used to set the integral constant  of  the  PI  controller
              from the sync interval.  The default is 0.3.

       pi_integral_scale
              The  ki_scale  constant in the formula used to set the integral constant of the PI controller from
              the sync interval.  The default is 0.3.

       pi_proportional_const
              The proportional constant of the PI controller. When set to 0.0, the proportional constant will be
              set by the following formula from the current sync interval.  The default is 0.0.

              kp = min(kp_scale * sync^kp_exponent, kp_norm_max / sync)

       pi_proportional_exponent
              The kp_exponent constant in the formula used to set the proportional constant of the PI controller
              from the sync interval.  The default is -0.3.

       pi_proportional_norm_max
              The kp_norm_max constant in the formula used to set the proportional constant of the PI controller
              from the sync interval.  The default is 0.7

       pi_proportional_scale
              The kp_scale constant in the formula used to set the proportional constant of  the  PI  controller
              from the sync interval.  The default is 0.7.

              sa_file  Specifies  the  location  of the file containing Security Associations used for immediate
              security processing of the Authentication TLV  in  support  of  the  optional  security  mechanism
              defined  in  ieee1588-2019  ch  14.16.  See  SECURITY  ASSOCIATION  OPTIONS  for more info on file
              contents.  The default is an empty string. (disabled).

       servo_num_offset_values
              The number of offset values considered in  order  to  transition  from  the  SERVO_LOCKED  to  the
              SERVO_LOCKED_STABLE  state.  The transition occurs once the last 'servo_num_offset_values' offsets
              are all below the 'servo_offset_threshold' value.  The default value is 10.

       servo_offset_threshold
              The offset threshold used in order to transition from the SERVO_LOCKED to the  SERVO_LOCKED_STABLE
              state.   The  transition  occurs once the last 'servo_num_offset_values' offsets are all below the
              threshold value.  The default value of offset_threshold is 0 (disabled).

       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.

       spp    Specifies the security parameters pointer for the desired security  association  to  be  used  for
              authentication  tlv  support.  If  specified,  the  port  owning  the  spp  will attempt to attach
              (outbound) and check  (inbound)  authentication  tlvs  for  all  messages  in  accordance  to  the
              corresponding security association sourced via the sa_file directive. Not compatible with one step
              ports.  Must be in the range of -1 to 255, inclusive. The default is -1 (disabled).

       ts2phc.holdover
              The  holdover  interval,  specified  in seconds. When the ToD information stops working (e.g. GNSS
              receiver lost its fix), ts2phc is allowed for the specified interval to continue synchronizing the
              target clock as long as the servo is in the SERVO_LOCKED_STABLE state. The servo  state  needs  be
              enabled by the servo_offset_threshold option. The holdover is not supported with the -a option and
              when ts2phc.extts_polarity is set to both.  The default is 0 (disabled).

       ts2phc.nmea_delay
              Specifies the minimum expected delay of NMEA RMC messages in nanoseconds.  If the maximum delay is
              longer  than  1  second,  or 'ts2phc.pulsewidth' if 'ts2phc.extts_polarity' is set to "both", this
              option needs to be set accordingly to allow the timestamps from  NMEA  messages  to  be  correctly
              assigned to pulses from the PPS signal and wrong PPS edges to be rejected if the edge rejection is
              enabled.  The default is 0 nanoseconds.

       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).

TIME SINK OPTIONS

       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.

WARNING

       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.

SEE ALSO

       phc2sys(8) ptp4l(8)

linuxptp                                           March 2024                                          TS2PHC(8)