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

View All 245 Projects →
SVITRIX Firmware

SVITRIX Firmware

SVITRIX is an open-source, AI-developed firmware for the Ulanzi Smart Pixel Clock TC001 and custom ESP32-based LED matrices. It features a robust MQTT and HTTP API for integration with home automation systems like HomeAssistant, supporting dynamic custom apps, visual effects, and real-time environmental sensor data.

freertos littlefslwip

UltrafastSecp256k1

A high-performance, multi-backend secp256k1 elliptic curve cryptography engine optimized for CPU, GPU, and embedded systems. It supports a comprehensive cryptographic stack including ECDSA, Schnorr, and ZK proofs, targeting platforms like ESP32, STM32, and RISC-V.

freertos lwipplatformio-platformio-core
Zhilly AI Pentester Assistant

Zhilly AI Pentester Assistant

Zhilly is an AI-powered portable cybersecurity tool for ESP32-S3 devices, enabling voice-controlled pentesting, RF/IR signal manipulation, and HID emulation. Built on the ESP-IDF framework, it utilizes FreeRTOS, LVGL, and NimBLE to provide a sophisticated, hands-free interaction model for security researchers.

freertos lvgllwipnimble
RuView

RuView

RuView is an open-source WiFi sensing platform that leverages Channel State Information (CSI) from ESP32-S3 sensors to perform human pose estimation, vital sign monitoring, and environment mapping. It utilizes a high-performance Rust-based processing pipeline and FreeRTOS-powered firmware to enable camera-free, privacy-preserving spatial intelligence at the edge.

freertos lwip

ESP32 USB over IP

An enhanced USB/IP protocol implementation for the ESP32S3 that enables sharing physical USB devices over a network. Built on the ESP-IDF framework and lwIP stack, it optimizes transmission stability for peripherals like ST-Link debuggers, keyboards, and serial tools.

freertos lwip
BLE-based Wi-Fi Provisioning for Raspberry Pi Pico W / Pico 2 W

BLE-based Wi-Fi Provisioning for Raspberry Pi Pico W / Pico 2 W

This project demonstrates how to configure Wi-Fi credentials on a Raspberry Pi Pico W or Pico 2 W using Bluetooth Low Energy (BLE). It implements a custom GATT-based protocol using the BTstack and lwIP libraries to securely receive SSIDs and passwords from a mobile device.

lwip
SecureGen

SecureGen

SecureGen is an open-source hardware security device based on the ESP32 T-Display that serves as a TOTP/HOTP authenticator and a BLE-enabled password manager. It utilizes FreeRTOS for system management and hardware-accelerated AES-256 encryption to provide a secure, offline alternative to software-based authentication tools. The system features a built-in web management interface for configuration and credential management without requiring cloud connectivity.

freertos lwiptft-espi

UniGeek Firmware

UniGeek is a comprehensive multi-tool firmware for ESP32-based handheld devices, offering a suite of tools for WiFi security, Bluetooth analysis, and hardware module interfacing. Built on the Arduino framework and FreeRTOS, it supports a wide variety of hardware including M5Stack, LilyGO, and custom DIY builds.

freertos tft-espilittlefslwipnimble