Arduino and IPv6 on W5100

Hello,
I've always read on the internet that ethernet shield based on W5100 can't work with IPv6 protocol and that I have to use ENC28J60 shield. However, today I found EtherSia library which supports both of them. I tried that and it really works even with W5100. How's that possible? How that library works?

I'm not certain how it is working. I took a look at the library code and it appears to be "tricking" the W5x00 IC into sending and receiving with IPv6 temporarily. If IPv6 gets fully implemented, and the IPv6 IP addresses cannot be translated into an IPv4 format, you may have problems with that library.

The W5x00 processors have a 4 byte IP address capability in the internal registers. Every reference doc I have read after a "Wiznet IPv6" Google search says basically the same thing. You can't implement IPv6 with a W5x00 IC.

Hi,

I am the author of EtherSia. It works by putting the W5x00 into MACRAW mode - this uses the Wiznet chip as a Layer 2 Ethernet controller only - it doesn't use its built-in TCP/IP stack.

The Pros of this are:

  • it really genuinely works
  • should be able to communicate with any IPv6 host on the Internet

The Cons are:

  • it uses its own API - you can't re-use existing Arduino client/server code
  • you are a lot more limited by the 2kB RAM

I started off writing EtherSia as an experiment for the ENC28J60 (which is only a Layer 2 Ethernet controller) to see how big the overheads were for IPv6 compared to IPv4 (compared to the EtherCard library). I then found that the Wiznet chips could be put into MACRAW mode - allowing EtherSia to work with more hardware.

nick.