EtherDune – Easy and extensible ENC28J60 Arduino TCP/IP library



What is EtherDune?

EtherDune is a new easy to use TCP/IP library for Arduino that supports ENC28J60. It is perfect if you want to get started very quickly and want to write maintainable, easy to read code in a small size.


  • Event-driven, non-blocking asynchronous API
  • Network services architecture:
    • Allows sharing hardware in a clean, non-interfering way.
    • Only the services you explicitly use in your code (e.g., DHCP, DNS, ICMP, TCP…) are compiled into your binary.
    • The services architecture allows you to enable or add new services without having to modify existing code. Need DHCP?: add the module and it will compile right in and configure your connection.
  • Extensible: Derive from a class to write your own protocol, at any level, e.g.:
    • Derive from NetworkService to implement any Ethernet-level protocol.
    • Derive from TCPSocket to implement TCP-based protocols
    • Derive from HTTPClient to connect to a web server or implement a specific webservice API client
    • And many more: UDPSocket, HTTPServer…
  • Use of PROGMEM and facilities to enable you to store IP addresses, MAC addresses in PROGMEM, as well as always accepting PROGMEM-stored strings.
  • TCP and UDP support:
    • Buffered write, making extensive use of ENC28J60’s RAM
    • Multiple simultaneous active sockets.
    • Built-in templated write, similar to printf.
  • Out-of-the-box: TCP, UDP, DHCP, DNS, ICMP (ping), HTTP client, HTTP server
  • ACross-compatible (debug step by step with your computer)
  • Logging/tracing support setting the _DEBUG preprocessor variable to 1
  • Open source – GPLv2
  • Full documentation
  • Detailed examples to get you started

Supported hardware:

  • Microchip’s ENC28J60
  • Tested on Atmel 328p-based Arduinos, but should work on most.

How to install:

  1. Download dependency libraries from GitHub:
  2. Download EtherDune v0.9 from GitHub
  3. Install by adding the contents of each .zip file to your Arduino libraries folder

GitHub homepage:

Documentation available here.