openwrt
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.
Top Related Projects
Lean's LEDE source
An opensource OpenWrt variant for mainland China users.
Openwrt for Nanopi R1S R2S R4S R5S 香橙派 R1 Plus 固件编译 纯净版与大杂烩
Quick Overview
OpenWrt is an open-source project for embedded operating systems based on Linux, primarily used on embedded devices to route network traffic. It provides a fully writable filesystem with package management, allowing users to customize the device software completely.
Pros
- Highly customizable and flexible for various networking needs
- Large community support and active development
- Wide range of supported devices and hardware platforms
- Extensive package repository for additional functionality
Cons
- Steep learning curve for beginners
- Potential for bricking devices if not installed or configured correctly
- Some advanced features may require technical networking knowledge
- Not all hardware features may be supported on all devices
Getting Started
To get started with OpenWrt:
- Check if your device is supported: https://openwrt.org/supported_devices
- Download the appropriate firmware image for your device
- Flash the firmware to your device (method varies by device)
- Access the OpenWrt web interface (LuCI) at 192.168.1.1 (default IP)
- Configure basic settings and install additional packages as needed
For detailed instructions, visit: https://openwrt.org/docs/guide-user/start
Competitor Comparisons
Lean's LEDE source
Pros of LEDE
- More frequent updates and active development
- Includes additional packages and features not found in OpenWrt
- Optimized for Chinese users with region-specific improvements
Cons of LEDE
- Less stable than OpenWrt due to rapid development cycle
- May have compatibility issues with some hardware due to modifications
- Documentation primarily in Chinese, which can be challenging for non-Chinese users
Code Comparison
OpenWrt:
static int default_preinit(void)
{
do_sysinfo();
sysinit();
return 0;
}
LEDE:
static int default_preinit(void)
{
do_sysinfo();
sysinit();
set_lede_specific_options();
return 0;
}
The LEDE code includes an additional function call set_lede_specific_options()
, which likely configures LEDE-specific features not present in the original OpenWrt codebase.
Both projects are based on the same core, but LEDE offers more frequent updates and additional features, particularly for Chinese users. However, this comes at the cost of potentially reduced stability and compatibility. OpenWrt remains the more conservative and widely supported option, while LEDE caters to users seeking cutting-edge features and optimizations.
An opensource OpenWrt variant for mainland China users.
Pros of ImmortalWrt
- More frequent updates and active development
- Includes additional packages and features not found in OpenWrt
- Better support for some specific hardware platforms
Cons of ImmortalWrt
- Potentially less stable due to rapid development cycle
- Smaller community and less documentation compared to OpenWrt
- May have compatibility issues with some OpenWrt packages
Code Comparison
OpenWrt:
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
ImmortalWrt:
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
The main difference in this example is the use of 'device' instead of 'ifname' in ImmortalWrt, reflecting a change in network configuration syntax.
Both projects are open-source firmware based on the Linux kernel for embedded devices. ImmortalWrt is a fork of OpenWrt, aiming to provide more features and frequent updates. While ImmortalWrt may offer some advantages in terms of new features and hardware support, OpenWrt generally provides a more stable and well-documented experience with broader community support.
Openwrt for Nanopi R1S R2S R4S R5S 香橙派 R1 Plus 固件编译 纯净版与大杂烩
Pros of nanopi-openwrt
- Specifically optimized for NanoPi devices, potentially offering better performance
- May include custom patches and features tailored for NanoPi hardware
- Likely to have a more focused and streamlined codebase for NanoPi devices
Cons of nanopi-openwrt
- Smaller community and potentially less frequent updates compared to the main OpenWrt project
- May lack support for a wider range of devices and features available in the main OpenWrt repository
- Could have compatibility issues with some packages or extensions designed for standard OpenWrt
Code Comparison
While a detailed code comparison would require in-depth analysis, here's a hypothetical example of how device-specific optimizations might differ:
nanopi-openwrt:
#ifdef CONFIG_TARGET_nanopi
#define NANOPI_SPECIFIC_FEATURE 1
// NanoPi-specific optimizations
#endif
openwrt:
#ifdef CONFIG_TARGET_generic
// Generic device configurations
#endif
The nanopi-openwrt repository likely contains more NanoPi-specific configurations and optimizations, while the main OpenWrt repository maintains a broader, more generic approach to support a wide range of devices.
Pros of helloworld
- Focused on providing specific network tools and proxy solutions
- Regularly updated with new features and improvements
- Easier to integrate into existing OpenWrt setups for advanced users
Cons of helloworld
- Limited scope compared to the full OpenWrt ecosystem
- May require more manual configuration and troubleshooting
- Less comprehensive documentation and community support
Code Comparison
helloworld:
local shadowsocksr = "shadowsocksr"
local sid = arg[1]
local uuid = luci.sys.exec("cat /proc/sys/kernel/random/uuid")
OpenWrt:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
The code snippets highlight the different focus areas of the two projects. helloworld's code is more specific to network proxy configurations, while OpenWrt's code demonstrates its broader system-level functionality.
helloworld is a collection of network tools and proxy solutions that can be integrated into OpenWrt systems. It offers specialized features for users who need advanced networking capabilities. However, it has a narrower focus compared to the full OpenWrt project, which provides a complete Linux-based operating system for embedded devices.
OpenWrt offers a more comprehensive solution with wider hardware support, extensive documentation, and a larger community. It's suitable for a broader range of use cases but may require more resources to set up and maintain for specific networking needs.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
OpenWrt Project is a Linux operating system targeting embedded devices. Instead of trying to create a single, static firmware, OpenWrt provides a fully writable filesystem with package management. This frees you from the application selection and configuration provided by the vendor and allows you to customize the device through the use of packages to suit any application. For developers, OpenWrt is the framework to build an application without having to build a complete firmware around it; for users this means the ability for full customization, to use the device in ways never envisioned.
Sunshine!
Download
Built firmware images are available for many architectures and come with a package selection to be used as WiFi home router. To quickly find a factory image usable to migrate from a vendor stock firmware to OpenWrt, try the Firmware Selector.
If your device is supported, please follow the Info link to see install instructions or consult the support resources listed below.
An advanced user may require additional or specific package. (Toolchain, SDK, ...) For everything else than simple firmware download, try the wiki download page:
Development
To build your own firmware you need a GNU/Linux, BSD or macOS system (case sensitive filesystem required). Cygwin is unsupported because of the lack of a case sensitive file system.
Requirements
You need the following tools to compile OpenWrt, the package names vary between distributions. A complete list with distribution specific packages is found in the Build System Setup documentation.
binutils bzip2 diff find flex gawk gcc-6+ getopt grep install libc-dev libz-dev
make4.1+ perl python3.7+ rsync subversion unzip which
Quickstart
-
Run
./scripts/feeds update -a
to obtain all the latest package definitions defined in feeds.conf / feeds.conf.default -
Run
./scripts/feeds install -a
to install symlinks for all obtained packages into package/feeds/ -
Run
make menuconfig
to select your preferred configuration for the toolchain, target system & firmware packages. -
Run
make
to build your firmware. This will download all sources, build the cross-compile toolchain and then cross-compile the GNU/Linux kernel & all chosen applications for your target system.
Related Repositories
The main repository uses multiple sub-repositories to manage packages of
different categories. All packages are installed via the OpenWrt package
manager called opkg
. If you're looking to develop the web interface or port
packages to OpenWrt, please find the fitting repository below.
-
LuCI Web Interface: Modern and modular interface to control the device via a web browser.
-
OpenWrt Packages: Community repository of ported packages.
-
OpenWrt Routing: Packages specifically focused on (mesh) routing.
-
OpenWrt Video: Packages specifically focused on display servers and clients (Xorg and Wayland).
Support Information
For a list of supported devices see the OpenWrt Hardware Database
Documentation
Support Community
- Forum: For usage, projects, discussions and hardware advise.
- Support Chat: Channel
#openwrt
on oftc.net.
Developer Community
- Bug Reports: Report bugs in OpenWrt
- Dev Mailing List: Send patches
- Dev Chat: Channel
#openwrt-devel
on oftc.net.
License
OpenWrt is licensed under GPL-2.0
Top Related Projects
Lean's LEDE source
An opensource OpenWrt variant for mainland China users.
Openwrt for Nanopi R1S R2S R4S R5S 香橙派 R1 Plus 固件编译 纯净版与大杂烩
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot