---
title: "Ethernet W5500 is not working"
url: "https://maker.wiznet.io/forum/16012"
markdown_url: "https://maker.wiznet.io/forum/16012/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "nbabu0001"
created: "2026-03-23T22:15:34+09:00"
last_activity: "2026-04-01T21:25:18+09:00"
language: "en"
tags: ["Arduino IDE"]
views: 7
replies: 2
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# Ethernet W5500 is not working

## Question

Asked by nbabu0001 on 2026-03-23 in Ethernet Chips.

Hi,

I am currently facing an issue with Ethernet communication on our custom board using the W5500 Ethernet controller and would appreciate your assistance in diagnosing the problem.

We performed several tests to isolate the issue:

1. **Hardware & SPI Verification**
   We ran a low-level SPI test by reading the W5500 version register and received 0x04, confirming that:
  - The W5500 chip is powered and functional
  - SPI communication between the MCU and W5500 is working correctly

2. **Ethernet Initialization**
   We configured a static IP (192.168.1.177) .The Ethernet stack initializes successfully, and the IP is printed correctly over Serial.

3. **Server Test**
   A simple HTTP server was implemented on port 80. The firmware runs without errors and reports the correct IP address.

4. **Network Issue Observed**
   However, when attempting to ping the device from the PC, we receive:

Reply from cmd: Destination host unreachable

indicating that the device is not reachable over the network.

1. **Additional Observations**
  - DHCP attempts fail consistently
  - The ACT LED and FDXLED does not indicate activity
  - The Ethernet hardware is detected at SPI level but not reachable over the network
  - The PC and device are in the same IP range

Could you please guide us on what additional checks or configurations we should perform to resolve this issue? I have attached the schematic.

Thank you for your support.

## Replies

### Reply 1 by TheoIm, 2026-03-24

SPI communication working normally does not guarantee that network communication is functioning.

WIZnet chips separate the SPI interface and the PHY (Ethernet physical layer), so if the PHY is not operating properly, all network functions such as DHCP and ping will fail.

In your current situation:

- DHCP continuously fails

- ACT LED and FDX LED show no activity

→ It is appropriate to first suspect an issue at the PHY level.

In particular, LEDs not responding at all usually indicates not a software issue, but that the physical link itself is not being established.

If you could share how the board was designed, I can provide more specific guidance.

Thank you.

### Reply 2 by nbabu0001, 2026-04-01 (in reply to reply 1)

<https://cdck-file-uploads-europe1.s3.dualstack.eu-west-1.amazonaws.com/arduino/original/4X/8/5/3/8534addb10eaf95ae5df84cf872b99a9925fbf75.pdf> Here is the link of schematic , Please let me know if you have any issues opening this.Below is the code i used tfor testing:-

Here is the output for the code below:-

12:53:39.781 -> PHYCFGR: 0xBA

12:53:39.781 -> Link: DOWN

12:53:39.823 -> Speed: 100 Mbps

12:53:39.823 -> Duplex: Half

```c
#include <SPI.h>
#define W5500_CS 10  // Chip Select pin
SPISettings w5500SPISettings(8000000, MSBFIRST, SPI_MODE0); // 8 MHz, MSB first, Mode 0void setup() {
  Serial.begin(115200);
  while (!Serial);
    Serial.println("Initializing W5500 test...");
      pinMode(W5500_CS, OUTPUT);
  digitalWrite(W5500_CS, HIGH); // Deselect W5500
    SPI.begin(); // Initialize SPI
}
void loop() {
  uint8_t phyStatus = readPHYCFGR();
    Serial.print("PHYCFGR: 0x");
  Serial.println(phyStatus, HEX);
    Serial.print("Link: ");
  Serial.println((phyStatus & 0x01) ? "UP" : "DOWN");
    Serial.print("Speed: ");
  Serial.println((phyStatus & 0x02) ? "100 Mbps" : "10 Mbps");
    Serial.print("Duplex: ");
  Serial.println((phyStatus & 0x04) ? "Full" : "Half");
    Serial.println("-----------------------------");
      delay(1000);
}
// Read PHYCFGR register (0x002E)
uint8_t readPHYCFGR() {
  uint16_t addr = 0x002E;
  return w5500Read(addr);
}
// Generic W5500 SPI read (1 byte)
uint8_t w5500Read(uint16_t addr) {
  uint8_t data;
  SPI.beginTransaction(w5500SPISettings);
  digitalWrite(W5500_CS, LOW);
  SPI.transfer(highByte(addr));
  SPI.transfer(lowByte(addr));
  SPI.transfer(0x00); // Control byte: Read, Common reg, 1 byte
  data = SPI.transfer(0x00);
  digitalWrite(W5500_CS, HIGH);
  SPI.endTransaction();
  return data;
}
// Generic W5500 SPI write (1 byte)
void w5500Write(uint16_t addr, uint8_t val) {
  SPI.beginTransaction(w5500SPISettings);
  digitalWrite(W5500_CS, LOW);
  SPI.transfer(highByte(addr));
  SPI.transfer(lowByte(addr));
  SPI.transfer(0x04); // Control byte: Write, Common reg, 1 byte
  SPI.transfer(val);
  digitalWrite(W5500_CS, HIGH);
  SPI.endTransaction();
}
```

---

Source: https://maker.wiznet.io/forum/16012
