Lan7430 issue for custom board Jetson Orin Nano

Hi all, we have an issue with detecting ethernet connection via Lan7430 on my Jetson Orin Nano 8 GB custom board.
The board designed according the Jetson Orin Nano dev kit. We put the Lan7430 controller on C1 PCI instead of BT module.
We rebuilt the kernel by instruction Kernel Customization — NVIDIA Jetson Linux Developer Guide 1 documentation

In two ways (on host machine+flashing and on the target device).

We can see the lan7430 in pcie devices and in the ethernet devices too, drivers are also loaded. But cable connection can’t be detected.
The native Realtech connection works fine.
What are we missing?
The logs and schematic for lan7430 attached below:
dmesg.log (59.1 KB)
lan7430.pdf (39.8 KB)
lspci.log (26.9 KB)
UART.log (76.8 KB)
ifconfig.log (1.6 KB)

1 Like

Having exact the same issues, with the same logs.

I saw a kernel stack dump happened in the dmesg.

Looks like lan743x_netdev_open has some error there. Please also check with the PHY vendor if this driver version of driver is compatible with this kernel version.

[   13.093240] ------------[ cut here ]------------
[   13.093242] called from state RUNNING
[   13.093259] WARNING: CPU: 4 PID: 501 at drivers/net/phy/phy.c:1125 phy_start+0x54/0xc0
[   13.093271] Modules linked in: usb_f_acm u_serial usb_f_rndis u_ether libcomposite snd_soc_tegra210_mixer(O) snd_soc_tegra186_asrc(O) snd_soc_tegra210_admaif(O) snd_soc_tegra_pcm snd_soc_tegra210_afc(O) snd_soc_tegra186_arad(O) snd_soc_tegra210_mvc(O) snd_soc_tegra210_sfc(O) snd_soc_tegra210_ope(O) snd_soc_tegra210_dmic(O) snd_soc_tegra186_dspk(O) snd_soc_tegra210_adx(O) snd_soc_tegra210_amx(O) snd_soc_tegra210_i2s(O) r8168(O) snd_soc_tegra210_ahub(O) tegra210_adma spidev nvvrs_pseq_rtc(O) snd_soc_tegra_machine_driver(O) snd_soc_tegra_utils(O) snd_soc_simple_card_utils tegra234_oc_event(O) fusb301(O) crct10dif_ce mttcan(O) nvpps(O) can_dev nvpmodel_clk_cap(O) tegra_cactmon_mc_all(O) thermal_trip_event(O) snd_hda_codec_hdmi tegra234_aon(O) tegra_aconnect snd_hda_tegra snd_hda_codec snd_hda_core pwm_tegra_tachometer(O) lan743x(O) at24 tegra_pcie_dma_test(O) tegra_pcie_edma(O) nvidia(OE) host1x_fence(O) mc_hwpm(O) spi_tegra114 nvidia_vrs_pseq(O) tegra_dce(O) nvhost_isp5(O) nvhost_vi5(O)
[   13.093330]  tsecriscv(O) nvhost_nvcsi_t194(O) tegra_camera(O) v4l2_dv_timings nvhost_nvcsi(O) tegra_camera_platform(O) capture_ivc(O) governor_userspace tegra_camera_rtcpu(O) tegra_drm(O) ivc_bus(O) hsp_mailbox_client(O) ivc_ext(O) v4l2_fwnode v4l2_async videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 tegra_wmark(O) videobuf2_common videodev nvhwpm(O) nvhost_capture(O) mc cec host1x_nvhost(O) drm_kms_helper nvidia_p2p(O) ina3221 nvgpu(O) governor_pod_scaling(O) host1x(O) mc_utils(O) nvmap(O) nvsciipc(O) fuse drm ip_tables x_tables ipv6 pwm_fan pwm_tegra tegra_bpmp_thermal tegra_xudc ucsi_ccg typec_ucsi typec nvme nvme_core phy_tegra194_p2u pcie_tegra194
[   13.093382] CPU: 4 PID: 501 Comm: NetworkManager Tainted: G           OE     5.15.148-tegra #1
[   13.093385] Hardware name: NVIDIA NVIDIA Jetson Orin NX Engineering Reference Developer Kit/Jetson, BIOS 36.4.3-gcid-38968081 01/08/2025
[   13.093388] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   13.093391] pc : phy_start+0x54/0xc0
[   13.093393] lr : phy_start+0x54/0xc0
[   13.093395] sp : ffff80000b8cb160
[   13.093396] x29: ffff80000b8cb160 x28: ffff000088002980 x27: 0000000000000000
[   13.093400] x26: 0000000000000004 x25: 0000000000000005 x24: ffff000088003000
[   13.093403] x23: ffff000088002248 x22: ffffb8b8c3770cc0 x21: ffff000088002000
[   13.093405] x20: ffff000088002728 x19: ffff000088002248 x18: ffffffffffffffff
[   13.093408] x17: 0000000000000000 x16: ffffb8b8e2ad87b0 x15: ffff80008b8cb0ad
[   13.093411] x14: 0000000000000000 x13: 206574617473206d x12: 6f72662064656c6c
[   13.093414] x11: 656820747563205b x10: 000000000000000a x9 : ffff80000b8cb160
[   13.093417] x8 : 000000000000000a x7 : 0000000000000007 x6 : 000000000000000a
[   13.093420] x5 : ffff0001f12b99f0 x4 : 00000000fffff2d0 x3 : ffffb8b8e44181c8
[   13.093423] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff000082db4d80
[   13.093426] Call trace:
[   13.093427]  phy_start+0x54/0xc0
[   13.093429]  lan743x_netdev_open+0x650/0x11a0 [lan743x]
[   13.093438]  __dev_open+0xf4/0x1e0
[   13.093446]  __dev_change_flags+0x19c/0x220
[   13.093450]  dev_change_flags+0x44/0x90
[   13.093453]  do_setlink+0x224/0xd50
[   13.093457]  __rtnl_newlink+0x568/0x8a0
[   13.093460]  rtnl_newlink+0x5c/0x90
[   13.093463]  rtnetlink_rcv_msg+0x130/0x330
[   13.093466]  netlink_rcv_skb+0x64/0x130
[   13.093472]  rtnetlink_rcv+0x30/0x40
[   13.093474]  netlink_unicast+0x300/0x360
[   13.093478]  netlink_sendmsg+0x1e4/0x450
[   13.093480]  __sock_sendmsg+0x68/0x80
[   13.093486]  ____sys_sendmsg+0x240/0x260
[   13.093489]  ___sys_sendmsg+0x90/0xe0
[   13.093491]  __sys_sendmsg+0x7c/0xe0
[   13.093493]  __arm64_sys_sendmsg+0x34/0x50
[   13.093495]  invoke_syscall+0x5c/0x130
[   13.093501]  el0_svc_common.constprop.0+0x64/0x110
[   13.093504]  do_el0_svc+0x74/0xa0
[   13.093508]  el0_svc+0x28/0x80
[   13.093512]  el0t_64_sync_handler+0xa4/0x130
[   13.093515]  el0t_64_sync+0x1a4/0x1a8
[   13.093518] ---[ end trace f5b1e3cb6ad9ddd4 ]---

How can I check compatibility driver and kernel version? I build the kernel and module drivers from Nvidia jetpack sources.
Should I download the latest Linux kernel source, and replace lan743x source in the Nvidia Jetpack Linux kernel driver?

We don’t guarantee any vendor driver could really work just there or not. You could check with the phy vendor for the error first.

  • vendor: 1055 (“Microchip Technology / SMSC”), device: 7430 (“LAN7430”)

We have :
[ 10.144475] lan743x 0001:01:00.0 (unnamed net_device) (uninitialized): PCI: Vendor ID = 0x1055, Device ID = 0x7430

It seems, that vendor ID is fine.

I am not sure what you are trying to say here. What is the point to check that?

Sorry for misunderstanding.
Could you say, how to check this?

Contact with the PHY vendor directly. I mean LAN7430 is from Microchip… then please report this error to Microchip.

The error is from their driver but not NVIDIA driver. I have no comment for what might be wrong there.

Thx, I’ll try to contact with Microchip.

Hi @pushkinforever,

we’ve fixed the issue on our own. Just add following node under the according pcie node:

 host@0 {
                                reg = <0 0 0 0 0>;
                                #address-cells = <0x3>;
                                #size-cells = <0x2>;
                                eth1: ethernet@0 {
                                        compatible = "microchip,lan743x";
                                        status = "okay";
                                        reg = <0 0 0 0 0>;
                                        phy-connection-type = "rgmii";
                                        fixed-link {
                                                speed = <1000>;
                                                full-duplex;
                                        };
                                };
                        };

Hi @saber.kaygusuz,

we had the same problem and fixed it with this device tree change but our device still has a problem that the link detection does not work. When no ethernet cable is connected it still says “yes”. Do you have the same issue?

sudo ethtool enP7p1s0

Settings for enP7p1s0:

       Supported ports: [ TP   MII ]

       Supported link modes:  1000baseT/Full

       Supported pause frame use: Symmetric Receive-only

       Supports auto-negotiation: Yes

       Supported FEC modes: Not reported

       Advertised link modes: 1000baseT/Full

       Advertised pause frame use: Symmetric Receive-only

       Advertised auto-negotiation: Yes

       Advertised FEC modes: Not reported

       Speed: 1000Mb/s

       Duplex: Full

       Auto-negotiation: on

       Port: MII

       PHYAD: 0

       Transceiver: external

       Supports Wake-on: pumbag

       Wake-on: d

       Current message level: 0x00000137 (311)

                              drv probe link ifdown ifup tx_queued

       Link detected: yes

Hi again,

to answer my own question the fix is removing parts of the device tree:

          host@0 {
              reg = <0 0 0 0 0>;
              #address-cells = <0x3>;
              #size-cells = <0x2>;
              eth1: ethernet@0 {
                  compatible = "microchip,lan743x";
                  status = "okay";
                  reg = <0 0 0 0 0>;
              };
          };
1 Like

Hi. @saber.kaygusuz and @Xennor
It seems, that this fix didn’t work for me. I still have no link detected and a call trace while phy_start lan743x.
Could you check if i apply fix properly.
I add to pcie@14100000 the following code:

host@0 {
reg = <0 0 0 0 0>;
#address-cells = <0x3>;
#size-cells = <0x2>;
enP1p1s0: ethernet@0 {
compatible = “microchip,lan743x”;
status = “okay”;
reg = <0 0 0 0 0>;
};
};

The I rebuild dtb. Reboot

Hi pushkinforever,

did you use the correct pcie node? And you can check if the device tree node actually exist on the flashed device with:

ls /proc/device-tree/bus@0/pcie@14100000

There should be an entry with host@0.

@Xennor @saber.kaygusuz thx all. This fix works fine.
I forgot to add FDT to extlinux.conf

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