Skip to main content
Visitor II
June 10, 2026
Question

NetX Duo Ethernet Initialization Timing Issue

  • June 10, 2026
  • 0 replies
  • 1 view


In many NetX Duo Ethernet sample projects, HAL_ETH_Start_IT() is not called depending on
the timing of the PHY link‑up. When this happens, Ethernet communication never starts.

The behavior appears to be related to how App_Link_Thread_Entry() handles link status:

- nx_ip_interface_status_check() is used to check the NX_IP_LINK_ENABLED status.
- nx_ip_driver_direct_command() issues NX_LINK_ENABLE or NX_LINK_DISABLE when the PHY link state changes.

Normal behavior

- If the PHY is link-up at startup, HAL_ETH_Start_IT() is called during initialization.
- If the PHY is link-down at startup, App_Link_Thread_Entry() later detects the link-up,
  issues NX_LINK_ENABLE, and HAL_ETH_Start_IT() is called correctly.

Problem case

If the PHY is link-down at startup but becomes link-up before App_Link_Thread_Entry() starts running:

- The thread does not issue NX_LINK_ENABLE or NX_LINK_DISABLE.
- HAL_ETH_Start_IT() is not called.
- Ethernet communication cannot be established.

In PoE environments, the power‑on to link‑up time is generally consistent,
but it depends on the specific equipment used, such as the PoE injector.
With certain devices, this issue occurs frequently.
Although reconnecting the Ethernet cable restores communication, this is not feasible in PoE setups.

Is there a recommended approach to ensure that HAL_ETH_Start_IT() is always called regardless of the PHY link‑up timing?