IP Raw code setup arduino

i have copied everything for the IPRAW and even tried UDP manual coding into the void loop, have the w5100 function in regular modes, but when i add the code in the manual. tons of variables are not initialized and many do not match the w5100.h providied in the arduino library.

i need some guidance on setting up the IPRAW listed in the

5.2.3 IP raw
5.2.2 UDP
to get me started.

i understand whats trying to be done but in the datashet code it is incomplete.
there is alot missing, something missing for it to be complete code. either libraries or something.
and i have not worked with wiznet chips alot so i dont have the background to know exactly what is missing because variables in my arduino default libraries vs your datasheets change some variable names so it is harder to follow.

i tried utilizing the W5100_Driver_V190 but theres still so much that doesnt match and errors, what libraries can i use that will allow me to get some compatible code, from the w5100 datasheet.

please guidance to make the code in the datasheet run, why is it so incomplete as a guide?
cant we get an example code, that already runs?

Hello hayabusaxps,

We have two kinds of informations for you.
One is our standard IPRAW example and the other is reference code for Arduino library users.
For standard example,
please refer to below link.


For arduino library users,
Please refer to the below links.

  1. github
  1. arduino playground
    Arduino Playground - ICMP Ping Library

Thank you.


this is for the w5100s
is this also compatible with the w5100?

also is there no readme for (w5100s_evb_an_coide_ipraw_v100.zip.zip) the zip on its execution?

these are alot of files for a simple IPRAW, which are required to just run a IPRAW, and is the main.c the starting file/where (i can start modifying here for my IPraw call) the code for IPRAW starts running?

Hi hayabusaxps,

The start function of ping test is ping_auto() of main.c

Functionally, W5100 is very similar to W5100S, with slightly different Hardware Specification.
And Software can be shared. For example, Software written for the W5100S is compatible with Hardware for the W5100. However, there are some differences between W5100S and W5100 have in Software and Hardware.


these are the same file links, but let me start some analysis (tomorrow night) on the code you sent, there should be an initialization of Sn_MR = …; /* sets IP raw mode */ somewhere and then i just need to start adapting the code to just read the socket register data or?

Sorry for late reply.

Download Code Link : W5100S IPRAW code
return_len = ping_auto(0, pDestaddr, request_flag);
→ This code is start point of IPRAW mode

/* Create SOCKET */
if(socket(s,Sn_MR_IPRAW,port,0)!=s){ // open the SOCKET with IPRAW Mode, if fail then Error

thank you very much.
i was sent to new mexico to work on another project until next week. i will continue programming the wiznet when i return. that you for your help!

i was thinking about where the ipraw starts when looking over the code and thought that if we were pinging manually it must. have a control of the data ipraw somewhere.

Feel free to ask any questions.
We will be waiting for you~

mmmmm. i have tried all of the Arduino-Ping from git hub and none of the examples are functional to test the code following their examples. it says it errors when verifying the code.

from what i have read i would have to recode your example code into arduino to function as its written in a different language. arduino has small differences from c++ i assume.

Arduino: 1.8.8 (Windows 10), Board: “Arduino Due (Programming Port)”

C:\Users\Carpenter\Documents\Arduino\libraries\icmp_ping\ICMPPing.cpp: In member function ‘Status ICMPPing::sendEchoRequest(const IPAddress&, const ICMPEcho&)’:

C:\Users\Carpenter\Documents\Arduino\libraries\icmp_ping\ICMPPing.cpp:184:11: error: ‘class W5100Class’ has no member named ‘send_data_processing’

 W5100.send_data_processing(_socket, serialized, sizeof(ICMPEcho));


C:\Users\Carpenter\Documents\Arduino\libraries\icmp_ping\ICMPPing.cpp: In member function ‘void ICMPPing::receiveEchoReply(const ICMPEcho&, const IPAddress&, ICMPEchoReply&)’:

C:\Users\Carpenter\Documents\Arduino\libraries\icmp_ping\ICMPPing.cpp:207:19: error: ‘class W5100Class’ has no member named ‘getRXReceivedSize’

     if (W5100.getRXReceivedSize(_socket) < 1)


C:\Users\Carpenter\Documents\Arduino\libraries\icmp_ping\ICMPPing.cpp:219:9: error: ‘class W5100Class’ has no member named ‘read_data’

W5100.read_data(_socket, (uint16_t) buffer, ipHeader, sizeof(ipHeader));


C:\Users\Carpenter\Documents\Arduino\libraries\icmp_ping\ICMPPing.cpp:229:9: error: ‘class W5100Class’ has no member named ‘read_data’

W5100.read_data(_socket, (uint16_t) buffer, serialized, dataLen);


exit status 1
Error compiling for board Arduino Due (Programming Port).

This report would have more information with
“Show verbose output during compilation”
option enabled in File → Preferences.

it seems i am also not the only 1 who has issues,

for others:

i was able to finally get a verify code to complete after reverting to
tools> manage libraries> ender ethernet. installed version 1.0. reverting back from 2.0

compatible tested

not compatible