lwIP

start
lwIP (lightweight IP) is a widely-used, open-source TCP/IP stack designed specifically for resource-constrained embedded systems. It minimizes RAM usage while providing a full-scale TCP implementation, making it suitable for devices with only tens of kilobytes of free memory.

Features

  • Dual-stack IPv4 and IPv6 support with packet forwarding over multiple network interfaces.

  • Full TCP implementation featuring congestion control, RTT estimation, fast recovery, and fast retransmit.

  • UDP and experimental UDP-lite extensions for low-overhead transport.

  • ICMP and ICMPv6 support for network maintenance and diagnostic functions.

  • IGMP and MLDv1 support for managing multicast traffic and listener discovery.

  • Neighbor Discovery (ND) and stateless address autoconfiguration for IPv6 compliance (RFC 4861/4862).

  • Comprehensive IP addressing via DHCP, DHCPv6, AutoIP/APIPA (Zeroconf), and Address Conflict Detection (ACD).

  • DNS client including support for mDNS (Multicast DNS) responder.

  • Layered TCP (altcp) abstraction for transparent TLS integration, typically ported to mbedTLS.

  • Point-to-Point Protocol support including PPPoS (over Serial) and PPPoE (over Ethernet).

  • 6LoWPAN adaptation layer for low-power wireless networks like IEEE 802.15.4 and BLE.

  • Integrated HTTP/HTTPS server with support for Server Side Includes (SSI) and CGI.

  • SNMPv2c/v3 agent with an included MIB compiler for network management.

  • MQTT client with optional TLS encryption for secure IoT messaging.

  • SNTP (Simple Network Time Protocol) implementation for clock synchronization.

  • NetBIOS name service responder and iPerf server for network performance testing.

Architecture

lwIP is designed with a modular architecture that balances the need for a layered protocol stack with the performance requirements of resource-constrained hardware. The core stack is contained within the src directory, while platform-specific ports and optional applications reside in the contrib directory. A central feature of its architecture is the pbuf (packet buffer) structure, which allows for zero-copy data handling as packets move through the various layers of the stack, significantly reducing CPU and memory overhead.

To accommodate different system designs, lwIP provides three distinct Application Programming Interfaces (APIs):

  • Raw API: A callback-based, event-driven interface that provides the highest performance and lowest memory footprint by running directly in the TCP/IP thread.
  • Netconn API: A sequential, thread-safe API that requires an operating system (RTOS) and provides a simplified programming model.
  • Socket API: A BSD-compatible socket layer built on top of the Netconn API, facilitating the porting of existing standard networking code.

Use Cases

This library is ideal for:

  • IoT End-Nodes: Small, battery-powered sensors using 6LoWPAN or BLE to communicate with gateways.
  • Industrial Automation: PLCs and industrial controllers requiring reliable TCP/IP communication for Modbus/TCP or Ethernet/IP protocols.
  • Embedded Web Servers: Devices providing local configuration or monitoring dashboards via HTTP or HTTPS.
  • Network Gateways: Systems bridging traffic between different physical layers, such as Ethernet to Serial (PPP) or WiFi to 6LoWPAN.
  • Resource-Constrained Systems: Microcontrollers with limited RAM (e.g., 20KB-50KB) that still require a full-featured, standards-compliant network stack.

Getting Started

Developers can begin by exploring the src directory for the core protocol implementations and the contrib directory for existing ports to various hardware and operating systems. The stack requires a header file named lwipopts.h to be defined by the user, which configures the stack’s features and memory limits at compile-time. For systems using an RTOS, a system abstraction layer (sys_arch) must be implemented to handle threading and synchronization. Comprehensive self-documentation extracted from the source code is available at the official lwIP documentation site, and development is centrally managed via the Savannah Git repository.

Related Projects (291)

View All 291 Projects →

Overhead

Overhead is a modular multi-page situational-awareness dashboard for ESP32-based touchscreen modules, such as the Cheap Yellow Display. Built on the Arduino framework and FreeRTOS, it integrates real-time data for satellite passes, aircraft ADS-B tracking, aviation weather, and celestial events. The project is specifically engineered for reliability on low-memory hardware, featuring a serialized HTTPS task and a remote web interface for control and monitoring.

freertos littlefslwip
GeoShake

GeoShake

GeoShake is an open-source firmware and hardware project for a distributed, real-time earthquake monitoring station based on the ESP32-S3. It utilizes high-precision accelerometers and on-device seismic processing to contribute to a global seismic network via MQTT and BLE connectivity.

freertos nimblelwip
NucleoOS

NucleoOS

NucleoOS is a web-native operating system designed for the M5Stack Cardputer (ESP32-S3), featuring both a native firmware UI and a desktop-class web shell. Built on the ESP-IDF framework and FreeRTOS, it optimizes constrained hardware (512 KB RAM) by offloading heavy tasks like AI and image generation to the browser via WebAssembly and WebGPU. The system includes a wide array of applications ranging from offline AI assistants and media players to a suite of security-testing tools.

freertos lwipnimble
ESP32-PLC

ESP32-PLC

ESP32-PLC is an open-source firmware project that transforms the ESP32 microcontroller into a functional Programmable Logic Controller (PLC) using ladder logic. Built on the Espressif IoT Development Framework (ESP-IDF) and FreeRTOS, it leverages the ladderlib library to execute industrial control programs and supports web-based logic editing and simulation.

freertos littlefslwipspiffs
Web3 Pi UPS

Web3 Pi UPS

An open-source DC uninterruptible power supply designed specifically for the Raspberry Pi 5, featuring triple-input power paths and smart battery management. It utilizes a dual-MCU architecture with a CH32X035 for power delivery and an RP2040 for the user interface, while supporting remote monitoring via FreeRTOS and the lwIP stack.

freertos lwipplatformio-platformio-core

Xaloqi Embedded Diagnostics Suite (EDS)

A production-grade UDS diagnostic stack for Zephyr RTOS and FreeRTOS that automates ISO 14229 compliance through a YAML-driven code generation workflow. It features ASIL-B safety wrappers, ISO-TP and DoIP transport support, and comprehensive testing tools for automotive and industrial ECUs.

zephyr lwipmcuboot

WaveSight

WaveSight is an ESP32-based radar system that utilizes Wi-Fi Channel State Information (CSI) to detect human presence and movement without the need for cameras or PIR sensors. Built on the ESP-IDF framework and FreeRTOS, it features a real-time web dashboard for signal visualization, auto-calibration routines, and GPIO outputs for integration with external hardware.

freertos nimblelwip

ViewOwl

ViewOwl is an IoT platform that enables ESP32-based displays to show live data from any API using standard HTML and CSS instead of complex embedded graphics code. It features a .NET 8 backend that renders web content via a headless browser and streams compressed frames to ESP32, ESP32-C3, and ESP32-S3 devices over a custom reliable UDP protocol.

freertos lwip