Jetson AGX Orin 64GB的ptp4l.service报错timed out while polling for tx timestamp

我在 Jetson AGX Orin Developer Kit 64GB上开启了ptp4l.service服务,设置ptp4l使用软件时间戳,将AGX设置为slave,但是ptp4l无法正常运行。我用网线将AGX的以太网口连接到了另一台Orin NX的网口,Orin NX的ptp4l设置为master。

后来我写了三个cpp文件测试软件时间戳和硬件时间戳的获取,在AGX上的运行情况是:第一个multicast_sender_software.cpp使用软件时间戳,使用组播,接口绑定eth0,结果是poll超时;第二个multicast_sender_hardware.cpp使用硬件时间戳,使用组播,接口绑定eth0,poll没有超时,但是硬件时间戳返回0;第三个unicast_sender.cpp使用单播,没有绑定eth0,获取软件时间戳,能够获取到非零的软件时间戳。

在Orin NX上的运行情况是multicast_sender_software返回非零时间戳;multicast_sender_hardware poll超时;unicast_sender返回非零时间戳。

请问怎样设置AGX的操作系统才能正常获取到正常的软件时间戳或硬件时间戳?
我在后面附上了我运行的三个cpp文件,麻烦你们查看一下,看看能不能复现我的问题。我的理解是,如果multicast_sender_software或multicast_sender_hardware能够输出非零的时间戳,那么也能解决ptp4l.service服务获取tx timestamp超时的问题。

详细的信息如下:
service文件内容如下

[Unit]                                                                                                
Description=Precision Time Protocol (PTP) service
Documentation=man:ptp4l

[Service]
Type=simple
ExecStart=/usr/sbin/ptp4l -f /etc/linuxptp/ptp4l.conf -i eth0 -S -l 7

[Install]
WantedBy=multi-user.target

ptp4l.service的日志如下,其中包含了错误信息"timed out while polling for tx timestamp"

Dec 12 18:29:19 tegra ptp4l[5658]: [4953.913] port 1: new foreign master 48b02d.fffe.e9ffbd-1
Dec 12 18:29:23 tegra ptp4l[5658]: [4957.914] selected best master clock 48b02d.fffe.e9ffbd
Dec 12 18:29:23 tegra ptp4l[5658]: [4957.914] foreign master not using PTP timescale
Dec 12 18:29:23 tegra ptp4l[5658]: [4957.914] port 1: LISTENING to UNCALIBRATED on RS_SLAVE
Dec 12 18:29:24 tegra ptp4l[5658]: [4958.885] port 1: delay timeout
Dec 12 18:29:25 tegra ptp4l[5658]: [4959.885] timed out while polling for tx timestamp
Dec 12 18:29:25 tegra ptp4l[5658]: [4959.885] increasing tx_timestamp_timeout may correct this issue, but it is likely caused by a driver bug
Dec 12 18:29:25 tegra ptp4l[5658]: [4959.885] port 1: send delay request failed
Dec 12 18:29:25 tegra ptp4l[5658]: [4959.885] port 1: UNCALIBRATED to FAULTY on FAULT_DETECTED (FT_UNSPECIFIED)
Dec 12 18:29:25 tegra ptp4l[5658]: [4959.885] waiting 2^{4} seconds to clear fault on port 1

使用strace捕获ptp4l进程的关键信息如下,可以看到poll timeout

sendto(13, "\1\2\0,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<mf\377\376\2E~\0\1\0\277"..., 44, 0, {sa_family=AF_INET, sin_port=htons(319), sin_addr=inet_addr("224.0.1.129")}, 16) = 44
ppoll([{fd=13, events=POLLPRI}], 1, {tv_sec=1, tv_nsec=0}, NULL, 0) = 0 (Timeout)

三个cpp文件在下面的压缩包中,分别为软件组播multicast_sender_software.cpp、硬件组播multicast_sender_hardware.cpp、软件单播unicast_sender.cpp
linuxptp-test.tar.gz (2.4 KB)
这三个文件编译后在我的AGX上运行的输出如下:
multicast_sender_software:

Current timestamping flags:
- SOF_TIMESTAMPING_TX_SOFTWARE
- SOF_TIMESTAMPING_SOFTWARE
Multicast message sent, waiting for timestamp...
Poll timeout waiting for timestamp

multicast_sender_hardware:

Current timestamping flags:
- SOF_TIMESTAMPING_TX_HARDWARE
- SOF_TIMESTAMPING_RAW_HARDWARE
Multicast message sent, waiting for timestamp...
Time elapsed between sendto and recvmsg: 652181 nanoseconds
Software timestamp: 0.0
Hardware timestamp: 0.0

unicast_sender:

Current timestamping flags:
- SOF_TIMESTAMPING_TX_SOFTWARE
- SOF_TIMESTAMPING_SOFTWARE
Message sent, waiting for timestamp...
Time elapsed between sendto and recvmsg: 15648 nanoseconds
Software timestamp: 1734001851.518463409

另外AGX上运行ethtool命令的结果如下

robot@tegra:~/ptptest$ ethtool -T eth0
Time stamping parameters for eth0:
Capabilities:
	hardware-transmit
	software-transmit
	hardware-receive
	software-receive
	software-system-clock
	hardware-raw-clock
PTP Hardware Clock: 1
Hardware Transmit Timestamp Modes:
	off
	on
	onestep-sync
Hardware Receive Filter Modes:
	none
	ptpv1-l4-sync
	ptpv1-l4-delay-req
	ptpv2-l4-sync
	ptpv2-l4-delay-req
	ptpv2-l2-sync
	ptpv2-l2-delay-req
	ptpv2-event

我的问题与deep learning没有关系,麻烦你们再看看我的具体问题

AGX获取不到软件时间戳是否因为ethernet的驱动程序nvethernet存在缺陷?

Could you test with 2 Orin AGX instead of using Orin NX?

我认为测试两个AGX的ptp功能不能解决核心问题,核心问题是无法获取eth0的时间戳,可能需要修改nvethernet的驱动程序以支持时间戳的获取

我現在沒有要解決任何問題. 我只是希望讓這個測試不要有任何其他的driver介入
比方說Orin NX做 ptp master的時候用的driver根本不是nvethernet. 我沒辦法保證這一段會不會出狀況

所以希望你先用兩個Orin AGX複製問題.

另外, 沒有人知道你的問題發生什麼. 什麼分析都還沒有開始, 不用急著講說需要修改驅動什麼的.
有問題我們自然會去修改. 現在是希望你能嘗試在合理的狀況下先複製問題, 提供複製問題的方法.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.