Sorry, you need to enable JavaScript to visit this website.

Embedded Linux Library (ELL)


The Embedded Linux* Library (ELL) provides core, low-level functionality for system daemons. It typically has no dependencies other than the Linux kernel, C standard library, and libdl (for dynamic linking). While ELL is designed to be efficient and compact enough for use on embedded Linux platforms, it is not limited to resource-constrained systems.


  • Event loop that may run standalone or be integrated with another event loop
  • D-Bus client
  • Generic Netlink client
  • Timeout handling
  • Signal handling
  • Runtime plugins
  • Asynchronous/non-blocking I/O framework
  • Data structures: Queues (linked list), hash tables, ring buffers
  • String handling
  • Base64 encode/decode
  • File parsing (PEM, hwdb, settings)
  • Symmetric ciphers (kernel support required)
  • RSA cryptography (kernel support required)
  • Key handling


ELL is tightly integrated with the Linux kernel and depends on recent kernel features:

  • Diffie-Hellman: Linux v4.7
  • AEAD ciphers: Linux v4.9
  • Keyring restrictions: Linux v4.12
  • Keyring RSA crypto operations: Linux v4.20

Compiling the source code requires GCC and the GNU* C Library. 

Sanitizer support for debugging purposes requires the corresponding support library for each sanitizer: libasan (address sanitizer), liblsan (leak sanitizer), or libubsan (undefined behavior sanitizer).


To contribute patches or report issues, please use the project mailing list at