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

View All 223 Projects →
Solar Concentrator

Solar Concentrator

An automated solar concentrator system that uses an ESP32-CAM and Arduino Pro Mini to focus sunlight onto a thermal target. It utilizes the ESP-IDF framework and FreeRTOS for computer-vision-based sun tracking and mirror orientation.

freertos lwip
Cybergear ROS2 Controller

Cybergear ROS2 Controller

A ROS 2 bridge for controlling Xiaomi Cybergear motors using M5Stack hardware via micro-ROS and Ethernet. The system supports multiple motor configurations, real-time control modes, and parameter tuning through standard ROS 2 interfaces.

freertos lwip

pico-vfs: A Virtual File System for Raspberry Pi Pico

pico-vfs is a modular virtual file system designed for the Raspberry Pi Pico that provides a unified POSIX-compliant API for various storage media. It allows developers to mount multiple file systems, such as littlefs and FatFs, across physical storage like onboard flash and SD cards. The project streamlines embedded development by abstracting hardware differences and supporting standard C file operations.

freertos littlefslwipsqlite

Experiments with C: Streams for Beginners

A comprehensive collection of C programming experiments and educational materials covering embedded systems, Linux kernel modules, and network protocols. The project targets platforms ranging from AVR (ATmega, ATtiny) and ESP32 (using FreeRTOS and LwIP) to standard Linux environments, focusing on practical implementations of SPI, ePaper displays, and socket programming.

freertos lwipparson

zlib Compression and Decompression for ESP-IDF

A comprehensive set of examples for integrating the zlib compression library with ESP-IDF on ESP32 series microcontrollers. It includes implementations for SPIFFS, HTTP servers, MQTT, and TCP communication, with a focus on optimizing memory footprint for embedded environments.

freertos spiffslwip

BreadboardOS

BreadboardOS is a firmware platform for the Raspberry Pi RP2xxx family designed for rapid prototyping with a focus on a command-line interface. Built on FreeRTOS, it integrates the LittleFS filesystem and microshell to provide a POSIX-like environment for interacting with hardware peripherals and managing system tasks.

freertos littlefslwip

ESP32-C6 Matter Over Thread Roof Window Controller

A smart home controller for roof windows that utilizes Matter over Thread on the Espressif ESP32-C6 platform. It combines environmental sensing via an AM2301 sensor with hardware control for window automation, integrating directly into ecosystems like Home Assistant through a Thread border router.

freertos lwipnimbleopen-thread

Zig Language & Toolchain for ESP-IDF

This project integrates the Zig programming language and toolchain with the Espressif IoT Development Framework (ESP-IDF), supporting both Xtensa and RISC-V architectures. It enables developers to leverage Zig's modern features like comptime and meta-programming while maintaining full compatibility with ESP-IDF's FreeRTOS-based ecosystem.

freertos lwipnimbleopen-thread