Provided by: linuxptp_4.2-1ubuntu2_amd64 bug

NAME

       ptp4l - PTP Boundary/Ordinary/Transparent Clock

SYNOPSIS

       ptp4l  [  -AEP246HSLmqsv  ]  [  -f config ] [ -p phc-device ] [ -l print-level ] [ -i interface ] [ long-
       options ] ...

DESCRIPTION

       ptp4l is an implementation of the Precision Time Protocol (PTP)  according  to  IEEE  standard  1588  for
       Linux. It implements Boundary Clock (BC), Ordinary Clock (OC), and Transparent Clock (TC).

OPTIONS

       -A     Select  the  delay  mechanism  automatically.  Start  with E2E and switch to P2P when a peer delay
              request is received.

       -E     Select the delay request-response (E2E) mechanism. This is the default mechanism.  All  clocks  on
              single  PTP  communication path must use the same mechanism. A warning will be printed when a peer
              delay request is received on port using the E2E mechanism.

       -P     Select the peer delay (P2P) mechanism. A warning will be printed when a delay request is  received
              on port using the P2P mechanism.

       -2     Select the IEEE 802.3 network transport.

       -4     Select the UDP IPv4 network transport. This is the default transport.

       -6     Select the UDP IPv6 network transport.

       -H     Select  the  hardware time stamping. All ports specified by the -i option and in the configuration
              file must be attached to the same PTP hardware clock (PHC). This is the default time stamping.

       -S     Select the software time stamping.

       -L     Select the legacy hardware time stamping.

       -f config
              Read configuration from the specified file. No configuration file is read by default.

       -i interface
              Specify a PTP port, it may be used multiple times. At least one port must  be  specified  by  this
              option or in the configuration file.

       -p phc-device
              (This option is deprecated.)  Before Linux kernel v3.5 there was no way to discover the PHC device
              associated  with a network interface.  This option specifies the PHC device (e.g. /dev/ptp0) to be
              used when running on legacy kernels.

       -s     Enable the clientOnly mode.

       -l print-level
              Set the maximum syslog level of messages which should be printed or sent to the system logger. The
              default is 6 (LOG_INFO).

       -m     Print messages to the standard output.

       -q     Don't send messages to the system logger.

       -v     Prints the software version and exits.

       -h     Display a help message.

LONG OPTIONS

       Each and every configuration file option (see below) may also appear  as  a  "long"  style  command  line
       argument.  For example, the clientOnly option may be set using either of these two forms.

              --clientOnly 1   --clientOnly=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 three different section types.

       1.     The global section (indicated as [global]) sets the program options,  clock  options  and  default
              port  options.  Other  sections  are  port  specific  sections  and they override the default port
              options.

       2.     Port sections give the name of the  configured  port  (e.g.   [eth0]).   Ports  specified  in  the
              configuration  file don't need to be specified by the -i option. An empty port section can be used
              to replace the command line option.

       3.     Tables for configuring unicast discovery begin with [unicast_master_table].

              See UNICAST DISCOVERY OPTIONS, below.

PORT OPTIONS

       announceReceiptTimeout
              The number of missed Announce messages before the last Announce messages expires.  The default  is
              3.

       boundary_clock_jbod
              When  running  as  a boundary clock (that is, when more than one network interface is configured),
              ptp4l performs a sanity check to make sure that all of the ports share  the  same  hardware  clock
              device.  This option allows ptp4l to work as a boundary clock using "just a bunch of devices" that
              are not synchronized to each other. For this mode, the collection of clocks must  be  synchronized
              by an external program, for example phc2sys(8) in "automatic" mode.  The default is 0 (disabled).

       delayAsymmetry
              The  time  difference  in  nanoseconds  of  the  transmit  and receive paths. This value should be
              positive when the server-to-client propagation time is longer and  negative  when  the  client-to-
              server time is longer. The default is 0 nanoseconds.

       delay_filter
              Select  the  algorithm  used  to  filter  the  measured  delay and peer delay. Possible values are
              moving_average and moving_median.  The default is moving_median.

       delay_filter_length
              The length of the delay filter in samples.  The default is 10.

       delay_mechanism
              Select the delay mechanism. Possible values are E2E, P2P, NONE and Auto.  The default is E2E.

       delay_response_timeout
              The number of delay response messages that may go  missing  before  triggering  a  synchronization
              fault.  Setting  this option to zero will disable the delay response timeout.  The default is 0 or
              disabled.

       egressLatency
              Specifies the difference in nanoseconds between the actual  transmission  time  at  the  reference
              plane  and  the  reported  transmit  time  stamp.  This  value will be added to egress time stamps
              obtained from the hardware.  The default is 0.

       fault_badpeernet_interval
              The time in seconds between the detection of a peer network misconfiguration and the  fault  being
              reset.  The  port  is  disabled  for the duration of the interval. The value is in seconds and the
              special key word ASAP will let the fault be reset immediately.  The default is 16 seconds.

       fault_reset_interval
              The time in seconds between the detection of a port's fault and the fault being reset. This  value
              is  expressed as a power of two. Setting this value to -128 or to the special key word "ASAP" will
              let the fault be reset immediately.  The default is 4 (16 seconds).

       follow_up_info
              Include the 802.1AS data in the Follow_Up messages if enabled.  The default is 0 (disabled).

       G.8275.portDS.localPriority
              The Telecom Profiles (ITU-T  G.8275.1  and  G.8275.2)  specify  an  alternate  Best  Master  Clock
              Algorithm  (BMCA)  with  a  unique  data  set  comparison  algorithm.  The value of this option is
              associated with Announce messages arriving on a particular port and  is  used  as  a  tie  breaker
              whenever  clockClass, clockAccuracy, offsetScaledLogVariance, and priority2 are equal. This option
              is only used when "dataset_comparison" is set to "G.8275.x".  The default value is 128.

              Warning: the BMCA is guaranteed to produce a spanning tree (that  is,  a  timing  network  without
              loops)    only   when   using   the   default   values   of   G.8275.defaultDS.localPriority   and
              G.8275.portDS.localPriority.  Careful network engineering is needed when using non-default values.

       hybrid_e2e
              Enables the "hybrid" delay mechanism from the draft Enterprise Profile. When enabled, ports in the
              client state send their delay request messages to the unicast  address  taken  from  the  server's
              announce  message.  Ports  in  the server state will reply to unicast delay requests using unicast
              delay responses. This option has no effect if the delay_mechanism is set to P2P.  The default is 0
              (disabled).

       ignore_transport_specific
              By default, incoming messages are dropped if their transportSpecific  field  does  not  match  the
              configured  value.   However,  many  of transports specified in the 1588 standard mandate ignoring
              this field.  Moreover, some equipment is known to set the reserved bits.  Configuring this  option
              as 1 causes this field to be ignored completely on receive.  The default is 0.

       ingressLatency
              Specifies  the  difference  in  nanoseconds between the reported receive time stamp and the actual
              reception time at reference plane. This value will be subtracted from ingress time stamps obtained
              from the hardware.  The default is 0.

       inhibit_delay_req
              Don't send any delay requests. This will need the asCapable config option to  be  set  to  'true'.
              This  is  useful  when  running  as a designated server who does not need to calculate offset from
              client. The default is 0 (disabled).

       inhibit_multicast_service
              Some unicast mode profiles insist that no multicast message are ever  transmitted.   Setting  this
              option inhibits multicast transmission.  The default is 0 (mutlicast enabled).

       logAnnounceInterval
              The  mean  time interval between Announce messages. A shorter interval makes ptp4l react faster to
              the changes in the client/server hierarchy. The interval should be the same in the  whole  domain.
              It's specified as a power of two in seconds.  The default is 1 (2 seconds).

       logMinDelayReqInterval
              The  minimum  permitted  mean  time  interval between Delay_Req messages. A shorter interval makes
              ptp4l react faster to the changes in the path delay. It's specified as a power of two in  seconds.
              The default is 0 (1 second).

       logMinPdelayReqInterval
              The minimum permitted mean time interval between Pdelay_Req messages. It's specified as a power of
              two in seconds.  The default is 0 (1 second).

       logSyncInterval
              The mean time interval between Sync messages. A shorter interval may improve accuracy of the local
              clock. It's specified as a power of two in seconds.  The default is 0 (1 second).

       masterOnly
              This option is deprecated and will be removed in a future release.  Use "serverOnly" instead.

       min_neighbor_prop_delay
              Lower  limit for peer delay in nanoseconds. If the estimated peer delay is smaller than this value
              the port is marked as not 802.1AS capable.

       neighborPropDelayThresh
              Upper limit for peer delay in nanoseconds. If the estimated peer delay is greater than this  value
              the port is marked as not 802.1AS capable.

       network_transport
              Select the network transport. Possible values are UDPv4, UDPv6 and L2.  The default is UDPv4.

       net_sync_monitor
              Enables  the NetSync Monitor (NSM) protocol. The NSM protocol allows a station to measure how well
              another node is synchronized. The monitor sends a unicast delay request to the node, which replies
              unconditionally with unicast delay response, sync, and follow  up  messages.  If  the  monitor  is
              synchronized  to  the GM, it can use the time stamps in the message to estimate the node's offset.
              This option requires that  the  'hybrid_e2e'  option  be  enabled  as  well.   The  default  is  0
              (disabled).

       operLogPdelayReqInterval
              The  Pdelay  Request  messages  interval  to be used once the clock enters the SERVO_LOCKED_STABLE
              state.  If the 'msg_interval_request' option is set, then the local client port  will  adopt  this
              rate  when  the local clock enters the "locked stable" state.  This option is specified as a power
              of two in seconds, and the default value is 0 (1 second).

       operLogSyncInterval
              The Sync message interval to be requested once the clock enters the SERVO_LOCKED_STABLE state.  If
              the 'msg_interval_request' option is set, then the local  client  port  will  request  the  remote
              server  to  switch to the given message rate via a signaling message containing a Message interval
              request TLV.  This option is specified as a power of two in seconds, and default  value  is  0  (1
              second).

       path_trace_enabled
              Enable  the  mechanism  used  to  trace  the  route  of  the  Announce messages.  The default is 0
              (disabled).

       phc_index
              Specifies the index of the PHC to be used for synchronization  with  hardware  timestamping.  This
              option  is  useful with virtual clocks running on top of a free-running physical clock (created by
              writing to /sys/class/ptp/ptp*/n_vclocks).  The default is -1, which means the index will  be  set
              to the PHC associated with the interface, or the device specified by the -p option.

       power_profile.2011.grandmasterTimeInaccuracy
              Specifies  the time inaccuracy of the GM in nanoseconds.  Relevant only when power_profile.version
              is 2011.  This value may be changed dynamically  using  the  POWER_PROFILE_SETTINGS_NP  management
              message.  The default is -1 meaning unknown inaccuracy.

       power_profile.2011.networkTimeInaccuracy
              Specifies   the   time   inaccuracy   of   the   network   in  nanoseconds.   Relevant  only  when
              power_profile.version  is   2011.    This   value   may   be   changed   dynamically   using   the
              POWER_PROFILE_SETTINGS_NP management message.  The default is -1 meaning unknown inaccuracy.

       power_profile.2017.totalTimeInaccuracy
              Specifies  the  sum of the GM, network, and local node inaccuracies in nanoseconds.  Relevant only
              when  power_profile.version  is  2017.   This  value  may  be  changed   dynamically   using   the
              POWER_PROFILE_SETTINGS_NP management message.  The default is -1 meaning unknown inaccuracy.

       power_profile.grandmasterID
              Specifies  an  optional,  non-zero  identification  code  for  the  GM.   Note that the code is an
              arbitrary, power profile specific integer, not necessarily related to  the  clockIdentity  in  any
              way.   This  value  may  be  changed  dynamically  using  the POWER_PROFILE_SETTINGS_NP management
              message.  The default is 0 meaning unused.

       power_profile.version
              Specifies the power profile version to be used.  Valid values are "none", "2011", or "2017".  This
              value may be changed dynamically using  the  POWER_PROFILE_SETTINGS_NP  management  message.   The
              default is "none".

       ptp_dst_mac
              The  MAC  address  to  which  PTP  messages  should be sent.  Relevant only with L2 transport. The
              default is 01:1B:19:00:00:00.

       p2p_dst_mac
              The MAC address to which peer delay messages should be sent.  Relevant only with L2 transport. The
              default is 01:80:C2:00:00:0E.

       serverOnly
              Setting this option to one (1) prevents the port from entering the client state. In addition,  the
              local  clock will ignore Announce messages received on this port. This option's intended use is to
              support the Telecom Profiles according to ITU-T G.8265.1,  G.8275.1,  and  G.8275.2.  The  default
              value is zero or false.

       syncReceiptTimeout
              The  number  of  sync/follow up messages that may go missing before triggering a Best Master Clock
              election. This option is used for running in gPTP mode according  to  the  802.1AS-2011  standard.
              Setting this option to zero will disable the sync message timeout.  The default is 0 or disabled.

       transportSpecific
              The transport specific field. Must be in the range 0 to 255.  The default is 0.

       tsproc_mode
              Select  the  time  stamp  processing mode used to calculate offset and delay.  Possible values are
              filter, raw, filter_weight, raw_weight. Raw modes perform well when  the  rate  of  sync  messages
              (logSyncInterval)   is   similar   to  the  rate  of  delay  messages  (logMinDelayReqInterval  or
              logMinPdelayReqInterval). Weighting is useful with larger  network  jitters  (e.g.  software  time
              stamping).  The default is filter.

       udp_ttl
              Specifies  the  Time  to  live  (TTL) value for IPv4 multicast messages and the hop limit for IPv6
              multicast messages. This option is only relevant with  the  IPv4  and  IPv6  UDP  transports.  The
              default is 1 to restrict the messages sent by ptp4l to the same subnet.

       unicast_listen
              When  enabled,  this option allows the port to grant unicast message contracts.  Incoming requests
              for will be granted limited only by the amount of memory available.  The default is 0 (disabled).

       unicast_master_table
              When set to a positive integer, this option  specifies  the  table  id  to  be  used  for  unicast
              discovery.   Each table lives in its own section and has a unique, positive numerical ID.  Entries
              in the table are a pair of transport type  and  protocol  address.   The  default  is  0  (unicast
              discovery disabled).

       unicast_req_duration
              The  service  time in seconds to be requested during unicast discovery.  Note that the remote node
              is free to grant a different duration.  The default is 3600 seconds or one hour.

PROGRAM AND CLOCK OPTIONS

       asCapable
              If set to 'true', all the checks which can unset  asCapable  variable  (as  described  in  Section
              10.2.4.1  of  802.1AS) are skipped. If set to 'auto', asCapable is initialized to 'false' and will
              be set to 'true' after the relevant checks have passed. The default value is 'auto'.

       assume_two_step
              Treat one-step responses as two-step if enabled. It is used to work around buggy 802.1AS switches.
              The default is 0 (disabled).

       BMCA   This option enables use of static roles for server and client devices instead of running the  best
              master  clock  algorithm  (BMCA) described in 1588 profile. This can be used to speed up the start
              time for servers and clients when you know the roles of the  devices  in  advance.   When  set  to
              ´noop',  the traditional BMCA algorithm used by 1588 is skipped. masterOnly and clientOnly will be
              used to determine the server or client role for the device. In a bridge, clientOnly  (which  is  a
              global  option)  can  be set to make all ports assume the client role. masterOnly (which is a per-
              port config option) can then be used to set individual ports to take  on  the  server  role.   The
              default value is 'ptp' which runs the BMCA related state machines.

       check_fup_sync
              Because  of packet reordering that can occur in the network, in the hardware, or in the networking
              stack, a follow up message can appear to arrive  in  the  application  before  the  matching  sync
              message. As this is a normal occurrence, and the sequenceID message field ensures proper matching,
              the  ptp4l  program  accepts  out of order packets. This option adds an additional check using the
              software time stamps from the networking stack to verify that the sync message did  arrive  first.
              This  option  is  only  useful  if you do not trust the sequence IDs generated by the server.  The
              default is 0 (disabled).

       clientOnly
              The local clock is a client-only clock if enabled. The default is 0 (disabled).

       clockAccuracy
              The clockAccuracy attribute of the local clock. It is used in the PTP server selection  algorithm.
              The default is 0xFE.

       clockClass
              The  clockClass  attribute of the local clock. It denotes the traceability of the time distributed
              by the grandmaster clock.  The default is 248.

       clock_class_threshold
              The maximum clock class value from master, acceptible to sub-ordinate clock beyond which it  moves
              out of lock state.  The default value is 248.

       clockIdentity
              The  clockIdentity attribute of the local clock.  The clockIdentity is an 8-octet array and should
              in this configuration be written in textual form, see default. It should be  unique  since  it  is
              used  to  identify the specific clock.  If default is used or if not set at all, the clockIdentity
              will be automtically generated.  The default is "000000.0000.000000"

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

       clock_type
              Specifies  the  kind  of  PTP  clock.  Valid values are "OC" for ordinary clock, "BC" for boundary
              clock, "P2P_TC" for peer to peer transparent clock, and "E2E_TC" for end to end transparent clock.
              An multi-port ordinary clock will automatically be configured as a boundary clock.  The default is
              "OC".

       dataset_comparison
              Specifies the method to be used when comparing data sets during the Best Master  Clock  Algorithm.
              The possible values are "ieee1588" and "G.8275.x".  The default is "ieee1588".

       domainNumber
              The domain attribute of the local clock.  The default is 0.

       dscp_event
              Defines  the Differentiated Services Codepoint (DSCP) to be used for PTP event messages. Must be a
              value between 0 and 63. There are  several  media  streaming  standards  out  there  that  require
              specific values for this option.  For example 46 (EF PHB) in AES67 or 48 (CS6 PHB) in RAVENNA. The
              default is 0.

       dscp_general
              Defines  the Differentiated Services Codepoint (DSCP) to be used for PTP general messages. Must be
              a value between 0 and 63. There are several media streaming standards  out  there  that  recommend
              specific  values  for  this option.  For example 34 (AF41 PHB) in AES67 or 46 (EF PHB) in RAVENNA.
              The default is 0.

       first_step_threshold
              The maximum offset 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. It's specified in
              seconds. When set to 0.0, the servo won't step the clock on start.  The  default  is  0.00002  (20
              microseconds).  This option used to be called pi_f_offset_const.

       free_running
              Don't adjust the local clock if enabled.  The default is 0 (disabled).

       freq_est_interval
              The time interval over which is estimated the ratio of the local and peer clock frequencies. It is
              specified as a power of two in seconds.  The default is 1 (2 seconds).

       G.8275.defaultDS.localPriority
              The  Telecom  Profiles  (ITU-T  G.8275.1  and  G.8275.2)  specify  an  alternate Best Master Clock
              Algorithm (BMCA) with a unique data set  comparison  algorithm.   The  value  of  this  option  is
              associated  with  the local clock and is used as a tie breaker whenever clockClass, clockAccuracy,
              offsetScaledLogVariance,  and   priority2   are   equal.   This   option   is   only   used   when
              "dataset_comparison" is set to "G.8275.x".  The default value is 128.

              Warning:  the  BMCA  is  guaranteed  to produce a spanning tree (that is, a timing network without
              loops)   only   when   using   the   default   values   of   G.8275.defaultDS.localPriority    and
              G.8275.portDS.localPriority.  Careful network engineering is needed when using non-default values.

       gmCapable
              If  this option is enabled, then the local clock is able to become grand master.  This is only for
              use with 802.1AS clocks and has no effect on 1588 clocks.  The default is 1 (enabled).

       ignore_source_id
              This will disable source port identity checking for Sync and Follow_Up messages.  This  is  useful
              when the announce messages are disabled in the server and the client does not have any way to know
              the server's identity.  The default is 0 (disabled).

       inhibit_announce
              This  will  disable  the  timer  for announce messages (i.e. FD_MANNO_TIMER) and also the announce
              message timeout timer (i.e. FD_ANNOUNCE_TIMER). This is used by the Automotive profile as part  of
              switching over to a static BMCA.  If this option is enabled, ignore_source_id has to be enabled in
              the  client  because  it has no way to identify the server in the Sync and Follow_Up messages. The
              default is 0 (disabled).

       initial_delay
              The initial path delay of the clock in nanoseconds used for synchronization of  the  clock  before
              the  delay  is  measured  using the E2E or P2P delay mechanism. If set to 0, the clock will not be
              updated until the delay is measured.  The default is 0.

       interface_rate_tlv
              When the client and server  are  operating  are  operating  at  different  interface  rate,  delay
              asymmetry  caused  due  to different interface rate needs to be compensated.  The server sends its
              interface rate using interface rate TLV as per G.8275.2 Annex D.   The  default  is  0  (does  not
              support interface rate tlv).

       hwts_filter
              Select  the  hardware  time  stamp  filter setting mode.  Possible values are normal, check, full.
              Normal mode set the filters as needed.  Check mode only check but do not set.  Full mode  set  the
              receive filter to mark all packets with hardware time stamp,
               so all applications can get them.  The default is normal.

       kernel_leap
              When  a  leap  second  is  announced,  let  the  kernel  apply it by stepping the clock instead of
              correcting the one-second offset with servo, which would correct the one-second offset  slowly  by
              changing  the  clock  frequency (unless the step_threshold option is set to correct such offset by
              stepping).  Relevant only with software time stamping. The default is 1 (enabled).

       logging_level
              The maximum logging level of messages which should be printed.  The default is 6 (LOG_INFO).

       manufacturerIdentity
              The manufacturer id which should be an OUI owned by the manufacturer.  The default is 00:00:00.

       max_frequency
              The maximum allowed frequency adjustment of the clock in parts  per  billion  (ppb).  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%).  This option used to be called pi_max_frequency.

       maxStepsRemoved
              When  using  this  option,  if the value of stepsRemoved of an Announce message is greater than or
              equal to the value of maxStepsRemoved the Announce message is not considered in the  operation  of
              the BMCA.  The default value is 255.

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

       msg_interval_request
              This option, when set, will trigger an adjustment to the  Sync  and  peer  delay  request  message
              intervals  when the clock servo transitions into the SERVO_LOCKED_STABLE state.  The Sync interval
              will be adjusted via the signaling mechanism while the pdelay request interval is simply  adjusted
              locally.  The values to use for the new Sync and peer delay request intervals are specified by the
              operLogSyncInterval  and  operLogPdelayReqInterval  options,  respectively.   The default value of
              msg_interval_request is 0 (disabled).

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

       offsetScaledLogVariance
              The offsetScaledLogVariance attribute of the local clock. It characterizes the  stability  of  the
              clock.  The default is 0xFFFF.

       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. When set to 0.0, the value will be selected from 0.3 and 0.001 for the hardware
              and software time stamping respectively.  The default is 0.0.

       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. When set to 0.0, the value will be selected  from  0.7  and  0.1  for  the
              hardware and software time stamping respectively.  The default is 0.0.

       productDescription
              The     product     description    string.    Allowed    values    must    be    of    the    form
              manufacturerName;modelNumber;instanceIdentifier and contain at most 64 utf8 symbols.  The  default
              is ";;".

       priority1
              The  priority1  attribute  of  the  local clock. It is used in the PTP server selection algorithm,
              lower values take precedence. Must be in the range 0 to 255.  The default is 128.

       priority2
              The priority2 attribute of the local clock. It is used in  the  PTP  server  selection  algorithm,
              lower values take precedence. Must be in the range 0 to 255.  The default is 128.

       ptp_minor_version
              This option sets the minorVersionPTP in the common PTP message header.  The default is 1.

       refclock_sock_address
              The  address  of  the  UNIX  domain  socket to be used by the refclock_sock servo.  The default is
              /var/run/refclock.ptp.sock.

       revisionData
              The revision description string which contains the revisions  for  node  hardware  (HW),  firmware
              (FW),  and  software  (SW).  Allowed  values  are of the form HW;FW;SW and contain at most 32 utf8
              symbols. The default is an ";;".

       sanity_freq_limit
              The maximum allowed frequency offset between uncorrected clock and the system monotonic  clock  in
              parts  per  billion (ppb). This is used as a sanity check of the synchronized clock. When a larger
              offset is measured, a warning message will be  printed  and  the  servo  will  be  reset.  If  the
              frequency  correction  set by ptp4l changes unexpectedly between updates of the clock (e.g. due to
              another process trying to control the clock), a warning message will be printed. When  set  to  0,
              the sanity check is disabled. The default is 200000000 (20%).

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

       slave_event_monitor
              Specifies  the  address  of  a UNIX domain socket for event monitoring.  A local monitoring client
              bound to this address will receive SLAVE_RX_SYNC_TIMING_DATA and SLAVE_DELAY_TIMING_DATA_NP  TLVs.
              The default is the empty string (disabled).

       slaveOnly
              This option is deprecated and will be removed in a future release.  Use "clientOnly" instead.

       socket_priority
              Configure  the  SO_PRIORITY of sockets. This is to support cases where a user wants to route ptp4l
              traffic using Linux qdiscs for the purpose of traffic shaping. This option is only available  with
              the IEEE 802.3 transport (the -2 option) and is silently ignored when using the UDP IPv4/6 network
              transports. Must be in the range of 0 to 15, inclusive. The default is 0.

       step_threshold
              The  maximum offset the servo will correct by changing the clock frequency (phase when using nullf
              servo) instead of stepping the clock. When set to 0.0, the servo will never step the clock  except
              on  start.  It's  specified  in  seconds.   The  default  is  0.0.   This option used to be called
              pi_offset_const.

       step_window
              When set, indicates the number of Sync events after a clock step that the clock will  not  do  any
              frequency  or  step  adjustments.   This  is  used in situations where clock stepping is unable to
              happen instantaneously so there is a lag before the timestamps can settle properly to reflect  the
              clock step.  The default is 0 (disabled).

       summary_interval
              The time interval in which are printed summary statistics of the clock. It is specified as a power
              of  two in seconds. The statistics include offset root mean square (RMS), maximum absolute offset,
              frequency offset mean and standard deviation, and path delay  mean  and  standard  deviation.  The
              units  are  nanoseconds  and  parts  per  billion  (ppb). If there is only one clock update in the
              interval, the sample will be printed instead of the statistics. The messages are  printed  at  the
              LOG_INFO level.  The default is 0 (1 second).

       tc_spanning_tree
              When  running as a Transparent Clock, increment the "stepsRemoved" field of Announce messages that
              pass through the switch.  Enabling this option ensures that PTP message loops never form, provided
              the switches all implement this option together with the BMCA.

       timeSource
              The time source is a single byte code that gives an idea of the kind of local clock  in  use.  The
              value is purely informational, having no effect on the outcome of the Best Master Clock algorithm,
              and is advertised when the clock becomes grand master.

       time_stamping
              The  time stamping method to be used.  The allowed values are hardware, software, legacy, onestep,
              and p2p1step.  The default is hardware.

       twoStepFlag
              Enable two-step mode for sync messages.  One-step  mode  can  be  used  only  with  hardware  time
              stamping.  The default is 1 (enabled).

       tx_timestamp_timeout
              The  number  of  milliseconds to poll waiting for the tx time stamp from the kernel when a message
              has recently been sent.  The default is 10.

       udp6_scope
              Specifies the desired scope for the IPv6 multicast messages.  This will be used as the second byte
              of the primary address.  This option is only relevant with IPv6 transport.   See  RFC  4291.   The
              default is 0x0E for the global scope.

       uds_address
              Specifies  the  address  of  the  UNIX  domain socket for receiving local management messages. The
              default is /var/run/ptp4l.

       uds_file_mode
              File mode of the UNIX domain socket used for receiving local management messages. The mode  should
              be specified as an octal number, i.e. it should start with a 0 literal. The default mode is 0660.

       uds_ro_address
              Specifies  the  address  of the second UNIX domain socket for receiving local management messages,
              which is restricted to GET actions and does not forward messages to other ports.  Access  to  this
              socket   can  be  given  to  untrusted  applications  for  monitoring  purposes.  The  default  is
              /var/run/ptp4lro.

       uds_ro_file_mode
              File mode of the second (read-only)  UNIX  domain  socket  used  for  receiving  local  management
              messages.  The mode should be specified as an octal number, i.e. it should start with a 0 literal.
              The default mode is 0666.

       use_syslog
              Print messages to the system log if enabled.  The default is 1 (enabled).

       userDescription
              The user description string. Allowed values are of the form name;location and contain at most  128
              utf8 symbols. The default is an empty string.

       utc_offset
              The current offset between TAI and UTC.  The default is 37.

       verbose
              Print messages to the standard output if enabled.  The default is 0 (disabled).

       write_phase_mode
              This  option enables using the "write phase" feature of a PTP Hardware Clock.  If supported by the
              device, this mode uses the hardware's built in phase offset control instead  of  frequency  offset
              control.  The default value is 0 (disabled).

UNICAST DISCOVERY OPTIONS

       L2|UDPv4|UDPv6
              Each  table  entry  specifies the transport type and network address of a potential remote server.
              If multiple servers are specified, then unicast negotiation will be performed with each if them.

       logQueryInterval
              This option configures the time to wait between unicast negotiation attempts.  It is specified  as
              a power of two in seconds.  The default is 0 (1 second).

       peer_address
              This  option  specifies  the  unicast  address  of  the  peer  for use with the peer to peer delay
              mechanism.  If specified, the port owning the table will negotiate unicast  peer  delay  responses
              from  the  machine  at the given remote address, otherwise the port will send multicast peer delay
              requests.

       table_id
              Each table must begin with a unique, positive table ID.  The port that claims a given  table  does
              so by including the ID as the value of its 'unicast_master_table' option.

TIME SCALE USAGE

       When  ptp4l  acts  as  the  domain server, it either uses the PTP or the UTC time scale depending on time
       stamping mode.  In software and legacy time stamping modes it announces Arbitrary time scale mode,  which
       is effectively UTC here.  In hardware time stamping mode it announces use of PTP time scale.

       When ptp4l is the domain server using hardware time stamping, it is up to phc2sys to maintain the correct
       offset between UTC and PTP times. See phc2sys(8) manual page for more details.

KTHREAD PRIORITY

       In case of following log,

              timed  out  while  polling  for tx timestamp increasing tx_timestamp_timeout or increasing kworker
              priority may correct this issue, but a driver bug likely causes it

       one possible cause is that the kworker which processes timestamps is being  starved.   The  system  admin
       might try manually increasing the priority of the kworker.

       Many device drivers use kworker threads created by the PTP stack.  Such kworkers are named:
              ptp<decimal number of clock>

       The system admin can manually bump the priority of the kworker process using chrt.

       Example:
              pgrep -f "ptp[0-9]+" | xargs -I {} sudo chrt -f --pid 75 {}

       Intel ice driver may create multiple kworkers for one physical NIC and names those processes differently.

       Example for Intel E810 card:
              pgrep -f ice-ptp | xargs -I {} sudo chrt -f --pid 75 {}

       Assigning  priority  needs  careful  consideration  as assigning too high priority to any task might make
       system unstable.

SEE ALSO

       pmc(8), phc2sys(8)

linuxptp                                          February 2023                                         PTP4l(8)