Replies: 3 comments 5 replies
-
|
Thank you for investigating! I will try your solution and come back. The question is, is 10Base-T fast enough for a high workload? |
Beta Was this translation helpful? Give feedback.
-
|
It works now with my problem Fritzbox flawless! Thank you! Why should this solution not be the standard code if traffic is no problem? I will try to program a MQTT machine gun to test it. |
Beta Was this translation helpful? Give feedback.
-
|
New release 1.0.2, please test it. https://github.com/Zeppelin500/MBusino/releases/tag/v1.0.2 Fix: W5500 Auto-NegotiationThe W5500 PHY does not correctly send FLP bursts during link establishment, causing strict gigabit equipment (Fritzbox 7590, PoE extenders, managed switches) to time out and drop the port every ~2 seconds. SolutionDisable auto-negotiation and force 10BASE-T full-duplex before each ETH.setAutoNegotiation(false);
ETH.setFullDuplex(true);
ETH.setLinkSpeed(10);Files changed
Tested
Also included
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi, I'm running two MBusino Nanos over wired ethernet connections. Recently I introduced a 4-port PoE extender into the setup. This prevented the MBusinos to establish an ethernet connection. It was quite easy to trace it back to the presence of this extender but the MBusino was the only device having issues. So I started looking into this.
Failure symptoms:
With some help of Claude and the like I finally managed to identify the root cause and also to fix the issue:
The W5500's PHY implementation does not fully comply with IEEE 802.3u auto-negotiation. Specifically it does not correctly send FLP (Fast Link Pulse) bursts during link establishment, which causes strict gigabit switch chips to time out and drop the port after ~2 seconds.
The fix is to disable auto-negotiation using
ETH.setAutoNegotiation(false)and force 10M half or full duplex. With these settings the W5500 and the extender agree on link parameters without any negotiation exchange, and the connection is stable.At 10M the incorrect FLP implementation does not matter because 10BASE-T uses simple NLP (Normal Link Pulses) that every switch handles identically regardless of PHY quality.
At 100M the extender's gigabit PHY requires proper parallel detection signaling (continuous MLT-3 idle symbols at precise timing) which the W5500 does not deliver correctly. (other PHYs like the LAN8720 on the WT32-ETH01 do apparently)
Modificiation to the code need to be made directly before each
ETH.begin(...)statement:I thought I share this here for anyone else facing similar issues.
I think it does not make sense to apply this generally, since apparently no one else is facing this issue. Apparently more sophisticated (=standard) network equipment can handle the W5500 shortcomings well enough and establishes 100M connection nevertheless.
PS: since there are
ETH.setLinkSpeed(10)statements commented out in the code, did you also experimented with this? From what I found, they definitely need to be beforeETH.begin(), otherwise they have no effect.Beta Was this translation helpful? Give feedback.
All reactions