OpenWrt is an embedded operating system based on the Linux kernel, primarily used on embedded devices to route network traffic. The main components are the Linux kernel, util-linux, uClibc or musl, 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 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.
History
The project came into being because Linksys built the firmware for their WRT54G series of wireless routers from publicly available code licensed under the GPL. Under the terms of that license, Linksys was required to make the source code of its modified version available under the same license, which in turn enabled 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 MOTD 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.
Features
OpenWrt follows the bazaar-philosophy and is known for an abundance of options. Features include:
• A writable root file system, enabling users to add, remove or modify any file. This is accomplished by using overlayfs to overlay a read-only compressed SquashFS file system with a writable JFFS2 file system in a copy-on-write fashion. JFFS2 supports flash wear leveling.
• The package manager opkg, similar to dpkg, enables users to install and remove software. The package repository contains about 3500 packages. This contrasts with Linux-based firmwares based on read-only file systems without the possibility to modify the installed software without rebuilding and flashing a complete firmware image.
• A set of scripts called UCI (unified configuration interface) intended to unify and simplify the configuration of the entire system
• 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:
• Prefix Handling,
• Native IPv6 configuration (SLAAC, stateless DHCPv6, stateful DHCPv6, DHCPv6-PD),
• IPv6 transitioning technologies (6rd, 6to4, 6in4, ds-lite, lw4o6, map-e),
• Downstream IPv6 configuration (Router Advertisement, DHCPv6 (stateless and stateful) and DHCPv6-PD).
• 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
• 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
• Printers
• Mobile broadband modems
• Webcams
• Sound cards
• Notable software packages to use the hardware support are:
• File sharing via SAMBA, (Windows-compatible), NFS and FTP, 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
• An extensive Ajax-enabled web interface, thanks to the LuCI project
• Regular bug fixes and updates, even for devices no longer supported by their manufacturers
Link to E-Lins OpenWrt Products:
http://www.e-lins.com/EN/download/H685_Datasheet_Eng.pdf
http://www.e-lins.com/EN/download/H820_Datasheet_Eng.pdf
http://www.e-lins.com/EN/download/H850_Datasheet_Eng.pdf
http://www.e-lins.com/EN/download/H860_Datasheet_Eng.pdf