Skip to content

Mixtile OpenWrt Maintenance

evtest-hash edited this page May 29, 2026 · 4 revisions

Mixtile OpenWrt Maintenance

Overview

Mixtile maintains OpenWrt firmware for two Rockchip ARMv8 boards:

  • Edge2 (RK3568)
  • Blade3 (RK3588)

The fork tracks upstream release tags only. Each branch has exactly 2 Mixtile commits on top of the upstream tag:

  1. Device support — U-Boot patches, kernel device tree, WiFi firmware, network config, board defconfigs
  2. CI/CD workflow — .github/workflows/mixtile-release.yml

Check for new upstream releases

# List recent upstream releases
curl -s "https://api.github.com/repos/openwrt/openwrt/releases?per_page=5" | \
  python3 -c "import json,sys; [print(f'{r[\"tag_name\"]:15s} {r[\"published_at\"][:10]}') for r in json.load(sys.stdin)]"

# Check current Mixtile tags
git ls-remote --tags https://github.com/mixtile-rockchip/openwrt.git | grep mixtile

Repository structure

Branches:
  openwrt-24.10  ← 2 Mixtile commits on upstream v24.10.x tag
  openwrt-25.12  ← 2 Mixtile commits on upstream v25.12.x tag
  main           ← mirrors openwrt-25.12
  gh-pages       ← firmware + kmod download site

Tag naming:
  mixtile-v{UPSTREAM_VERSION}
  e.g. mixtile-v24.10.6, mixtile-v25.12.4

gh-pages layout (mirrors upstream):
  releases/{VERSION}/targets/rockchip/armv8/
    ├── *.img.gz                                    ← firmware images
    ├── sha256sums                                  ← checksums
    └── packages/                                   ← kmod packages (~1093)

Version update procedure

When upstream releases a new version (e.g. v24.10.7 after v24.10.6):

1. Get Mixtile commit SHAs from current branch

git clone https://github.com/mixtile-rockchip/openwrt.git
cd openwrt
git checkout openwrt-24.10

# Note the two Mixtile commits (top 2 after upstream)
git log --oneline | head -5
# e1961de7 ci: add mixtile-release workflow
# 3511a691 rockchip: add Mixtile Edge2 and Blade3 support
# ec8eeaa8 OpenWrt v24.10.6: adjust config defaults   ← upstream starts here

Record these two SHAs: 3511a691 (device) and e1961de7 (workflow).

2. Build on new upstream tag

git clone --branch v24.10.7 --single-branch \
  https://git.openwrt.org/openwrt/openwrt.git ../v24.10.7-work
cd ../v24.10.7-work

git remote add mixtile https://github.com/mixtile-rockchip/openwrt.git
git fetch mixtile openwrt-24.10

# Cherry-pick both commits (keep as separate commits)
git cherry-pick 3511a691
git cherry-pick e1961de7

If cherry-pick conflicts:

File Why How to resolve
uboot-rockchip/Makefile Upstream bumped U-Boot version Keep upstream version number, keep Mixtile board entries
armv8.mk Upstream added new devices Keep both upstream and Mixtile entries
02_network Upstream changed network logic Merge both changes
Kernel patches path Only when crossing series (24.10→25.12) Rename patches-6.6/ → patches-6.12/

3. Validate locally

./scripts/feeds update -a && ./scripts/feeds install -a
cp configs/mixtile-edge2-24.10.config .config && make defconfig
make -j$(nproc) BUILD_LOG=1
# Verify: bin/targets/rockchip/armv8/ should contain *mixtile_edge2* images

4. Push and tag

git checkout -b openwrt-24.10
git push --force origin openwrt-24.10

git tag mixtile-v24.10.7 HEAD
git push origin mixtile-v24.10.7

Tag push triggers CI/CD automatically:

  1. Build Edge2 + Blade3 firmware
  2. Publish to gh-pages: releases/24.10.7/targets/rockchip/armv8/
  3. Create Draft GitHub Release (4 firmware images)

Old versions on gh-pages are preserved. Each version gets its own directory.

5. Verify and publish

# Check draft release
gh release view mixtile-v24.10.7 --repo mixtile-rockchip/openwrt

# Verify gh-pages content
curl -s https://mixtile-rockchip.github.io/openwrt/releases/24.10.7/targets/rockchip/armv8/sha256sums

# Publish after verification
gh release edit mixtile-v24.10.7 --repo mixtile-rockchip/openwrt --draft=false

If CI build fails

  1. Fix the issue locally
  2. Delete the failed draft release: gh release delete mixtile-v24.10.7 --yes
  3. Delete the tag: git push --delete origin mixtile-v24.10.7
  4. Fix on the branch, push, re-tag and push again

If you need to rebuild the same version

# Delete existing release + tag
gh release delete mixtile-v24.10.7 --repo mixtile-rockchip/openwrt --yes
git push --delete origin mixtile-v24.10.7

# Clean gh-pages for this version
git clone --branch gh-pages --single-branch \
  https://github.com/mixtile-rockchip/openwrt.git /tmp/gh-pages
cd /tmp/gh-pages
rm -rf releases/24.10.7/
git add -A
git commit --amend --no-edit
git push --force origin gh-pages

# Re-tag and push to trigger new build
cd ../v24.10.7-work
git tag mixtile-v24.10.7 HEAD
git push origin mixtile-v24.10.7

kmod packages

Firmware images have the kmod feed URL pre-configured in /etc/opkg/customfeeds.conf:

src/gz mixtile_kmod https://mixtile-rockchip.github.io/openwrt/releases/{VERSION}/targets/rockchip/armv8/packages

Users can install kernel modules directly:

opkg update
opkg install kmod-xxx