# W5500 No PHY Link

**URL:** <https://forum.arduino.cc/t/w5500-no-phy-link/1378924>\
**Category:** Networking, Protocols, and Devices\
**Created:** [May 4, 2025, 2:34am UTC](https://forum.arduino.cc/t/w5500-no-phy-link/1378924 "2025-05-04T02:34:28Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![alexrcherry](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/alexrcherry/32/1215171_2.png) [@alexrcherry](https://forum.arduino.cc/u/alexrcherry)\
**Post date:** [May 4, 2025, 2:34am UTC](https://forum.arduino.cc/t/w5500-no-phy-link/1378924/1 "2025-05-04T02:34:28Z")

</div>

Bit 0 of Register PHYCFGR of the W5500 does not indicate "link up" with ethernet cable connected when using the default "Link Status" example from the default ethernet library. I have verified SPI communication between the [STM32F411CEU6 black pill board](https://deepbluembedded.com/stm32f411-black-pill-board-pinout-schematic-datasheet/) and the [W5500 board](https://www.amazon.com/HiLetgo-Ethernet-Network-Interface-WIZ820io/dp/B08KXM8TKJ/ref=sr_1_1_sspa?crid=3J7IST8X9Q2MF&dib=eyJ2IjoiMSJ9.SiD19DuD7u2zPW1EWSZQX_qZWLDYTOHBcA-KH_WS5k_fzkktLOpHdPVEfGi48t9az1b5Dk_e44fLzlG9_9X1y_M17BBBVNm5qtsxX5C22pZSxcpmL_HSNGswxJ75hUZ5UrnBsW5Zo7QvBisDXTVoiqCosOoa1iL_j71JrE5q3wCXZJJuFlA9efZCRApb-n3k3Hxdc5YP2z8GILPrCqAj8m4GbQMcNcxHfsNE5ZNWJIk.HkepxTLwObXO7HmBIF4gMiajih-dc_Ou3EIZjGxFzJg&dib_tag=se&keywords=w5500&qid=1746323786&sprefix=w550%2Caps%2C145&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1) with an oscilloscope and everything is as expected. Whatever I try the only thing that is returned is "Link status: OFF".

Troubleshooting steps I have tried so far:

1. Verifying SPI communication is working
2. Connecting to various devices:

- Ethernet-\> usb-c adapter dongle plugged into laptop
- PC motherboard ethernet port
- AX5400 Wifi router (verified to have auto-MDIX)

1. Resetting W5500 during setup using RSTn pin, see code below

 ![RigolDS7](https://europe1.discourse-cdn.com/arduino/original/4X/6/f/3/6f3fc2db8a6f75fe59c986691b08d2eff215c874.png)  
Screenshot of Oscope showing last bit of the last packet is 0 indicating "link down".

Hardware:  
"Blackpill" STM32F411CEU6  
W5500 Lite Breakout board

Wiring:

| STM32F4 Pin | Breakout Pin Name | Oscope Channel |
| --- | --- | --- |
| | | |
| PA7 | MO | CH1 |
| PA6 | MI | CH2 |
| PA5 | SCK | CH3 |
| PA4 | CS | CH4 |
| PA3 | RST | none |

[W5500 datasheet](https://cdn.sparkfun.com/datasheets/Dev/Arduino/Shields/W5500_datasheet_v1.0.2_1.pdf)

```arduino
/*
  Link Status

  This sketch prints the Ethernet link status. When the
  Ethernet cable is connected the link status should go to "ON".
  NOTE: Only WIZnet W5200 and W5500 are capable of reporting
  the link status. W5100 will report "Unknown".
  Hardware:
   - Ethernet shield or equivalent board/shield with WIZnet W5200/W5500
  Written by Cristian Maglie
  This example is public domain.
*/

#include <SPI.h>
#include <Ethernet.h>

void setup() {
  digitalWrite(PA3, LOW); // Reset W5500 
  delayMicroseconds(600);  
  digitalWrite(PA3, HIGH); 
  delay(1); 

  // You can use Ethernet.init(pin) to configure the CS pin
  //Ethernet.init(10); // Most Arduino shields
  //Ethernet.init(5); // MKR ETH Shield
  //Ethernet.init(0); // Teensy 2.0
  //Ethernet.init(20); // Teensy++ 2.0
  //Ethernet.init(15); // ESP8266 with Adafruit FeatherWing Ethernet
  //Ethernet.init(33); // ESP32 with Adafruit FeatherWing Ethernet

  Serial.begin(9600);
}

void loop() {
  auto link = Ethernet.linkStatus();
  Serial.print("Link status: ");
  switch (link) {
    case Unknown:
      Serial.println("Unknown");
      break;
    case LinkON:
      Serial.println("ON");
      break;
    case LinkOFF:
      Serial.println("OFF");
      break;
  }
  delay(1000);
}

```

---

<div class="post-metadata">

**Author:** ![gilshultz](https://avatars.discourse-cdn.com/v4/letter/g/67e7ee/32.png) [@gilshultz](https://forum.arduino.cc/u/gilshultz)\
**Post date:** [May 4, 2025, 9:34pm UTC](https://forum.arduino.cc/t/w5500-no-phy-link/1378924/2 "2025-05-04T21:34:09Z")

</div>

Have you tried plugging it into a Hub or Switch? Going directly to your laptop you will need a crossover cable.

---

<div class="post-metadata">

**Author:** ![alexrcherry](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/alexrcherry/32/1215171_2.png) [@alexrcherry](https://forum.arduino.cc/u/alexrcherry)\
**Post date:** [May 4, 2025, 10:38pm UTC](https://forum.arduino.cc/t/w5500-no-phy-link/1378924/3 "2025-05-04T22:38:08Z")

</div>

Thanks for the response! One of the devices I tried was my AX5400 Wifi router which I verified to have auto-MDIX. I was thinking that this ruled out the possibility that the cable was incorrect.

---

<div class="post-metadata">

**Author:** ![gilshultz](https://avatars.discourse-cdn.com/v4/letter/g/67e7ee/32.png) [@gilshultz](https://forum.arduino.cc/u/gilshultz)\
**Post date:** [May 5, 2025, 3:57am UTC](https://forum.arduino.cc/t/w5500-no-phy-link/1378924/4 "2025-05-05T03:57:25Z")

</div>

I am not familiar with that unit but it sounds like you are correct but it never hurts to try another cable.

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [November 1, 2025, 3:58am UTC](https://forum.arduino.cc/t/w5500-no-phy-link/1378924/5 "2025-11-01T03:58:18Z")

</div>

Closed on November 1, 2025, 3:58am UTC

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