CLOCK_REALTIME via TIME_REFERENCE.IMAGE; the receiver then converts that timestamp onto its own perf_counter so dataset rows record the moment of capture, not the moment of decode. None of that produces aligned data unless both machines agree on what time it is.
axol zed.sync-clocks runs a PTP (Precision Time Protocol) daemon over the direct ethernet link, holding the two clocks to sub-millisecond agreement — well below one camera frame period at 60 fps. The startup pipeline-latency check in ZedCamera.connect() warns loudly if the mean receive_perf - capture_perf falls outside [0, 200] ms, which is the operator-visible “PTP isn’t running” canary.
| Flag | Description |
|---|---|
--role {master,slave} | master on the long-lived upper computer (owns the dataset); slave on the Jetson sender |
--iface IFACE | Network interface carrying the direct link (e.g. eth0) |
--transport {l2,udpv4} | l2 (raw ethernet, default) or udpv4 |
--timestamping {auto,hardware,software} | auto (default) probes ethtool -T and prefers hardware |
--log-level {DEBUG,INFO,WARNING,ERROR} | Default: INFO |
eth0, enp3s0, eno1, …) — run ip link on each to find the one carrying the direct link and substitute it for <iface>.
The privileged subprocesses (
ptp4l, phc2sys, and the apt-get auto-install fallback) need root. Under the quick install’s systemd service, axol serve (which launches this command) already runs as root. Run interactively from a terminal, you are prompted for your sudo password once up front; the daemons then reuse the cached credentials. Headless without root (no terminal to prompt on), the command fails fast instead of blocking — run as root or configure passwordless sudo. The command depends on the linuxptp package (ptp4l + phc2sys) and, for hardware-timestamping detection, ethtool; on Debian/Ubuntu these are auto-installed if missing. On non-apt systems install them manually (linuxptp, ethtool) and rerun.ethtool -T and used automatically when both NICs expose a PTP Hardware Clock. If only software timestamping is available the daemon still runs but expect ~10–100 µs extra jitter, which is still well under one frame period.
