Jump to content

OpenWrt: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Reverting edit(s) by 2001:4453:75B:FF00:9D68:D6C5:CDFC:49CF (talk) to rev. 1222474695 by CanonNi: Vandalism (UV 0.1.5)
(edit summary removed)
Tags: Reverted possible vandalism blanking
Line 30: Line 30:
OpenWrt can run on various types of devices, including [[Customer-premises equipment|CPE]] routers, [[residential gateway]]s, [[smartphone]]s, [[pocket computer]]s (e.g., [[Ben NanoNote]]). It is also possible to run OpenWrt on [[personal computer]]s and [[laptop]]s.
OpenWrt can run on various types of devices, including [[Customer-premises equipment|CPE]] routers, [[residential gateway]]s, [[smartphone]]s, [[pocket computer]]s (e.g., [[Ben NanoNote]]). It is also possible to run OpenWrt on [[personal computer]]s and [[laptop]]s.


Heidi's POOL HALL: We Knock Your Balls Around!
== History ==
The OpenWrt project was started in 2004 after [[Linksys]] had built the [[firmware]] for their [[Linksys WRT54G series|WRT54G series]] of wireless routers with code licensed under the [[GNU General Public License]].<ref>{{cite mailing list | url=https://lkml.org/lkml/2003/6/7/164 | title=Linksys WRT54G and the GPL | date=7 June 2003 | access-date=5 July 2018 | mailing-list=Linux kernel mailing list | last=Miklas | first=Andrew}}</ref> Under the terms of that license, Linksys was required to make the source code of its modified version available under the same license,<ref>{{cite web | url=http://www.wi-fiplanet.com/tutorials/article.php/3562391 | title=The Open Source WRT54G Story | last=Weiss | first=Aaron | date=8 November 2005 | website=Wi-Fi Planet | access-date=5 July 2018}}</ref><ref>{{cite web | url=http://hardware.slashdot.org/story/03/07/06/2121234/linksys-releases-gpled-code-for-wrt54g | title=Linksys Releases GPLed Code for WRT54G | date=6 July 2003 | website=Slashdot | access-date=5 July 2018}}</ref> 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. Early on some features required proprietary software. For example, prior to OpenWrt 8.09 (based on Linux 2.6.25 and the <code>b43</code> kernel module) WLAN for many [[Broadcom]]-based routers could only be had via the proprietary <code>wl.o</code> module (and which required Linux 2.4.x).

OpenWrt releases were historically named after cocktails, such as [[White Russian (cocktail)|White Russian]], [[Kamikaze (cocktail)|Kamikaze]], Backfire, Attitude Adjustment, Barrier Breaker and Chaos Calmer, and their recipes were included in the [[motd (Unix)|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.<ref>{{Cite web
| title = LEDE and OpenWrt
| author = Willis
| first = Nathan
| work = [[LWN.net]]
| date = May 11, 2016
| access-date = 2017-08-31
| url = https://lwn.net/Articles/686767/
}}</ref> The fork was dubbed [[#LEDE|Linux Embedded Development Environment]] (LEDE). The schism was reconciled a year later.<ref>{{Cite web
| title = OpenWRT and LEDE agree on Linux-for-routers peace plan
| author = Sharwood
| first = Simon
| work = theregister.co.uk
| date = 10 May 2017
| access-date = 2017-08-31
| url = https://www.theregister.co.uk/2017/05/10/openwrt_and_lede_peace_plan/
}}</ref> Following the remerger, announced in January 2018,<ref>{{Cite web
| title = Announcing the OpenWrt/LEDE merge
| author = Wich
| first = Jo-Philipp
| work = LEDE Project Forum
| date = Jan 2, 2018
| access-date = 2018-01-10
| url = https://forum.lede-project.org/t/announcing-the-openwrt-lede-merge/10217
}}</ref> 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.<ref name=merged>{{cite web |url=https://openwrt.org/ |title=Welcome to the OpenWrt Project (OpenWrt Project) |website=OpenWrt|date=January 2018 |access-date= 16 February 2018|quote=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}} "</ref>
<noinclude>

=== Releases ===
{{mw-datatable}}
{| class="wikitable mw-datatable"
|-
! Version (Code name)<ref name="OpenWrt version history">{{cite web |url=https://openwrt.org/about/history |title=OpenWrt version history |publication-date=2023-10-16}}</ref><ref>{{cite web |url=https://openwrt.org/releases/start |title=Release Builds |publication-date=2023-10-19}}</ref>
! General availability
! Kernel
! Latest minor version
! Latest release date
!Projected EoL<ref>{{Cite web |title=Security - Support status |date=December 28, 2015 |url=https://openwrt.org/docs/guide-developer/security#support_status |access-date=2024-01-09}}</ref>
! [[C standard library|libc]]
! style="width:60%;" | Notes
|-
| first Stable Release
| 2004-01
| {{dunno}}
| {{n/a}}
| {{n/a}}
| {{n/a}}
| rowspan="8" | [[uClibc]]
| Based on [[Linksys]] GPL sources for [[WRT54G]] and a buildroot from the uClibc project
|-
| 0.9 (White Russian)<ref>{{cite web |url=https://forum.archive.openwrt.org/viewtopic.php?id=9326 |title=Whiterussian 0.9 / Kamikaze snapshots |publication-date=2007-02-05}}</ref><ref>{{cite web |url=https://archive.openwrt.org/whiterussian/0.9/00-README |title=WHITE RUSSIAN 0.9 |publication-date=2007-02-05}}</ref>
| 2007-02-05
| 2.4.30
| {{n/a}}
| {{n/a}}
| {{n/a}}
| NVRAM-based, <code>nas</code>, <code>wl</code>. Supported platform: <code>brcm-2.4</code>.
|-
| 7.06 (Kamikaze)<ref>{{cite web |url=https://archive.openwrt.org/kamikaze/7.06/release.txt |title=Kamikaze 7.06 |publication-date=2007-06-02}}</ref>
| 2007-06-02
| 2.6.19
| 7.09 <ref>{{cite web |url=https://forum.archive.openwrt.org/viewtopic.php?id=11808 |title=Kamikaze 7.07 |publication-date=2007-07-26}}</ref><ref>{{cite web |url=https://forum.archive.openwrt.org/viewtopic.php?id=12780 |title=Kamikaze 7.09 |publication-date=2007-09-30}}</ref>
| 2007-09-30
|
| Using <code>opkg</code>. Supported platforms: <code>atheros-2.6</code>, <code>au1000-2.6</code>, <code>brcm-2.4</code>, <code>brcm47xx-2.6</code>, <code>ixp4xx-2.6</code>, <code>imagicbox-2.6</code>, <code>rb532-2.6</code> and <code>x86-2.6</code>.
|-
| 8.09 (Kamikaze)<ref>{{cite web |url=https://openwrt.org/releases/8.09/notes-8.09 |title=Kamikaze 8.09 |publication-date=2009-02-19}}</ref>
| 2009-02-19
| 2.6.26
| 8.09.2<ref>{{cite web |url=https://openwrt.org/releases/8.09/notes-8.09.1 |title=Kamikaze 8.09.1 |publication-date=2009-06-03}}</ref><ref>{{cite web |url=https://openwrt.org/releases/8.09/notes-8.09.2 |title=Kamikaze 8.09.2 |publication-date=2010-01-10}}</ref>
| 2010-01-10
|
| New platform: <code>ar71xx</code>.
|-
| 10.03 (Backfire)<ref>{{cite web |url=https://openwrt.org/releases/10.03/notes-10.03 |title=Backfire 10.03 |publication-date=2010-04-07}}</ref>
| 2010-04-07
| 2.6.32
| 10.03.1<ref>{{cite web |url=https://openwrt.org/releases/10.03/notes-10.03.1 |title=Backfire 10.03.1 | publication-date=2011-12-21}}</ref>
| 2011-12-21
|
| Supported platforms: <code>adm5120_mips</code>, <code>adm5120_mipsel</code>, <code>ar7</code>, <code>ar71xx</code>, <code>atheros</code>, <code>[[Alchemy (microarchitecture)|au1000]]</code>, <code>avr32</code>, <code>brcm-2.4</code>, <code>brcm47xx</code>, <code>brcm63xx</code>, <code>cobalt</code>, <code>ep80579</code>, <code>ifxmips</code>, <code>ixp4xx</code>, <code>kirkwood</code>, <code>octeon</code>, <code>orion</code>, <code>ppc40x</code>, <code>ppc44x</code>, <code>rb532</code>, <code>rdc</code>, <code>x86</code> and <code>[[XBurst (microarchitecture)|xburst]]</code>.
|-
| 12.09 (Attitude Adjustment)<ref>{{cite web |url=https://openwrt.org/releases/12.09/notes-12.09 |title=Attitude Adjustment |publication-date=2013-04-25}}</ref>
| 2013-04-25
| 3.3
| {{n/a}}
| {{n/a}}
| {{n/a}}
| [[CoDel]] ([[network scheduler]]) backported from Linux 3.5 to 3.3. New platforms: <code>ramips</code>, [[Raspberry Pi|<code>bcm2708</code> (Raspberry Pi)]] and others.
|-
| 14.07 (Barrier Breaker)<ref>{{cite web |url=https://openwrt.org/releases/14.07/notes-14.07 |title=Barrier Breaker | publication-date=2014-10-02}}</ref>
| 2014-10-02
| 3.10.49
| {{n/a}}
| {{n/a}}
| {{n/a}}
| New platforms: <code>[[i.MX#i.MX23 family|i.MX23]]</code>, <code>[[i.MX#i.MX6x series|i.MX6]]</code>.<ref>{{Cite web|url=https://openwrt.org/docs/techref/hardware/soc/soc.freescale.imx|title=OpenWrt Project: Freescale i.MX|website=openwrt.org|date=July 16, 2013 |language=en|access-date=2018-07-16}}</ref>
|-
| 15.05 (Chaos Calmer)<ref>{{cite web |url=https://openwrt.org/releases/15.05/notes-15.05 |title=Chaos Calmer | publication-date=2015-09-11}}</ref>
| 2015-09-11
| 3.18.20
| 15.05.1<ref>{{cite web |url=https://openwrt.org/releases/15.05/start |title=OpenWrt 15.05.1 "Chaos Calmer" | publication-date=2016-03-16}}</ref>
| 2016-03-16
|2016, March
| [[nftables]] (available since Linux kernel 3.12); New platforms: TBA if any
|- valign=top
| colspan="8" |
|- valign=top
| 17.01.0 (Reboot (OpenWrt/LEDE))<ref>{{cite web |url=https://openwrt.org/releases/17.01/start |title=LEDE 17.01 "Reboot" |date=2019-06-29}}</ref>
| 2017-02-22
| 4.4.50
| 17.01.7
| 2019-06-20
| 2019, June
| rowspan="6" | [[musl]]<ref>{{cite web |url=http://lists.openwrt.org/pipermail/openwrt-devel/2015-June/007680.html |title=[OpenWrt-Devel] OpenWrt switches to musl by default |date=2015-06-16 |access-date=June 27, 2015}}</ref>
|There were only release notes for "OpenWrt/LEDE 17.01.7 - Seventh Service Release - June 2019" with a code revision "rTODO-2252731af4".<ref>{{Cite web |date=2019-06-20 |title=OpenWrt/LEDE 17.01.7 - Seventh Service Release - June 2019 |url=https://openwrt.org/releases/17.01/notes-17.01.7}}</ref> The official announcement of "OpenWrt/LEDE v17.01.7 service release" was never made in the OpenWrt Forum due to GPG signing certs issues.<ref>{{Cite web |title=OpenWrt 17.01.7 - date of release? |date=July 20, 2019 |url=https://forum.openwrt.org/t/openwrt-17-01-7-date-of-release/33506/11 |access-date=2024-01-11}}</ref>
|-
| 18.06.0<ref>{{cite web |url=https://openwrt.org/releases/18.06/start |title=OpenWrt 18.06 |date=2018-07-31}}</ref>
| 2018-07-31
| 4.9.111 / 4.14.52
| 18.06.9
| 2020-12-09
| 2020, December
|
|-
| 19.07.0<ref>{{cite web |url=https://openwrt.org/releases/19.07/start |title=OpenWrt 19.07 |date=2020-01-06}}</ref>
| 2020-01-06
| 4.14.162
| 19.07.10
| 2022-04-20
| 2022, April
| [[Wi-Fi Protected Access#WPA3|WPA3]] support.<ref>{{Cite web|url=https://openwrt.org/releases/19.07/notes-19.07.0|title=OpenWrt 19.07.0 - First Stable Release - 6 January 2020|first=Hauke|last=Mehrtens|date=January 6, 2020|website=OpenWrt Wiki}}</ref> Flow offloading ([[Beta release|beta]]).<ref>{{Cite web|url=https://www.leowkahman.com/2020/02/01/speedtest-openwrt-with-flow-offloading/|title=Speedtest OpenWRT with flow offloading|first=Low Kah|last=Man|date=February 1, 2020|website=Leow Kah Man - Tech Blog}}</ref>
|-
| 21.02.0<ref>{{cite web |url=https://openwrt.org/releases/21.02/start |title=OpenWrt 21.02 |date=2021-09-04}}</ref>
| 2021-09-04
| 5.4.143
| 21.02.7
| 2023-05-01
| 2023, May
| [[Wi-Fi Protected Access#WPA3|WPA3]], [[Transport Layer Security|TLS]] and [[HTTPS]] support included by default, initial [https://www.kernel.org/doc/html/latest/networking/dsa/dsa.html DSA] support, [[LXC]] and ujail support <ref name="auto2">{{Cite web|url=https://openwrt.org/releases/21.02/notes-21.02.0|title=OpenWrt 21.02.0 - First Stable Release - 4 September 2021|first=Hauke|last=Mehrtens|date=September 4, 2021|website=OpenWrt Wiki}}</ref>
|-
| style="background:#d8f8b8;" | 22.03.0<ref>{{cite web |url=https://openwrt.org/releases/22.03/start |title=OpenWrt 22.03 |date=2022-09-06}}</ref>
| 2022-09-06
| 5.10.138
| 22.03.6
| 2023-12-05
| 2024, April
| Firewall4 based on nftables, many new devices added, more targets converted to DSA, dark mode in LuCI, [[Year 2038 problem|year 2038]] problem handled, core components updated.<ref>{{Cite web|url=https://openwrt.org/releases/22.03/notes-22.03.0|title=OpenWrt 21.03.0 - First Stable Release - 6 September 2022|date=September 15, 2022|website=OpenWrt Wiki}}</ref>
|-
| style="background:#a0e75a;" | '''23.05.0'''<ref>{{cite web |url=https://openwrt.org/releases/23.05/start |title=OpenWrt 23.05 |date=2023-10-13}}</ref>
| 2023-10-13
| 5.15.134
| 23.05.3
| 2024-03-25
| 2025, March
|New devices added, ipq40xx target converted to DSA, default cryptographic library switched to [[Mbed TLS|mbedtls]], core components updated.<ref>{{Cite web |last=Mehrtens |first=Hauke |date=2023-10-11 |title=OpenWrt 23.05.0 - First Stable Release - 13 October 2023 |url=https://openwrt.org/releases/23.05/notes-23.05.0 |access-date=2023-10-24 |website=OpenWrt Wiki |language=en}}</ref>
|-
| colspan="8" | Legend: {{legend2||Old version|border=1px solid #AAAAAA}} {{legend2|#d8f8b8|Older version, still maintained|border=1px solid #AAAAAA}} {{legend2|#a0e75a|Latest version|border=1px solid #AAAAAA}}
|}

===LEDE===
{{about|the wireless network router operating system|other uses|Lede (disambiguation)|section=TRUE}}
{{Infobox OS
| title = LEDE
| logo = [[File:LEDE Logo.svg|150px]]
| screenshot = [[File:LEDE-Screenshot.svg|300px]]
| caption = Login banner
| developer = LEDE Project
| family = [[Unix-like]]
| working_state = Merged with OpenWrt
| source_model = [[Open-source software|Open source]]
| released = {{Start date and age|df=yes|2016|05}}
| language = 26 languages<ref>{{cite web|url=https://git.lede-project.org/?p=project/luci.git;a=tree;f=modules/luci-base/po;hb=HEAD |title=Lua Configuration Interface: /modules/luci-base/po |date=2017-05-10 |access-date=2017-05-14 |archive-url=https://web.archive.org/web/20170926144241/https://git.lede-project.org/?p=project%2Fluci.git%3Ba%3Dtree%3Bf%3Dmodules%2Fluci-base%2Fpo%3Bhb%3DHEAD |archive-date=2017-09-26 |url-status=dead}}</ref>
| updatemodel = [[opkg]]
| package_manager = opkg
| supported_platforms = 23 platforms using the following [[Instruction set]]s: [[AVR32]], [[ARM architecture|ARM]], [[ETRAX CRIS|CRIS]], [[Motorola 68000 series|m68k]], [[MIPS architecture|MIPS]], [[PowerPC]], [[SPARC]], [[SuperH]], [[Ubicom]]32, [[x86]], [[x86-64]]<ref>{{cite web|url=https://git.lede-project.org/?p=source.git;a=blob;f=target/Config.in;hb=HEAD |title =LEDE Source Repository: /target/Config.in |date=2017-03-30 |access-date=2017-05-14 |archive-url=https://web.archive.org/web/20170926190938/https://git.lede-project.org/?p=source.git%3Ba%3Dblob%3Bf%3Dtarget%2FConfig.in%3Bhb%3DHEAD |archive-date=2017-09-26 |url-status=dead}}</ref>
| kernel_type = [[Monolithic kernel|Monolithic]] ([[Linux kernel|Linux]])
| userland = [[BusyBox]], [[GNU Core Utilities|GNU]]
| ui = [[Command-line interface|CLI]], WebUIs
| license = [[Free software]] ([[GPL]] and other licenses)
| website = {{URL|https://lede-project.org/}}
}}

The '''Linux Embedded Development Environment''' ('''LEDE''') project was a [[Fork (software development)|fork]] of the OpenWrt project and shared many of the same goals.<ref>{{cite web| title=OpenWRT Gets Forked By Some Of Its Own Developers As LEDE Project| url=https://www.phoronix.com/scan.php?page=news_item&px=OpenWRT-Forked-As-LEDE| first=Michael| last=Larabel| date=2017-05-14| publisher=[[Phoronix]]| access-date=2016-05-03}}</ref><ref name="willis">{{cite web| url=https://lwn.net/Articles/686767/| title=LEDE and OpenWrt| first=Nathan| last=Willis| date=2016-05-11| publisher=[[LWN.net]]| access-date=2017-05-14}}</ref><ref>{{cite web| url=https://www.theregister.co.uk/2016/05/05/router_hackers_reach_for_the_fork_lede_splits_from_openwrt/| title=Router hackers reach for the fork: LEDE splits from OpenWRT| first=Richard| last=Chirgwin| date=2016-05-05| publisher=[[The Register]]| access-date=2017-05-14}}</ref><ref>{{cite web| url=https://www.golem.de/news/lede-project-openwrt-kernentwickler-starten-eigenen-fork-1605-120726.html| title=OpenWRT-Kernentwickler starten eigenen Fork| first=Sebastian| last=Grüner| date=2016-05-05| website=golem.de| language=de| access-date=2017-05-14}}</ref><ref>{{cite web| url=https://www.heise.de/newsticker/meldung/Router-Firmware-LEDE-als-offenere-OpenWRT-Alternative-3197417.html| title=Router-Firmware: LEDE als offenere OpenWRT-Alternative| first=Ernst| last=Ahlers| date=2016-05-04| publisher=[[Heise Online]]| language=de| access-date=2017-05-14}}</ref> It was created in May 2016 by a group of core OpenWrt contributors due to disagreements on OpenWrt internal processes.<ref name="willis"/> The schism was nominally reconciled a year later in May 2017 pending approval of the LEDE developers.<ref>{{Cite web| title = OpenWRT and LEDE agree on Linux-for-routers peace plan| author = Sharwood| first = Simon| work = theregister.co.uk| date = 10 May 2017| access-date = 2017-08-31| url = https://www.theregister.co.uk/2017/05/10/openwrt_and_lede_peace_plan/
}}</ref> The remerger preserves the OpenWrt branding, but uses many of the LEDE processes and rules. The remerge proposal vote was passed by LEDE developers in June 2017,<ref>{{Cite web|title = LEDE call for vote on remerge proposal V3|author = Mehrtens|first = Hauke|work = LEDE-DEV mailing list|date = June 26, 2017|access-date = 2017-08-31|url = http://lists.infradead.org/pipermail/lede-adm/2017-June/000552.html|archive-url = https://web.archive.org/web/20170901114839/http://lists.infradead.org/pipermail/lede-adm/2017-June/000552.html|archive-date = 2017-09-01|url-status = dead}}</ref> and formally announced in January 2018.<ref>{{Cite web| title = Announcing the OpenWrt/LEDE merge| author = Wich| first = Jo-Philipp| work = LEDE Project Forum| date = Jan 2, 2018| access-date = 2018-01-10| url = https://forum.lede-project.org/t/announcing-the-openwrt-lede-merge/10217}}</ref> The merging process was completed before the OpenWrt 18.06 release.<ref>{{Cite web|url=https://openwrt.org/releases/18.06/start|title=OpenWrt Project: OpenWrt 18.06|website=openwrt.org|date=May 18, 2018|language=en|access-date=2018-11-02}}</ref>

{| class="wikitable"
|- class="hintergrundfarbe6"
! Version<ref name="OpenWrt version history"/>
! Release Date
! Kernel
! Notes
|-
| 17.01.0
| 2017-02-22
| 4.4.50
| first stable release<ref>{{cite web|title=LEDE Project: LEDE 17.01.0 - First Stable Release - February 2017|periodical=Lede-project.org|date=February 22, 2017|url=https://lede-project.org/releases/17.01/notes-17.01.0|access-date=2017-10-20}}</ref>
|-
| 17.01.1
| 2017-04-19
| 4.4.61
| bug fixes and enhancements<ref>{{cite web|title=LEDE Project: LEDE 17.01.1 - First Service Release - April 2017|periodical=Lede-project.org|date=April 19, 2017|url=https://lede-project.org/releases/17.01/notes-17.01.1|access-date=2017-10-20}}</ref>
|-
| 17.01.2
| 2017-06-12
| 4.4.71
| security fixes<ref>{{cite web|title=LEDE Project: LEDE 17.01.2 - Second Service Release - June 2017|periodical=Lede-project.org|date=June 12, 2017|url=https://lede-project.org/releases/17.01/notes-17.01.2|access-date=2017-10-20}}</ref>
|-
| 17.01.3
| 2017-10-03
| 4.4.89
| security fixes<ref>{{cite web|title=LEDE Project: LEDE 17.01.3 - Third Service Release - October 2017|periodical=Lede-project.org|date=October 3, 2017|url=https://lede-project.org/releases/17.01/notes-17.01.3|access-date=2017-10-20}}</ref>
|-
| 17.01.4
| 2017-10-18
| 4.4.92
| security fixes ([[KRACK]], as far as addressable by server side fixes)<ref>{{cite web|title=LEDE Project: LEDE 17.01.4 - Fourth Service Release - October 2017|periodical=Lede-project.org|date=October 18, 2017|url=https://lede-project.org/releases/17.01/notes-17.01.4|access-date=2017-10-20}}</ref>
|-
| 17.01.5
| 2018-07-18
| 4.4.140
| security fixes <ref>{{cite web|title=OpenWrt/LEDE 17.01.5 - Fifth Service Release - July 2018|periodical=Lede-project.org|date=July 15, 2018|url=https://openwrt.org/releases/17.01/notes-17.01.5|access-date=2018-07-20}}</ref>
|-
| 17.01.6
| 2018-09-03
| 4.4.153
| security fixes <ref>{{cite web|title=OpenWrt/LEDE 17.01.6 - Sixth Service Release - September 2018|periodical=Lede-project.org|date=September 2, 2018|url=https://openwrt.org/releases/17.01/notes-17.01.6|access-date=2018-11-02}}</ref>
|-
|}

== Features ==
OpenWrt features a writeable [[Root directory|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]].<ref>{{cite web | url=https://openwrt.org/docs/techref/flash.layout | title=The OpenWrt Flash Layout | website=OpenWrt Project | date=January 18, 2010 | access-date=7 July 2018}}</ref><ref>{{cite web | url=https://lwn.net/Articles/447650/ | title=Debating overlayfs | last=Corbet | first=Jonathan | date=15 June 2011 | website=LWN.net | access-date=7 July 2018}}</ref> Additional software can be installed with the ''opkg'' package manager and the package repository contains approximately 8000 packages (by 2022).

[[Image:Openwrt-luci-firewall.png | thumb|LuCI]]
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.<ref>{{cite web | url=https://openwrt.org/docs/guide-user/base-system/uci | title=The UCI System | website=OpenWrt Project | date=September 16, 2009 | access-date=8 July 2018}}</ref> Additional web interfaces, such as [[Gargoyle (router firmware)|Gargoyle]], are also available.

OpenWrt provides regular bug fixes and security updates even for devices that are no longer supported by their manufacturers.

OpenWrt provides exhaustive possibilities to configure common network-related features, like [[IPv4]], [[IPv6]], [[Domain Name System|DNS]], [[Dynamic Host Configuration Protocol|DHCP]], [[routing]], [[Firewall (computing)|firewall]], [[Network address translation|NAT]], [[port forwarding]] and [[Wi-Fi Protected Access|WPA]].

Other features include:
* Extensible configuration of the entire hardware drivers, e.g. built-in [[network switch]]es and their [[VLAN]]-capabilities, [[Wireless network interface controller|WNIC]]s, [[DSL modem]]s, [[Foreign exchange service (telecommunications)|FX]], available hardware buttons, etc.
* [[Mesh networking]] through [[B.A.T.M.A.N.]], [[Optimized Link State Routing Protocol|OLSR]] and [[IEEE 802.11s]]-capabilities of the [[Comparison of open-source wireless drivers|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. [http://airpwn.sourceforge.net/Airpwn.html Airpwn], [[lorcon]], e.a.
* Dynamically configured port forwarding protocols [[Port Control Protocol|PCP]], [[NAT Port Mapping Protocol|NAT-PMP]], and [[Internet Gateway Device Protocol|UPnP IGD]] through MiniUPnPd
* [[Port knocking]]
* [[TR-069]] (CWMP) client<ref>{{cite web|url=https://events.ccc.de/congress/2012/Fahrplan/events/5112.en.html|title=29C3: ISP's black box|date=January 19, 2013|website=events.ccc.de}}</ref>
* [[Intrusion detection system|IPS]] via [[Snort (software)|Snort]]
* [[Active queue management]] (AQM) through the [[network scheduler]] of the Linux kernel, with many available [[queuing discipline]]s. [[CoDel]] has been backported to Kernel 3.3.<ref>{{cite web|url=https://dev.archive.openwrt.org/changeset/31756 |title=kernel: add codel and fq_codel to generic 3.3 patch set |website=dev.archive.openwrt.org |date=2012-05-16 |access-date=2018-07-02}}</ref> 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 game|online gaming]], and [[streaming media]] without experiencing the negative impacts of link saturation.
* Load balancing for use with multiple [[Internet service provider|ISPs]] using [[source-specific routing]]
* IP tunneling ([[Generic Routing Encapsulation|GRE]], OpenVPN, pseudowire, WireGuard, etc.)
* Extensible realtime [[network monitoring]] and statistics through e.g. [[RRDtool]], [[Collectd]], [[Nagios]], [[Munin (software)|Munin lite]], [[Zabbix]], etc.
* [[Dynamic DNS]] services to maintain a fixed domain name with an [[Internet service provider|ISP]] that does not provide a static [[IP address]]
* OpenWrt supports any hardware that has Linux support; devices that can be connected (e.g. over [[Universal Serial Bus|USB]]) include
** [[Printer (computing)|Printers]]
** [[Mobile broadband modem]]s
** [[Webcam]]s
** [[Sound card]]s
* Notable software packages to use the hardware support are
** [[File sharing]] via [[Samba (software)|SAMBA]], (Windows-compatible), [[Network File System|NFS]], [[File Transfer Protocol|FTP]], SFTP. Printer sharing over the [[print server]] [[CUPS]] (spooling) or [[p910nd]] (non-spooling)
** [[PulseAudio]], [[Music Player Daemon]], Audio/Video streaming via [[DLNA]]/[[Universal Plug and Play#AV standards|UPnP AV standards]], [[iTunes]] ([[Digital Audio Access Protocol|DAAP]]) server
** [[Asterisk (PBX)]]
** [[MQ Telemetry Transport]] through [[Mosquitto]]

== {{Anchor|BUILDROOT}}Development ==
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 [[Makefile]]s and [[patch (Unix)|patches]] that automates the process of building a complete Linux-based OpenWrt system for an embedded device, by building and using an appropriate [[Cross compiler|cross-compilation]] [[toolchain]].<ref name="buildroot-about">{{cite web
| url = https://openwrt.org/docs/guide-developer/build-system/start
| title = OpenWrt Buildroot – About
| access-date = 2013-10-21
| website = openwrt.org
}}</ref><ref>{{cite web
| url = http://downloads.openwrt.org/docs/buildroot-documentation.html
| title = OpenWrt Buildroot - Usage and documentation
| date = 2006-01-08
| access-date = 2013-10-21
| website = openwrt.org
| archive-url = https://web.archive.org/web/20131021013828/http://downloads.openwrt.org/docs/buildroot-documentation.html
| archive-date = October 21, 2013
| url-status = dead
}}</ref>

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.<ref name="buildroot-about" /><ref name="openwrt-dev-guide">{{cite web
| url = http://www.ccs.neu.edu/home/noubir/Courses/CS6710/S12/material/OpenWrt_Dev_Tutorial.pdf
| title = OpenWrt Development Guide
| date = 2012-02-13 | access-date = 2013-10-21
| author = Tao Jin | publisher = Wireless Networks Lab, CCIS, NEU
}}</ref>

OpenWrt Buildroot provides the following features:<ref name="buildroot-about" /><ref name="openwrt-dev-guide" />
* 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 ([[GNU Compiler Collection|gcc]], [[linker (computing)|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.<ref>{{cite web
| url = https://openwrt.org/docs/devel/packages
| title = Creating packages
| access-date = 2013-10-21
| website = openwrt.org
}}</ref>

== Hardware compatibility ==
OpenWrt runs many different routers and includes a table of compatible hardware on its website.<ref>{{Cite web |url=https://openwrt.org/toh/start |title=OpenWrt Project: Table of Hardware |website=openwrt.org |date=January 19, 2016 |access-date=2018-07-02}}</ref> In its buyer's guide,<ref>{{Cite web |url=https://openwrt.org/toh/buyerguide |title=OpenWrt Project: Buyers' Guide |website=openwrt.org |date=December 29, 2010 |access-date=2018-07-02}}</ref> it notes that users recommend devices equipped with wireless chips from either Qualcomm's [[Qualcomm Atheros|Atheros]], Ralink (now [[MediaTek]]) or any vendor with open source drivers and specifications. It specifically avoids [[Broadcom]] chipsets as the feature set is very limited due to having no open drivers. OpenWrt also recommends choosing a device with a minimum of 16&nbsp;MB of flash and 128&nbsp;MB of RAM, preferably higher amounts.<ref>{{cite web |url=https://openwrt.org/supported_devices/432_warning |title=4/32 warning |website=OpenWrt |date=2020-09-28}}</ref>


== Adoption ==
== Adoption ==

Revision as of 05:46, 16 May 2024

OpenWrt
OpenWrt 18.06.1 login screen
DeveloperOpenWrt Project
OS familyLinux (Unix-like)
Working stateCurrent
Source modelOpen source
Initial releaseJanuary 2004; 20 years ago (2004-01)
Latest release23.05.4[1] Edit this on Wikidata / 20 July 2024; 9 days ago (20 July 2024)
Repository
Available inEnglish, Chinese, Polish, Portuguese, Punjabi, Spanish, Welsh + 25 partially translated languages[2]
Update methodopkg
Package manageropkg
Platforms50 different platforms using the following Instruction sets: ARC, ARM, m68k, MIPS, PowerPC, SPARC, SuperH, x86, x86-64[3]
Kernel typeMonolithic (Linux)
UserlandBusyBox
Default
user interface
CLI, WebUIs (LuCI)
LicenseFree software (GPL and other licenses)
Official websiteopenwrt.org

OpenWrt (from open wireless router) is an open-source project for embedded operating systems based on Linux, primarily used on embedded devices to route network traffic. The main components are Linux, util-linux, musl,[4] 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 8000 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). It is also possible to run OpenWrt on personal computers and laptops.

Heidi's POOL HALL: We Knock Your Balls Around!

Adoption

OpenWrt, especially its Buildroot build system, has been adopted as the structure for other efforts. For example

  • AltiWi "one-time-fee-only" replacement for Cloudtrax.
  • Bufferbloat.net (Cerowrt)
  • Freifunk and other mesh network communities
  • IETF IPv6 integration projects HIPnet and HomeNet are OpenWrt-based
  • prplOS, carrier-grade framework designed to power ISPs routers and gateways made by Prpl Foundation
  • SIMET Box, developed by NIC.br, is OpenWrt-based[5]

Derivative projects

  • AREDN The Amateur Radio Emergency Data Network uses a firmware based on OpenWrt: GitHub Project
  • CeroWrt – (2011—2014) project to resolve bufferbloat in home networking, support IPv6, integrate DNSSEC, for wired and wireless, to complement the debloat-testing kernel tree and provide a platform for real-world testing of bufferbloat fixes.[6] The CeroWRT project is completely by 2014, when the finalized fixes were merged into OpenWRT. The "Bufferbloat project" behind CeroWRT went on to research new methods such as CAKE.[7]
  • Coova chilli – OpenWrt-based with focus on wireless hotspots, a fork of chillifire with focus on wireless hotspot management
  • 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
  • Gargoyle – a web interface for OpenWrt with a strong emphasis on usability that later forked into a separate distribution
  • Gluon – Framework for building OpenWrt-based firmwares fitted for mesh network deployment: GitHub Project
  • JUCIWRT – a modern distribution using the JUCI webgui that later became an OpenWrt feed instead. The source code for JUCI is available at mkschreder/juci and is still usable by installing openwrt feed found at mkschreder/juci-openwrt-feed
  • libreCMC – OpenWrt-based distribution which excludes non-free software or binary blobs, endorsed by the Free Software Foundation[8]
  • 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.
  • OpenMPTCProuter – aggregation of multiple Internet connections using Multipath TCP
  • 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.[9]
  • Qualcomm's QCA Software Development Kit (QSDK) which is being used as a development basis by many OEMs is an OpenWrt derivative
  • RutOS – an operating system for all Teltonika routers, based on OpenWrt. Source code found at GPL - Teltonika Networks Wiki.
  • SmoothWAN – aggregation of multiple Internet connections and network conditioning using Speedify, Engarde and tinyfecvpn.
  • Turris Omnia and Turris MOX routers run on an OpenWrt derivative
  • Ubiquiti's wireless router firmwares are based on OpenWrt
  • Diverse grassroots projects for wireless community networks, including Freifunk, Libre-Mesh and qMp
  • Some TP-Link, Xiaomi, ZyXEL and D-Link router firmwares are derived from OpenWrt[10][11]
  • FreeWRT was a Linux distribution that was used in embedded systems such as WLAN devices from Linksys and Asus. Not related to a project (with same name) based on Sveasoft firmware.[citation needed]
  • Friendly Electronics manufactures the NanoPi series of SoC devices and makes available an OpenWRT derivative OS called FriendlyWRT.[12]
  • Ansuel's Technicolor Custom GUI a modified management web interface developed on the basis of the official Technicolor for Homeware firmware, which runs a fork of OpenWrt, unlocking Technicolor Modem/Routers.[13]

See also

References

  1. ^ "OpenWrt 23.05.4 - Service Release - 20. July 2024". July 20, 2024.
  2. ^ "LuCI Translation Portal on Weblate". January 22, 2021. Retrieved January 22, 2021.
  3. ^ "git.openwrt.org Git - openwrt/openwrt.git/blob - target/Config.in". git.openwrt.org. October 24, 2017. Archived from the original on November 4, 2019. Retrieved July 2, 2018.
  4. ^ Fietkau, Felix (June 16, 2015). "OpenWrt switches to musl by default". Archived from the original on June 17, 2015. Retrieved June 16, 2015.
  5. ^ "Simet Box". Retrieved September 14, 2017.
  6. ^ "ANNOUNCE: debloat-testing kernel git tree". LWN.net. Retrieved February 13, 2014.
  7. ^ "Cerowrt Wiki - Bufferbloat.net". www.bufferbloat.net.
  8. ^ "Free Software Foundation adds libreCMC to its list of endorsed distributions". FSF.org. September 4, 2014. Retrieved December 21, 2014.
  9. ^ ""closing time" message from author on PacketProtector forum". Archived from the original on April 21, 2013.
  10. ^ "GPL Code Center | TP-Link". www.tp-link.com.
  11. ^ "GPL Source Code Support; D-Link". tsd.dlink.com.tw.
  12. ^ "FriendlyElec Downloads".
  13. ^ "Ansuel GUI". Ansuel Github. August 16, 2017. Retrieved April 16, 2022.