---
title: "W6100 stuck in wizphy_getphylink(). Not Linking"
url: "https://maker.wiznet.io/forum/15546"
markdown_url: "https://maker.wiznet.io/forum/15546/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "ncauwet"
created: "2025-01-28T09:33:30+09:00"
last_activity: "2025-02-05T14:04:30+09:00"
language: "en"
views: 4
replies: 1
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# W6100 stuck in wizphy_getphylink(). Not Linking

## Question

Asked by ncauwet on 2025-01-28 in Ethernet Chips.

I wrote firmware for a custom board I was making and tested it on a W6100-EVB-Pico and everything worked fine. Then I received my custom board and changed PICO_BOARD from "pico" to "none" in the top level CMakeLists.txt.

Upon debugging (Cortex-Debug) I found my device gets stuck in this while-loop in w6x00_spi.c (inside function wizchip_initialize(void)):

```c
/* Check PHY link status */
    do
    {
        if (ctlwizchip(CW_GET_PHYLINK, (void *)&temp) == -1)
        {
            printf(" Unknown PHY link status\n");

            return;
        }
    } while (temp == PHY_LINK_OFF);
```

When stepping through this part of the code on the W6100-EVB-Pico hardware, it loops once then exits the loop (as is expected).

With the custom board, the reason it seems to get stuck is that temp does not change from 0 (equivalent to PHY_LINK_OFF). The io6Library docs tell us that since ctlwizchip is returning 0 that indicates "success". The error code block is not triggered because no error code is triggered.

What am I missing here? My team and I have ruled out all possible hardware issues we could think of. I know the problem is not from custom code because I have used the RP2040-v6-HAT-C example code in my most recent exploration. We are using the W6100 on a custom board with an RP2040 and an RJ45.

I can provide more information if needed.

## Replies

### Reply 1 by TheoIm, 2025-02-05

You mentioned that the issue occurred after changing `PICO_BOARD` from `"pico"` to `"none"`. If you are using the RP2040, I don't see why you would need to change it to `"none"`. Or is the firmware you are using your own custom firmware?

It is important to check the following:

- Whether `pico_sdk_init()` is being called correctly.

- Whether the board configuration is properly applied when `PICO_BOARD=none` is set.

- Whether there are any issues with SPI and GPIO pin mappings that differ from expectations.

From what I see, it seems that an incorrect GPIO configuration is preventing the device from receiving the link signal.

If you share your `CMakeLists.txt` file, I can analyze it in more detail.

Regards,

---

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