The number that matters is the transmit-timestamp delivery time. When the driver does not return a timestamp before ptp4l finishes polling, the port reports timed out while polling for tx timestamp, send sync failed, and then changes from MASTER to FAULTY. This is timing, not an interface-index problem: PTP Hardware Clock: 0 identifies /dev/ptp0.
Common fixes that miss the timestamp failure
Several reasonable-looking changes target the wrong layer:
| Attempt | Why it fails | What it actually tests |
|---|---|---|
Treat PTP Hardware Clock: 0 as “no hardware clock” |
Zero is the PHC device index, not a capability count or Boolean state. | Confirm that the interface maps to /dev/ptp0 and inspect the complete timestamp capability list. |
Force atlantic onto the device-tree interface |
The interface disappeared after this change, indicating a driver/device-model mismatch or incomplete device-tree binding. | Determine whether the port is a PCIe NIC or an SoC Ethernet MAC connected to an external PHY. |
Increase tx_timestamp_timeout alone |
Values of 10 and 100 did not clear the fault. More polling time cannot recover a timestamp that the driver never delivers. |
A bounded timeout increase distinguishes a late timestamp from a lost timestamp. |
| Use the automotive profile and wait for best-master selection | The automotive profile disables the normal master-voting algorithm; the master is selected explicitly. | Validate the intended fixed-role configuration rather than expecting default-profile state transitions. |
Start phc2sys while ptp4l is faulty |
phc2sys waits for a usable ptp4l clock relationship and can end with poll failed. |
Start downstream clock synchronization only after the PTP port remains operational. |
Timestamp path and driver boundary
Hardware PTP requires an unbroken path through the timestamping hardware, kernel driver, socket timestamp API, PHC device, and ptp4l. Normal packet traffic can work at a reported link speed of 10000 while the timestamp path fails. Camera and lidar data therefore prove link operation and throughput, but not timestamp delivery.
The installation reports a Jetson AGX Orin running Linux 5.10.120-tegra. It also reports nvethernet, while a boot message identifies Aquantia AQR113C 6810000.ethernet:00 and says No AQR phy_mode setting in DT. That distinction matters: an SoC Ethernet MAC with an external PHY is not the same driver topology as a discrete PCIe AQC113C NIC. The MAC driver owns the network interface in the former case; the PHY is managed through the kernel PHY layer. The atlantic driver applies to the supported PCIe NIC device model.
Resolve the AQC113C-versus-AQR113C identity before changing drivers. Read the bound driver with ethtool -i lan1, inspect the device path with readlink /sys/class/net/lan1/device/driver, and check whether the Ethernet controller appears as a PCIe function. If the active hardware is an AQR113C PHY attached to the integrated MAC, correcting its device-tree properties is a board integration task; replacing the MAC driver with atlantic is not the repair.
Driver generations also expose controls differently. An AQtion 2.5.5 build exposed aq_enable_ptp, while the described upstream 6.1 atlantic implementation force-enabled PTP and did not expose that module parameter. The absence of aq_enable_ptp therefore does not prove that hardware timestamping is disabled. Development changes tested mainly with the Gen 1 AQC107 also require separate validation on the Gen 2 AQC113C.
Symptoms, quantities, and causes
| Observation | Meaning | Decision |
|---|---|---|
PTP Hardware Clock: 0 |
The interface advertises PHC index zero, corresponding to /dev/ptp0. |
Continue with capability and timestamp-delivery tests. |
hardware-transmit, hardware-receive, and hardware-raw-clock
|
The driver advertises hardware TX, RX, and raw PHC support. | Missing capability advertisement is not the current fault. |
timed out while polling for tx timestamp |
The requested TX timestamp did not reach ptp4l inside its polling interval. |
Test scheduling latency, driver delivery, and firmware behavior. |
MASTER to FAULTY after send sync failed
|
The master cannot timestamp and complete its Sync transmission. | Repair TX timestamp delivery before examining sensor offsets. |
Sensor says SLAVE, but ingress_time and master_offset are 0 and gm_present is false
|
The state label exists without usable timing observations or a confirmed grandmaster. | Check Sync reception, timestamp ingestion, profile compatibility, and grandmaster presence. |
meanPathDelay -221359870.0 or -368373741.0
|
Large negative path delay is not physically valid for the ordinary symmetric-delay model. | Check timestamp pairing, clock direction, delay mechanism, and profile agreement. |
phc2sys repeatedly says Waiting for ptp4l... and then poll failed
|
No usable control relationship became available through ptp4l. |
Stabilize ptp4l first. |
Baseline capture and topology decision
Capture one baseline before changing the kernel, firmware, device tree, profile, or timeout. This prevents several simultaneous changes from hiding the actual correction.
- Run
ethtool -T lan1. The working capability advertisement includesSOF_TIMESTAMPING_TX_HARDWARE,SOF_TIMESTAMPING_RX_HARDWARE,SOF_TIMESTAMPING_RAW_HARDWARE, PHC index0, TX modesHWTSTAMP_TX_OFF,HWTSTAMP_TX_ON, andHWTSTAMP_TX_ONESTEP_SYNC, plus the listed PTP receive filters. - Run
ethtool -i lan1and inspect the sysfs driver link. Record the driver and bus topology rather than relying on a driver name found elsewhere indmesg. - Review the boot log for the exact controller or PHY identity. Reconcile
AQC113Cwith the reportedAQR113Cmessage. - If
No AQR phy_mode setting in DTremains, compare the deployed device tree with the board vendor’s supported description for that Ethernet port. A live 10 Gb/s link does not prove that every timestamp-related MAC/PHY property is correct. - Record the linuxptp revision, configuration file, complete
ptp4llog, and any NIC firmware version reported by the supported driver or manufacturer utility. Use the firmware version only after confirming the actual controller identity.
Controlled recovery procedure
- Restore the driver and device-tree combination that makes
lan1appear and pass traffic. Avoid forcingatlanticonto the device-tree interface until the inventory confirms a supported PCIe NIC. - Use the current linuxptp source build that produced stable operation in this installation. Start with the known baseline command:
sudo ptp4l -i lan1 -f /etc/linuxptp/default.cfg -m - Run the test once without
jetson_clocks. Record every TX timestamp timeout and port-state transition. - As a diagnostic, repeat with
--tx_timestamp_timeout 30. A30ms window should cover most properly delayed timestamps in the tested scenario. If the timestamp still never arrives, pursue the driver, firmware, or timestamp path rather than continually increasing the timeout. - Run
sudo jetson_clocksand repeat the identicalptp4ltest. This utility raises and stabilizes supported Jetson performance clocks, reducing latency variation caused by dynamic clock scaling. It does not create timestamping capability, but an overnight successful run after enabling it shows that timing and scheduling sensitivity deserve investigation. - Separate the two changes that preceded the successful overnight test: the newer linuxptp build and
jetson_clocks. Test old versus new linuxptp at the same clock state, then test clocks off versus on with the same binary and configuration. - Start
phc2sysonly afterptp4lremains in its intended state without TX timestamp timeouts. Select source and sink from the clock architecture rather than copying a command blindly.
Profile and clock-direction decisions
With default.cfg, the node entered LISTENING, reached ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES, selected its local clock as best master, and assumed the grandmaster role. It then failed when its Sync transmission did not receive a TX timestamp. That sequence isolates the immediate failure after master selection.
With automotive-master.cfg, entering MASTER directly and not choosing a best master is normal. The automotive profile uses explicit master selection rather than the default best-master voting behavior. Configure every participant for compatible transport, domain, delay mechanism, message intervals, and fixed role before interpreting a missing election as a fault.
The command phc2sys -w -s CLOCK_REALTIME -c lan1 -m -O 0 names CLOCK_REALTIME as the source and lan1 as the destination. That direction can fit a PC acting as time master, where the NIC PHC follows system time. If the PC is instead a PTP slave and the system clock must follow the synchronized NIC PHC, reverse the source and destination. Confirm the required offset between the selected timescales before retaining -O 0; the sensor data reports current_utc_offset 37 while also marking current_utc_offset_valid as 0.
Verification under sensor load
- Repeat
ethtool -T lan1and confirm that the PHC and advertised hardware TX/RX modes remain present. - Run
ptp4lthrough multiple Sync intervals. There must be notimed out while polling for tx timestamp,send sync failed, or transition toFAULTY. - Query
CURRENT_DATA_SET. The installation requires the magnitude ofoffsetFromMasterto remain below250000ns. A large negativemeanPathDelaystill indicates invalid timing data even if the port saysSLAVE. - Check the sensor status. A valid run must advance
ingress_time, produce a measuredmaster_offset, and identify the intended grandmaster rather than leavinggm_presentfalse. - Repeat the test with all cameras and lidars carrying their normal traffic. Compare timeout counts, offsets, and path-delay stability with and without
jetson_clocks. - Run overnight only after the short test passes. Save the kernel log,
ptp4llog, clock state, configuration, driver identity, firmware version, and load conditions for the entire run.
FAQ
Can I treat PTP Hardware Clock: 0 as an error?
No. It maps the interface to /dev/ptp0; use the capability list and an actual timestamp test to determine whether hardware timestamping works.
Does atlantic need to replace nvethernet for an AQC113C?
Only after hardware inventory confirms a supported PCIe NIC. A log showing AQR113C 6810000.ethernet:00 points to an external PHY associated with an SoC Ethernet interface, where forcing atlantic can remove the interface.
Can jetson_clocks fix a ptp4l TX timestamp timeout?
It can reduce clock-scaling and scheduling latency, and the tested system ran successfully overnight after it was enabled with a newer linuxptp build. Test those two changes independently because jetson_clocks cannot recover timestamps that the driver loses completely.
Does a SLAVE port state prove that my lidar is synchronized?
No. The reported sensor was SLAVE while ingress_time and master_offset remained 0 and gm_present was false; verify live timestamps and an offset below the required 250000 ns.
When should I stop testing and contact official support?
Stop after the hardware identity, driver binding, device tree, firmware version, and fixed-load A/B tests are captured and TX timestamps still disappear or No AQR phy_mode setting in DT remains. Send those records to the board vendor’s and NIC manufacturer’s official support channels; device-tree integration or firmware replacement requires their validated package and procedure.