WIZnet Developer Forum

WIZ850io UDP stops working after 60-90 minutes

Hello and thanks for making such great products! I’m using STM32F103C8T7 processor connected to WIZ850io module. I am running a test program that sends a short UDP message every second. After approximately an hour, the socket stops sending. Once failed, the Interrupt (IR) register contains 0x0. When successful the IR register contains 0x10. Retrying the send fails, and I cannot send again until after I reset the 850io module. I have tested the program on an Adruino Uno with Ethernet Shield (W5500) and it runs fine. Any assistance appreciated. If there is a way to restart sending without reset that would be great too. Thanks again, WG

hi, indridkold

there are two interrupt registers, common IR and socket Sn_IR.
Do you mean common IR register ?

If it is common IR, 0x10 bit is magic packet bit. It means you turned on WOL mode and WIZ550io received magic packet.

And if it is socket Sn_IR, the interrupt bits should be 0x00. (if there is no timeout and recv)

so… only with Interrupt, it is hard to find the reason.

Could you check getSn_CR(sn) after setSn_CR(sn,Sn_CR_SEND) in sendto() ?

Hello and thanks for your response,

I added code to the Ethernet library to view the two registers in question…

int sendUDP(SOCKET s)

{

W5100.execCmdSn(s, Sock_SEND);

// WG TESTING START

uint16_t nCR = W5100.readSnCR(s);

uint16_t nIR = W5100.readSnIR(s);

// WG TESTING END

After the send is successful…

nCR = 0x0

nIR = 0x10

After the send fails…

nCR = 0x0

nIR = 0x0

Also, in the function bufferData in socket.cpp, the call to W5100.getTXFreeSize(s) always returns 2048, even after a char has been written. Is that correct or should the FreeSize go down?

Thanks again for any assistance,

WG

Additional… For testing I setup an old Arduino Uno with an Ethernet Shield 2. UDP transmit on the UNO and Shield has run for over 24 hrs with no failure. Could there be a firmware issue? Both the WIZ850io and the Shield 2 use the W5500 chip, but multiple WIZ850io units fail within minutes. Is there firmware on the W5500 that can be updated? Thanks again for any assistance, WG

First,
If you connected like arduino ethernet shield using wiz850io, you can use the arduino ethernet shield library.

If you use the UDP protocol, it may be data loss.
Also, if Sn_MR(P[3:0]) is not TCP mode(‘0001’), it is automatically calculated as the
difference between ‘Socket n TX Write Pointer (Sn_TX_WR)’ and ‘Socket n TX Read
Pointer (Sn_TX_RD)’.

Please refer the Sn_TX_WR and Sn_TX_RD in datasheet.

Hello, we’re still having problems with reliability. Regarding socket 0 register values you asked about previously,

After the send is successful…

SnCR = 0x0

SnIR = 0x10

After the send fails…

SnCR = 0x0

SnIR = 0x0

Are there any other registers we can check? The socket will not even respond to ping request after failing to send. Any assistance appreciated,
Thanks,
IK

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.