OpenWrt

From Wikipedia, the free encyclopedia - View original article

OpenWrt
Openwrt-login.svg
OpenWrt 10.03.1-RC5 ("Backfire")
Company / developerOpenWrt Project
OS familyUnix-like
Working stateCurrent
Source modelFree and open source software
Initial releaseJanuary 2004 (2004-01)
Latest stable release12.09 (Attitude Adjustment) (April 25, 2013; 10 months ago (2013-04-25)) [±][1]
Latest unstable release-- (Barrier Breaker) (26 April 2013; 10 months ago (2013-04-26)) [±][2]
Available language(s)22 languages[3]
Update methodopkg
Package manageropkg
Supported platforms50 different platforms using the following Instruction sets: AVR32, ARM, CRIS, m68k, MIPS, PowerPC, SPARC, SuperH, Ubicom32, x86, x86-64[4]
Kernel typeMonolithic (Linux)
UserlandBusyBox, GNU
Default user interfaceCLI, WebUIs
LicenseFree software, mainly the GNU GPL, and other licenses
Official websiteopenwrt.org
 
Jump to: navigation, search
OpenWrt
Openwrt-login.svg
OpenWrt 10.03.1-RC5 ("Backfire")
Company / developerOpenWrt Project
OS familyUnix-like
Working stateCurrent
Source modelFree and open source software
Initial releaseJanuary 2004 (2004-01)
Latest stable release12.09 (Attitude Adjustment) (April 25, 2013; 10 months ago (2013-04-25)) [±][1]
Latest unstable release-- (Barrier Breaker) (26 April 2013; 10 months ago (2013-04-26)) [±][2]
Available language(s)22 languages[3]
Update methodopkg
Package manageropkg
Supported platforms50 different platforms using the following Instruction sets: AVR32, ARM, CRIS, m68k, MIPS, PowerPC, SPARC, SuperH, Ubicom32, x86, x86-64[4]
Kernel typeMonolithic (Linux)
UserlandBusyBox, GNU
Default user interfaceCLI, WebUIs
LicenseFree software, mainly the GNU GPL, and other licenses
Official websiteopenwrt.org

OpenWrt is an operating system / embedded operating system based on the Linux kernel, and primarily used on embedded devices to route network traffic. The main components are the Linux kernel, util-linux, uClibc and BusyBox. All components have been optimized for size, to be small enough for fitting 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 be run on CPE routers, residential gateways, smartphones (e.g. Neo FreeRunner), pocket computers (e.g. Ben NanoNote), and laptops (e.g. One Laptop per Child (OLPC)). Also, it is possible to run OpenWrt on ordinary computers (e.g. x86 architecture). Many patches from the OpenWrt source base have been included upstream in the Linux kernel mainline.

History[edit]

The project came into being because Linksys built the firmware for their WRT54G wireless router from publicly available code licensed under the GPL. Under the terms of that license, they were required to make the source code of their modified version available under the same license, enabling independent developers to create additional derivative versions. Support was originally limited to the WRT54G series, but has since been expanded to include many other chipsets, manufacturers and device types, including Plug Computers and Openmoko mobile phones.

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 kernel version 2.4.x only.

The code names of OpenWrt branches are named after alcoholic beverages, usually including their recipes in the SSH login screen as well, cf. White Russian, Kamikaze, Backfire, Attitude Adjustment, Barrier Breaker.

The bleeding edge development trunk was confusingly also called Kamikaze until February 2011 but with r25514 it was renamed as "Attitude Adjustment" and is now being constantly renamed to the next stable name.

Releases[edit]

TaggedCode NameVersionRelease dateLinux kernelC standard libraryBinary packagesSource packagesNotes
(default)(available)
N/AOld version, no longer supported: pre Buildroot-NG0.xN/AN/AuClibc474≈ 310
r6268Old version, no longer supported: White Russian0.92006-012.4.30uClibc≈ 360≈ 140NVRAM-based, nas, wl. Supported platform: brcm-2.4.
r7428Old version, no longer supported: Kamikaze7.062007-062.6.19uClibc≈ 750≈ 450Using opkg. Supported platforms: atheros-2.6, au1000-2.6, brcm-2.4, brcm47xx-2.6, ixp4xx-2.6, imagicbox-2.6, rb532-2.6 and x86-2.6.
r7832Old version, no longer supported: Kamikaze7.072007-072.6.21uClibc≈ 790≈ 475New platform: amcc-2.6.
r8679Old version, no longer supported: Kamikaze7.092007-092.6.21uClibc≈ 630≈ 500
r14547Old version, no longer supported: Kamikaze8.092008-092.6.26uClibc≈ 1,400≈ 875
r16279Old version, no longer supported: Kamikaze8.09.12009-062.6.26uClibc≈ 1,400≈ 875
r18961Old version, no longer supported: Kamikaze8.09.22010-01-10[5]2.6.26uClibc≈ 1,400≈ 875
r20742Old version, no longer supported: Backfire10.032010-04-07[6]2.6.32uClibc≈ 2,350≈ 1,050Supported platforms: adm5120_mips, adm5120_mipsel, ar7, ar71xx, atheros, au1000, avr32, brcm-2.4, brcm47xx, brcm63xx, cobalt, ep80579, ifxmips, ixp4xx, kirkwood, octeon, orion, ppc40x, ppc44x, rb532, rdc, x86 and xburst.
r29594Old version, no longer supported: Backfire10.03.12011-12-21[7]2.6.32uClibceglibc
glibc
≈ 2,950≈ 1,175
r36088Current stable version: Attitude Adjustment12.092013-04-25[8]3.3uClibceglibc≈ 3,450≈ 1,150CoDel backported from Linux 3.5 to 3.3. New platforms: ramips, bcm2708 (Raspberry Pi) and others.
trunkFuture release: Barrier Breakerdevelopmentcontinuously3.10.21[9]uClibcmusl
eglibc
growinggrowingNew platforms: i.MX23, i.MX6[10] and mvebu.
Legend:
Old version
Older version, still supported
Latest version
Latest preview version
Future release

Hardware incompatibilities[edit]

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. Older Backfire (10.03) is recommended instead for bcm47xx devices, as issues for those devices came from dropping support for the legacy Broadcom target brcm-2.4.[11][12]

Features[edit]

OpenWrt follows the bazaar-philosophy and is known for an abundance of options. Features include:

Web interface[edit]

Before release 8.09, OpenWrt had a minimal web interface. In OpenWrt releases 8.09 and newer, a more capable web interface is included.[18] This interface is based on LuCI, a MVC framework written in Lua programming language.[17]

The X-Wrt project provides an alternative web interface, named webif² in the package repositories, for the current and previous versions of OpenWrt.

The Gargoyle Router Management Utility[19] is a web interface for OpenWrt with a strong emphasis on usability. It was originally available as a set of packages for OpenWrt. As the author of Gargoyle started to make modifications to the base system layout of OpenWrt, the package system was dropped and the only currently available downloads are full firmware images. Gargoyle makes extensive use of JavaScript, to offload as much work as possible to the client computer, and is focused on ease of use, striving to reach a level comparable to the appliance feeling of commercial router firmwares.

Development[edit]

OpenWrt's development environment and build system are based on a heavily modified Buildroot system. It 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.[20][21]

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.[20][22]

OpenWrt Buildroot provides the following features:[20][22]

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.[23]

Adoption[edit]

OpenWrt, especially its Buildroot build system, has been adopted many times:

Derivatives[edit]

See also[edit]

References[edit]

  1. ^ Attitude Adjustment 12.09 final released, openwrt.org, 2013-04-25 
  2. ^ OpenWrt 12.09 Attitude Adjustment Beta release, openwrt.org, November 5, 2012 
  3. ^ "LuCI Translation Portal". 2004-09-01. Retrieved 2010-12-31. 
  4. ^ "Config.in in trunk/target – OpenWrt". Dev.openwrt.org. 2013-11-22. Retrieved 2014-02-13. 
  5. ^ "Release Notes Kamikaze 8.09.2". openwrt. 2010-01-10. Retrieved 2013-04-26. 
  6. ^ "Release Notes Backfire 10.03". openwrt. 2010-04-07. Retrieved 2013-04-26. 
  7. ^ "Release Notes Backfire 10.03.1". openwrt. 2011-12-21. Retrieved 2013-04-26. 
  8. ^ "Release Notes Attitude Adjustment 12.09". openwrt. 2013-04-25. Retrieved 2013-04-26. 
  9. ^ "kernel-version.mk in trunk/include – OpenWrt". Dev.openwrt.org. Retrieved 2014-02-13. 
  10. ^ Freescale i.MX support
  11. ^ "Release Notes for Attitude Adjustment (12.09 final)". openwrt.org. 2013-04-25. Retrieved 2013-09-26. 
  12. ^ "OpenWrt: Table of Hardware". openwrt.org. Retrieved 2013-09-26. 
  13. ^ "OpenWrt partition layout". 
  14. ^ "OpenWrt Unified Configuration Interface". 
  15. ^ freecwmp is a CWMP client for OpenWrt
  16. ^ "Changeset 31756 – OpenWrt". Dev.openwrt.org. 2012-05-16. Retrieved 2014-02-13. 
  17. ^ a b "LuCI project". Retrieved February 28, 2009. 
  18. ^ "OpenWrt 8.09 release notes". Retrieved February 23, 2009. 
  19. ^ "Gargoyle Router Management Utility". Retrieved August 21, 2011. 
  20. ^ a b c "OpenWrt Buildroot – About". openwrt.org. Retrieved 2013-10-21. 
  21. ^ "OpenWrt Buildroot - Usage and documentation". openwrt.org. 2006-01-08. Retrieved 2013-10-21. 
  22. ^ a b Tao Jin (2012-02-13). "OpenWrt Development Guide" (PDF). Wireless Networks Lab, CCIS, NEU. Retrieved 2013-10-21. 
  23. ^ "Creating packages". openwrt.org. Retrieved 2013-10-21. 
  24. ^ "About CeroWrt". Retrieved 2011-10-25. 
  25. ^ "ANNOUNCE: debloat-testing kernel git tree". Lwn.net. Retrieved 2014-02-13. 
  26. ^ ""closing time" message from author on PacketProtector forum". 

External links[edit]