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 (281)

View All 281 Projects →
LuxDMX

LuxDMX

LuxDMX is an open-source Art-Net and sACN to DMX512 gateway designed for ESP32 and ESP32-S3 microcontrollers, featuring a live web-based diagnostic interface. It provides professional-grade lighting control with support for RDM, source merging (HTP/LTP), and multiple network interfaces including WiFi and wired Ethernet. The project utilizes a FreeRTOS-based architecture to ensure low-jitter DMX timing while simultaneously serving high-speed telemetry via WebSockets.

freertos lwip

ESP8266 Secure Weather Clock (TJ-56-654)

An open-source firmware replacement for the TJ-56-654 weather clock kit, focusing on security, privacy, and performance. It features a fully asynchronous architecture for the ESP8266, utilizing NTP for time synchronization and the Open-Meteo API for weather data. The project provides a secure web interface, REST API, and Over-the-Air (OTA) update capabilities to replace insecure factory firmware.

lwip
AtlasCube

AtlasCube

AtlasCube is a feature-rich internet radio and smart clock firmware built for the ESP32-S3 using the ESP-ADF and LVGL libraries. It supports streaming various audio formats, Bluetooth A2DP/HFP via external modules, and local SD card playback, all managed through a comprehensive on-device GUI and a standalone web interface. The project is designed for independence from cloud services, offering local MQTT control, OTA updates, and a customizable event system.

freertos lvgllwipspiffs
OpenC6 BIOS

OpenC6 BIOS

OpenC6 BIOS is an advanced modular firmware platform for the ESP32-C6 RISC-V microcontroller that implements a PC-like architecture by decoupling hardware initialization from application logic. Built on FreeRTOS and the ESP-IDF framework, it provides a standardized System Call Interface (ABI) for executing bare-metal payloads, a management engine running on the LP-Core coprocessor, and support for network-based booting and OTA updates.

freertos lwip

pocket-dial

A self-contained SIP PBX designed for the ESP32-S3 that manages VoIP signaling without requiring external servers or cloud dependencies. It leverages C++17 and the ESP-IDF framework to provide a full-featured telephony environment where RTP media flows peer-to-peer, ensuring the microcontroller never becomes an audio bottleneck.

freertos lvgllwip

ESP-Hosted Open

A specialized fork of Espressif's ESP-Hosted-MCU that unlocks low-level radio capabilities typically hidden by stock firmware, including 802.11p, CSI sensing, and FTM ranging. It operates as a wireless co-processor firmware for ESP32 chips, communicating with host MCUs over SDIO using FreeRTOS, lwIP, and NimBLE.

freertos lwipnimbleopen-thread

VitalMonitor: ESP32 Portable Vital-Signs Monitor

A portable biomedical monitor built on ESP32 and FreeRTOS that tracks ECG, SpO2, temperature, and respiration. It features a validated QRS detection algorithm, local OLED visualization, and a real-time web dashboard for remote patient monitoring.

freertos lwip
AI Desk Card

AI Desk Card

A secondary e-ink desk display designed for AI Agents like Claude Code and Codex, utilizing the M5Paper V1.1 hardware. The project features a Python-based daemon for server-side rendering and an ESP32 firmware that supports Wi-Fi, BLE, and USB communication.

freertos littlefslwipnimbleplatformio-platformio-core