Why OpenWrt instead of vendor firmware?
Most routers and embedded devices ship with read-only firmware that can only be upgraded as a whole. OpenWrt takes a different approach:| Vendor firmware | OpenWrt | |
|---|---|---|
| Filesystem | Read-only (squashfs or similar) | Fully writable (overlay filesystem) |
| Package management | None — fixed at factory | opkg package manager with thousands of packages |
| Configuration | Web UI provided by vendor | UCI (Unified Configuration Interface) + optional LuCI web UI |
| Customization | Limited to vendor options | Full control — install, remove, or replace any component |
| Updates | Whole-firmware only | Individual package updates |
Key subsystems
Build system
Build system
The OpenWrt build system is a set of Makefiles and scripts that automate downloading, patching, and cross-compiling the Linux kernel and all user-space packages for a target architecture. Running
make menuconfig lets you select the target platform, kernel options, and packages before the build.UCI — Unified Configuration Interface
UCI — Unified Configuration Interface
UCI is OpenWrt’s centralized configuration system. All system configuration is stored in plain-text files under
/etc/config/. The uci command-line tool and the UCI API allow scripts and programs to read and write configuration without parsing arbitrary config file formats.ubus — Micro Bus Architecture
ubus — Micro Bus Architecture
ubus provides a lightweight inter-process communication (IPC) bus for OpenWrt daemons and scripts. It allows services to expose methods and events that other processes can call or subscribe to, similar in concept to D-Bus but optimized for embedded use.
procd — Process Management Daemon
procd — Process Management Daemon
procd is OpenWrt’s init system and process supervisor. It replaces traditional SysV init scripts with a structured JSON-based service definition format, handles hotplug events, and manages service dependencies and restart policies.
opkg — Package Manager
opkg — Package Manager
opkg is the lightweight package manager used on OpenWrt devices. It handles installing, upgrading, and removing packages from configured package feeds. All packages in the related repositories are installed via opkg.
LuCI — Web Interface
LuCI — Web Interface
LuCI is OpenWrt’s modular web administration interface. It is built on Lua and provides a browser-based GUI for configuring the system through UCI. LuCI is optional and can be installed or removed via opkg.
Related repositories
The main OpenWrt repository contains the build system and core packages. Additional packages are maintained in separate repositories and pulled in via the feeds system.LuCI
Modern and modular web interface to control the device via a browser.
Packages
Community repository of ported packages available for installation via opkg.
Routing
Packages focused on mesh and dynamic routing protocols.
Video
Packages for display servers and clients (Xorg and Wayland).
Who is OpenWrt for?
- Home users
- Developers
- Network engineers
OpenWrt replaces your router’s stock firmware with a system you can actually control. You can:
- Install ad-blocking software (e.g., AdGuard Home or dnsmasq with blocklists)
- Configure VPN clients or servers (WireGuard, OpenVPN)
- Set up quality-of-service (QoS) rules to prioritize traffic
- Monitor network usage with detailed statistics
- Use your router as a lightweight NAS or print server
Next steps
Quickstart
Clone the source, update feeds, configure, and build your first firmware image.
Supported devices
Find your hardware platform and learn about supported architectures.