bigbugcc
OpenWrts
JavaScript

OpenWRT 固件下载 | OpenWRT Firmware

Last updated Jul 5, 2026
767
Stars
297
Forks
0
Issues
0
Stars/day
Attention Score
91
Language breakdown
No language data available.
Files click to expand
README

OpenWrts

English | 简体中文

OpenWrts builds OpenWrt firmware with GitHub Actions.

OpenWrts

Scheduled Release Manual Build Release Downloads Latest Release License

Firmware Builds

The firmware build list is synchronized into manifests/builds.json from config fragments under configs/ when workflow generation runs. The scheduled workflow controls timed releases and alternates between LEDE and ImmortalWrt in auto mode.

| Source | Device ID | Platform | Flavor | Workflow status | Downloads | | --- | --- | --- | --- | --- | --- | | lede | x8664 | x8664 generic | standard | Scheduled Release | Downloads | | lede | rpi3 | Raspberry Pi 3B/3B+ | standard | Scheduled Release | Downloads | | lede | rpi4 | Raspberry Pi 4B | standard | Scheduled Release | Downloads | | lede | rpi5 | Raspberry Pi 5 | standard | Scheduled Release | Downloads | | lede | rockchip | R68S, NanoPi R2S/R4S/R5C/R5S, Orange Pi R1 Plus | standard | Scheduled Release | Downloads | | immortalwrt | x8664 | x8664 generic | lite | Scheduled Release | Downloads | | immortalwrt | rpi3 | Raspberry Pi 3B/3B+ | lite | Scheduled Release | Downloads | | immortalwrt | rpi4 | Raspberry Pi 4B | lite | Scheduled Release | Downloads | | immortalwrt | rpi5 | Raspberry Pi 5 | lite | Scheduled Release | Downloads | | immortalwrt | rockchip | R68S, NanoPi R2S/R4S/R5C/R5S, Orange Pi R1 Plus | lite | Scheduled Release | Downloads |

LuCI Plugins

LEDE Standard

| Category | Plugins | | --- | --- | | Store and proxy | luci-app-store, luci-app-openclash, luci-app-passwall2, luci-app-ssr-plus | | Network | luci-app-ddns, luci-app-mwan3, luci-app-n2n, luci-app-openvpn, luci-app-softethervpn, luci-app-syncdial, luci-app-upnp, luci-app-wireguard, luci-app-zerotier, luci-app-smartdns | | Services | luci-app-adguardhome, luci-app-docker, luci-app-dockerman, luci-app-filebrowser, luci-app-frpc, luci-app-nfs, luci-app-nps, luci-app-samba4, luci-app-ttyd, luci-app-vsftpd | | System and tools | luci-app-accesscontrol, luci-app-arpbind, luci-app-autoreboot, luci-app-cifs-mount, luci-app-commands, luci-app-control-timewol, luci-app-diskman, luci-app-filetransfer, luci-app-firewall, luci-app-netdata, luci-app-nlbwmon, luci-app-onliner, luci-app-pushbot, luci-app-qos, luci-app-serverchan, luci-app-usb-printer, luci-app-vlmcsd, luci-app-wol | | Extra apps | luci-app-ipsec-vpnd, luci-app-mentohust, luci-app-oaf, luci-app-qbittorrentstatic, luci-app-qbittorrent-simpledynamic, luci-app-turboacc | | Themes | luci-theme-argon, luci-theme-bootstrap, luci-theme-infinityfreedom, luci-theme-material, luci-theme-netgear, luci-theme-neobird |

ImmortalWrt Lite

| Category | Plugins | | --- | --- | | Store and proxy | luci-app-store, luci-app-openclash, luci-app-passwall2, luci-app-ssr-plus | | Network | luci-app-accesscontrol, luci-app-smartdns, luci-app-turboacc, luci-proto-wireguard | | Services | luci-app-docker, luci-app-dockerman, luci-app-filetransfer, luci-app-firewall, luci-app-netdata, luci-app-oaf, luci-app-onliner, luci-app-ttyd | | System defaults | default-settings, default-settings-chn, luci-app-autoreboot | | Themes | luci-theme-argon, luci-theme-bootstrap, luci-theme-material |

Supported Sources

| Source ID | Upstream repository | Default branch | Notes | | --- | --- | --- | --- | | lede | | master | Lean LEDE, currently used for standard builds | | immortalwrt | | master | ImmortalWrt, currently used for shared lite builds |

The two sources do not share the same SDK, feeds, LuCI version, package set, or plugin compatibility guarantees. High-confidence shared fragments live under common; source-specific fragments remain isolated and take precedence when they use the same name.

Workflows

| Workflow | Purpose | | --- | --- | | schedule-release.yml | Scheduled release. auto mode alternates between LEDE and ImmortalWrt by ISO week parity | | manual-build.yml | Manual build entry point with source, device, flavor, branch, and release controls | | build-openwrt.yml | Reusable workflow that builds one matrix item |

The scheduled workflow uses UTC:

schedule:
  - cron: "23 16   6"

This is roughly Sunday 00:23 in Asia/Shanghai.

Build Flow

scheduled/manual workflow
  -> scripts/openwrts.mjs validate-manifest
  -> scripts/openwrts.mjs generate-workflows --check
  -> scripts/openwrts.mjs resolve-matrix generates the build matrix
  -> build-openwrt.yml
     -> scripts/prepare-env.sh
     -> scripts/clone-source.sh
     -> scripts/apply-openwrt.sh system feeds
     -> OpenWrt feeds update/install
     -> scripts/apply-openwrt.sh packages
     -> scripts/compose-config.sh
     -> scripts/build.sh
     -> upload artifact / release

Repository Layout

.github/workflows/
  build-openwrt.yml      reusable build workflow
  schedule-release.yml   scheduled source-rotation release workflow
  manual-build.yml       manual build workflow

manifests/ builds.json build matrix definition

feeds/ common.conf shared feed overlays <repo>.conf optional repo-only feed overlays

packages/ lede.sh LEDE third-party packages immortalwrt.sh ImmortalWrt third-party packages

configs/ targets/ shared target/device configs apps/ common and source-specific LuCI app configs drivers/ source-specific driver extension configs

scripts/ openwrts.mjs Node.js CLI for manifest validation, matrix resolution, and workflow generation prepare-env.sh install build dependencies clone-source.sh clone the selected upstream source apply-openwrt.sh apply system defaults, shared/repo feeds, and repo packages compose-config.sh compose .config and run make defconfig build.sh download dependencies and compile firmware

The old root-level source.sh, environment.sh, configure.sh, and package.sh compatibility wrappers have been removed. New automation should call scripts under scripts/ directly.

Workflow Generation

GitHub Actions workflow_dispatch choice options are static YAML values. They cannot be loaded dynamically at runtime in the Actions UI. Regenerate after changing target, app, or driver config fragments:

node scripts\openwrts.mjs generate-workflows
node scripts\openwrts.mjs generate-workflows --check

generate-workflows scans shared targets from configs/targets/.config, combines them with configs/apps/common/.config and selected configs/apps/<repo>/*.config fragments, updates manifests/builds.json, and then writes the workflow options. Repo-specific app fragments take precedence over same-named common app fragments. Existing manifest metadata such as op_name is preserved, so you can edit display names after the first generation.

The generated workflows contain a validation step that fails when committed manifest or workflow options are out of sync with the config fragments.

Cache Strategy

The new workflow caches dl and .ccache with actions/cache. The cache key includes:

repo + branch + cache_scope + hash(feeds/packages/scripts/configs/manifests)

This avoids reusing incompatible cache data across LEDE, ImmortalWrt, devices, and firmware flavors.

Default Firmware Settings

  • Management IP: 192.168.10.1
  • User: root
  • Password: password

Manual Builds

Open GitHub Actions and run Manual OpenWrt Build, then choose:

  • repo: auto, lede, or immortalwrt. Use auto to resolve the source from the selected device; for device=all, auto follows the scheduled rotation rule.
  • device: all or a device ID from the matrix
  • flavor: standard, lite, or all. The default is standard with repo=lede. Use all when you want every matching manifest entry for the selected repo/device.
  • branch: leave empty to use the manifest default, or provide an upstream branch
  • upload_release: whether to upload firmware to GitHub Releases
For example, repo=lede, device=all, flavor=lite builds all LEDE targets with configs/apps/common/lite.config. If a selected repo/device/flavor combination does not exist, matrix resolution stops before compilation and reports the available flavors.

Local Matrix Checks

node scripts\openwrts.mjs validate-manifest
node scripts\openwrts.mjs resolve-matrix --repo lede --device x86_64
node scripts\openwrts.mjs resolve-matrix --repo immortalwrt --device all
node scripts\openwrts.mjs resolve-matrix --repo auto

The Node.js CLI uses only built-in Node modules and does not require npm install.

Adding a Device

  • Add the target/device config under configs/targets/.
  • Add or reuse an app config under configs/apps/common/ or configs/apps/<repo>/.
  • Add driver extensions under configs/drivers/<repo>/ when needed.
  • Update packages/<repo>.sh if the device needs extra packages.
  • Run node scripts\openwrts.mjs generate-workflows to sync manifests/builds.json and workflow choices.
  • Optionally edit the generated op_name in manifests/builds.json for a nicer release name, then rerun generate-workflows.
  • Run node scripts\openwrts.mjs validate-manifest.

Screenshots

OpenWrt

App Store

Service

Network

Credits

License

This project is released under the MIT License. See LICENSE.

🔗 More in this category

© 2026 GitRepoTrend · bigbugcc/OpenWrts · Updated daily from GitHub