23021eda75 malloc: Use __get_nprocs on arena_get2 (BZ 30945) 9a1bdd7df7 S390: Do not clobber r7 in clone [BZ #31402] 2fadb0d9b4 support: use 64-bit time_t (bug 30111) 08ac41cf08 make ‘struct pthread’ a complete type 9da8174362 nptl: Unconditionally use a 32-byte rseq area a11c8d521d Include sys/rseq.h in tst-rseq-disable.c 829b64598b linux: Use rseq area unconditionally in sched_getcpu (bug 31479) 6f28bfa4a0 LoongArch: Correct {__ieee754, _}_scalb -> {__ieee754, _}_scalbf 314b731dd8 AArch64: Improve SVE memcpy and memmove d0da4fb615 Add HWCAP2_MOPS from Linux 6.5 to AArch64 bits/hwcap.h 4c3985b4c8 AArch64: Add support for MOPS memcpy/memmove/memset e7f8117b60 AArch64: Cleanup ifuncs 455b1b2b7f AArch64: Cleanup emag memset cb48c2603a AArch64: Add memset_zva64 3dcb8fde81 AArch64: Remove Falkor memcpy 882b7dc2ab aarch64: correct CFI in rawmemchr (bug 31113) bbc290aad4 aarch64: fix check for SVE support in assembler fb8f66c22d AArch64: Check kernel version for SVE ifuncs 6eab323a3c powerpc: Fix ld.so address determination for PCREL mode (bug 31640) 89ce64b269 iconv: ISO-2022-CN-EXT: fix out-of-bound writes when writing escape sequence (CVE-2024-2961) ae014a15b4 nptl: Fix tst-cancel30 on kernels without ppoll_time64 support f75c298e74 CVE-2024-33599: nscd: Stack-based buffer overflow in netgroup cache (bug 31677) 5eea50c440 CVE-2024-33600: nscd: Do not send missing not-found response in addgetnetgrentX (bug 31678) a8070b3104 CVE-2024-33600: nscd: Avoid null pointer crashes after notfound response (bug 31678) 6e106dc214 CVE-2024-33601, CVE-2024-33602: nscd: netgroup: Use two buffers in addgetnetgrentX (bug 31680) 1aa819a693 elf: Also compile dl-misc.os with $(rtld-early-cflags) bcd2bf36b4 sparc: Remove 64 bit check on sparc32 wordsize (BZ 27574) 2a41cb9c71 login: Check default sizes of structs utmp, utmpx, lastlog 36ef0d2f2f login: structs utmp, utmpx, lastlog _TIME_BITS independence (bug 30701) 90304900c3 nscd: Use time_t for return type of addgetnetgrentX f4de99ea83 hurd: fix build of tst-system.c 3956fd48d3 Force DT_RPATH for --enable-hardcoded-path-in-tests 340ca2d514 s390x: Fix segfault in wcsncmp [BZ #31934] 182f4a8c75 Add AT_RSEQ_* from Linux 6.3 to elf.h a858172cf9 nptl: fix potential merge of __rseq_* relro symbols 643709c6ee elf: Make dl-rseq-symbols Linux only 7f769dd008 Linux: Make __rseq_size useful for feature detection (bug 31965) 40a1e1798b resolv: Allow short error responses to match any query (bug 31890) 3da1b0064a resolv: Do not wait for non-existing second DNS response after error (bug 30081) 708f507e30 resolv: Track single-request fallback via _res._flags (bug 31476) 88b3554ed9 tests: replace system by xsystem 40fb943e12 linux: Update the mremap C implementation [BZ #31968] aaed1cc9fc mremap: Update manual entry 590e58b652 Add mremap tests aca9c7d5de resolv: Fix tst-resolv-short-response for older GCC (bug 32042) 6e642a47fa Fix name space violation in fortify wrappers (bug 32052) f82e0922de x86: Fix bug in strchrnul-evex512 [BZ #32078] 6eb9420551 support: Add FAIL test failure helper 5784740194 stdio-common: Add test for vfscanf with matches longer than INT_MAX [BZ #27650] bb6cfec3dd Make tst-ungetc use libsupport 810fa2488c ungetc: Fix uninitialized read when putting into unused streams [BZ #27821] 5259c8f052 ungetc: Fix backup buffer leak on program exit [BZ #27821] 5b853745fd posix: Use <support/check.h> facilities in tst-truncate and tst-truncate64 3d0acc5b20 nptl: Use <support/check.h> facilities in tst-setuid3 0141e7c794 libio: Attempt wide backup free only for non-legacy code a4d9258090 elf: Change ldconfig auxcache magic number (bug 32231) 4b2b81deb4 nptl: initialize rseq area prior to registration b2ab6ce0f5 nptl: initialize cpu_id_start prior to rseq registration 71fca07505 x86: Avoid integer truncation with large cache sizes (bug 32470) d5ff2fa5af x86_64: Sort fpu/multiarch/Makefile 3607863050 x86_64: Add log2 with FMA c0cae389fb x86_64: Add expm1 with FMA f2947239b6 x86_64: Add log1p with FMA ec7c01efee x86: Check the lower byte of EAX of CPUID leaf 2 [BZ #30643] 0c6f7cd550 elf: Fix slow tls access after dlopen [BZ #19924] f0c2fcce5f x86: Only align destination to 1x VEC_SIZE in memset 4x loop ec40bb7938 sysdeps/x86/Makefile: Split and sort tests b0eef2f27f x86_64: Fix missing wcsncat function definition without multiarch (x86-64-v4) 7e84df6892 x86: Improve large memset perf with non-temporal stores [RHEL-29312] 7d1c950582 x86/string: Fixup alignment of main loop in str{n}cmp-evex [BZ #32212] 19d8959b4d elf: Avoid some free (NULL) calls in _dl_update_slotinfo abe2bb2b47 elf: Support recursive use of dynamic TLS in interposed malloc 9083997843 misc: Add support for Linux uio.h RWF_NOAPPEND flag a3d7865b09 Fix underallocation of abort_msg_s struct (CVE-2025-0395) 24d69e33fc stdlib: Test using setenv with updated environ [BZ #32588] 5288c29247 assert: Reformat Makefile. b989519fe1 assert: Add test for CVE-2025-0395 7feb4c414e AArch64: Improve generic strlen 7d16ea8b42 AArch64: Optimize memset 06eafb057a AArch64: Remove zva_128 from memset 93e4b0796e math: Improve layout of expf data c747695762 AArch64: Add SVE memset b4a783aa30 AArch64: Use prefer_sve_ifuncs for SVE memset 032545ebd3 math: Improve layout of exp/exp10 data 7403ede2d7 elf: Ignore LD_LIBRARY_PATH and debug env var for setuid for static 5b1ea2a223 support: Use const char * argument in support_capture_subprogram_self_sgid 1e29775735 support: Add support_record_failure_barrier e8e6c54353 elf: Test case for bug 32976 (CVE-2025-4802) 0f4e5f764b x86_64: Fix typo in ifunc-impl-list.c. fba1c47cb5 elf: Fix subprocess status handling for tst-dlopen-sgid (bug 32987) 9643281f9c support: Don't fail on fchown when spawning sgid processes 245dffa9ed support: Pick group in support_capture_subprogram_self_sgid if UID == 0 ea179f9a37 Fix error reporting (false negatives) in SGID tests 58b768addb posix: Fix double-free after allocation failure in regcomp (bug 33185) Link: https://github.com/openwrt/openwrt/pull/19552 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
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 MacOSX 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.6+ rsync subversion unzip which
Quickstart
-
Run
./scripts/feeds update -ato obtain all the latest package definitions defined in feeds.conf / feeds.conf.default -
Run
./scripts/feeds install -ato install symlinks for all obtained packages into package/feeds/ -
Run
make menuconfigto select your preferred configuration for the toolchain, target system & firmware packages. -
Run
maketo 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
#openwrton oftc.net.
Developer Community
- Bug Reports: Report bugs in OpenWrt
- Dev Mailing List: Send patches
- Dev Chat: Channel
#openwrt-develon oftc.net.
License
OpenWrt is licensed under GPL-2.0
