dpll(8) — Linux manual page

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | DEVICE COMMANDS | PIN COMMANDS | MONITOR COMMAND | EXAMPLES | PHASE ADJUSTMENT | CAPABILITIES | EXIT STATUS | NOTES | SEE ALSO | AUTHOR | REPORTING BUGS | COLOPHON

DPLL(8)                           Linux                           DPLL(8)

NAME         top

       dpll - Digital Phase Locked Loop (DPLL) subsystem management

SYNOPSIS         top

       dpll [ OPTIONS ] device { COMMAND | help }

       dpll [ OPTIONS ] pin { COMMAND | help }

       dpll [ OPTIONS ] monitor

       OPTIONS := { -V[ersion] | -j[son] | -p[retty] }

DESCRIPTION         top

       The dpll utility is used to configure and monitor Digital Phase
       Locked Loop (DPLL) devices and pins. DPLLs are used for clock
       synchronization in various hardware, particularly in
       telecommunications and networking equipment.

       A DPLL device can lock to one or more input pins and provide
       synchronized output. Pins can be physical external signals (like
       GNSS 1PPS, SyncE), or internal oscillators.

OPTIONS         top

       -V, -Version
              Print the version of the dpll utility and exit.

       -j, -json
              Output results in JavaScript Object Notation (JSON).

       -p, -pretty
              When combined with -j, generates a pretty JSON output with
              indentation and newlines for better human readability.

DEVICE COMMANDS         top

   dpll device show [ id ID ]
       Display information about DPLL devices. If no arguments are
       specified, shows all devices in the system.

       id ID  Show only the device with the specified numeric identifier.

       Output includes:

              • Device ID

              • Module name providing the device

              • Clock ID (unique identifier)

              • Operating mode (manual, automatic, holdover, freerun)

              • Lock status (locked-ho-ack, locked, unlocked, holdover)

              • Temperature (if supported)

              • Type (PPS or EEC)

   dpll device set id ID [ phase-offset-monitor { enable | disable } ] [
       phase-offset-avg-factor FACTOR ]
       Configure DPLL device parameters.

       id ID  Specifies which device to configure (required).

       phase-offset-monitor { enable | disable | true | false | 0 | 1 }
              Enable or disable phase offset monitoring between the
              device and its pins.  When enabled, the kernel continuously
              measures and reports phase differences.

       phase-offset-avg-factor FACTOR
              Set the averaging factor (1-255) applied to phase offset
              calculations.  Higher values provide smoother but slower-
              responding measurements.

   dpll device id-get [ module-name NAME ] [ clock-id ID ] [ type TYPE ]
       Retrieve the device ID based on identifying attributes. Useful for
       scripting when you need to find a device's numeric ID. At least
       one attribute should be specified to identify the device.

       module-name NAME
              Kernel module name.

       clock-id ID
              64-bit clock identifier in decimal or hex (0x prefix).

       type TYPE
              Device type: pps or eec.

PIN COMMANDS         top

   dpll pin show [ id ID ] [ device ID ]
       Display information about DPLL pins. If no arguments are
       specified, shows all pins in the system.

       id ID  Show only the pin with the specified numeric identifier.

       device ID
              Show only pins associated with the specified device ID.

       Output includes:

              • Pin ID

              • Module name

              • Clock ID

              • Board label (hardware label from device tree or ACPI)

              • Pin type (mux, ext, synce-eth-port, int-oscillator, gnss)

              • Frequency and supported frequency ranges

              • Capabilities (state-can-change, priority-can-change,
                direction-can-change)

              • Phase adjustment range, granularity, and current value

              • Parent device relationships (direction, priority, state,
                phase offset)

              • Parent pin relationships

              • Reference sync information

              • Esync frequency support (if applicable)

   dpll pin set id ID [ PARAMETER VALUE ] ...
       Configure DPLL pin parameters. Multiple parameters can be
       specified in a single command.

       id ID  Specifies which pin to configure (required).

       frequency FREQ
              Set pin frequency in Hz. The pin must support the specified
              frequency (check frequency-supported ranges in pin show
              output).

       phase-adjust ADJUSTMENT
              Set phase adjustment in picoseconds. This value fine-tunes
              the phase of the output signal. Negative values shift the
              phase backwards, positive values shift it forwards. The
              value must be within the phase-adjust-min and phase-adjust-
              max range.

       esync-frequency FREQUENCY
              Set enhanced SyncE (Synchronous Ethernet) frequency in Hz
              for capable pins.

       parent-device DEVICE_ID [ direction DIR ] [ prio PRIO ] [ state
       STATE ]
              Configure the relationship between this pin and a parent
              DPLL device.

              direction { input | output }
                     Set the pin's direction relative to the parent
                     device.

              prio PRIORITY
                     Set priority (0-255) for this pin on the parent
                     device.

              state { connected | disconnected | selectable }
                     Set the pin's state on the parent device.

       parent-pin PIN_ID [ state STATE ]
              Configure the relationship to a parent pin.

       reference-sync PIN_ID [ state STATE ]
              Configure reference sync relationship with another pin.

   dpll pin id-get [ SELECTOR ] ...
       Retrieve a pin ID based on identifying attributes.

       module-name NAME
              Filter by kernel module name.

       clock-id ID
              Filter by 64-bit clock identifier.

       board-label LABEL
              Filter by board label (hardware identifier).

       panel-label LABEL
              Filter by panel label.

       package-label LABEL
              Filter by package label.

       type TYPE
              Filter by pin type: mux, ext, synce-eth-port, int-
              oscillator, gnss.

MONITOR COMMAND         top

   dpll monitor
       Monitor DPLL subsystem events in real-time. Displays notifications
       about:

              • Device creation, deletion, and configuration changes

              • Pin creation, deletion, and configuration changes

              • Lock status changes

              • Phase offset updates

              • Frequency changes

       Events are prefixed with their type: [DEVICE_CREATE],
       [DEVICE_CHANGE], [DEVICE_DELETE], [PIN_CREATE], [PIN_CHANGE],
       [PIN_DELETE].

       Press Ctrl+C to stop monitoring.

EXAMPLES         top

   Show all DPLL devices
       dpll device show

   Show specific device in JSON format
       dpll -j device show id 0

   Enable phase offset monitoring on device 0
       dpll device set id 0 phase-offset-monitor enable

   Show all pins
       dpll pin show

   Show pin with pretty JSON output
       dpll -jp pin show id 5

   Set pin frequency to 10 MHz
       dpll pin set id 0 frequency 10000000

   Configure pin relationship to parent device
       dpll pin set id 1 parent-device 0 prio 10 direction input state connected

   Adjust phase by -1000 picoseconds
       dpll pin set id 2 phase-adjust -1000

   Set multiple pin parameters at once
       dpll pin set id 3 frequency 10000000 phase-adjust -1000

   Monitor DPLL events
       dpll monitor

   Monitor events in JSON format
       dpll -jp monitor

   Get device ID by module name
       dpll device id-get module-name ice

   Get pin ID by board label
       dpll pin id-get board-label GNSS-1PPS

PHASE ADJUSTMENT         top

       Phase adjustment is specified in picoseconds (1e-12 seconds) and
       allows fine-tuning of signal phase. This is crucial for precise
       time synchronization applications like 5G networks and high-
       frequency trading.

       Important considerations:

              • Check phase-adjust-min and phase-adjust-max before
                setting values

              • Some hardware requires values to be multiples of phase-
                adjust-gran

              • Negative values shift phase backwards (earlier in time)

              • Positive values shift phase forwards (later in time)

              • The kernel validates all phase adjustment requests

CAPABILITIES         top

       Pins may have various capabilities that determine which operations
       are allowed:

       state-can-change
              The pin's state (connected/disconnected/selectable) can be
              modified.

       priority-can-change
              The pin's priority can be modified. This may apply to top-
              level priority or priority within parent-device
              relationships.

       direction-can-change
              The pin's direction (input/output) can be modified.

       Use dpll pin show to check which capabilities a pin supports
       before attempting configuration changes.

EXIT STATUS         top

       0      Success

       1      General failure

       2      Invalid arguments or usage

       255    Netlink communication error

NOTES         top

       • The DPLL subsystem requires kernel support (CONFIG_DPLL=y or m)

       • Hardware support varies by device and driver

       • Some operations require specific hardware capabilities

       • Phase offset values are measured by hardware and cannot be set
         directly

       • Changes to device/pin configuration may affect system clock
         synchronization

SEE ALSO         top

       ip(8), devlink(8), ethtool(8)

       Linux kernel documentation: Documentation/driver-api/dpll.rst

       Netlink specification: Documentation/netlink/specs/dpll.yaml

AUTHOR         top

       dpll was written by Arkadiusz Kubalewski, Vadim Fedorenko, and
       others.

       This manual page was written by Petr Oros.

REPORTING BUGS         top

       Report bugs to <netdev@vger.kernel.org>

COLOPHON         top

       This page is part of the iproute2 (utilities for controlling
       TCP/IP networking and traffic) project.  Information about the
       project can be found at 
       ⟨http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2⟩.
       If you have a bug report for this manual page, send it to
       netdev@vger.kernel.org, shemminger@osdl.org.  This page was
       obtained from the project's upstream Git repository
       ⟨https://git.kernel.org/pub/scm/network/iproute2/iproute2.git⟩ on
       2026-01-16.  (At that time, the date of the most recent commit
       that was found in the repository was 2026-01-14.)  If you discover
       any rendering problems in this HTML version of the page, or you
       believe there is a better or more up-to-date source for the page,
       or you have corrections or improvements to the information in this
       COLOPHON (which is not part of the original manual page), send a
       mail to man-pages@man7.org

iproute2                     23 October 2025                      DPLL(8)