---
title: "W5500 connected to LAN not sending ARP requests"
url: "https://maker.wiznet.io/forum/14763"
markdown_url: "https://maker.wiznet.io/forum/14763/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "Jay Jagani"
created: "2023-01-05T18:08:30+09:00"
last_activity: "2023-01-06T19:48:16+09:00"
language: "en"
views: 592
replies: 7
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# W5500 connected to LAN not sending ARP requests

## Question

Asked by Jay Jagani on 2023-01-05 in Ethernet Chips.

I am writing a driver for the w5500 for rp2040. so far, my chip responds to ping requests from my PC on my LAN, responds to ARP requests from my PC, and is sending UDP Packets over my LAN with the correct payload, src, and dst ip addresses. However, the chip refuses to send an ARP request of it’s own (force ARP is on as well), which means the destination MAC of every packet is all zeroes. What I am doing is writing all my data to my TX buffer and simply writing the SEND command to sn_cr. Wondering if I am missing any steps here. From the wiznet w5500 driver it seemed that I was doing it right.

[![Screenshot from 2023-01-05 13-06-28](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/4/49c3e86e874223d230a3fcc2198f0b683c62a186.png) Screenshot from 2023-01-05 13-06-281920×1080 262 KB](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/4/49c3e86e874223d230a3fcc2198f0b683c62a186.png)

(example UDP packet being sent)

[![Screenshot from 2023-01-05 13-07-53](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/f/fb7796ee3029595c7bc9b6247ea1586dac0f633e.png) Screenshot from 2023-01-05 13-07-531920×1080 249 KB](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/f/fb7796ee3029595c7bc9b6247ea1586dac0f633e.png)

(example ARP reply from w5500)

## Replies

### Reply 1 by Eugeny, 2023-01-05

Jay_Jagani:

> the chip refuses to send an ARP request of it’s own (force ARP is on as well), which means the destination MAC of every packet is all zeroes.

Can you explain in more detail? How do you know it *refuses*? You have error code from the chip? Or you mean it does not send ARP when you think it must? If yes, then when you think it must send ARP request? Your second pic shows 2.50 asking for MAC address and 2.100 responds with its MAC address.

### Reply 2 by Jay Jagani, 2023-01-05 (in reply to reply 1)

Sorry,

It does not send ARP request when I believe it should. I am trying to send UDP packets from the chip (2.100) to my pc (2.50). I was trying to display that 2.100 responds to arp requests on the LAN, but when I send packets, does not send them itself

### Reply 3 by Jay Jagani, 2023-01-05

arp reply is correct with the mac address of 2.100. In short, I expect an ARP request for the MAC of 2.50 from 2.100 when udp packets are sent

### Reply 4 by Eugeny, 2023-01-05

SEND (0x20) must send ARP request before the first UDP datagram is sent, but it does not happen, *or* something blocks chip doing so. Can you dump all common registers and registers of socket you use into hex and check them/post here?

### Reply 5 by Jay Jagani, 2023-01-05

Sorry for the delayed response, this is the values of all registers after sending one packet over UDP using socket 1
**Common Registers**
w5500_mr: 0x02
w5500_gar: 0xc0 0xa8 0x02 0x32
w5500_subr: 0xff 0xff 0xff 0x00
w5500_shar: 0x08 0xdc 0x0a 0x01 0x10 0x18
w5500_sipr: 0xc0 0xa8 0x02 0x64
w5500_intLevel: 0x00 0x00
w5500_ir: 0x00
w5500_imr: 0x00
w5500_sir: 0x02
w5500_simr: 0x00
w5500_rtr: 0x07 0xd0
w5500_rcr: 0x08
w5500_ptimer: 0x28
w5500_pmagic: 0x00
w5500_phar: 0x00 0x00 0x00 0x00 0x00 0x00
w5500_psid: 0x00 0x00
w5500_pmru: 0xff 0xff
w5500_uipr: 0x00 0x00 0x00 0x00
w5500_uportr: 0x00 0x00
w5500_phycfgr: 0xda
w5500_versionr: 0x04

**Socket 1 Registers **
w5500_socket_mr: 0x82
w5500_socket_cr: 0x00
w5500_socket_ir: 0x10
w5500_socket_sr: 0x22
w5500_socket_sport: 0x13 0x88
w5500_socket_dhar: 0x00 0x00 0x00 0x00 0x00 0x00
w5500_socket_dipr: 0xc0 0xa8 0x02 0x32
w5500_socket_dport: 0x14 0xe9
w5500_socket_mssr: 0x05 0xc0
w5500_socket_tos: 0x00
w5500_socket_ttl: 0x80
w5500_socket_rxbuf_size: 0x08
w5500_socket_txbuf_size: 0x08
w5500_socket_tx_fsr: 0x20 0x00
w5500_socket_tx_rd: 0x00 0x04
w5500_socket_tx_wr: 0x00 0x04
w5500_socket_rsr: 0x00 0x00
w5500_socket_rx_rd: 0x00 0x00
w5500_socket_rx_wr: 0x00 0x00
w5500_socket_imr: 0x04
w5500_socket_frag: 0x40 0x00
w5500_socket_kpalvtr: 0x00

[![w5500_cr pic](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/7/7ac2f9ca173cf345981a2a4576cf22c46beaf0dc.png) w5500_cr pic1920×1080 188 KB](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/7/7ac2f9ca173cf345981a2a4576cf22c46beaf0dc.png)

Also, SEND command is (0x20), I noticed you made a mistake in an earlier reply

### Reply 6 by Eugeny, 2023-01-06

Try turning off the multicast mode in S1_MR. Also ensure that memory allocation is correct (S1 uses half of available buffer memory).

Jay_Jagani:

> Also, SEND command is (0x20), I noticed you made a mistake in an earlier reply

Right, thank you. Corrected.

### Reply 7 by Jay Jagani, 2023-01-06

I solved it, turns out that I had multicast enabled which defaulted the chip to using IGMP instead of ARP. Thank you for all the help!

---

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