This article may rely excessively on sources too closely associated with the subject, potentially preventing the article from being verifiable and neutral. (November 2013) (Learn how and when to remove this template message)
OpenWrt 18.06.1 login screen
|Source model||Open source|
|Initial release||January 2004|
|Latest release||18.06.2 / 31 January 2019|
|Latest preview||18.06.0-rc2 (15 July 2018[±])|
|Available in||22 languages|
|Platforms||50 different platforms using the following Instruction sets: ARC, ARM, m68k, MIPS, PowerPC, SPARC, SuperH, x86, x86-64|
|Kernel type||Monolithic (Linux)|
|Default user interface||CLI, WebUIs|
|License||Free software (GPL and other licenses)|
OpenWrt is an open source project for embedded operating system based on Linux, primarily used on embedded devices to route network traffic. The main components are Linux, util-linux, musl, and BusyBox. All components have been optimized to be small enough to fit into the limited storage and memory available in home routers.
OpenWrt is configured using a command-line interface (ash shell), or a web interface (LuCI). There are about 3500 optional software packages available for installation via the opkg package management system.
OpenWrt can run on various types of devices, including CPE routers, residential gateways, smartphones, pocket computers (e.g. Ben NanoNote), and laptops. It is also possible to run OpenWrt on personal computers, which are most commonly based on the x86 architecture.
The OpenWrt project was started in 2004 after Linksys had built the firmware for their WRT54G series of wireless routers with code licensed under the GNU General Public License. Under the terms of that license, Linksys was required to make the source code of its modified version available under the same license, which enabled independent developers to create derivative versions. Support was originally limited to the WRT54G series, but has since been expanded to include many other routers and devices from many different manufacturers.
Using this code as a base and later as a reference, developers created a Linux distribution that offers many features not previously found in consumer-level routers. Some features formerly required proprietary software. Before the introduction of OpenWrt 8.09, using Linux 2.6.25 and the
b43 kernel module, WLAN for many Broadcom-based routers was only available through the proprietary
wl.o module that was also provided for Linux 2.4.x only.
OpenWrt releases were historically named after cocktails, such as White Russian, Kamikaze, Backfire, Attitude Adjustment, Barrier Breaker and Chaos Calmer, and their recipes were included in the message of the day (motd) displayed after logging in using the command-line interface.
In May 2016, OpenWrt was forked by a group of core OpenWrt contributors due to disagreements on internal process. The fork was dubbed Linux Embedded Development Environment (LEDE). The schism was reconciled a year later. Following the remerger, announced in January 2018, the OpenWrt branding is preserved, with many of the LEDE processes and rules used. The LEDE project name was used for v17.01, with development versions of 18.01 branded OpenWrt, dropping the original cocktail based naming scheme.
|Revision||Code Name||Version||Release date||Kernel||libc||Notes|
|r6268||Old version, no longer supported: White Russian||0.9||January 2006||2.4.30||uClibc||NVRAM-based, |
|r7428||Old version, no longer supported: Kamikaze||7.06||June 2007||2.6.19||Using |
|r7832||Old version, no longer supported: Kamikaze||7.07||July 2007||2.6.21||New platform: |
|r8679||Old version, no longer supported: Kamikaze||7.09||September 2007||N/A|
|r14547||Old version, no longer supported: Kamikaze||8.09||September 2008||2.6.26||New platform: |
|r20742||Old version, no longer supported: Backfire||10.03||April 7, 2010||2.6.32||Supported platforms: |
|r36088||Old version, no longer supported: Attitude Adjustment||12.09||April 25, 2013||3.3||CoDel (network scheduler) backported from Linux 3.5 to 3.3. New platforms: |
|r42625||Old version, no longer supported: Barrier Breaker||14.07||October 2, 2014||3.10.49||New platforms: |
|r46767||Old version, no longer supported: Chaos Calmer||15.05||September 11, 2015||3.18.20||nftables (available since Linux kernel 3.12); New platforms: TBA if any|
|r49022||Old version, no longer supported: Chaos Calmer||15.05.1||March 16, 2016||3.18.23||N/A|
|v17.01.5||Older version, yet still supported: Reboot (LEDE)||17.01.5||July 17, 2018||4.4.140||musl||N/A|
|v18.06.0||18.06.0||18.06.0||July 31, 2018||4.9.111 / 4.14.52||N/A|
|v18.06.1||18.06.1||18.06.1||August 19, 2018||4.9.120 / 4.14.63||N/A|
|v18.06.2||Current stable version: 18.06.2||18.06.2||January 31, 2019||4.9.152 / 4.14.95||N/A|
|git-tree||Latest preview version of a future release: SNAPSHOT||development||N/A||4.9 / 4.14||N/A|
With the Attitude Adjustment (12.09) release of OpenWrt, all hardware devices with 16 MB or less RAM are no longer supported as they can run out of memory easily.
OpenWrt features a writeable root file system, enabling users to modify any file and easily install additional software. This is in contrast with other firmware based on read-only file systems which don't allow modifying installed software without rebuilding and flashing a complete firmware image. This is accomplished by overlaying a read-only compressed SquashFS file system with a writeable JFFS2 file system using overlayfs. Additional software can be installed with the opkg package manager and the package repository contains approximately 3500 packages.
OpenWrt can be configured through either a command-line interface or a web interface called LuCI. OpenWrt provides set of scripts called UCI (unified configuration interface) to unify and simplify configuration through the command-line interface. Additional web interfaces, such as Gargoyle, are also available.
OpenWrt provides regular bug fixes and security updates even for devices that are no longer supported by their manufacturers.
Other features include:
- Extensible configuration of the entire hardware drivers, e.g. built-in network switches and their VLAN-capabilities, WNICs, DSL modems, FX, available hardware buttons, etc.
- Exhaustive possibilities to configure network-related features, like:
- IPv4 support.
- IPv6 native stack:
- Routing through iproute2, Quagga, BIRD, Babel etc.
- Mesh networking through B.A.T.M.A.N., OLSR and IEEE 802.11s-capabilities of the WNIC drivers and other ad hoc mesh routing protocols that have been implemented within Linux.
- Wireless functionality, e.g. make the device act as a wireless repeater, a wireless access point, a wireless bridge, a captive portal, or a combination of these with e.g. ChilliSpot, WiFiDog Captive Portal, etc.
- Wireless security: Packet injection, e.g. Airpwn, lorcon, e.a.
- Stateful firewall, NAT and port forwarding through netfilter; additionally PeerGuardian is available
- Dynamically-configured port forwarding protocols UPnP and NAT-PMP through upnpd, etc.
- Port knocking via knockd and knock
- TR-069 (CWMP) client
- IPS via Snort (software)
- Active queue management (AQM) through the network scheduler of the Linux kernel, with many available queuing disciplines. CoDel has been backported to Kernel 3.3. This encapsulates Traffic shaping to ensure fair distribution of bandwidth among multiple users and Quality of Service (QoS) for simultaneous use of applications such as VoIP, online gaming, and streaming media without experiencing the negative impacts of link saturation.
- Load balancing for use with multiple ISPs using source-specific routing
- IP tunneling (GRE, OpenVPN, pseudowire, etc.)
- Extensible realtime network monitoring and statistics through e.g. RRDtool, Collectd, Nagios, Munin lite, Zabbix, etc.
- Domain Name System (DNS) and DHCP through Dnsmasq, MaraDNS, etc.
- Dynamic DNS services to maintain a fixed domain name with an ISP that does not provide a static IP address
- Wireless distribution system (WDS) including WPA-PSK, WPA2-PSK, WPA-PSK/WPA2-PSK Mixed-Mode encryption modes
- OpenWrt supports any hardware that has Linux support; devices that can be connected (e.g. over USB) to an embedded device include
- Notable software packages to use the hardware support are:
- File sharing via SAMBA, (Windows-compatible), NFS, FTP, SFTP. Printer sharing over the print server CUPS (spooling) or p910nd (non-spooling)
- PulseAudio, Music Player Daemon, Audio/Video streaming via DLNA/UPnP AV standards, iTunes (DAAP) server
- Asterisk (PBX)
- MQ Telemetry Transport through Mosquitto
OpenWrt's development environment and build system, known together as OpenWrt Buildroot, are based on a heavily modified Buildroot system. OpenWrt Buildroot is a set of Makefiles and patches that automates the process of building a complete Linux-based OpenWrt system for an embedded device, by building and using an appropriate cross-compilation toolchain.
Embedded devices usually use a different processor than the one found in host computers used for building their OpenWrt system images, requiring a cross-compilation toolchain. Such a compilation toolchain runs on a host system, but generates code for a targeted embedded device and its processor's instruction set architecture (ISA). For example, if a host system uses x86 and a target system uses MIPS32, the regular compilation toolchain of the host runs on x86 and generates code for x86 architecture, while the cross-compilation toolchain runs on x86 and generates code for the MIPS32 architecture. OpenWrt Buildroot automates this whole process to work on the instruction set architectures of most embedded devices and host systems.
- Makes it easy to port software across architectures
- Uses kconfig (Linux kernel menuconfig) for the configuration of all options
- Provides an integrated cross-compiler toolchain (gcc, ld, uClibc etc.)
- Provides an abstraction for autotools (automake, autoconf), cmake and SCons
- Handles standard OpenWrt image build workflow: downloading, patching, configuration, compilation and packaging
- Provides a number of common fixes for known badly behaving packages
Besides building system images, OpenWrt development environment also provides a mechanism for simplified cross-platform building of OpenWrt software packages. Source code for each software package is required to provide a Makefile-like set of building instructions, and an optional set of patches for bug fixes or footprint optimizations.
OpenWrt runs many different routers, and includes a table of compatible hardware on its website. In its buyer's guide, it notes that users recommend devices equipped with wireless chips from either Qualcomm's Atheros or Ralink (now MediaTek).
OpenWrt, especially its Buildroot build system, has been adopted many times:
- Freifunk and other mesh network communities
- Bufferbloat.net (Cerowrt)
- SIMET Box, developed by NIC.br, is OpenWrt-based
- IETF IPv6 integration projects HIPnet and HomeNet are OpenWrt-based
- LEDE was a fork of the OpenWrt project. The two projects reconciled and merged under the OpenWrt name.
- CeroWrt – with a purpose to complement the debloat-testing kernel tree and provide a platform for real-world testing of bufferbloat fixes
- Coova chilli – OpenWrt-based with focus on wireless hotspots, a fork of chillifire with focus on wireless hotspot management
- Gargoyle – a web interface for OpenWrt with a strong emphasis on usability that later forked into a separate distribution
- Flukso – Wireless sensor nodes using an Atheros AR2317 chipset running a patched OpenWrt OS for communication. Sources and hardware schematics available on GitHub.
- Fon – OpenWrt-based wireless routers acting as hotspots. Sources and toolchain available on fonosfera.org
- Linino – OpenWrt-based distribution for the MIPS-based Arduino Yùn: GitHub Project
- Midge Linux – an OpenWrt-based distribution for devices based on Infineon Technologies ADM-5120 SoCs, such as Edimax BR-6104K and BR-6104KP.
- OpenSAN – iSCSI target Storage Area Network realization.
- PacketProtector – OpenWrt-based security distribution that includes IDS, IPS, VPN, and web antivirus capabilities. Packages included Snort, Snort-inline, FreeRADIUS, OpenVPN, DansGuardian and ClamAV. These tools were accessible via the old web GUI management interface of OpenWrt, called X-Wrt or webif^2. Project ended on June 7, 2012.
- The Turris Omnia router runs on an OpenWrt derivative
- Diverse grassroots projects for wireless community networks, including Freifunk, Libre-Mesh and qMp
- libreCMC – OpenWrt-based distribution without non-free software or binary blobs, endorsed by the Free Software Foundation
- "OpenWrt 18.06.1 - First Stable Release - July 2018".
- "OpenWrt 18.06". OpenWrt Project. Retrieved 15 July 2018.
- "LuCI Translation Portal". September 1, 2004. Archived from the original on November 19, 2010. Retrieved December 31, 2010.
- "git.openwrt.org Git - openwrt/openwrt.git/blob - target/Config.in". git.openwrt.org. 2017-10-24. Retrieved 2018-07-02.
- Fietkau, Felix (16 June 2015). "OpenWrt switches to musl by default". Retrieved 16 June 2015.
- Miklas, Andrew (7 June 2003). "Linksys WRT54G and the GPL". Linux kernel mailing list (Mailing list). Retrieved 5 July 2018.
- Weiss, Aaron (8 November 2005). "The Open Source WRT54G Story". Wi-Fi Planet. Retrieved 5 July 2018.
- "Linksys Releases GPLed Code for WRT54G". Slashdot. 6 July 2003. Retrieved 5 July 2018.
- Willis, Nathan (May 11, 2016). "LEDE and OpenWrt". LWN.net. Retrieved 2017-08-31.
- Sharwood, Simon (10 May 2017). "OpenWRT and LEDE agree on Linux-for-routers peace plan". theregister.co.uk. Retrieved 2017-08-31.
- Wich, Jo-Philipp (Jan 2, 2018). "Announcing the OpenWrt/LEDE merge". LEDE Project Forum. Retrieved 2018-01-10.
- "Welcome to the OpenWrt Project (OpenWrt Project)". OpenWrt. January 2018. Retrieved 16 February 2018.
As of January 2018, the current Stable OpenWrt release [17.01.4] was built from the LEDE 17.01 source code, and branded with the LEDE project name. Development versions of OpenWrt are currently branded with the OpenWrt name, and have a version number of 18.01"
- "Release Notes Backfire 10.03". openwrt.org. 2010-04-07. Retrieved 2013-04-26.
- "Release Notes Attitude Adjustment 12.09". openwrt.org. 2013-04-25. Retrieved 2013-04-26.
- "OpenWrt BarrierBreaker 14.07". openwrt.org. October 2014.
- "kernel: update to 3.10.49". dev.archive.openwrt.org. 2014-07-20.
- "OpenWrt Project: Freescale i.MX". openwrt.org. Retrieved 2018-07-16.
- "OpenWrt Chaos Calmer 15.05". openwrt.org. September 2015.
- "[OpenWrt-Devel] Chaos Calmer 15.05-rc3". 2015-07-16.
- "Chaos Calmer 15.05.1". 16 March 2016. Retrieved 21 March 2016.
- "v17.01.5 Tag". 2018-07-15. Retrieved 2018-08-08.
- "LEDE Project Releases". Retrieved 2018-08-08.
- "OpenWrt/LEDE 17.01.5 - Fifth Service Release - July 2018". 17 July 2018. Retrieved 2018-08-08.
- "[OpenWrt-Devel] OpenWrt switches to musl by default". 2015-06-16.
- "The OpenWrt Flash Layout". OpenWrt Project. Retrieved 7 July 2018.
- Corbet, Jonathan (15 June 2011). "Debating overlayfs". LWN.net. Retrieved 7 July 2018.
- "The UCI System". OpenWrt Project. Retrieved 8 July 2018.
- "29C3: ISP's black box". events.ccc.de. January 19, 2013.
- "kernel: add codel and fq_codel to generic 3.3 patch set". dev.archive.openwrt.org. 2012-05-16. Retrieved 2018-07-02.
- "OpenWrt Buildroot – About". openwrt.org. Retrieved 2013-10-21.
- "OpenWrt Buildroot - Usage and documentation". openwrt.org. 2006-01-08. Retrieved 2013-10-21.
- Tao Jin (2012-02-13). "OpenWrt Development Guide" (PDF). Wireless Networks Lab, CCIS, NEU. Retrieved 2013-10-21.
- "Creating packages". openwrt.org. Retrieved 2013-10-21.
- "OpenWrt Project: Table of Hardware". openwrt.org. Retrieved 2018-07-02.
- "OpenWrt Project: Buyers' Guide". openwrt.org. Retrieved 2018-07-02.
- "Simet Box". Retrieved 2017-09-14.
- "Announcing the OpenWrt/LEDE merge". Linux Weekly News. Retrieved 8 June 2018.
- "CeroWrt Wiki". Retrieved 2015-09-16.
- "ANNOUNCE: debloat-testing kernel git tree". LWN.net. Retrieved 2014-02-13.
- ""closing time" message from author on PacketProtector forum". Archived from the original on April 21, 2013.
- "Free Software Foundation adds libreCMC to its list of endorsed distributions". FSF.org. 2014-09-04. Retrieved 2014-12-21.
|Wikimedia Commons has media related to OpenWrt.|