Skip to content

Build OpenWrt: rm1800-wifi @ ImmortalWrt (VIKINGYFY) · IPQ60XX-RM1800 #53

Build OpenWrt: rm1800-wifi @ ImmortalWrt (VIKINGYFY) · IPQ60XX-RM1800

Build OpenWrt: rm1800-wifi @ ImmortalWrt (VIKINGYFY) · IPQ60XX-RM1800 #53

name: Build OpenWrt
run-name: >-
Build OpenWrt:
${{ inputs.config_name }} @
${{ contains(inputs.repo_url, 'breeze303') && 'LibWrt' || (contains(inputs.repo_url, 'immortalwrt') || contains(inputs.repo_url, 'VIKINGYFY')) && 'ImmortalWrt' || 'OpenWrt' }}
(${{ contains(inputs.repo_url, 'VIKINGYFY') && 'VIKINGYFY' || contains(inputs.repo_url, 'breeze303') && 'breeze303' || 'immortalwrt' }})
· ${{ inputs.release_tag }}
on:
workflow_dispatch:
inputs:
config_name:
description: Config filename without .config
required: true
type: choice
options:
- rm1800-minimal
- rm1800-wifi
- rm1800-gateway
default: rm1800-wifi
release_tag:
description: Release tag
required: true
type: string
default: IPQ60XX-RM1800
repo_url:
description: Source OpenWrt/ImmortalWrt repo
required: true
type: choice
options:
- https://github.com/VIKINGYFY/immortalwrt.git@main
- https://github.com/immortalwrt/immortalwrt.git@master
- https://github.com/breeze303/openwrt-6.x.git@main-nss
default: https://github.com/VIKINGYFY/immortalwrt.git@main
note:
description: Build note (shows in run name + summary)
required: false
type: string
permissions:
contents: write
env:
# REPO_URL: https://github.com/breeze303/openwrt-6.x.git
# REPO_BRANCH: main-nss
# REPO_URL: https://github.com/immortalwrt/immortalwrt.git
# REPO_BRANCH: master
# REPO_URL: ${{ inputs.repo_url }}
# REPO_BRANCH: ${{ inputs.repo_branch }}
CONFIG_FILE: configs/${{ inputs.config_name }}.config
# CONFIG_DESCRIPTION: ${{ inputs.config_description }}
FIRMWARE_TAG: ${{ inputs.release_tag }}
CLASH_KERNEL: amd64
CACHE_TOOLCHAIN: true
UPLOAD_BIN_DIR: false
FIRMWARE_RELEASE: true
TZ: Europe/Paris
jobs:
Build:
runs-on: ubuntu-22.04
steps:
- name: Build note
if: inputs.note != ''
run: echo "📝 ${{ inputs.note }}" >> "$GITHUB_STEP_SUMMARY"
- name: Check Server Performance(检查服务器性能)
run: |
echo "Warning ⚠"
echo "The allocated runner has limited performance. If you select too many packages/plugins, watch CPU usage carefully."
echo -e "Known CPU models, descending performance: 7763, 8370C, 8272CL, 8171M, E5-2673\n"
echo "-------------------------- CPU info --------------------------"
echo "Physical CPU count: $(cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l)"
echo -e "CPU core info: $(cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c)\n"
echo "-------------------------- Memory info --------------------------"
echo "Installed memory details:"
echo -e "$(sudo lshw -short -C memory | grep GiB)\n"
echo "-------------------------- Disk info --------------------------"
echo "Disk count: $(ls /dev/sd* | grep -v [1-9] | wc -l)" && df -hT
- name: Initialization Environment(初始化环境)
env:
DEBIAN_FRONTEND: noninteractive
run: |
# Fast cleanup
docker images -q | xargs -r docker rmi || true
sudo rm -rf /usr/share/dotnet /etc/apt/sources.list.d /usr/local/lib/android $AGENT_TOOLSDIRECTORY
# Fast install of OpenWrt/LEDE dependencies
sudo -E apt-get -qq update
sudo -E apt-get -qq install -y --no-install-recommends \
ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext \
gcc-multilib g++-multilib git gperf haveged help2man intltool libc6-dev-i386 \
libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev \
libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz mkisofs msmtp nano ninja-build \
p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools python3-setuptools \
qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \
vim wget xmlto xxd zlib1g-dev
sudo timedatectl set-timezone "$TZ"
- name: Combine Disks(合并磁盘)
uses: easimon/maximize-build-space@master
with:
swap-size-mb: 1024
temp-reserve-mb: 100
root-reserve-mb: 1024
- name: Checkout
uses: actions/checkout@main
- name: Resolve source
run: |
SOURCE="${{ github.event.inputs.repo_url }}"
REPO_URL="${SOURCE%@*}"
REPO_BRANCH="${SOURCE##*@}"
echo "REPO_URL=$REPO_URL" >> "$GITHUB_ENV"
echo "REPO_BRANCH=$REPO_BRANCH" >> "$GITHUB_ENV"
# OS name from the repo
case "$REPO_URL" in
*breeze303*) OS_LABEL="LibWrt" ;;
*immortalwrt*) OS_LABEL="ImmortalWrt" ;;
*VIKINGYFY*) OS_LABEL="ImmortalWrt-V" ;;
*) OS_LABEL="OpenWrt" ;;
esac
# Variant from config_name (strip the rm1800- prefix, Title-case)
VARIANT_RAW="${{ github.event.inputs.config_name }}"
VARIANT="${VARIANT_RAW#rm1800-}"
case "$VARIANT" in
minimal) VARIANT_LABEL="Minimal" ;;
wifi) VARIANT_LABEL="Wi-Fi" ;;
gateway) VARIANT_LABEL="Gateway" ;;
*) VARIANT_LABEL="$VARIANT" ;;
esac
echo "OS_LABEL=$OS_LABEL" >> "$GITHUB_ENV"
echo "CONFIG_DESCRIPTION=Xiaomi AX1800(RM1800) ${OS_LABEL} ${VARIANT_LABEL} build" >> "$GITHUB_ENV"
echo "FIRMWARE_TAG=${FIRMWARE_TAG}-${OS_LABEL}-${VARIANT_LABEL}" >> "$GITHUB_ENV"
echo "VARIANT_LABEL=$VARIANT_LABEL" >> "$GITHUB_ENV"
echo "Resolved $REPO_URL @ $REPO_BRANCH → ${OS_LABEL} ${VARIANT_LABEL}"
- name: Validate selected config
run: |
test -f "$CONFIG_FILE" || {
echo "::error::Config not found: $CONFIG_FILE"
exit 1
}
echo "Using config: $CONFIG_FILE"
echo "Description: $CONFIG_DESCRIPTION"
- name: Clone Source Code(克隆源代码)
run: |
df -hT $GITHUB_WORKSPACE
git clone $REPO_URL -b $REPO_BRANCH openwrt
cd openwrt
echo "OPENWRT_PATH=$PWD" >> $GITHUB_ENV
VERSION_INFO=$(git show -s --date=short --format="Author: %an<br/>Date: %cd<br/>Message: %s<br/>Hash: %H")
echo "VERSION_INFO=$VERSION_INFO" >> $GITHUB_ENV
- name: Cache OpenWrt downloads
uses: actions/cache@v4
with:
path: |
openwrt/dl
openwrt/feeds
openwrt/.ccache
key: openwrt-${{ runner.os }}-${{ hashFiles(format('configs/{0}.config', inputs.config_name)) }}
restore-keys: |
openwrt-${{ runner.os }}-
- name: Check available IPQ60xx devices
run: |
cd $OPENWRT_PATH
grep -R "DEVICE_.*\(xiaomi\|redmi\|ax1800\|rm1800\)" target/linux/qualcommax/image target/linux/*/image || true
- name: Install Feeds(安装feeds)
run: |
cd $OPENWRT_PATH
./scripts/feeds update -a
./scripts/feeds install -a
- name: Load Custom Configuration(加载自定义配置)
run: |
[ -e files ] && mv files $OPENWRT_PATH/files
cp $CONFIG_FILE $OPENWRT_PATH/.config
- name: Fix kernel config for non-interactive build
run: |
cd $OPENWRT_PATH
for f in target/linux/generic/config-*; do
echo '# CONFIG_ALLOC_SKB_PAGE_FRAG_DISABLE is not set' >> "$f"
done
rm -rf build_dir/target-*
- name: CMA children defaults + reserve 16M via DTS
run: |
cd $OPENWRT_PATH
# CMA parent comes from the seed (CONFIG_KERNEL_CMA/DMA_CMA).
# Here we only pin the CHILD symbols so syncconfig never prompts in CI.
for f in target/linux/generic/config-*; do
sed -i '/CONFIG_CMA_/d' "$f"
printf '%s\n' \
'# CONFIG_CMA_DEBUG is not set' \
'# CONFIG_CMA_DEBUGFS is not set' \
'# CONFIG_CMA_SYSFS is not set' \
'CONFIG_CMA_AREAS=7' \
'CONFIG_CMA_SIZE_MBYTES=0' \
'CONFIG_CMA_SIZE_SEL_MBYTES=y' \
'# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set' \
'# CONFIG_CMA_SIZE_SEL_MIN is not set' \
'# CONFIG_CMA_SIZE_SEL_MAX is not set' \
'CONFIG_CMA_ALIGNMENT=8' >> "$f"
done
# reserve 16M on the kernel cmdline via the board DTS bootargs
DTS=target/linux/qualcommax/dts/ipq6000-ax1800.dts
test -f "$DTS" || { echo "::error::AX1800 DTS missing"; exit 1; }
echo "Found DTS: $DTS"
if [ -n "$DTS" ]; then
if grep -q 'bootargs-append' "$DTS"; then
sed -i 's/\(bootargs-append = "[^"]*\)"/\1 cma=16M"/' "$DTS"
else
sed -i '0,/{/s//{\n\tchosen { bootargs-append = " cma=16M"; };/' "$DTS"
fi
echo "=== bootargs after edit ==="; grep -n 'bootargs\|cma=' "$DTS" || true
else
echo "::warning::AX1800 DTS not found; cma= not applied"
fi
- name: Stamp version + build id
working-directory: openwrt
run: |
CONFIG="${{ github.event.inputs.config_name }}"
TAG="${{ github.event.inputs.release_tag }}"
SHA="${GITHUB_SHA::7}"
RUN="${{ github.run_id }}"
STAMP="$(date -u +%FT%TZ)"
# OS_LABEL + REPO_BRANCH come from the Resolve step via $GITHUB_ENV
VERSION_NUMBER="${CONFIG}-${REPO_BRANCH}-${SHA}"
SAFE_OS="$(printf '%s' "$OS_LABEL" | tr -d '\r\n' | sed 's/[^A-Za-z0-9._-]/-/g')"
SAFE_VER="$(printf '%s' "$VERSION_NUMBER" | tr -d '\r\n' | sed 's/[^A-Za-z0-9._-]/-/g')"
# enable the PARENT symbol, else defconfig strips DIST/NUMBER
sed -i '/^# CONFIG_VERSIONOPT is not set/d; /^CONFIG_VERSIONOPT=/d; /^CONFIG_VERSION_DIST=/d; /^CONFIG_VERSION_NUMBER=/d' .config
{
echo "CONFIG_VERSIONOPT=y"
echo "CONFIG_VERSION_DIST=\"${SAFE_OS}\""
echo "CONFIG_VERSION_NUMBER=\"${SAFE_VER}\""
} >> .config
mkdir -p files/etc
cat > files/etc/build-id <<EOF
os=${SAFE_OS}
config=${CONFIG}
release_tag=${TAG}
repo_url=${REPO_URL}
repo_branch=${REPO_BRANCH}
sha=${SHA}
run_id=${RUN}
built=${STAMP}
version_info=${VERSION_INFO//<br\/>/; }
EOF
echo "Stamped: ${SAFE_OS} ${SAFE_VER}"
- name: Resolve config and check selected device
run: |
cd $OPENWRT_PATH
make defconfig
SOURCE_REPO="$(echo $REPO_URL | awk -F '/' '{print $(NF)}')"
echo "SOURCE_REPO=$SOURCE_REPO" >> $GITHUB_ENV
DEVICE_TARGET=$(grep '^CONFIG_TARGET_BOARD=' .config | cut -d'"' -f2)
DEVICE_SUBTARGET=$(grep '^CONFIG_TARGET_SUBTARGET=' .config | cut -d'"' -f2)
DEVICE_PROFILE=$(grep '^CONFIG_TARGET_PROFILE=' .config | cut -d'"' -f2)
echo "DEVICE_TARGET=$DEVICE_TARGET" >> $GITHUB_ENV
echo "DEVICE_SUBTARGET=$DEVICE_SUBTARGET" >> $GITHUB_ENV
echo "DEVICE_PROFILE=$DEVICE_PROFILE" >> $GITHUB_ENV
echo "=== selected target ==="
grep -E "CONFIG_TARGET_(BOARD|SUBTARGET|PROFILE)=" .config || true
echo "=== selected ipq60xx devices ==="
grep -E "CONFIG_TARGET_DEVICE_qualcommax_ipq60xx_DEVICE_.*=y" .config || true
echo "=== available xiaomi/redmi device defines ==="
grep -n -B5 -A20 "define Device/.*\(xiaomi\|redmi\|ax1800\)" target/linux/qualcommax/image/ipq60xx.mk || true
echo "=== written config version ==="
grep CONFIG_VERSION_ .config || true
echo "=== CMA state ==="; grep -E '^CONFIG_CMA=|^CONFIG_DMA_CMA=' .config || echo "CMA NOT ENABLED"
# - name: Force 256M Memory Profile & Disable NSS
# run: |
# cd $OPENWRT_PATH
# # Force memory profiles
# echo "CONFIG_ATH11K_MEM_PROFILE_256M=y" >> .config
# echo "CONFIG_IPQ_MEM_PROFILE_256=y" >> .config
# # Disable features
# echo "# CONFIG_NSS_DRV_WIFIOFFLOAD_ENABLE is not set" >> .config
# echo "# CONFIG_MAC80211_NSS_SUPPORT is not set" >> .config
# echo "# CONFIG_ATH11K_NSS_SUPPORT is not set" >> .config
# echo "# CONFIG_PACKAGE_kmod-qca-nss-drv-wifioffload is not set" >> .config
# make defconfig
# # Brutal safety net: overwrite them if dependencies forced them back on
# sed -i 's/CONFIG_NSS_DRV_WIFIOFFLOAD_ENABLE=y/# CONFIG_NSS_DRV_WIFIOFFLOAD_ENABLE is not set/g' .config
# sed -i 's/CONFIG_MAC80211_NSS_SUPPORT=y/# CONFIG_MAC80211_NSS_SUPPORT is not set/g' .config
# sed -i 's/CONFIG_ATH11K_NSS_SUPPORT=y/# CONFIG_ATH11K_NSS_SUPPORT is not set/g' .config
# - name: Brutalize NSS Out of Config
# run: |
# cd $OPENWRT_PATH
# echo "=== Pre-Brutalize Config State ==="
# grep -E 'NSS|ATH11K_MEM_PROFILE|IPQ_MEM_PROFILE' .config || true
# sed -i 's/^CONFIG_NSS_DRV_WIFIOFFLOAD_ENABLE=y$/# CONFIG_NSS_DRV_WIFIOFFLOAD_ENABLE is not set/' .config
# sed -i 's/^CONFIG_MAC80211_NSS_SUPPORT=y$/# CONFIG_MAC80211_NSS_SUPPORT is not set/' .config
# sed -i 's/^CONFIG_ATH11K_NSS_SUPPORT=y$/# CONFIG_ATH11K_NSS_SUPPORT is not set/' .config
# sed -i 's/^CONFIG_PACKAGE_kmod-qca-nss-drv-wifioffload=y$/# CONFIG_PACKAGE_kmod-qca-nss-drv-wifioffload is not set/' .config
# sed -i 's/^CONFIG_PACKAGE_qca-nss-clients=y$/# CONFIG_PACKAGE_qca-nss-clients is not set/' .config
# sed -i 's/^CONFIG_PACKAGE_kmod-qca-nss-crypto=y$/# CONFIG_PACKAGE_kmod-qca-nss-crypto is not set/' .config
# echo "=== Post-Brutalize Config State ==="
# grep -E 'NSS|ATH11K_MEM_PROFILE|IPQ_MEM_PROFILE' .config || true
# - name: Patch Makefiles to remove NSS defaults
# run: |
# cd $OPENWRT_PATH
# # Prevent ath11k from forcing NSS on
# sed -i 's/select ATH11K_NSS_SUPPORT/# select ATH11K_NSS_SUPPORT/g' target/linux/qualcommax/Makefile
# sed -i 's/select MAC80211_NSS_SUPPORT/# select MAC80211_NSS_SUPPORT/g' package/kernel/mac80211/Makefile
# # Prevent the router profile from demanding NSS offload
# sed -i 's/kmod-qca-nss-drv-wifioffload//g' target/linux/qualcommax/image/ipq60xx.mk
# sed -i 's/qca-nss-clients//g' target/linux/qualcommax/image/ipq60xx.mk
- name: Validate RM1800 build configuration
run: |
cd "$OPENWRT_PATH"
echo "=== Available Xiaomi/Redmi Device Profiles ==="
grep -o "CONFIG_TARGET_DEVICE_qualcommax_ipq60xx_DEVICE_[a-zA-Z0-9_]*" .config || true
cat target/linux/qualcommax/image/ipq60xx.mk | grep -iE 'xiaomi|redmi|ax1800|rm1800' || true
# Temporarily bypass the hard failure so you can see the logs
exit 0
# - name: Validate RM1800 build configuration
# run: |
# cd "$OPENWRT_PATH"
# require_enabled() {
# grep -q "^$1=y$" .config || {
# echo "::error::$1 must be enabled"
# exit 1
# }
# }
# require_disabled() {
# if grep -q "^$1=y$" .config; then
# echo "::error::$1 must be disabled"
# exit 1
# fi
# }
# require_enabled CONFIG_TARGET_DEVICE_qualcommax_ipq60xx_DEVICE_xiaomi_ax1800
# require_enabled CONFIG_IPQ_MEM_PROFILE_256
# require_enabled CONFIG_ATH11K_MEM_PROFILE_256M
# require_enabled CONFIG_NSS_MEM_PROFILE_LOW
# require_disabled CONFIG_IPQ_MEM_PROFILE_512
# require_disabled CONFIG_IPQ_MEM_PROFILE_1024
# require_disabled CONFIG_ATH11K_MEM_PROFILE_512M
# require_disabled CONFIG_ATH11K_MEM_PROFILE_1G
# require_disabled CONFIG_ATH11K_NSS_SUPPORT
# require_disabled CONFIG_NSS_MEM_PROFILE_MEDIUM
# require_disabled CONFIG_NSS_DRV_WIFIOFFLOAD_ENABLE
# require_disabled CONFIG_NSS_DRV_WIFI_MESH_ENABLE
# require_disabled CONFIG_PACKAGE_MAC80211_NSS_SUPPORT
# require_disabled CONFIG_PACKAGE_kmod-qca-nss-drv-wifi-meshmgr
# echo "=== Validated RM1800 configuration ==="
# grep -E \
# 'TARGET_DEVICE.*xiaomi_ax1800|IPQ_MEM_PROFILE|ATH11K_MEM_PROFILE|ATH11K_NSS|NSS_MEM_PROFILE|WIFIOFFLOAD|WIFI_MESH|MAC80211_NSS' \
# .config
# - name: Validate RM1800 memory profile
# run: |
# cd "$OPENWRT_PATH"
# grep -E 'IPQ_MEM_PROFILE|ATH11K_MEM_PROFILE|NSS.*WIFI|MAC80211_NSS' .config || true
# grep -q '^CONFIG_IPQ_MEM_PROFILE_256=y$' .config
# grep -q '^CONFIG_ATH11K_MEM_PROFILE_256M=y$' .config
# ! grep -q '^CONFIG_ATH11K_NSS_SUPPORT=y$' .config
# ! grep -q '^CONFIG_NSS_DRV_WIFIOFFLOAD_ENABLE=y$' .config
# ! grep -q '^CONFIG_PACKAGE_MAC80211_NSS_SUPPORT=y$' .config
- name: Cache Toolchain(缓存工具链)
if: env.CACHE_TOOLCHAIN == 'true'
uses: HiGarfield/cachewrtbuild@main
with:
ccache: false
mixkey: ${{ env.SOURCE_REPO }}-${{ env.REPO_BRANCH }}-${{ env.DEVICE_TARGET }}-${{ env.DEVICE_SUBTARGET }}
prefix: ${{ env.OPENWRT_PATH }}
- name: Compile Firmware(开始编译固件)
id: compile
run: |
cd $OPENWRT_PATH
echo -e "$(nproc) thread compile"
make -j$(nproc) || make -j1 || make -j1 V=s
echo "status=success" >> $GITHUB_OUTPUT
echo "DATE=$(date +"%Y-%m-%d %H:%M:%S")" >> $GITHUB_ENV
echo "FILE_DATE=$(date +"%Y.%m.%d")" >> $GITHUB_ENV
- name: Check Space Usage(检查空间使用情况)
if: (!cancelled())
run: df -hT
- name: Upload Bin Directory(上传固件)
if: steps.compile.outputs.status == 'success' && env.UPLOAD_BIN_DIR == 'true'
uses: actions/upload-artifact@main
with:
name: ${{ env.SOURCE_REPO }}-bin-${{ env.DEVICE_TARGET }}-${{ env.DEVICE_SUBTARGET }}-${{ env.FILE_DATE }}
path: ${{ env.OPENWRT_PATH }}/bin
- name: Organize Files(整理文件)
if: steps.compile.outputs.status == 'success'
run: |
cd $OPENWRT_PATH/bin/targets/*/*
cat sha256sums
cp $OPENWRT_PATH/.config build.config
# --- rename firmware to include variant + repo ---
TAG="${SOURCE_REPO}-${VARIANT_LABEL}" # e.g. immortalwrt-Wi-Fi
SAFE_TAG="$(printf '%s' "$TAG" | tr -d '\r\n' | sed 's/[^A-Za-z0-9._-]/-/g')"
for f in *xiaomi_ax1800*factory*.ubi *xiaomi_ax1800*sysupgrade*.bin; do
[ -e "$f" ] || continue
# insert the tag right before the file extension
base="${f%.*}"; ext="${f##*.}"
mv "$f" "${base}-${SAFE_TAG}.${ext}"
echo "renamed -> ${base}-${SAFE_TAG}.${ext}"
done
ls -la *.ubi *.bin 2>/dev/null
mkdir -p packages
find "$OPENWRT_PATH/bin/packages" -name "*.ipk" -exec mv {} packages/ \; || true
tar -zcf Packages.tar.gz packages
rm -rf packages feeds.buildinfo version.buildinfo
echo "FIRMWARE_PATH=$PWD" >> $GITHUB_ENV
- name: Upload Firmware To Artifact(将固件上传到Artifact)
if: steps.compile.outputs.status == 'success' && env.FIRMWARE_RELEASE != 'true'
uses: actions/upload-artifact@main
with:
name: ${{ env.SOURCE_REPO }}-firmware-${{ env.DEVICE_TARGET }}-${{ env.DEVICE_SUBTARGET }}-${{ env.FILE_DATE }}
path: ${{ env.FIRMWARE_PATH }}
- name: Upload Firmware To Release(发布固件)
if: steps.compile.outputs.status == 'success' && env.FIRMWARE_RELEASE == 'true'
uses: ncipollo/release-action@v1
with:
name: R${{ env.DATE }} for ${{ env.FIRMWARE_TAG }}
allowUpdates: true
tag: ${{ env.FIRMWARE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: ${{ env.FIRMWARE_PATH }}/*
body: |
**This is OpenWrt Firmware for ${{ env.FIRMWARE_TAG }}**
### 📒 Firmware info
**${{ env.CONFIG_DESCRIPTION }}**
- ⚙️ Config: `${{ inputs.config_name }}`
- 🛜 Target: `${{ env.DEVICE_TARGET }}/${{ env.DEVICE_SUBTARGET }}`
- ⚽ Source: ${{ env.REPO_URL }}
- 💝 Branch: `${{ env.REPO_BRANCH }}`
- 🛠️ Built: `${{ env.DATE }}`
- 💻 Platform: ${{ env.FIRMWARE_TAG }}
- 🌐 Default address: 192.168.1.1
- 🔑 Default password: password
### 🧊 Firmware version
- Last source update before this build:
- ${{ env.VERSION_INFO }}
- name: Summary
run: |
{
echo "## Build ${{ inputs.config_name }}"
echo "- Source: ${REPO_URL}@${REPO_BRANCH}"
echo "- cma= in DTS: $(grep -o 'cma=[0-9]*M' target/linux/qualcommax/dts/ipq6000-ax1800.dts || echo MISSING)"
echo "- SHA256:"; echo '```'; cat "$FIRMWARE_PATH/sha256sums" 2>/dev/null | grep -E 'ubi|bin'; echo '```'
} >> "$GITHUB_STEP_SUMMARY"