Zerogiven OpenWRT Package Feed
Custom package feed for OpenWRT containing various packages and kernel modules.
Note: This feed is in an early beginning stage so it could happen that directory structure changes and your feed not updating anymore.
- OpenWRT β€ 24.10: remove all
Zerogiven_*entries from/etc/opkg/customfeeds.confand re-run setup.- OpenWRT β₯ 25.12: remove all Zerogiven feed lines from
/etc/apk/repositories.d/customfeeds.listand re-run setup.
Automated Setup (setup.sh)
The script automatically detects whether your router uses opkg (OpenWRT β€ 24.10) or apk (OpenWRT β₯ 25.12) and configures the feeds accordingly:
wget -qO - https://raw.githubusercontent.com/Zerogiven-OpenWRT-Packages/package-feed/refs/heads/main/setup.sh | sh
Quick Setup (Copy & Paste)
OpenWRT β₯ 25.12 (apk)
# Get OpenWRT version (minor for packages, patch for kmods)
V=$(grep DISTRIB_RELEASE /etc/openwrt_release | cut -d"'" -f2 | cut -d'.' -f1,2)
VP=$(grep DISTRIB_RELEASE /etc/openwrt_release | cut -d"'" -f2)
# Get CPU arch
A=$(cat /etc/apk/arch 2>/dev/null || apk --print-arch)
# Get target/subtarget
T=$(grep DISTRIB_TARGET /etc/openwrt_release | cut -d"'" -f2)
# Add feeds to /etc/apk/repositories.d/customfeeds.list
mkdir -p /etc/apk/repositories.d
grep -q "package-feed/raw/main/$V/packages/$A" /etc/apk/repositories.d/customfeeds.list 2>/dev/null || \
echo "https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/$V/packages/$A/packages.adb" >> /etc/apk/repositories.d/customfeeds.list
grep -q "package-feed/raw/main/$V/all" /etc/apk/repositories.d/customfeeds.list 2>/dev/null || \
echo "https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/$V/all/packages.adb" >> /etc/apk/repositories.d/customfeeds.list
# Kernel modules (optional)
grep -q "package-feed/raw/main/kmods/$VP/$T" /etc/apk/repositories.d/customfeeds.list 2>/dev/null || \
echo "https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/kmods/$VP/$T/packages.adb" >> /etc/apk/repositories.d/customfeeds.list
# Add public key
mkdir -p /etc/apk/keys
wget -qO /etc/apk/keys/Zerogiven_Feed.rsa.pub https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/Zerogiven_Feed.rsa.pub
apk update
OpenWRT β€ 24.10 (opkg)
# Get OpenWRT version (minor for packages, patch for kmods)
V=$(grep DISTRIB_RELEASE /etc/openwrt_release | cut -d"'" -f2 | cut -d'.' -f1,2)
VP=$(grep DISTRIB_RELEASE /etc/openwrt_release | cut -d"'" -f2)
# Get CPU arch
A=$(opkg print-architecture | grep -v all | tail -1 | awk '{print $2}')
# Get target/subtarget
T=$(grep DISTRIB_TARGET /etc/openwrt_release | cut -d"'" -f2)
# Add arch-specific packages
grep -q Zerogiven_Feed /etc/opkg/customfeeds.conf || echo "src/gz Zerogiven_Feed https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/$V/packages/$A" >> /etc/opkg/customfeeds.conf
# Add arch-independent packages (LuCI apps, etc.)
grep -q Zerogiven_All /etc/opkg/customfeeds.conf || echo "src/gz Zerogiven_All https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/$V/all" >> /etc/opkg/customfeeds.conf
# Add kmods (optional) - uses patch version (e.g., 24.10.3)
grep -q Zerogiven_Kmod_Feed /etc/opkg/customfeeds.conf || echo "src/gz Zerogiven_Kmod_Feed https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/kmods/$VP/$T" >> /etc/opkg/customfeeds.conf
# Add public key
wget -qO /tmp/key.pub https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/Zerogiven_Feed.pub && opkg-key add /tmp/key.pub
opkg update
Manual Setup
OpenWRT β₯ 25.12 (apk)
1. Add Feeds to /etc/apk/repositories.d/customfeeds.list
Edit /etc/apk/repositories.d/customfeeds.list and add:
https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/<OpenWRT_Version>/packages/<cpu_arch>/packages.adb
https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/<OpenWRT_Version>/all/packages.adb
https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/kmods/<OpenWRT_Patch_Version>/<target>/<subtarget>/packages.adb
Replace the placeholders:
<OpenWRT_Version>- Your OpenWRT minor version (e.g.,25.12)<OpenWRT_Patch_Version>- Your OpenWRT full version including patch (e.g.,25.12.1)<cpu_arch>- Your CPU architecture (e.g.,x86_64,aarch64_cortex-a53)<target>- Your target platform (e.g.,x86,mediatek)<subtarget>- Your subtarget (e.g.,64,filogic)
2. Add Public Key
mkdir -p /etc/apk/keys
wget https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/Zerogiven_Feed.rsa.pub \
-O /etc/apk/keys/Zerogiven_Feed.rsa.pub
3. Update Package Lists
apk update
4. Persist Key Across Sysupgrade (optional)
OpenWRT's default sysupgrade backup may not include /etc/apk/keys/, in which case the key is lost after a firmware update and apk update will fail signature verification until it is reinstalled. To preserve it explicitly, add the path to /etc/sysupgrade.conf:
grep -q '^/etc/apk/keys/Zerogiven_Feed.rsa.pub$' /etc/sysupgrade.conf 2>/dev/null || \
echo '/etc/apk/keys/Zerogiven_Feed.rsa.pub' >> /etc/sysupgrade.conf
If you skip this, simply re-run setup.sh after each sysupgrade to reinstall the key.
This step is only relevant for OpenWRT >= 25.12. On OpenWRT <= 24.10,
/etc/opkg/keys/is preserved by default and no action is needed.
OpenWRT β€ 24.10 (opkg)
1. Add Feeds to customfeeds.conf
Edit /etc/opkg/customfeeds.conf and add:
# Arch-specific packages
src/gz Zerogiven_Feed https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/<OpenWRT_Version>/packages/<cpu_arch>
# Arch-independent packages (LuCI apps, themes, translations, etc.)
src/gz Zerogiven_All https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/<OpenWRT_Version>/all
# Kernel modules (optional) - requires patch version!
src/gz Zerogiven_Kmod_Feed https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/kmods/<OpenWRT_Patch_Version>/<target>/<subtarget>
Replace the placeholders:
<OpenWRT_Version>- Your OpenWRT minor version (e.g.,23.05,24.10)<OpenWRT_Patch_Version>- Your OpenWRT full version including patch (e.g.,24.10.3)<cpu_arch>- Your CPU architecture (e.g.,x86_64,aarch64_cortex-a53)<target>- Your target platform (e.g.,x86,mediatek,bcm27xx)<subtarget>- Your subtarget (e.g.,64,filogic,bcm2710)
2. Add Public Key
wget https://github.com/Zerogiven-OpenWRT-Packages/package-feed/raw/main/Zerogiven_Feed.pub -O /tmp/Zerogiven_Feed.pub
opkg-key add /tmp/Zerogiven_Feed.pub
3. Update Package Lists
opkg update
Feed Structure
| Feed | Directory | Index File | Contents |
|---|---|---|---|
| Packages | <version>/packages/<arch>/ |
packages.adb / Packages.gz |
Architecture-specific packages |
| All | <version>/all/ |
packages.adb / Packages.gz |
Architecture-independent packages (LuCI apps, themes, translations) |
| Kmods | kmods/<patch_version>/<target>/<subtarget>/ |
packages.adb / Packages.gz |
Kernel modules (tied to specific kernel version) |
Note: OpenWRT β₯ 25.12 uses
packages.adb(read byapk). OpenWRT β€ 24.10 usesPackages.gz(read byopkg). Kernel modules require the full patch version because they are compiled against a specific kernel version.