W5100 UDP packet size limit 1500

I am working with a w5100 chip and hitting a 1500 byte limit. Once I send data above (1500-20-8) the 1472 byte limit, all communication fails to be received. I believe it is due to a const buffer for the MTU hardcoded default but I need to enlarge it to a JUMBO sized MTU of around 9k.

Where can I start looking to change this value?
I am working with the Arduino IDE, and

We are working on using your product in our new company project.

Current proof of concept test bed, Arduino due and a adruino Ethernet shield version1 with w5100 chip, connected to a computer to read the UDP stream. Before we tackle the DSP on the UDP streams.


There is no way to receive data larger than 1472 bytes in UDP communication with W5100.
The sender must transmit data in 1472 bytes or less.

What ethernet or wifi chip can be purchased to support transfers above 1472 bytes?

what would you recommend for purchase to transmit Jumbo packets 4k to 8k in size.

You can implement your own UDP handling using IPRAW mode of the W5100. Will be slower that built-in UDP stack, but max buffer size of the single socket can be up to 8KB, thus the maximal packet it can receive at once. However you should be fast enough to remove data from the RX buffer to free buffer space for next incoming packet.

If you need 9KB packet then W5100 will physically be unable to receive it properly under any circumstances.

Can you reconsider your requirements?

that should be more than enough, really the packets being sent looked like 6k packets when i looked at the numbers.

now i just need to looking into a guide for ipraw. i understand the concept but need to look over the guide and find the commands for accessing the w5100 through ipraw

alright so the guide is in the data sheet, just need to read over and test now.

1 Like

When designing driver for handling of such bug packets ensure you remove them as soon as possible from RX buffer because if there is no space for UDP packet (or just IP packet) in the buffer, packet will just be discarded, and it will be ither lost completely or you will have to request it again using some custom data flow protocol. Use TCP instead!

after looking over the data i understand what we are trying to do but alot of the code variables does not match the w5100.h or w5100.cpp underscores inserted and other.

when i start trying to enter these into the void loop(), i keep getting issues with undeclared variables.

it seems alot of variables are not declared in the w5100.h or w5100.cpp
how should i start approaching this.

i am working with a arduino MCU, arduino duo.

where do i start implementing the code expressed for IPraw into the code.