ASK AN EDUCATOR! – “How can I get my Arduino to use IPv6”

Mike asks:

With IPV6, it looks like I can have unique internet addresses for all my Internet of Things/Web of Things. How can I get my Arduino projects to use IPV6

Interesting question Mike! But first, for those of us who are not familiar with IPv6:

IPv6 or Internet Protocol version 6 is the most recent standard communications protocol for the internet. This version solves many of the protocol problems faced with IPv4 including support for an almost unlimited number of unique device addresses….2^128 or 340,282,366,920,938,463,463,374,607,431,768,211,456 devices. Phew. Considering that the World’s population is 6,973,738,433 (from Google) would mean that each person could have approximately 4.9 x 10^28 uniquely addressed, internet-connected devices. With numbers like this, its not hard to imagine a future where every electronic device is capable of interfacing with the internet, maybe even your coffee maker.

Now, about getting IPv6 running on your Arduino. There are already a few libraries that make this possible, and most rely on the Arduino Ethernet Shied:

Reflected Heat Technologies

The official Arduino Ethernet Shield is based on the WizNet 5100 chip, which implements the IPv4 protocol stack in silicon. As a consequence, the Arduino Ethernet Shield cannot be used to implement an IPv6 stack.

To implement an IPv6 stack, it is necessary to use a shield based on hardware that permits the management of IP and Ethernet layer functions. Shields based on the MicroChip ENC28J60 chip (such as those sold by Ekitszone and Nuelectronics) are suitable for the implementation of an IPv6 or dual IPv4/IPv6 stack. This approach requires the TCP state machine to be implemented in software and results in more complex arduino code.

IPv6EtherShield

I ported the uipv6 network stack from http://www.sics.se/contiki/. The ENC28J60 library is from Guido Socher. The uipv6 library was isolated by http://www.shapeshifter.se/code/uipv6/.

I wrote an additional wrapper class with initialization methods, so the sketch files should be pretty simple. Included in the library you will find the following examples:

IPv6TelnetServer, where you can put/get the status of an attached LED and where you can get information about the free RAM bytes.
IPv6WebServer, where you can get the current values of the analog input pins.

Arduino-IPv6Stack

In Telecom Bretagne, we love open source and IPv6. That’s why we decided to port the Contiki OS network stack (6LoWPAN/IPv6 + RPL + CoAP) to our favorite prototyping platform : Arduino.

We released a first example which demonstrates the use of IPv6 stack library : IPv6UDPexample.ino In this example, you will need two Arduino Mega with Wireless Proto Shield and Xbee Series 1 mounted.

I hope this has helped steer you in the right direction and best of luck with your Internet of Things things 🙂

Don’t forget, everyone is invited to ask a question!

Click here!

“Ask an Educator” questions are answered by Adam Kemp, a high school teacher who has been teaching courses in Energy Systems, Systems Engineering, Robotics and Prototyping since 2005.


Adafruit publishes a wide range of writing and video content, including interviews and reporting on the maker market and the wider technology world. Our standards page is intended as a guide to best practices that Adafruit uses, as well as an outline of the ethical standards Adafruit aspires to. While Adafruit is not an independent journalistic institution, Adafruit strives to be a fair, informative, and positive voice within the community – check it out here: adafruit.com/editorialstandards

Join Adafruit on Mastodon

Adafruit is on Mastodon, join in! adafruit.com/mastodon

Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on code.org, jump into CircuitPython to learn Python and hardware together, TinyGO, or even use the Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for CircuitPython, MakeCode, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.

Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7pm ET! To join, head over to YouTube and check out the show’s live chat – we’ll post the link there.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Join over 36,000+ makers on Adafruit’s Discord channels and be part of the community! http://adafru.it/discord

CircuitPython – The easiest way to program microcontrollers – CircuitPython.org


Maker Business — “Packaging” chips in the US

Wearables — Enclosures help fight body humidity in costumes

Electronics — Transformers: More than meets the eye!

Python for Microcontrollers — Python on Microcontrollers Newsletter: Silicon Labs introduces CircuitPython support, and more! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

Adafruit IoT Monthly — Guardian Robot, Weather-wise Umbrella Stand, and more!

Microsoft MakeCode — MakeCode Thank You!

EYE on NPI — Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — #NewProds 7/19/23 Feat. Adafruit Matrix Portal S3 CircuitPython Powered Internet Display!

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !



1 Comment

  1. Hopefully the ethernet shield will get a revision that supports IPv6. This should be something that is already done.

Sorry, the comment form is closed at this time.