Skip to content


Repository files navigation

NDN Arduino library for ESP8266 and more

GitHub Workflow status GitHub code size

esp8266ndn library enables Named Data Networking application development in Arduino environment. It supports ESP8266, ESP32, ESP32-S2, ESP32-C3, and Adafruit nRF52 microcontrollers.

esp8266ndn logo


Packet encoding and decoding

  • Interest and Data
    • v0.3 format only
    • TLV evolvability: yes
    • forwarding hint: yes, limited to one name
  • NDNLPv2
    • fragmentation and reassembly: yes, requires in-order delivery
    • Nack: partial
    • PIT token: yes
    • congestion mark: no
    • link layer reliability: no
  • Signed Interest: v0.3 format
  • Naming Convention: rev3 format


  • Ethernet: unicast and multicast on ESP8266 and ESP32
  • UDP/IPv4: unicast and multicast on ESP8266 and ESP32
  • UDP/IPv6: unicast on ESP8266
  • Bluetooth Low Energy: server/peripheral only on ESP32 and nRF52


  • Crypto
    • SHA256: yes (using BearSSL on ESP8266, Mbed TLS on ESP32, Cryptosuite on nRF52)
    • ECDSA: P-256 curve only (using Mbed TLS on ESP32, micro-ecc on ESP8266 and nRF52)
    • HMAC-SHA256: yes (using BearSSL on ESP8266, Mbed TLS on ESP32, Cryptosuite on nRF52)
    • RSA: no
    • Ed25519: no
    • Null: yes
  • NDN certificates: basic support
  • Persistent key and certificate storage: binary files
    • ESP8266: using LittleFS
    • ESP32: using FFat (in Arduino Tools menu select "Partition Scheme: with FAT")
    • nRF52: using InternalFileSystem
  • Trust schema: no

Application layer services

  • ndnping server and client
  • segmented object producer and consumer
  • Realtime Data Retrieval (RDR) metadata producer and consumer
  • NDNCERT server and client
    • ESP32 only
    • supported challenges: "nop" and "possession"
  • NDN-FCH client for connecting to the global NDN testbed and other connected networks
    • ESP8266 and ESP32 only
  • UnixTime client for time synchronization


  1. Clone NDNph and this repository under $HOME/Arduino/libraries directory.
  2. Add #include <esp8266ndn.h> to your sketch.
  3. Check out the examples for how to use.