OpenWRT

openwrt.org
OpenWRT

Plenty of scope for customization and a ton of supported addons. Stateful firewall, NAT, and dynamically-configured port forwarding protocols (UPnP, NAT-PMP + upnpd, etc), Load balancing, IP tunneling, IPv4 & IPv6 support.

Open Source

OpenWRT Privacy Policy

Privacy Policy Summary

  • There is a date of the last update of the terms
  • The service can delete your account without prior notice and without a reason

Score

D

Documents

Domains Covered by Policy

  • openwrt.org
  • forum.openwrt.org

About the Data

This data is kindly provided by tosdr.org. Read full report at: #1603

OpenWRT Source Code

Author

openwrt

Description

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.

Homepage

License

NOASSERTION

Created

09 Nov 15

Last Updated

29 Jul 26

Latest version

v25.12.5

Primary Language

C

Size

302,800 KB

Stars

27,737

Forks

12,694

Watchers

27,737

Language Usage

Language Usage

Star History

Star History

Top Contributors

Recent Commits

  • Daniel Schwierzeck (02 Jun 26)

    airoha: add pinctrl fixes for AN7581 and AN7583 Fix and improve support for AN7583. Muxing of SPI, MDIO and I2C is now fully supported and working. Fix I2C1 in master mode on AN7581. (this allows to replace the i2c-gpio driver on Nokia Valyrian with the proper i2c-mt7621 driver). Fix non-working switching of GPIO direction if GPIO control register were already modified by bootloader and pinctrl would create a reserved state. All GPIO control registers have two bits per GPIO but the driver only set one which is now fixed. Fix problem were a pinmux config or GPIO mode cannot be applied if pin control register were already modified by bootloader. The driver expects all pin control registers to have their reset default value. Now the driver forces that reset default value during probe. Worth to mention that on AN7583 the GPIO mode and alternate pin modes are reversed in the reset default value. To achieve same behaviour as on AN7581 (GPIO mode by default, board DTS applies pinmux), the default value enforced during probe enables all GPIO mode bits. As consequence all AN7583 board DTS need to explicitely activate mdio0 or spi pin groups. Signed-off-by: Daniel Schwierzeck <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24267 Signed-off-by: Christian Marangi <[email protected]>

  • Daniel Schwierzeck (20 Jul 26)

    airoha: backport pinctrl patches from Linux mainline Backport missing pinctrl patches that has been accepted in Linux v6.19 and v7.2. This includes moving the Airoha pinctrl driver from drivers/pinctrl/mediatek to drivers/pinctrl/airoha. Due to this, all existing pinctrl patches needed a refresh. Signed-off-by: Daniel Schwierzeck <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24267 Signed-off-by: Christian Marangi <[email protected]>

  • Paul Spooren (29 Jul 26)

    Revert "toolchain: drop $(REVISION) from GCC version" This reverts commit 9292f32fd96dc00b7c3f34a028d1fc41a4fcb6d2. Downstream patches may change the output. If the GCC version doesn't incooperate the patches somehow (hash, git commit, ...), ccache may not invalidate existing cache. Revert this until a cleaner solution is found. Signed-off-by: Paul Spooren <[email protected]>

  • Shiji Yang (25 Jul 26)

    kernel: bump 6.12 to 6.12.98 Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.98 Signed-off-by: Shiji Yang <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24081 Signed-off-by: Hauke Mehrtens <[email protected]>

  • Shiji Yang (24 Jul 26)

    kernel: bump 6.12 to 6.12.97 Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.97 Upstream merged patches: - generic/backport-6.12/200-01-v6.13-jiffies-Define-secs_to_jiffies.patch[1] - generic/backport-6.12/200-02-v6.14-jiffies-Cast-to-unsigned-long-in-secs_to_jiffies-con.patch[2] - generic/backport-6.12/752-v7.2-net-dsa-qca8k-fix-led-devicename-when-using-external.patch[3] Manually rebased patches: - bcm27xx/patches-6.12/950-0358-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch[4] - generic/backport-6.12/906-v6.17-PCI-dwc-Switch-to-msi_create_parent_irq_domain.patch[5] - loongarch64/patches-6.12/004-v6.17-LoongArch-BPF-Add-basic-bpf-trampoline-support.patch[6-7] New kconfig symbol: - DEBUG_NET_SMALL_RTNL[8] All other patches are automatically refreshed. [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=5dc96cd938181dec01c77445c39da26f645e10e5 [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=b17b73e1178aced9006b887e67e8b88fed0a08c9 [3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=562a838a689b6080a977deeb706a18ae8d7774a1 [4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=5ca45195c78bc13e5e7fad8e9c1ccfaf2859699a [5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=a44c473ba778b05f9bf0f4873271fab0cec6981a [6] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=8ea20054e8d40a51c82ac4ef625e24a11cf1c0a7 [7] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.18.y&id=666fc2e6e4d0a37592e5a3029deddc272e10df1e [8] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&&id=54ddb19c3d7a625d80364fd526af8849ba61e8aa Signed-off-by: Shiji Yang <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24081 Signed-off-by: Hauke Mehrtens <[email protected]>

  • Shiji Yang (19 Jul 26)

    kernel: bump 6.12 to 6.12.96 Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.96 All patches are automatically refreshed. Signed-off-by: Shiji Yang <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24081 Signed-off-by: Hauke Mehrtens <[email protected]>

  • Shiji Yang (05 Jul 26)

    kernel: bump 6.12 to 6.12.95 Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.95 Upstream merged patch: - bcm27xx/patches-6.12/950-0859-drm-v3d-Set-job-pointer-to-NULL-when-the-job-s-fence.patch[1] Manually rebased patches: - bcm27xx/patches-6.12/950-0501-gpiolib-Override-gpiochip-numbers-with-DT-aliases.patch - bcm27xx/patches-6.12/950-0777-drm-v3d-Remove-v3d-cpu_job.patch All other patches are automatically refreshed. [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.95&id=0e64be02dfc83e28c5ec8c21513da86dcf079bdd Signed-off-by: Shiji Yang <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24081 Signed-off-by: Hauke Mehrtens <[email protected]>

  • Nickolay Savchenko (27 Jul 26)

    dt-bindings: net: add Realtek RTL8367B switch binding Document the existing properties supported by the legacy RTL8367B switch driver, including MDIO and GPIO SMI access, optional reset and internal MDIO bus descriptions, external interface configuration, and board-specific post-initialization register/value pairs. Co-authored-by: Mieczyslaw Nalewaj <[email protected]> Signed-off-by: Nickolay Savchenko <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24305 Signed-off-by: Jonas Jelonek <[email protected]>

  • Nickolay Savchenko (28 Jul 26)

    kernel: rtl8367b: support post-init register writes Allow boards to provide optional register/value pairs through the realtek,init-regs property. Apply them after the chip-specific initialization table and before configuring the external interface. Keep the property a no-op when absent. Reject malformed, oversized or non-16-bit entries, and propagate register write failures. While at it, remove a redundant trailing blank line at the end of the file. Co-authored-by: Mieczyslaw Nalewaj <[email protected]> Signed-off-by: Nickolay Savchenko <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24305 Signed-off-by: Jonas Jelonek <[email protected]>

  • Georgi Valkov (16 Jul 26)

    mac80211: mwifiex: replace one-element arrays with flexible array members Replace deprecated one-element arrays with flexible array members. CONFIG_FORTIFY_SOURCE reports the following warning when one-element arrays are used as variable-length buffers: sta_cmd.c:1033 mwifiex_sta_prepare_cmd memcpy: detected field-spanning write (size 84) of single field "domain->triplet" at .../marvell/mwifiex/sta_cmd.c:1033 (size 3) Convert affected structs to use flexible array members. - Preserve existing wire layouts. - Use DECLARE_FLEX_ARRAY() for structs inside affected unions. This fix has been accepted upstream: https://github.com/torvalds/linux/commit/1cb5845a58d8e1f85d5766c6fbcbfddf96c212a1 Tested-on: WRT3200ACM Signed-off-by: Georgi Valkov <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24451 Signed-off-by: Jonas Jelonek <[email protected]>

  • Gennaro Cimmino (26 Jul 26)

    realtek: eth: support changing the MTU Add a change_mtu operation, so the length the switch may deliver to the CPU follows the conduit MTU instead of keeping the value programmed when the interface came up. To avoid trouble with the receive buffer, adapt the head of line budget along with it. Those registers limit how many packets the hardware may append to a receive ring, and deriving that limit from a frame of maximum length makes the smallest MTU pay the price of the largest. With 400 byte fragments a 1626 byte frame occupies five of them, which leaves 128 / 5 = 25 packets per ring, while the 1530 byte frame of a tagged conduit at its idle MTU needs four and fits 32. The two limits move in opposite directions, so the order matters: on the way up the budget shrinks before the switch is allowed to hand over larger frames, which keeps the ring from ever running a budget meant for smaller ones. On the way down it grows only after the switch has stopped handing over the larger frames, which narrows that window rather than closing it, as the ring may still hold frames of the previous size. The pair runs under the lock the rest of the driver programs those registers with, as the transmit watchdog is not serialised against an MTU change. The budget comes from the config, one function per family, and opening the interface calls it too: RTL83xx has none to resize, as its rings are free floating, so it writes the ring size of zero that its reset paths used to write themselves. Nothing else has to follow, as the receive buffers are of a fixed size. The largest MTU comes from the config too, one value per family: 10000 bytes on RTL838x and 12288 on the others, less the frame overhead. Those are the limits the DSA driver already declares in its rmon ranges. A frame must also fit into a single skb, whose linear part and fragments hold 400 bytes each, so the operation refuses above an MTU of 7174 on every family, well below what the switches would take. The fragment size carries a TODO of its own, and raising it lifts that bound towards the hardware one. That remaining window is why every accepted change carries a warning. A closed interface has neither a ring to protect nor registers worth touching, as opening it derives both limits from the MTU anyway, so leave the hardware alone while it is down. That also keeps the warning out of the boot log, where dsa_conduit_setup() sets the tagging overhead on a conduit that carries no traffic yet. Tested on an RTL9303 (Hasivo S1100W-8XGT-SE, RTL8264B PHY, USXGMII). Both limits follow every MTU as computed, read back from the switch: conduit MTU 1504 1000 7174 packet length 1530 1026 7200 packets/ring 32 42 7 where the previous static sizing programmed 25 packets per ring at every MTU. An MTU of 7175 is refused, and one of 9000, which the family ceiling would allow, reaches the operation and is refused there: no warning is logged for it, where an accepted change logs one, and the boot log carries none at all. Raising the MTU to 1600 while the interface is down leaves the registers at 1530 and the budget at 32 packets and logs nothing, while bringing it up afterwards programs 1626 and 25, so the change is deferred rather than lost. Traffic keeps flowing across the changes: a 102 byte frame is answered five times out of five at each step, while a 1046 byte one passes at MTU 1504, stops at MTU 1000, whose limit of 1026 it exceeds, and passes again once the MTU is back. Sixty alternating changes between two MTUs complete with nothing logged, on a build with spinlock debugging enabled. Assisted-by: Claude:claude-opus-5 Signed-off-by: Gennaro Cimmino <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24421 Signed-off-by: Markus Stockhausen <[email protected]>

  • Gennaro Cimmino (26 Jul 26)

    realtek: eth: bound the packet length at the CPU port The length of the frames the switch may hand to the CPU has nothing to do with the MTU the conduit runs at. The registers holding it keep whatever the bootloader left, and the only other mechanism in the path is the DMA truncation length, which does not drop what exceeds it: it cuts the frame short and hands the remains to the stack. Nothing in the target programs either of them from the MTU. Add a per SoC set_max_packet_length() that programs those registers from the conduit MTU and turns the truncation off, so an oversized frame is dropped rather than delivered mutilated. The registers differ per family, from the maps at svanheule.net, and every length field is 14 bits wide: RTL838x DMA_IF_PKT_RX_FLTR_CTRL 0x6b10 RX_MAX_LEN[13:0] DMA_IF_PKT_TX_FLTR_CTRL 0xaa6c TX_MAX_LEN[13:0] RTL839x DMA_IF_PKT_FLTR_CTRL 0x1000 RX_MAX_LEN[13:0] TX_MAX_LEN[27:14] RTL930x MAC_L2_CPU_MAX_LEN_CTRL 0xa3a0 CPU_PORT_TX_MAX_LEN[13:0] MAC_L2_PORT_MAX_LEN_CTRL 0x326c MAX_LEN_1G_2P5G_5G_10G_SEL MAX_LEN_100M_10M_SEL RTL931x MAC_L2_CPU_MAX_LEN_CTRL 0x1368 CPU_PORT_TX_MAX_LEN[13:0] CPU_PORT_RX_MAX_LEN[27:14] Longan is the only family whose CPU register carries a single field, covering what the switch sends towards the CPU. What it takes from the CPU lives in the port register of that port, 0x326c + port * 64, whose two fields hold the length for the slow and the fast link speeds. The vendor SDK reads the slow one there; both are programmed, as the driver does not know at which speed the internal port runs. Mango keeps its port registers in an array documented for ports 0 to 55, one short of its CPU port, so there the CPU register alone holds both directions. Characterised on an RTL9303 (Hasivo S1100W-8XGT-SE) by lowering the truncation length and the maximum length of the CPU port in turn, while frames of growing size were sent into a user port. The largest frame that survives is the maximum length minus four, and the truncation length minus eight, both constant at three settings of each register. Beyond that boundary the truncation delivers a frame cut short, seen on the conduit as 992 bytes where 1014 were sent, while the maximum length register lets nothing through. Read at the U-Boot prompt on the same board, reproduced across two boots, the bootloader leaves 0xa3a0 at 0x600, 0x396c at 0x0c003000 and DMA_IF_CTRL at 0x06400000, a truncation length of 1600 with every enable still clear. With this patch and the conduit at its idle MTU of 1504, both length registers read 1530, while DMA_IF_CTRL has its truncation bit clear and the transmit and receive enables set. Compile-tested only on RTL838x/839x/931x, where the offsets come from the maps alone and the effect has not been observed. This changes what those boards do at every interface open, not only when the MTU changes, so testing from their owners is welcome. On RTL838x the transmit length lives in a register of its own: https://svanheule.net/realtek/maple/register/dma_if_pkt_tx_fltr_ctrl Assisted-by: Claude:claude-opus-5 Signed-off-by: Gennaro Cimmino <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24421 Signed-off-by: Markus Stockhausen <[email protected]>

  • Georgi Valkov (12 Jul 26)

    mac80211: mwifiex: fix freeze for 60 seconds caused by request_firmware Fix regression in rgpower table loading, caused by using request_firmware(): when the requested firmware does not exist, e.g. nxp/rgpower_WW.bin does not exist on OpenWrt builds for WRT3200ACM, request_firmware() falls back to firmware_fallback_sysfs(), which expects the firmware to be provided by user space using SYSFS. No such utility is provided in this configuration, so the entire system locks up for 60 seconds, until the request times out. During this time, no other log messages are observed, and the device does not respond to commands over UART. The request_firmware() call is performed in the following context: current->comm kworker/1:2 in_task 1 irqs_disabled 0 in_atomic 0 Fixed by using request_firmware_direct(). This prevents fallback to SYSFS, and avoids delay. The rgpower table is optional. The driver falls back to the device tree power table if the firmware is not present. The error code is printed for debugging and returned to the caller, which only cares for success or failure, so there are no side effects. Link: #24205 Fixes: #24434 Fixes: https://forum.openwrt.org/t/25-12-0-slow-boot-on-linksys-wrt3200acm/247751 Fixes: https://github.com/torvalds/linux/commit/7b6f16a258065f85793fb2597a290041c1e3d201 Signed-off-by: Georgi Valkov <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24205 Signed-off-by: Jonas Jelonek <[email protected]>

  • Vitaliy Sochnev (25 Jul 26)

    uboot-airoha: fix ethernet on Gemtek W1700K The board enables gdm1 in its DTS, but U-Boot v2026.07 ships arch/arm/dts/an7581-u-boot.dtsi, which is appended to the end of the board DTS and declares gdm1 with status = "disabled". The board setting is overridden and U-Boot ends up without a network device. Add a board specific an7581-w1700k-ubi-u-boot.dtsi re-enabling gdm1. U-Boot only pulls in the first matching *-u-boot.dtsi (firstword in scripts/Makefile.lib), so the board file must include the SoC one explicitly, otherwise the entire an7581 U-Boot glue is dropped along with it: uart1 bootph-all, the eth/pcs/snfi/mmc nodes and the ATF reserved memory. This is the same fix that was confirmed to restore networking on the Nokia XG-040G-MD. It is compile tested only and verified by inspecting the generated DTB - I have no W1700K hardware, so it is unverified on the actual device and needs testing by someone who has one. Fixes: baeacca59889 ("uboot-airoha: update to v2026.07") Signed-off-by: Vitaliy Sochnev <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24410 Signed-off-by: Jonas Jelonek <[email protected]>

  • Vitaliy Sochnev (25 Jul 26)

    uboot-airoha: fix ethernet on Nokia XG-040G-MD U-Boot v2026.07 ships arch/arm/dts/an7581-u-boot.dtsi, which declares gdm1 with status = "disabled". That file is appended to the end of the board DTS, so it overrides the MAC enabled by the board and U-Boot ends up without a network device: No ethernet found. Add a board specific an7581-nokia-xg-040g-md-u-boot.dtsi re-enabling gdm1. U-Boot only pulls in the first matching *-u-boot.dtsi (firstword in scripts/Makefile.lib), so the board file must include the SoC one explicitly, otherwise the entire an7581 U-Boot glue is dropped along with it: uart1 bootph-all, the eth/pcs/snfi/mmc nodes and the ATF reserved memory. Same approach as en7581-evb and Nokia Valyrian. Tested on Nokia XG-040G-MD: TFTP recovery boot works again. Fixes: baeacca59889 ("uboot-airoha: update to v2026.07") Closes: https://github.com/openwrt/openwrt/issues/24385 Signed-off-by: Vitaliy Sochnev <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24410 Signed-off-by: Jonas Jelonek <[email protected]>

  • Rosen Penev (05 Jul 26)

    scripts: dl_github_archive: fix zstd args passed to tar The multi-word zstd option '-I zstd -T0 --ultra -20' was appended as a single argv element. subprocess passes each list element as one argv entry, so tar received the whole string as one argument and failed to recognize it. Split into separate '-I' and 'zstd -T0 --ultra -20' elements so tar correctly interprets the compressor command. Signed-off-by: Rosen Penev <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24375 Signed-off-by: Jonas Jelonek <[email protected]>

  • Rosen Penev (08 Jul 26)

    loongarch64: use libdeflate for gzip Shrinks size slightly. Signed-off-by: Rosen Penev <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24147 Signed-off-by: Jonas Jelonek <[email protected]>

  • Ryan Leung (07 Jul 26)

    uboot-rockchip: update to v2026.07 Drop upstreamed patches. Delete device trees in `106-board-rockchip-add-HINLINK-H66K-H68K.patch` that have been added to U-Boot from upstream Linux. Rebase `108-07-WIP-rockchip-mkimage-Add-rk3576-align-and-sd-card-wo.patch` Refresh all other patches. Signed-off-by: Ryan Leung <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24118 Signed-off-by: Jonas Jelonek <[email protected]>

  • Peter Putzer (25 Jul 26)

    realtek: add support for ZyXEL GS1900-8HP B2 The ZyXEL GS1900-8HP B2 is an 8-port gigabit switch with PoE+ support. It's a new hardware revision that uses the `realtek,pse-mcu-gen2` PSE dialect with 115200 baud like the GS1900-10HP B1. Other hardware changes are unknown, but the switch works fine using the pre-PSE `zyxel,gs1900-8hp-b1` image with the `realtek-poe` user-space PoE implementation. The installation instructions from the initial support for the A1 and B1 revisions still apply (https://github.com/openwrt/openwrt/commit/c4bfe68c83910e613f07350587a8709a16bd1ffa): * Configure your client with a static 192.168.1.x IP (e.g. 192.168.1.2). * Set up a TFTP server on your client and make it serve the initramfs image. * Connect serial, power up the switch, interrupt U-boot by hitting the space bar, and enable the network: > rtk network on * Since the GS1900-10HP is a dual-partition device, you want to keep the OEM firmware on the backup partition for the time being. OpenWrt can only boot off the first partition anyway (hardcoded in the DTS). To make sure we are manipulating the first partition, issue the following commands: > setsys bootpartition 0 > savesys * Download the image onto the device and boot from it: > tftpboot 0x84f00000 192.168.1.2:openwrt-realtek-generic-zyxel_gs1900-8hp-b2-initramfs-kernel.bin > bootm * Once OpenWrt has booted, scp the sysupgrade image to /tmp and flash it: > sysupgrade /tmp//tmp/openwrt-realtek-generic-zyxel_gs1900-8hp-b2-squashfs-sysupgrade.bin Alternatively, after factory-resetting the switch, you can: * Log in to OEM management web interface. It should be at http://192.168.1.1 * Navigate to `Maintenance > Firmware > Management` * If "Active Image" has the first option selected, OpenWrt will need to be flashed to the "Active" partition. If the second option is selected, OpenWrt will need to be flashed to the "Backup" partition. * Navigate to `Maintenance > Firmware > Upload` * Upload the initramfs-kernel.bin file by your preferred method to the previously determined partition. When prompted, select to boot from the newly flashed image, and reboot the switch. * Once OpenWrt has booted, scp the sysupgrade.bin image to /tmp and flash it thought SSH. - OpenWrt does not include openssh-sftp-server by default. If your SCP client fails due to lacking an SFTP server on the device, consider using the legacy SCP protocol instead. With OpenSSH's scp this can be done by adding the -O option on the command line. - `sysupgrade -n /tmp/<sysupgrade file name>` * It may be necessary to restart the network (/etc/init.d/network restart) on the running initramfs image. See the GS199-8HP A1 wiki page for more information (https://openwrt.org/toh/zyxel/gs1900-8hp_v1). Signed-off-by: Peter Putzer <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24418 Signed-off-by: Jonas Jelonek <[email protected]>

  • Peter Putzer (25 Jul 26)

    realtek: refactor GS1900-8HP variants to have common definitions Moves common definitions to separate include file. Signed-off-by: Peter Putzer <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24418 Signed-off-by: Jonas Jelonek <[email protected]>

  • Markus Stockhausen (22 Jul 26)

    realtek: convert to generic machine initialization Upstream has implemented MACH_REALTEK_RTL with the MIPS generic startup framework. Until now OpenWrt disables that with a patch and instead uses dedicated legacy startup sources. Convert to upstream startup and take over the missing downstream bits from the legacy code. Due to the complex nature of this patch only focus on board-realtek.c for now. Moving other pieces around (like headers) needs to be done in a separate patch. Link: https://github.com/openwrt/openwrt/pull/24390 Signed-off-by: Markus Stockhausen <[email protected]>

  • Andrew LaMarche (26 Jul 26)

    realtek: add support for Hasivo S1100WP-8XGT-SE switch This commit adds support for Hasivo S1100WP-8XGT-SE switch. It is identical to the S1100W-8XGT-SE, except it also has 2x HS104 chips for PoE delivery. Device specification -------------------- SoC Type: RTL9303 RAM: Samsung K4B461646E-BYKO (512MB) Flash: Fudan FM25Q128A (16 MB) Ethernet: 8x 10G via 2x RTL8264 PHY LEDs: 2 LEDs, 1 power green, 1 system green Button: Reset USB ports: None Bootloader: Realtek U-Boot - U-Boot 2011.12.(3.6.6.55087) (Nov 13 2022 - 14:37:31) Fan: 2 fans controlled by STC8G1K08 TSOP-20 microcontroller PSE: 2x HS104 Note: The fan appears to operate the same irrespective of the running firmware. The STC8G1K08 is likely operating independently. To explore the stock vendor firmware, there are 2 avenues to gain root access. This is not necessary to install OpenWrt, but is here for reference. Root access via serial ---------------------- 1. ctrl+t 2. password: switchrtk 3. press 's' for shell Root access via SSH ------------------- 1. ctrl+t 2. password: switchrtk 3. sys command sh 4. log in with your username+password 5. ctrl+t 6. password: switchrtk 7. press 's' for shell Credit to https://forum.openwrt.org/t/hasivo-switches/151758/174 for rooting instructions. Installing OpenWrt ------------------ 1. Connect to UART. UART requires soldering an RJ45 connector to the console footprint on the board. The header is on the top right of this image: https://forum.openwrt.org/uploads/default/original/3X/4/d/4d2ab97fad7e2c5b0a0bdca4de887918c6dcff97.jpeg 2. Set computer IP to 192.168.0.111. 3. Enter bootloader by pressing esc key during boot. 4. Enter password 'Hs2021cfgmg'. 5. Type 'XXXX'. 6. setenv bootcmd 'rtk network on; bootm 0xb4300000' 7. saveenv 8. rtk network on 9. tftpboot 0x84f00000 <openwrt-initramfs> 10. bootm 0x84f00000 Now you can copy over the sysupgrade image and install. Credit to https://forum.openwrt.org/t/hasivo-switches/151758/22?u=andrewjlamarche for u-boot console access instructions. Signed-off-by: Andrew LaMarche <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24349 Signed-off-by: Jonas Jelonek <[email protected]>

  • Andrew LaMarche (21 Jul 26)

    realtek: rtl9303: split Hasivo S1100W(P)-8XGT-SE Hasivo has two RJ45-only 8-port 10G switches, S1100W-8XGT-SE (non-PoE) and S1100WP-8XGT-SE (PoE). The boards are both identical, with the exception that the S1100WP-8XGT-SE has 2x HS104 PoE chips. Make a shared dtsi to share between both variants. Signed-off-by: Andrew LaMarche <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24349 Signed-off-by: Jonas Jelonek <[email protected]>

  • Semih Baskan (24 Jul 26)

    bcm53xx: fix PCIe probe by using the hardware outbound window Since the PCIe controllers gained a full DT description (349/350, commit 24ce1491cc37) every controller fails to probe with -EBUSY, and the window it describes is at the wrong address on most boards. devm_pci_alloc_host_bridge() parses the DT ranges and requests them, then pcie-iproc-bcma adds its own window and requests the whole list a second time, so that second request collides. The outbound window base is fixed per PCIe core revision. Revision 0x01 uses 0x08000000, 0x40000000 and 0x48000000 for controllers 0 to 2, while revision 0x07 uses 0x08000000, 0x20000000 and 0x28000000. Broadcom's own driver branches on the core revision for this reason. 349 carries the revision 0x07 values, so on revision 0x01 controller 1 points at an address the hardware does not decode and the first BAR access aborts. A .dtsi shared by every Northstar SoC cannot express a per-revision value, but the enumeration ROM reports the right one and bcma already provides it. Discard any memory window that came from the device tree and use that instead, requesting only the window this driver owns. The driver is then correct whether or not the DT describes a window. Tested on an ASUS RT-N18U (BCM47081) and a Linksys EA9200 (BCM4709), both core revision 0x01, on kernel 6.18. Fixes: 24ce1491cc37 ("bcm53xx: backport pcie patches") Fixes: https://github.com/openwrt/openwrt/issues/23593 Signed-off-by: Semih Baskan <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24415 Signed-off-by: Jonas Jelonek <[email protected]>

  • Julius Bairaktaris (13 Jul 26)

    qualcommax: qca-edma: support the kernel 6.18 threaded NAPI API dev_set_threaded() takes an enum netdev_napi_threaded on 6.18; it was a bool before. Select the argument on LINUX_VERSION_CODE so the driver keeps building on the 6.12 main kernel and on the 6.18 testing kernel. Without this, the 6.18 testing-kernel build fails with -Werror=enum-conversion on the threaded-NAPI enable added in commit 98108710b6 ("qualcommax: qca-edma: enable threaded NAPI by default"). Signed-off-by: Julius Bairaktaris <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24031 Signed-off-by: Jonas Jelonek <[email protected]>

  • Julius Bairaktaris (02 Jul 26)

    mac80211: drop the ath iommu_paging_domain revert The patch reverted ath10k/ath11k to iommu_domain_alloc(), which kernel 6.18 removed; iommu_paging_domain_alloc() exists on every kernel this tree builds. Unnoticed upstream because no 6.18 target builds ath11k-ahb. Signed-off-by: Julius Bairaktaris <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24031 Signed-off-by: Jonas Jelonek <[email protected]>

  • Julius Bairaktaris (12 Jul 26)

    qualcommax: add kernel 6.18 as testing kernel Enable linux 6.18 as the testing kernel; 6.12 stays the main kernel. The config was created from config-6.12 and refreshed (defaults accepted for new symbols; QCOM_PPE and PCS_QCOM_IPQ9574 - upstream's IPQ9574-generation PPE/PCS drivers - stay disabled, this target uses its own EDMA/PPE/UNIPHY-PCS drivers). EC_HUAWEI_GAOKUN, EC_LENOVO_THINKPAD_T14S, VIDEO_QCOM_IRIS and QCOMTEE are new ARCH_QCOM-gated symbols that are only visible in ALL_KMODS builds; answer them explicitly so syncconfig stays non-interactive. QCOMTEE sits inside the TEE menu, so it only became reachable once kmod-tee turned CONFIG_TEE on (0f256a0a7adf "kernel: modules: package OP-TEE and fTPM modules"). Signed-off-by: Julius Bairaktaris <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24031 Signed-off-by: Jonas Jelonek <[email protected]>

  • Julius Bairaktaris (02 Jul 26)

    qualcommax: dwmac-ipq5018: support the kernel 6.18 stmmac API The fix_mac_speed() callback takes the speed as an int on 6.18 (SPEED_UNKNOWN is negative); it was unsigned int on 6.12. Select the prototype on LINUX_VERSION_CODE so the driver keeps building on the 6.12 main kernel and on the 6.18 testing kernel. Signed-off-by: Julius Bairaktaris <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24031 Signed-off-by: Jonas Jelonek <[email protected]>

  • Julius Bairaktaris (02 Jul 26)

    qualcommax: pcs: qca-uniphy: support the kernel 6.18 phylink PCS API pcs_get_state() gained a neg_mode parameter in 6.18, and the phylink_pcs neg_mode opt-in field was removed (neg_mode is always passed now). Guard both on LINUX_VERSION_CODE so the driver keeps building on the 6.12 main kernel and on the 6.18 testing kernel. Signed-off-by: Julius Bairaktaris <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24031 Signed-off-by: Jonas Jelonek <[email protected]>

  • Julius Bairaktaris (26 Jul 26)

    qualcommax: 6.18: update patches Refresh the remaining patches against 6.18. Most only needed new line offsets. Seven needed real porting because the code they touch changed upstream: - 0113, 0114, 0188, 0805, 0808, 0812: qcom_mdt_load_no_init() no longer takes a pas_id argument, and qcom_mdt_load_no_init()'s MPD variant in 0812 swaps its pas_init/dma_require/pas_id parameters. 0805 also moves from the removed platform_driver .remove_new to .remove. - 0901 (Qualcomm CPR regulators): 6.18 added a cmp_int() macro to linux/sort.h that collides with the driver's local comparator, which is renamed cpr3_cmp_int(). Signed-off-by: Julius Bairaktaris <[email protected]> Link: https://github.com/openwrt/openwrt/pull/24031 Signed-off-by: Jonas Jelonek <[email protected]>

OpenWRT Security

5.1/10

Repo Security Summary

Updated 13 Jul 26

  • Code-Review 8/10
  • Maintained 10/10
  • Packaging N/A
  • Dangerous-Workflow 10/10
  • CII-Best-Practices 0/10
  • Token-Permissions 0/10
  • Security-Policy 0/10
  • License 9/10
  • Fuzzing 0/10
  • Signed-Releases N/A
  • Branch-Protection N/A
  • Binary-Artifacts 10/10
  • SAST 0/10
  • Pinned-Dependencies 0/10

Security Advisories (9)

  • medium Patched CVSS 4.9

    CVE-2026-62947 ACL bypass and arbitrary root file read via cgi-io cgi-download

  • critical Unpatched CVSS 9.6

    CVE-2026-62948 odhcpd/LuCI: unauthenticated DHCPv6 client can inject lease-file lines via FQDN hostname → stored XSS in the LuCI admin UI

  • medium Unpatched CVSS 6.5

    CVE-2026-55490 EAD Integer Underflow → Pre-Auth Denial of Service

  • low Patched

    CVE-2026-30874 procd: Command execution via PATH environment variable filter bypass

  • low Patched

    CVE-2026-30873 jsonpath: Memory leak when processing strings, labels, and regexp tokens

  • critical Patched

    CVE-2026-30872 mdnsd: Stack buffer overflow in IPv6 reverse DNS lookup

  • critical Patched

    CVE-2026-30871 mdnsd: Stack buffer overflow in DNS PTR query

  • high Patched CVSS 7.9

    CVE-2025-62526 ubusd: heap buffer overflow

  • high Patched CVSS 7.9

    CVE-2025-62525 ltq-ptm: local privilege escalation

OpenWRT Website

Website

Testing to determine if you are a bot!

Redirects

Does not redirect

Security Checks

1 security checks failed (64 passed)

  • Robots Noindex

Server Details

  • IP Address 64.226.122.113
  • Hostname wiki-03.infra.openwrt.org
  • Location Frankfurt am Main, Hessen, Germany, EU
  • ISP DigitalOcean LLC
  • ASN AS14061

Associated Countries

  • US US
  • DE DE

Safety Score

Website marked as moderately safe

90%

Blacklist Check

openwrt.org was found on 0 blacklists

  • AntiSocial Blacklist
  • Artists Against 419
  • Badbitcoin
  • Bambenek Consulting
  • CERT Polska
  • CoinBlockerLists
  • CRDF
  • CryptoScamDB
  • EtherAddressLookup
  • EtherScamDB
  • Fake Website Buster
  • MetaMask EthPhishing
  • NABP Not Recommended Sites
  • OpenPhish
  • PetScams
  • PhishFeed
  • PhishFort
  • Phishing.Database
  • PhishStats
  • PhishTank
  • Phishunt
  • RPiList Not Serious
  • Scam.Directory
  • SecureReload Phishing List
  • Spam404
  • StopGunScams
  • Suspicious Hosting IP
  • ThreatFox
  • ThreatLog
  • TweetFeed
  • URLhaus
  • ViriBack C2 Tracker

Website Preview

Website preview

OpenWRT Reviews

More Router Firmware

  • Easy and powerful user interface. Great access control, bandwidth monitoring and quality of service. IPTables is built-in for firewall, and there's great VPN support as well as additional plug-and-play and wake-on-lan features.

About the Data: OpenWRT

API

You can access OpenWRT's data programmatically via our API. Simply make a GET request to:

https://api.awesome-privacy.xyz/v1/services/openwrt

The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.

Share OpenWRT

Help your friends compare Router Firmware, and pick privacy-respecting software and services.
Share OpenWRT and Awesome Privacy with your network!

View Router Firmware (2)