EtherSia
A minimal IPv6 library for an Arduino with an ENC28J60, W5500 or W5100 Ethernet controller.
Features
- SLAAC (Neighbour Discovery Protocol / Stateless Auto-configuration)
- HTTP Server
- UDP Client and Server
- DNS Client
Design Decisions
- Optimised for Arduino - not a general purpose library
- Should be easy to use - this is what Arduino is all about
- Should work within the constraints of an Uno - 32k ROM and 2k RAM
- Should follow the Style Guide and avoid using complex C features like Pointers and Callbacks
- Decouple the core from protocols where possible, to allow for program size optimisations
- Only use statically allocated memory to avoid leaks and keep memory usage down
Limitations
- Ethernet only
- No DHCPv6
- No Routing or RPL
- No TCP Client
- Stateless TCP in HTTP Server (single packet request/response)
- No fragmentation support
- A single local router on the network is assumed
- The network prefix length is assumed to be /64
If you need a more fully functional IPv6 stack, then take a look at Contiki.
EtherSia is an IPv6 only library. If you are looking for an IPv4 library for ENC28J60, then take a look at EtherCard.
Compatibility
EtherSia should work on any Arduino board with ENC28J60, W5500 or W5100 based network interface. There are the results of boards I have tested with:
Board | Class | Tested? | CS Pin | Hardware MAC Address |
---|---|---|---|---|
Arduino Ethernet Shield | EtherSia_W5100 | Working | 10 | None |
Arduino Ethernet Shield 2 | EtherSia_W5500 | Working | 10 | None |
Nanode v5 | EtherSia_ENC28J60 | Working | 8 | UNI/O 11AA02E48 |
Nanode RF / Classic | EtherSia_ENC28J60 | - | 8 | MCP79411 |
Nano Shield | EtherSia_ENC28J60 | Working | 10 | None |
Velleman KA04/VMA04 | EtherSia_ENC28J60 | - | 10 | None |
Ciseco Ethernet Shield K016 | EtherSia_ENC28J60 | - | 10 | None |
Snootlab Gate 0.5 | EtherSia_ENC28J60 | - | 10 | None |
Testing on Linux | EtherSia_LinuxSocket | Working | - | - |
License: 3-clause BSD license