Ethernet Issue on Jetson Xavier NX

I am using a Jetson Xavier NX with Jetpack 5.1.1, equipped with a third-party carrier board. There is a chance that eth0 is not recognized during device boot. When this happens, ifconfig cannot detect eth0. After enabling it with the command ip link set eth0 up, eth0 becomes visible in ifconfig, but it fails to obtain an IPv4 address. Additionally, I cannot ping the local router, and the network is reported as unreachable. Unfortunately, I did not capture the dmesg logs at the time. The probability of eth0 not being recognized after powering on is low, making it difficult to reproduce. However, manually input reboot command , the Jetson usually restores normal functionality.

Later, I noticed that even when eth0 is recognized normally at boot, running dmesg | grep -i ethernet shows the following messages:

[    2.696806] hns3: Hisilicon Ethernet Network Driver for Hip08 Family - version
[    2.719451] igb: Intel(R) Gigabit Ethernet Network Driver
[    6.497068] nvethernet 2490000.ethernet: Adding to iommu group 27
[    6.507237] nvethernet 2490000.ethernet: failed to read skip mac reset flag, default 0
[    6.519209] nvethernet 2490000.ethernet: failed to read MDIO address
[    6.531238] nvethernet 2490000.ethernet: setting to default DMA bit mask
[    6.531243] nvethernet 2490000.ethernet: set default TXQ to TC mapping
[    6.531248] nvethernet 2490000.ethernet: Setting default PTP RX queue
[    6.531262] nvethernet 2490000.ethernet: Failed to read DMA Tx ring size, using default [1024]
[    6.545842] nvethernet 2490000.ethernet: Failed to read DMA Rx ring size, using default [1024]
[    6.545867] nvethernet 2490000.ethernet: missing nvidia,pad_auto_cal_pu_offset, setting default 0
[    6.558631] nvethernet 2490000.ethernet: missing nvidia,pad_auto_cal_pd_offset, setting default 0
[    6.583048] nvethernet 2490000.ethernet: failed to get eqos_rx_m clk
[    6.592669] nvethernet 2490000.ethernet: failed to get eqos_rx_input clk
[    6.592676] nvethernet 2490000.ethernet: failed to get eqos_tx_divider clk
[    6.665255] nvethernet 2490000.ethernet: Ethernet MAC address: 48:b0:2d:5a:d2:1a
[    6.683618] nvethernet 2490000.ethernet: Macsec not supported/Not enabled in DT
[    6.692304] nvethernet 2490000.ethernet: eth0 (HW ver: 50) created with 1 DMA channels
[   11.743419] using random self ethernet address
[   11.743550] using random host ethernet address
[   13.055676] using random self ethernet address
[   13.055948] using random host ethernet address
[   15.324174] nvethernet 2490000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx

Is this issue caused by not modifying the device tree, or do I need to upgrade the system? I would greatly appreciate any responses!

I can’t answer what the issue is, but usually it is the device tree. Some hardware is plug-n-play, and it can be queried by the driver. A lot of other hardware (anything which cannot self-describe) needs firmware (in the form of a device tree) to tell the driver where it is and what its capabilities are. Basically an argument to pass to the driver as it loads. Is this your carrier board, or is it from a third party? If from a third party, then they probably have a device tree or device tree patch. It isn’t too difficult to just edit one node if you know what the edits are.

Incidentally, you for any future response, you should add the L4T release you are using (see “head -n 1 /etc/nv_tegra_release”).

Also, remember the MAC address in this log, 48:b0:2d:5a:d2:1a. Each time there is a failure, and once when there is a working system, find the output of ifconfig (if needed, the alternate form “ip -s addr”) and route. Find this output before and after the “ip link set eth0 up” command. Make sure to post it with a label as to whether this is a before or after or working condition. There might not be much one can do with custom hardware, but knowing the above takes some of the mystery out of it.