Library / SDK
openwrt/openwrt avatar
openwrt/openwrt

OpenWrt turns embedded devices into a writable, package-driven Linux

This repository is a mirror of https://git.openwrt.org/openwrt/openwrt.git It is for reference only and is not active for check-ins. We will continue to accept Pull Requests here. They will be merged via staging trees then into openwrt.git.

28,556 stars13,037 forksCNOASSERTION

At a glance

What is it?
OpenWrt is a Linux operating system for embedded devices with a fully writable filesystem and package management, built from source on a case sensitive Unix system and extended at runtime through opkg.
Who is it for?
OpenWrt takes a different path from most vendor firmware: a fully writable Linux filesystem with package management, so a router or embedded device can be reshaped package by package instead of accepted as a fixed image.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

OpenWrt is a Linux system for embedded devices with a writable filesystem

OpenWrt is a Linux operating system that targets embedded devices, most often routers and similar networked hardware. The README explains the core idea up front: instead of shipping one static firmware image, OpenWrt provides a fully writable filesystem with package management. That design frees the device owner from the application selection and configuration that a vendor bakes in, and it lets the device be customized through packages for almost any use.

For developers the project is a framework: you can build an application on top of OpenWrt without constructing a whole firmware around it. For users the payoff is full customization, the ability to run the device in ways the original vendor never intended.

Finding and flashing a firmware image

For people who want a ready system, the README points to built firmware images that cover many architectures and ship with a package selection suited to a WiFi home router. The fastest path from a stock device to OpenWrt is the Firmware Selector at firmware-selector.openwrt.org, which helps you find a factory image matched to your hardware.

If a device is supported, the README advises following the Info link on its page to read install instructions, or consulting the support resources it lists. For anything beyond a simple firmware download, such as a toolchain or SDK, the README sends readers to the OpenWrt wiki download page. The split is practical: casual users get a selector and a flashing guide, while builders get a link to the deeper download index.

Building OpenWrt from source

Building OpenWrt yourself starts from a GNU/Linux, BSD, or macOS system, and the README is specific about one constraint: the filesystem must be case sensitive. Cygwin is listed as unsupported because it lacks that property, so Windows users need a real Unix-like environment rather than a compatibility layer.

The quickstart is a short sequence. First run ./scripts/feeds update -a to pull the latest package definitions from feeds.conf, then ./scripts/feeds install -a to lay down symlinks for those packages, then make menuconfig to pick the toolchain, target system, and firmware packages, and finally make to build. That last step downloads sources, compiles the cross compile toolchain, and cross compiles the Linux kernel and the chosen applications for the target.

Build tools required to compile OpenWrt

Before the quickstart can run, the host needs a set of build tools, and the README lists them as a block. The package names differ between Linux distributions, and a full distribution specific list lives in the Build System Setup documentation, but the core set is:

code
binutils bzip2 diff find flex gawk gcc-6+ getopt grep install libc-dev libz-dev
make4.1+ perl python3.8+ rsync subversion unzip which

This line covers the compiler and binutils, the gawk and getopt text tools, the perl and python3 interpreters, and the rsync and subversion fetch tools, among others. The version hints matter: gcc 6 or newer, make 4.1 or newer, and python 3.8 or newer are called out inline. With these present, the feeds and make steps in the quickstart have what they need to produce a working firmware image.

Package management with opkg and related repositories

OpenWrt manages software at runtime through opkg, the package manager named in the README. After a build or on a running device, packages are installed with opkg rather than rebuilt into the image. The main repository is split into sub repositories that group packages by category, and the README links the main ones.

LuCI is the modern, modular web interface for controlling the device from a browser. The Packages repository is the community collection of ported software. Routing holds packages focused on mesh and other routing work, and Video holds packages for display servers and clients built on Xorg and Wayland. This structure lets a contributor target the right tree, whether they are working on the UI, porting a program, or extending routing features.

Documentation and support community

Support for OpenWrt spans docs and live community. The README links a hardware database for checking supported devices and four documentation sets: a quick start guide, a user guide, developer documentation, and a technical reference. For human help it points to a forum for usage and hardware advice and an OFTC chat channel, #openwrt, for support.

Developers get their own paths: a bug tracker for reporting issues, a mailing list for sending patches, and a second chat channel, #openwrt-devel, on OFTC. The split between general support and developer channels keeps user questions and code discussion apart. For a project that runs on such a wide range of hardware, pointing each question to the right place is a large part of keeping the community readable.

Licensing under GPL-2.0

OpenWrt is licensed under GPL-2.0, as the README states in its closing section. That license governs how the source and any modifications may be redistributed, and it is the same copyleft family that covers the Linux kernel the project builds on. For anyone shipping a device with OpenWrt, the GPL-2.0 terms set the obligations around providing source.

The license line is the last substantive item in the readme, after the download, build, package, and support sections. It confirms that OpenWrt is free software in the formal sense: the code is open, the modifications must stay open, and the project's whole model of a writable, package driven firmware depends on that freedom.

Editorial conclusion

OpenWrt takes a different path from most vendor firmware: a fully writable Linux filesystem with package management, so a router or embedded device can be reshaped package by package instead of accepted as a fixed image. The README covers the whole arc, from the Firmware Selector that flashes a ready build, through the source build that needs a case sensitive Unix system and a specific toolchain, to opkg and the LuCI, Packages, Routing, and Video repositories that extend the device at runtime. Support runs through a hardware database, documentation sets, a forum, and OFTC chat channels, with the code itself under GPL-2.0. For builders and users who want control of their networking hardware, the readme lays out where to start and where to go deeper.

Frequently asked questions

What is OpenWRT used for?

The README describes OpenWrt as a Linux operating system for embedded devices that provides a fully writable filesystem with package management. Users customize a device through packages, often as a WiFi home router, and developers use it as a framework to build applications without building a full firmware.

How do I install packages on OpenWrt?

The README names opkg as the OpenWrt package manager. Packages are installed with opkg rather than baked into the firmware image. The main repository is split into sub repositories such as LuCI for the web interface, Packages for ported software, Routing, and Video.

What license is OpenWrt released under?

OpenWrt is licensed under GPL-2.0, according to the README. That copyleft license governs how the source and any modifications may be redistributed, and it is the same family that covers the Linux kernel the project builds on.

Official sources

  1. Issues
  2. openwrt/openwrt on GitHub
  3. Project website
  4. README
  5. Releases
For maintainers

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/openwrt-openwrt.svg)](https://hysenlabs.com/projects/openwrt-openwrt)
Community notes

Community notes