Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4828087b80 | ||
|
|
8f1ae7f6a4 | ||
|
|
cb10855b4a |
@@ -1,10 +1,8 @@
|
|||||||
Limited free support is only available using the online resources of the
|
Limited free support is only available using the online resources of the
|
||||||
project on GitHub, and Discord, see <https://github.com/kernelkit/infix>:
|
project on GitHub, and Discord, see <https://github.com/kernelkit>:
|
||||||
|
|
||||||
:house: <https://www.kernelkit.org> — home page, blog, news, howto's and tutorials
|
|
||||||
:package: <https://github.com/kernelkit/infix/releases/latest> — latest release
|
|
||||||
:speech_balloon: <https://github.com/orgs/kernelkit/discussions>
|
:speech_balloon: <https://github.com/orgs/kernelkit/discussions>
|
||||||
:bug: <https://github.com/kernelkit/infix/issues>
|
:bug: <https://github.com/kernelkit/infix/issues>
|
||||||
|
|
||||||
Support contracts, development of new features, fast-tracking of reviews
|
Support contracts, development of new features, fast-tracking of reviews
|
||||||
and contributions, customer branding of Infix, and even customer specific
|
and contributions, customer branding of Infix, and even customer specific
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ jobs:
|
|||||||
name: Add issue to project Infix&co
|
name: Add issue to project Infix&co
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/add-to-project@v2
|
- uses: actions/add-to-project@v1.0.2
|
||||||
with:
|
with:
|
||||||
project-url: https://github.com/orgs/kernelkit/projects/3
|
project-url: https://github.com/orgs/kernelkit/projects/3
|
||||||
github-token: ${{ secrets.ADD_TO_PROJECT }}
|
github-token: ${{ secrets.ADD_TO_PROJECT }}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Validate release version format
|
- name: Validate release version format
|
||||||
id: validate
|
id: validate
|
||||||
@@ -170,7 +170,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Upload signed artifacts
|
- name: Upload signed artifacts
|
||||||
uses: actions/upload-artifact@v7
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: signed-infix-${{ steps.validate.outputs.file_version }}
|
name: signed-infix-${{ steps.validate.outputs.file_version }}
|
||||||
path: ${{ steps.download_signed.outputs.signed_filename }}
|
path: ${{ steps.download_signed.outputs.signed_filename }}
|
||||||
@@ -212,4 +212,4 @@ jobs:
|
|||||||
---
|
---
|
||||||
|
|
||||||
**Next Steps:** The signed release can now be distributed with cryptographic verification of authenticity.
|
**Next Steps:** The signed release can now be distributed with cryptographic verification of authenticity.
|
||||||
EOF
|
EOF
|
||||||
@@ -19,17 +19,10 @@ jobs:
|
|||||||
- aarch64_qemu_boot
|
- aarch64_qemu_boot
|
||||||
- bpi_r3_sd_boot
|
- bpi_r3_sd_boot
|
||||||
- bpi_r3_emmc_boot
|
- bpi_r3_emmc_boot
|
||||||
- bpi_r4_sd_boot
|
|
||||||
- bpi_r4_emmc_boot
|
|
||||||
- bpi_r64_sd_boot
|
|
||||||
- bpi_r64_emmc_boot
|
|
||||||
- cn9130_crb_boot
|
- cn9130_crb_boot
|
||||||
- fireant_boot
|
- fireant_boot
|
||||||
- nanopi_r2s_boot
|
- nanopi_r2s_boot
|
||||||
- rpi2_boot
|
|
||||||
- rpi64_boot
|
- rpi64_boot
|
||||||
- sama7g54_ek_emmc_boot
|
|
||||||
- sama7g54_ek_sd_boot
|
|
||||||
env:
|
env:
|
||||||
MAKEFLAGS: -j5
|
MAKEFLAGS: -j5
|
||||||
steps:
|
steps:
|
||||||
@@ -41,7 +34,7 @@ jobs:
|
|||||||
ls -la ./
|
ls -la ./
|
||||||
|
|
||||||
- name: Checkout infix repo
|
- name: Checkout infix repo
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.branch || github.ref }}
|
ref: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.branch || github.ref }}
|
||||||
clean: true
|
clean: true
|
||||||
@@ -70,11 +63,24 @@ jobs:
|
|||||||
|
|
||||||
echo "Building ${defconfig}_defconfig, version ${version}-${rev}, artifact ${archive} ..."
|
echo "Building ${defconfig}_defconfig, version ${version}-${rev}, artifact ${archive} ..."
|
||||||
|
|
||||||
- uses: kernelkit/actions/cache-restore@v1
|
- name: Restore Cache of dl/
|
||||||
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
target: ${{ matrix.defconfig }}
|
path: dl/
|
||||||
dl-prefix: dl-boot
|
key: dl-boot-${{ hashFiles('.git/modules/buildroot/HEAD', 'configs/*', 'package/*/*.hash') }}
|
||||||
ccache-prefix: ccache-boot
|
restore-keys: |
|
||||||
|
dl-boot-
|
||||||
|
dl-
|
||||||
|
|
||||||
|
- name: Restore Cache of .ccache/
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: .ccache/
|
||||||
|
key: ccache-boot-${{ matrix.defconfig }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
|
||||||
|
restore-keys: |
|
||||||
|
ccache-boot-${{ matrix.defconfig }}-
|
||||||
|
ccache-boot-
|
||||||
|
ccache-
|
||||||
|
|
||||||
- name: Configure ${{ matrix.defconfig }}_defconfig
|
- name: Configure ${{ matrix.defconfig }}_defconfig
|
||||||
run: |
|
run: |
|
||||||
@@ -96,7 +102,7 @@ jobs:
|
|||||||
mv images ${{ steps.vars.outputs.dirname }}
|
mv images ${{ steps.vars.outputs.dirname }}
|
||||||
tar cfz ${{ steps.vars.outputs.archive }} ${{ steps.vars.outputs.dirname }}/
|
tar cfz ${{ steps.vars.outputs.archive }} ${{ steps.vars.outputs.dirname }}/
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v7
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
path: output/${{ steps.vars.outputs.archive }}
|
path: output/${{ steps.vars.outputs.archive }}
|
||||||
name: artifact-${{ matrix.defconfig }}
|
name: artifact-${{ matrix.defconfig }}
|
||||||
@@ -108,7 +114,7 @@ jobs:
|
|||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/download-artifact@v8
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
pattern: "artifact-*"
|
pattern: "artifact-*"
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
name: Create Images
|
name: Create SD Card & eMMC Images
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
@@ -8,23 +8,22 @@ on:
|
|||||||
type: choice
|
type: choice
|
||||||
required: true
|
required: true
|
||||||
options:
|
options:
|
||||||
- raspberrypi-rpi2
|
|
||||||
- raspberrypi-rpi64
|
- raspberrypi-rpi64
|
||||||
- bananapi-bpi-r3
|
- bananapi-bpi-r3
|
||||||
- bananapi-bpi-r4
|
|
||||||
- bananapi-bpi-r64
|
|
||||||
- friendlyarm-nanopi-r2s
|
- friendlyarm-nanopi-r2s
|
||||||
- microchip-sama7g54-ek
|
|
||||||
- acer-connect-vero-w
|
|
||||||
default: 'raspberrypi-rpi64'
|
default: 'raspberrypi-rpi64'
|
||||||
|
use_latest_release:
|
||||||
|
description: 'Use latest release artifacts instead of workflow artifacts'
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
create-image:
|
create-image:
|
||||||
name: Create images for ${{ inputs.board }}
|
name: Create SD Card Image for ${{ inputs.board }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
clean: true
|
clean: true
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
@@ -51,171 +50,268 @@ jobs:
|
|||||||
mkdir -p output/images
|
mkdir -p output/images
|
||||||
mkdir -p build
|
mkdir -p build
|
||||||
|
|
||||||
- name: Set bootloaders and targets based on board
|
- name: Set bootloader and target based on board
|
||||||
run: |
|
run: |
|
||||||
arch=
|
|
||||||
targets=
|
|
||||||
bootloader_sdcard=
|
|
||||||
bootloader_emmc=
|
|
||||||
|
|
||||||
case "${{ inputs.board }}" in
|
case "${{ inputs.board }}" in
|
||||||
raspberrypi-rpi2)
|
|
||||||
arch=arm
|
|
||||||
targets="sdcard"
|
|
||||||
bootloader_sdcard=rpi2-boot
|
|
||||||
;;
|
|
||||||
raspberrypi-rpi64)
|
raspberrypi-rpi64)
|
||||||
arch=aarch64
|
echo "BOOTLOADER=rpi64_boot" >> $GITHUB_ENV
|
||||||
targets="sdcard"
|
echo "TARGET=aarch64" >> $GITHUB_ENV
|
||||||
bootloader_sdcard=rpi64-boot
|
echo "BUILD_EMMC=false" >> $GITHUB_ENV
|
||||||
;;
|
;;
|
||||||
bananapi-bpi-r3)
|
bananapi-bpi-r3)
|
||||||
arch=aarch64
|
echo "BOOTLOADER_SD=bpi_r3_sd_boot" >> $GITHUB_ENV
|
||||||
targets="sdcard emmc"
|
echo "BOOTLOADER_EMMC=bpi_r3_emmc_boot" >> $GITHUB_ENV
|
||||||
bootloader_sdcard=bpi-r3-sd-boot
|
echo "TARGET=aarch64" >> $GITHUB_ENV
|
||||||
bootloader_emmc=bpi-r3-emmc-boot
|
echo "BUILD_EMMC=true" >> $GITHUB_ENV
|
||||||
;;
|
|
||||||
bananapi-bpi-r4)
|
|
||||||
arch=aarch64
|
|
||||||
targets="sdcard emmc"
|
|
||||||
bootloader_sdcard=bpi-r4-sd-boot
|
|
||||||
bootloader_emmc=bpi-r4-emmc-boot
|
|
||||||
;;
|
|
||||||
bananapi-bpi-r64)
|
|
||||||
arch=aarch64
|
|
||||||
targets="sdcard emmc"
|
|
||||||
bootloader_sdcard=bpi-r64-sd-boot
|
|
||||||
bootloader_emmc=bpi-r64-emmc-boot
|
|
||||||
;;
|
|
||||||
acer-connect-vero-w)
|
|
||||||
arch=aarch64
|
|
||||||
targets="emmc"
|
|
||||||
bootloader_emmc=bpi-r3-emmc-boot
|
|
||||||
;;
|
;;
|
||||||
friendlyarm-nanopi-r2s)
|
friendlyarm-nanopi-r2s)
|
||||||
arch=aarch64
|
echo "BOOTLOADER=nanopi_r2s_boot" >> $GITHUB_ENV
|
||||||
targets="sdcard"
|
echo "TARGET=aarch64" >> $GITHUB_ENV
|
||||||
bootloader_sdcard=nanopi-r2s-boot
|
echo "BUILD_EMMC=false" >> $GITHUB_ENV
|
||||||
;;
|
|
||||||
microchip-sama7g54-ek)
|
|
||||||
arch=arm
|
|
||||||
targets="sdcard emmc"
|
|
||||||
bootloader_sdcard=sama7g54-ek-sd-boot
|
|
||||||
bootloader_emmc=sama7g54-ek-emmc-boot
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Error: Unknown board ${{ inputs.board }}"
|
echo "Error: Unknown board ${{ inputs.board }}"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
echo "Target: $TARGET for board: ${{ inputs.board }}"
|
||||||
echo "ARCH=$arch" >> $GITHUB_ENV
|
if [ "$BUILD_EMMC" = "true" ]; then
|
||||||
echo "TARGETS=$targets" >> $GITHUB_ENV
|
echo "Building both SD and eMMC images"
|
||||||
[ -n "$bootloader_sdcard" ] && echo "BOOTLOADER_SDCARD=$bootloader_sdcard" >> $GITHUB_ENV
|
echo "SD Bootloader: $BOOTLOADER_SD"
|
||||||
[ -n "$bootloader_emmc" ] && echo "BOOTLOADER_EMMC=$bootloader_emmc" >> $GITHUB_ENV
|
echo "eMMC Bootloader: $BOOTLOADER_EMMC"
|
||||||
|
else
|
||||||
echo "Arch: $arch for board: ${{ inputs.board }}"
|
echo "Building SD image only"
|
||||||
echo "Targets: $targets"
|
echo "Bootloader: $BOOTLOADER"
|
||||||
[ -n "$bootloader_sdcard" ] && echo "SD bootloader: $bootloader_sdcard"
|
fi
|
||||||
[ -n "$bootloader_emmc" ] && echo "eMMC bootloader: $bootloader_emmc"
|
|
||||||
|
|
||||||
- name: Download bootloader artifacts
|
- name: Download bootloader artifacts
|
||||||
|
if: ${{ !inputs.use_latest_release }}
|
||||||
run: |
|
run: |
|
||||||
for target in $TARGETS; do
|
# Download from latest bootloader build workflow on main branch
|
||||||
upper=$(printf '%s' "$target" | tr '[:lower:]' '[:upper:]')
|
gh run list --workflow=build-boot.yml --branch=main --limit=1 --status=success --json databaseId --jq '.[0].databaseId' > latest_boot_run_id
|
||||||
bootloader_var="BOOTLOADER_${upper}"
|
BOOT_RUN_ID=$(cat latest_boot_run_id)
|
||||||
bootloader="${!bootloader_var}"
|
|
||||||
temp_dir="temp_bootloader_${target}"
|
|
||||||
out_dir="output_${target}/images"
|
|
||||||
|
|
||||||
echo "Downloading ${target} bootloader: ${bootloader}"
|
if [ "$BUILD_EMMC" = "true" ]; then
|
||||||
mkdir -p "$out_dir"
|
# Download both SD and eMMC bootloaders for boards that support both
|
||||||
gh release download latest-boot --pattern "*${bootloader}*" --dir "$temp_dir/"
|
echo "Downloading SD bootloader: ${BOOTLOADER_SD}"
|
||||||
tar -xzf "$temp_dir"/*.tar.gz --strip-components=1 -C "$out_dir/"
|
gh run download ${BOOT_RUN_ID} --name artifact-${BOOTLOADER_SD} --dir temp_bootloader_sd/
|
||||||
rm -rf "$temp_dir"
|
mkdir -p output_sd/images
|
||||||
|
cd temp_bootloader_sd/
|
||||||
|
tar -xzf *.tar.gz --strip-components=1 -C ../output_sd/images/
|
||||||
|
cd ../
|
||||||
|
rm -rf temp_bootloader_sd/
|
||||||
|
|
||||||
echo "${target} bootloader files:"
|
echo "Downloading eMMC bootloader: ${BOOTLOADER_EMMC}"
|
||||||
ls -la "$out_dir/"
|
gh run download ${BOOT_RUN_ID} --name artifact-${BOOTLOADER_EMMC} --dir temp_bootloader_emmc/
|
||||||
done
|
mkdir -p output_emmc/images
|
||||||
|
cd temp_bootloader_emmc/
|
||||||
|
tar -xzf *.tar.gz --strip-components=1 -C ../output_emmc/images/
|
||||||
|
cd ../
|
||||||
|
rm -rf temp_bootloader_emmc/
|
||||||
|
|
||||||
|
echo "SD bootloader files:"
|
||||||
|
ls -la output_sd/images/
|
||||||
|
echo "eMMC bootloader files:"
|
||||||
|
ls -la output_emmc/images/
|
||||||
|
else
|
||||||
|
# Single bootloader for boards that only support SD
|
||||||
|
gh run download ${BOOT_RUN_ID} --name artifact-${BOOTLOADER} --dir temp_bootloader/
|
||||||
|
|
||||||
|
# Extract bootloader directly to output/images
|
||||||
|
cd temp_bootloader/
|
||||||
|
tar -xzf *.tar.gz --strip-components=1 -C ../output/images/
|
||||||
|
cd ../
|
||||||
|
rm -rf temp_bootloader/
|
||||||
|
|
||||||
|
echo "Bootloader files extracted to output/images:"
|
||||||
|
ls -la output/images/
|
||||||
|
fi
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Download Infix artifacts
|
- name: Download Infix artifacts
|
||||||
|
if: ${{ !inputs.use_latest_release }}
|
||||||
run: |
|
run: |
|
||||||
|
# Download from latest Kernelkit Trigger workflow for main branch
|
||||||
gh run list --workflow=164295764 --branch=main --limit=1 --status=success --json databaseId --jq '.[0].databaseId' > latest_infix_run_id
|
gh run list --workflow=164295764 --branch=main --limit=1 --status=success --json databaseId --jq '.[0].databaseId' > latest_infix_run_id
|
||||||
INFIX_RUN_ID=$(cat latest_infix_run_id)
|
INFIX_RUN_ID=$(cat latest_infix_run_id)
|
||||||
|
|
||||||
gh run download ${INFIX_RUN_ID} --name artifact-${ARCH} --dir temp_infix/
|
if [ "$BUILD_EMMC" = "true" ]; then
|
||||||
|
# Copy Infix artifacts to both SD and eMMC output directories
|
||||||
|
gh run download ${INFIX_RUN_ID} --name artifact-${TARGET} --dir temp_infix/
|
||||||
|
|
||||||
for target in $TARGETS; do
|
cd temp_infix/
|
||||||
out_dir="output_${target}/images"
|
tar -xzf *.tar.gz --strip-components=1 -C ../output_sd/images/
|
||||||
mkdir -p "$out_dir"
|
tar -xzf *.tar.gz --strip-components=1 -C ../output_emmc/images/
|
||||||
tar -xzf temp_infix/*.tar.gz --strip-components=1 -C "$out_dir/"
|
cd ../
|
||||||
|
rm -rf temp_infix/
|
||||||
|
|
||||||
echo "Infix files extracted to ${out_dir}:"
|
echo "Infix files extracted to output_sd/images:"
|
||||||
ls -la "$out_dir/"
|
ls -la output_sd/images/
|
||||||
done
|
echo "Infix files extracted to output_emmc/images:"
|
||||||
|
ls -la output_emmc/images/
|
||||||
|
else
|
||||||
|
# Single output directory for SD-only boards
|
||||||
|
gh run download ${INFIX_RUN_ID} --name artifact-${TARGET} --dir temp_infix/
|
||||||
|
|
||||||
rm -rf temp_infix/
|
# Extract Infix directly to output/images
|
||||||
|
cd temp_infix/
|
||||||
|
tar -xzf *.tar.gz --strip-components=1 -C ../output/images/
|
||||||
|
cd ../
|
||||||
|
rm -rf temp_infix/
|
||||||
|
|
||||||
|
echo "Infix files extracted to output/images:"
|
||||||
|
ls -la output/images/
|
||||||
|
fi
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Download from latest releases
|
||||||
|
if: ${{ inputs.use_latest_release }}
|
||||||
|
run: |
|
||||||
|
if [ "$BUILD_EMMC" = "true" ]; then
|
||||||
|
# Download both SD and eMMC bootloaders
|
||||||
|
gh release download latest-boot --pattern "*${BOOTLOADER_SD}*" --dir temp_bootloader_sd/
|
||||||
|
mkdir -p output_sd/images
|
||||||
|
cd temp_bootloader_sd/
|
||||||
|
tar -xzf *.tar.gz --strip-components=1 -C ../output_sd/images/
|
||||||
|
cd ../
|
||||||
|
rm -rf temp_bootloader_sd/
|
||||||
|
|
||||||
|
gh release download latest-boot --pattern "*${BOOTLOADER_EMMC}*" --dir temp_bootloader_emmc/
|
||||||
|
mkdir -p output_emmc/images
|
||||||
|
cd temp_bootloader_emmc/
|
||||||
|
tar -xzf *.tar.gz --strip-components=1 -C ../output_emmc/images/
|
||||||
|
cd ../
|
||||||
|
rm -rf temp_bootloader_emmc/
|
||||||
|
|
||||||
|
# Download Infix once and extract to both directories
|
||||||
|
gh release download latest --pattern "*${TARGET}*" --dir temp_infix/
|
||||||
|
cd temp_infix/
|
||||||
|
tar -xzf *.tar.gz --strip-components=1 -C ../output_sd/images/
|
||||||
|
tar -xzf *.tar.gz --strip-components=1 -C ../output_emmc/images/
|
||||||
|
cd ../
|
||||||
|
rm -rf temp_infix/
|
||||||
|
|
||||||
|
echo "SD files extracted to output_sd/images:"
|
||||||
|
ls -la output_sd/images/
|
||||||
|
echo "eMMC files extracted to output_emmc/images:"
|
||||||
|
ls -la output_emmc/images/
|
||||||
|
else
|
||||||
|
# Download latest bootloader release
|
||||||
|
gh release download latest-boot --pattern "*${BOOTLOADER}*" --dir temp_bootloader/
|
||||||
|
cd temp_bootloader/
|
||||||
|
tar -xzf *.tar.gz --strip-components=1 -C ../output/images/
|
||||||
|
cd ../
|
||||||
|
rm -rf temp_bootloader/
|
||||||
|
|
||||||
|
# Download latest Infix release
|
||||||
|
gh release download latest --pattern "*${TARGET}*" --dir temp_infix/
|
||||||
|
cd temp_infix/
|
||||||
|
tar -xzf *.tar.gz --strip-components=1 -C ../output/images/
|
||||||
|
cd ../
|
||||||
|
rm -rf temp_infix/
|
||||||
|
|
||||||
|
echo "All files extracted to output/images:"
|
||||||
|
ls -la output/images/
|
||||||
|
fi
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Verify extracted files
|
- name: Verify extracted files
|
||||||
run: |
|
run: |
|
||||||
for target in $TARGETS; do
|
if [ "$BUILD_EMMC" = "true" ]; then
|
||||||
echo "Files available for ${target} image:"
|
echo "Files available for SD image:"
|
||||||
ls -la "output_${target}/images/"
|
ls -la output_sd/images/
|
||||||
echo ""
|
echo ""
|
||||||
done
|
echo "Files available for eMMC image:"
|
||||||
|
ls -la output_emmc/images/
|
||||||
|
else
|
||||||
|
echo "Files available for mkimage.sh:"
|
||||||
|
ls -la output/images/
|
||||||
|
echo ""
|
||||||
|
echo "File types:"
|
||||||
|
file output/images/* || true
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Create images
|
- name: Create SD card image
|
||||||
run: |
|
run: |
|
||||||
|
if [ "$BUILD_EMMC" = "true" ]; then
|
||||||
|
export BINARIES_DIR=$PWD/output_sd/images
|
||||||
|
export BUILD_DIR=$PWD/build
|
||||||
|
export BR2_EXTERNAL_INFIX_PATH=$PWD
|
||||||
|
export RELEASE=""
|
||||||
|
export INFIX_ID="infix"
|
||||||
|
./utils/mkimage.sh -t sdcard ${{ inputs.board }}
|
||||||
|
else
|
||||||
|
export BINARIES_DIR=$PWD/output/images
|
||||||
|
export BUILD_DIR=$PWD/build
|
||||||
|
export BR2_EXTERNAL_INFIX_PATH=$PWD
|
||||||
|
export RELEASE=""
|
||||||
|
export INFIX_ID="infix"
|
||||||
|
./utils/mkimage.sh ${{ inputs.board }}
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Create eMMC image
|
||||||
|
if: ${{ env.BUILD_EMMC == 'true' }}
|
||||||
|
run: |
|
||||||
|
export BINARIES_DIR=$PWD/output_emmc/images
|
||||||
export BUILD_DIR=$PWD/build
|
export BUILD_DIR=$PWD/build
|
||||||
export BR2_EXTERNAL_INFIX_PATH=$PWD
|
export BR2_EXTERNAL_INFIX_PATH=$PWD
|
||||||
export RELEASE=""
|
export RELEASE=""
|
||||||
export INFIX_ID="infix"
|
export INFIX_ID="infix"
|
||||||
|
./utils/mkimage.sh -t emmc ${{ inputs.board }}
|
||||||
for target in $TARGETS; do
|
|
||||||
export BINARIES_DIR=$PWD/output_${target}/images
|
|
||||||
./utils/mkimage.sh -t "$target" ${{ inputs.board }}
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Verify created images
|
- name: Verify created images
|
||||||
run: |
|
run: |
|
||||||
mkdir -p output/images
|
if [ "$BUILD_EMMC" = "true" ]; then
|
||||||
|
echo "SD card image:"
|
||||||
for target in $TARGETS; do
|
ls -lh output_sd/images/*-sdcard.img* 2>/dev/null || true
|
||||||
src_dir="output_${target}/images"
|
if ls output_sd/images/*-sdcard.img 1> /dev/null 2>&1; then
|
||||||
found=false
|
for img in output_sd/images/*-sdcard.img; do
|
||||||
|
echo "- $(basename $img)"
|
||||||
echo "${target} image:"
|
file "$img"
|
||||||
ls -lh "$src_dir"/*-"$target".img* 2>/dev/null || true
|
fdisk -l "$img" 2>/dev/null | head -20
|
||||||
|
done
|
||||||
for img in "$src_dir"/*-"$target".img; do
|
|
||||||
[ -e "$img" ] || continue
|
|
||||||
found=true
|
|
||||||
echo "- $(basename "$img")"
|
|
||||||
file "$img"
|
|
||||||
fdisk -l "$img" 2>/dev/null || true
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "$found" = false ]; then
|
|
||||||
echo "No ${target} image found matching pattern: *-${target}.img"
|
|
||||||
echo "Available files in ${src_dir}:"
|
|
||||||
ls -la "$src_dir/"
|
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for artifact in "$src_dir"/*-"$target".img*; do
|
|
||||||
[ -e "$artifact" ] || continue
|
|
||||||
cp "$artifact" output/images/
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
done
|
echo "eMMC image:"
|
||||||
|
ls -lh output_emmc/images/*-emmc.img* 2>/dev/null || true
|
||||||
|
if ls output_emmc/images/*-emmc.img 1> /dev/null 2>&1; then
|
||||||
|
for img in output_emmc/images/*-emmc.img; do
|
||||||
|
echo "- $(basename $img)"
|
||||||
|
file "$img"
|
||||||
|
fdisk -l "$img" 2>/dev/null | head -20
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Copy both images to output/images for artifact upload
|
||||||
|
mkdir -p output/images
|
||||||
|
cp output_sd/images/*-sdcard.img* output/images/ 2>/dev/null || true
|
||||||
|
cp output_emmc/images/*-emmc.img* output/images/ 2>/dev/null || true
|
||||||
|
else
|
||||||
|
echo "Contents of output/images after mkimage.sh:"
|
||||||
|
ls -lh output/images/
|
||||||
|
|
||||||
|
# Look for SD card image with pattern: *-sdcard.img
|
||||||
|
if ls output/images/*-sdcard.img 1> /dev/null 2>&1; then
|
||||||
|
echo "Found SD card image(s):"
|
||||||
|
for img in output/images/*-sdcard.img; do
|
||||||
|
echo "- $(basename $img)"
|
||||||
|
file "$img"
|
||||||
|
fdisk -l "$img" 2>/dev/null || true
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "No SD card image found matching pattern: *-sdcard.img"
|
||||||
|
echo "Available files:"
|
||||||
|
ls -la output/images/
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Upload images as artifacts
|
- name: Upload images as artifacts
|
||||||
uses: actions/upload-artifact@v7
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: images-${{ inputs.board }}
|
name: images-${{ inputs.board }}
|
||||||
path: |
|
path: |
|
||||||
@@ -246,27 +342,35 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate summary
|
- name: Generate summary
|
||||||
run: |
|
run: |
|
||||||
cat <<EOF >> $GITHUB_STEP_SUMMARY
|
if [ "$BUILD_EMMC" = "true" ]; then
|
||||||
# Image Build Complete! 🚀
|
cat <<EOF >> $GITHUB_STEP_SUMMARY
|
||||||
|
# SD Card & eMMC Image Build Complete! 🚀
|
||||||
|
|
||||||
**Board:** ${{ inputs.board }}
|
**Board:** ${{ inputs.board }}
|
||||||
**Arch:** ${{ env.ARCH }}
|
**Target:** ${{ env.TARGET }}
|
||||||
**Targets:** ${{ env.TARGETS }}
|
**SD Bootloader:** ${{ env.BOOTLOADER_SD }}
|
||||||
**Bootloader Source:** latest-boot release
|
**eMMC Bootloader:** ${{ env.BOOTLOADER_EMMC }}
|
||||||
**Infix Source:** Latest workflow run on main
|
**Artifact Source:** ${{ inputs.use_latest_release && 'Latest Release' || 'Latest Workflow Run' }}
|
||||||
|
|
||||||
## Bootloaders
|
|
||||||
$(for target in $TARGETS; do
|
|
||||||
case "$target" in
|
|
||||||
sdcard) bootloader="$BOOTLOADER_SDCARD" ;;
|
|
||||||
emmc) bootloader="$BOOTLOADER_EMMC" ;;
|
|
||||||
esac
|
|
||||||
printf -- '- %s: %s\n' "$target" "$bootloader"
|
|
||||||
done)
|
|
||||||
|
|
||||||
## Created Images
|
## Created Images
|
||||||
$(find output/images/ -name "*.img" -o -name "*.img.bmap" | xargs ls -lh 2>/dev/null | awk '{print "- " $9 " (" $5 ")"}' || echo "- No images found")
|
$(find output/images/ -name "*.img" -o -name "*.img.bmap" | xargs ls -lh 2>/dev/null | awk '{print "- " $9 " (" $5 ")"}' || echo "- No images found")
|
||||||
|
|
||||||
## Download
|
## Download
|
||||||
The generated images are available as workflow artifacts above and in the latest-boot release.
|
Both SD card and eMMC images are available as workflow artifacts above and in the latest-boot release.
|
||||||
EOF
|
EOF
|
||||||
|
else
|
||||||
|
cat <<EOF >> $GITHUB_STEP_SUMMARY
|
||||||
|
# SD Card Image Build Complete! 🚀
|
||||||
|
|
||||||
|
**Board:** ${{ inputs.board }}
|
||||||
|
**Target:** ${{ env.TARGET }}
|
||||||
|
**Bootloader:** ${{ env.BOOTLOADER }}
|
||||||
|
**Artifact Source:** ${{ inputs.use_latest_release && 'Latest Release' || 'Latest Workflow Run' }}
|
||||||
|
|
||||||
|
## Created Images
|
||||||
|
$(find output/images/ -name "*.img" -o -name "*.img.bmap" | xargs ls -lh 2>/dev/null | awk '{print "- " $9 " (" $5 ")"}' || echo "- No images found")
|
||||||
|
|
||||||
|
## Download
|
||||||
|
The SD card image is available as a workflow artifact above.
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|||||||
@@ -20,16 +20,24 @@ jobs:
|
|||||||
runs-on: [self-hosted, release]
|
runs-on: [self-hosted, release]
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
target: [aarch64, arm, x86_64]
|
target: [aarch64, x86_64]
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- name: Cleanup podman state
|
||||||
|
run: |
|
||||||
|
set -x
|
||||||
|
podman ps -a || true
|
||||||
|
podman stop -a || true
|
||||||
|
podman rm -a -f || true
|
||||||
|
podman volume prune -f || true
|
||||||
|
podman system prune -a -f || true
|
||||||
|
podman system migrate || true
|
||||||
|
|
||||||
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
clean: true
|
clean: true
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
- uses: kernelkit/actions/podman-cleanup@v1
|
|
||||||
|
|
||||||
- name: Set Release Variables
|
- name: Set Release Variables
|
||||||
id: vars
|
id: vars
|
||||||
run: |
|
run: |
|
||||||
@@ -40,10 +48,24 @@ jobs:
|
|||||||
echo "dir=infix-$target" >> $GITHUB_OUTPUT
|
echo "dir=infix-$target" >> $GITHUB_OUTPUT
|
||||||
echo "tgz=infix-$target.tar.gz" >> $GITHUB_OUTPUT
|
echo "tgz=infix-$target.tar.gz" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- uses: kernelkit/actions/cache-restore@v1
|
- name: Restore Cache of dl/
|
||||||
|
if: ${{ inputs.use_cache }}
|
||||||
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
target: ${{ matrix.target }}
|
path: dl/
|
||||||
enabled: ${{ inputs.use_cache }}
|
key: dl-${{ hashFiles('.git/modules/buildroot/HEAD', 'configs/*', 'package/*/*.hash') }}
|
||||||
|
restore-keys: |
|
||||||
|
dl-
|
||||||
|
|
||||||
|
- name: Restore Cache of .ccache/
|
||||||
|
if: ${{ inputs.use_cache }}
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: .ccache/
|
||||||
|
key: ccache-${{ matrix.target }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
|
||||||
|
restore-keys: |
|
||||||
|
ccache-${{ matrix.target }}-
|
||||||
|
ccache-
|
||||||
|
|
||||||
- name: Configure & Build
|
- name: Configure & Build
|
||||||
env:
|
env:
|
||||||
@@ -86,12 +108,12 @@ jobs:
|
|||||||
ln -s ${{ steps.vars.outputs.dir }} images
|
ln -s ${{ steps.vars.outputs.dir }} images
|
||||||
tar cfz ${{ steps.vars.outputs.tgz }} ${{ steps.vars.outputs.dir }}
|
tar cfz ${{ steps.vars.outputs.tgz }} ${{ steps.vars.outputs.dir }}
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v7
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: artifact-${{ matrix.target }}
|
name: artifact-${{ matrix.target }}
|
||||||
path: output/*.tar.gz
|
path: output/*.tar.gz
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v7
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: artifact-disk-image-${{ matrix.target }}
|
name: artifact-disk-image-${{ matrix.target }}
|
||||||
path: output/images/*.qcow2
|
path: output/images/*.qcow2
|
||||||
|
|||||||
@@ -78,9 +78,18 @@ jobs:
|
|||||||
rm -rf ./* || true
|
rm -rf ./* || true
|
||||||
rm -rf ./.??* || true
|
rm -rf ./.??* || true
|
||||||
ls -la ./
|
ls -la ./
|
||||||
|
- name: Cleanup podman state
|
||||||
|
run: |
|
||||||
|
set -x
|
||||||
|
podman ps -a || true
|
||||||
|
podman stop -a || true
|
||||||
|
podman rm -a -f || true
|
||||||
|
podman volume prune -f || true
|
||||||
|
podman system prune -a -f || true
|
||||||
|
podman system migrate || true
|
||||||
|
|
||||||
- name: Checkout infix repo
|
- name: Checkout infix repo
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
repository: ${{ env.INFIX_REPO }}
|
repository: ${{ env.INFIX_REPO }}
|
||||||
ref: ${{ env.INFIX_BRANCH != '' && env.INFIX_BRANCH || github.ref }}
|
ref: ${{ env.INFIX_BRANCH != '' && env.INFIX_BRANCH || github.ref }}
|
||||||
@@ -89,8 +98,6 @@ jobs:
|
|||||||
submodules: recursive
|
submodules: recursive
|
||||||
token: ${{ secrets.CHECKOUT_TOKEN || github.token }}
|
token: ${{ secrets.CHECKOUT_TOKEN || github.token }}
|
||||||
|
|
||||||
- uses: kernelkit/actions/podman-cleanup@v1
|
|
||||||
|
|
||||||
- name: Run pre-build script
|
- name: Run pre-build script
|
||||||
if: ${{ inputs.pre_build_script != '' }}
|
if: ${{ inputs.pre_build_script != '' }}
|
||||||
run: |
|
run: |
|
||||||
@@ -120,9 +127,22 @@ jobs:
|
|||||||
echo "tgz=${name}-${target}.tar.gz" >> $GITHUB_OUTPUT
|
echo "tgz=${name}-${target}.tar.gz" >> $GITHUB_OUTPUT
|
||||||
echo "Building target ${target}_defconfig"
|
echo "Building target ${target}_defconfig"
|
||||||
|
|
||||||
- uses: kernelkit/actions/cache-restore@v1
|
- name: Restore Cache of dl/
|
||||||
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
target: ${{ env.TARGET }}
|
path: dl/
|
||||||
|
key: dl-${{ hashFiles('.git/modules/buildroot/HEAD', 'configs/*', 'package/*/*.hash') }}
|
||||||
|
restore-keys: |
|
||||||
|
dl-
|
||||||
|
|
||||||
|
- name: Restore Cache of .ccache/
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: .ccache/
|
||||||
|
key: ccache-${{ env.TARGET }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
|
||||||
|
restore-keys: |
|
||||||
|
ccache-${{ env.TARGET }}-
|
||||||
|
ccache-
|
||||||
|
|
||||||
- name: Configure ${{ env.TARGET }}
|
- name: Configure ${{ env.TARGET }}
|
||||||
run: |
|
run: |
|
||||||
@@ -133,6 +153,10 @@ jobs:
|
|||||||
podman rm -af || true
|
podman rm -af || true
|
||||||
pkill -9 -f rootlessport || true
|
pkill -9 -f rootlessport || true
|
||||||
|
|
||||||
|
- name: Unit Test ${{ env.TARGET }}
|
||||||
|
run: |
|
||||||
|
make test-unit
|
||||||
|
|
||||||
- name: Prepare parallel build
|
- name: Prepare parallel build
|
||||||
id: parallel
|
id: parallel
|
||||||
run: |
|
run: |
|
||||||
@@ -178,7 +202,7 @@ jobs:
|
|||||||
ln -s ${{ steps.vars.outputs.dir }} images
|
ln -s ${{ steps.vars.outputs.dir }} images
|
||||||
tar cfz ${{ steps.vars.outputs.tgz }} ${{ steps.vars.outputs.dir }}
|
tar cfz ${{ steps.vars.outputs.tgz }} ${{ steps.vars.outputs.dir }}
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v7
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
path: output/${{ steps.vars.outputs.tgz }}
|
path: output/${{ steps.vars.outputs.tgz }}
|
||||||
name: artifact-${{ env.TARGET }}
|
name: artifact-${{ env.TARGET }}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
name: Check Kernel 6.18 Release
|
name: Check Kernel 6.12 Release
|
||||||
|
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
@@ -12,17 +12,17 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out infix repository
|
- name: Check out infix repository
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
token: ${{ secrets.KERNEL_UPDATE_TOKEN }}
|
token: ${{ secrets.KERNEL_UPDATE_TOKEN }}
|
||||||
|
|
||||||
- name: Fetch kernel.org and check for 6.18 release
|
- name: Fetch kernel.org and check for 6.12 release
|
||||||
id: check
|
id: check
|
||||||
run: |
|
run: |
|
||||||
set -e -o pipefail
|
set -e -o pipefail
|
||||||
# Fetch the kernel.org frontpage and extract 6.18 version
|
# Fetch the kernel.org frontpage and extract 6.12 version
|
||||||
CURRENT_VERSION=$(curl -s https://www.kernel.org/ | grep -oP '6\.18\.\d+' | head -n1)
|
CURRENT_VERSION=$(curl -s https://www.kernel.org/ | grep -oP '6\.12\.\d+' | head -n1)
|
||||||
|
|
||||||
if [ -z "$CURRENT_VERSION" ]; then
|
if [ -z "$CURRENT_VERSION" ]; then
|
||||||
echo "Failed to fetch kernel version"
|
echo "Failed to fetch kernel version"
|
||||||
@@ -30,7 +30,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
|
echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
|
||||||
echo "Current 6.18 kernel version: $CURRENT_VERSION"
|
echo "Current 6.12 kernel version: $CURRENT_VERSION"
|
||||||
|
|
||||||
# Get the version from infix defconfig
|
# Get the version from infix defconfig
|
||||||
INFIX_VERSION=$(grep 'BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=' configs/aarch64_defconfig | cut -d'"' -f2)
|
INFIX_VERSION=$(grep 'BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=' configs/aarch64_defconfig | cut -d'"' -f2)
|
||||||
@@ -47,7 +47,7 @@ jobs:
|
|||||||
echo "PR already exists for kernel $CURRENT_VERSION, skipping"
|
echo "PR already exists for kernel $CURRENT_VERSION, skipping"
|
||||||
else
|
else
|
||||||
echo "new_release=true" >> $GITHUB_OUTPUT
|
echo "new_release=true" >> $GITHUB_OUTPUT
|
||||||
echo "🎉 New 6.18 kernel released: $CURRENT_VERSION (infix version: $INFIX_VERSION)"
|
echo "🎉 New 6.12 kernel released: $CURRENT_VERSION (infix version: $INFIX_VERSION)"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "new_release=false" >> $GITHUB_OUTPUT
|
echo "new_release=false" >> $GITHUB_OUTPUT
|
||||||
@@ -99,11 +99,11 @@ jobs:
|
|||||||
BRANCH_NAME: ${{ steps.branch.outputs.name }}
|
BRANCH_NAME: ${{ steps.branch.outputs.name }}
|
||||||
run: |
|
run: |
|
||||||
set -e -o pipefail
|
set -e -o pipefail
|
||||||
./utils/kernel-upgrade.sh linux 6.18 "$BRANCH_NAME"
|
./utils/kernel-upgrade.sh linux "$BRANCH_NAME"
|
||||||
|
|
||||||
- name: Create pull request
|
- name: Create pull request
|
||||||
if: steps.check.outputs.new_release == 'true'
|
if: steps.check.outputs.new_release == 'true'
|
||||||
uses: actions/github-script@v9
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.KERNEL_UPDATE_TOKEN }}
|
github-token: ${{ secrets.KERNEL_UPDATE_TOKEN }}
|
||||||
script: |
|
script: |
|
||||||
|
|||||||
@@ -8,15 +8,13 @@ on:
|
|||||||
env:
|
env:
|
||||||
PROJECT_NAME: Infix
|
PROJECT_NAME: Infix
|
||||||
CONTACT_EMAIL: troglobit@gmail.com
|
CONTACT_EMAIL: troglobit@gmail.com
|
||||||
LIBYANG_VERSION: 4.2.2
|
|
||||||
SYSREPO_VERSION: 4.2.10
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
coverity:
|
coverity:
|
||||||
if: ${{github.repository_owner == 'kernelkit'}}
|
if: ${{github.repository_owner == 'kernelkit'}}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v4
|
||||||
- name: Fetch latest Coverity Scan MD5
|
- name: Fetch latest Coverity Scan MD5
|
||||||
id: var
|
id: var
|
||||||
env:
|
env:
|
||||||
@@ -27,7 +25,7 @@ jobs:
|
|||||||
-O coverity-latest.tar.gz.md5
|
-O coverity-latest.tar.gz.md5
|
||||||
echo "md5=$(cat coverity-latest.tar.gz.md5)" | tee -a $GITHUB_OUTPUT
|
echo "md5=$(cat coverity-latest.tar.gz.md5)" | tee -a $GITHUB_OUTPUT
|
||||||
|
|
||||||
- uses: actions/cache@v5
|
- uses: actions/cache@v4
|
||||||
id: cache
|
id: cache
|
||||||
with:
|
with:
|
||||||
path: coverity-latest.tar.gz
|
path: coverity-latest.tar.gz
|
||||||
@@ -57,24 +55,16 @@ jobs:
|
|||||||
sudo apt-get -y update
|
sudo apt-get -y update
|
||||||
sudo apt-get -y install pkg-config libjansson-dev libev-dev \
|
sudo apt-get -y install pkg-config libjansson-dev libev-dev \
|
||||||
libcrypt-dev libglib2.0-dev libpcre2-dev \
|
libcrypt-dev libglib2.0-dev libpcre2-dev \
|
||||||
libuev-dev libavahi-client-dev
|
libuev-dev
|
||||||
|
|
||||||
- name: Build dependencies
|
- name: Build dependencies
|
||||||
run: |
|
run: |
|
||||||
git clone -b v${LIBYANG_VERSION} --depth 1 https://github.com/CESNET/libyang.git
|
git clone https://github.com/CESNET/libyang.git
|
||||||
for p in patches/libyang/${LIBYANG_VERSION}/*.patch; do
|
|
||||||
git -C libyang apply < "$p"
|
|
||||||
done
|
|
||||||
mkdir libyang/build
|
mkdir libyang/build
|
||||||
(cd libyang/build && cmake .. && make all && sudo make install)
|
(cd libyang/build && cmake .. && make all && sudo make install)
|
||||||
|
git clone https://github.com/sysrepo/sysrepo.git
|
||||||
git clone -b v${SYSREPO_VERSION} --depth 1 https://github.com/sysrepo/sysrepo.git
|
|
||||||
for p in patches/sysrepo/${SYSREPO_VERSION}/*.patch; do
|
|
||||||
git -C sysrepo apply < "$p"
|
|
||||||
done
|
|
||||||
mkdir sysrepo/build
|
mkdir sysrepo/build
|
||||||
(cd sysrepo/build && cmake .. && make all && sudo make install)
|
(cd sysrepo/build && cmake .. && make all && sudo make install)
|
||||||
|
|
||||||
git clone https://github.com/troglobit/libite.git
|
git clone https://github.com/troglobit/libite.git
|
||||||
(cd libite && ./autogen.sh && ./configure && make && sudo make install)
|
(cd libite && ./autogen.sh && ./configure && make && sudo make install)
|
||||||
make dep
|
make dep
|
||||||
@@ -98,7 +88,7 @@ jobs:
|
|||||||
https://scan.coverity.com/builds?project=${PROJECT_NAME}
|
https://scan.coverity.com/builds?project=${PROJECT_NAME}
|
||||||
|
|
||||||
- name: Upload build.log
|
- name: Upload build.log
|
||||||
uses: actions/upload-artifact@v7
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: coverity-build.log
|
name: coverity-build.log
|
||||||
path: cov-int/build-log.txt
|
path: cov-int/build-log.txt
|
||||||
|
|||||||
@@ -24,12 +24,12 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@v6
|
uses: actions/setup-python@v4
|
||||||
with:
|
with:
|
||||||
python-version: '3.x'
|
python-version: '3.x'
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ jobs:
|
|||||||
mtools
|
mtools
|
||||||
|
|
||||||
- name: Checkout infix repo
|
- name: Checkout infix repo
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
repository: ${{ github.repository }}
|
repository: ${{ github.repository }}
|
||||||
ref: ${{ github.ref }}
|
ref: ${{ github.ref }}
|
||||||
@@ -77,7 +77,7 @@ jobs:
|
|||||||
ln -s Infix-x86_64 images
|
ln -s Infix-x86_64 images
|
||||||
tar cfz Infix-x86_64.tar.gz Infix-x86_64
|
tar cfz Infix-x86_64.tar.gz Infix-x86_64
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v7
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
path: output/Infix-x86_64.tar.gz
|
path: output/Infix-x86_64.tar.gz
|
||||||
name: artifact-x86_64
|
name: artifact-x86_64
|
||||||
|
|||||||
@@ -44,11 +44,23 @@ jobs:
|
|||||||
checkout:
|
checkout:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v4
|
||||||
- uses: kernelkit/actions/cache-restore@v1
|
- name: Restore Cache of dl/
|
||||||
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
target: x86_64
|
path: dl/
|
||||||
dl-prefix: dl-netconf
|
key: dl-netconf-${{ hashFiles('.git/modules/buildroot/HEAD', 'configs/*', 'package/*/*.hash') }}
|
||||||
|
restore-keys: |
|
||||||
|
dl-netconf-
|
||||||
|
dl-
|
||||||
|
- name: Restore Cache of .ccache/
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: .ccache/
|
||||||
|
key: ccache-x86_64-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
|
||||||
|
restore-keys: |
|
||||||
|
ccache-x86_64-
|
||||||
|
ccache-
|
||||||
- name: Disk inventory (2/2) ...
|
- name: Disk inventory (2/2) ...
|
||||||
run: |
|
run: |
|
||||||
echo "df -h ========================================================================="
|
echo "df -h ========================================================================="
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ jobs:
|
|||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/download-artifact@v8
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
pattern: "artifact-*"
|
pattern: "artifact-*"
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
|
|||||||
@@ -48,12 +48,20 @@ jobs:
|
|||||||
contents: write
|
contents: write
|
||||||
discussions: write
|
discussions: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- name: Cleanup podman state
|
||||||
|
run: |
|
||||||
|
set -x
|
||||||
|
podman ps -a || true
|
||||||
|
podman stop -a || true
|
||||||
|
podman rm -a -f || true
|
||||||
|
podman volume prune -f || true
|
||||||
|
podman system prune -a -f || true
|
||||||
|
podman system migrate || true
|
||||||
|
|
||||||
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'true'
|
submodules: 'true'
|
||||||
|
|
||||||
- uses: kernelkit/actions/podman-cleanup@v1
|
|
||||||
|
|
||||||
- name: Set Release Variables
|
- name: Set Release Variables
|
||||||
id: rel
|
id: rel
|
||||||
run: |
|
run: |
|
||||||
@@ -78,7 +86,7 @@ jobs:
|
|||||||
echo "pre=${{ steps.rel.outputs.pre }}"
|
echo "pre=${{ steps.rel.outputs.pre }}"
|
||||||
echo "latest=${{ steps.rel.outputs.latest }}"
|
echo "latest=${{ steps.rel.outputs.latest }}"
|
||||||
|
|
||||||
- uses: actions/download-artifact@v8
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
pattern: "artifact-*"
|
pattern: "artifact-*"
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
@@ -96,7 +104,11 @@ jobs:
|
|||||||
|
|
||||||
- name: Extract ChangeLog entry ...
|
- name: Extract ChangeLog entry ...
|
||||||
run: |
|
run: |
|
||||||
cat doc/ChangeLog.md | ./utils/extract-changelog.sh > release.md
|
awk '/^-----*$/{if (x == 1) exit; x=1;next}x' doc/ChangeLog.md \
|
||||||
|
|head -n -1 > release.md
|
||||||
|
echo "" >> release.md
|
||||||
|
echo "> [!TIP]" >> release.md
|
||||||
|
echo "> **Try Infix in GNS3!** Download the appliance from the [GNS3 Marketplace](https://gns3.com/marketplace/appliances/infix) to test Infix in a virtual network environment without hardware." >> release.md
|
||||||
cat release.md
|
cat release.md
|
||||||
|
|
||||||
- uses: ncipollo/release-action@v1
|
- uses: ncipollo/release-action@v1
|
||||||
|
|||||||
@@ -43,11 +43,6 @@ on:
|
|||||||
type: string
|
type: string
|
||||||
default: ''
|
default: ''
|
||||||
description: 'Optional script to run after checkout (for spin customization)'
|
description: 'Optional script to run after checkout (for spin customization)'
|
||||||
release:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
default: ''
|
|
||||||
description: 'Release version (e.g. v26.04.0), sets INFIX_RELEASE so make test finds versioned artifacts'
|
|
||||||
secrets:
|
secrets:
|
||||||
CHECKOUT_TOKEN:
|
CHECKOUT_TOKEN:
|
||||||
required: false
|
required: false
|
||||||
@@ -65,8 +60,18 @@ jobs:
|
|||||||
name: Regression Test ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.name || inputs.name }} ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.target || inputs.target }}
|
name: Regression Test ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.name || inputs.name }} ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.target || inputs.target }}
|
||||||
runs-on: [self-hosted, regression]
|
runs-on: [self-hosted, regression]
|
||||||
steps:
|
steps:
|
||||||
|
- name: Cleanup podman state
|
||||||
|
run: |
|
||||||
|
set -x
|
||||||
|
podman ps -a || true
|
||||||
|
podman stop -a || true
|
||||||
|
podman rm -a -f || true
|
||||||
|
podman volume prune -f || true
|
||||||
|
podman system prune -a -f || true
|
||||||
|
podman system migrate || true
|
||||||
|
|
||||||
- name: Checkout infix repo
|
- name: Checkout infix repo
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
repository: ${{ env.INFIX_REPO }}
|
repository: ${{ env.INFIX_REPO }}
|
||||||
ref: ${{ env.INFIX_BRANCH != '' && env.INFIX_BRANCH || github.ref }}
|
ref: ${{ env.INFIX_BRANCH != '' && env.INFIX_BRANCH || github.ref }}
|
||||||
@@ -75,8 +80,6 @@ jobs:
|
|||||||
submodules: recursive
|
submodules: recursive
|
||||||
token: ${{ secrets.CHECKOUT_TOKEN || github.token }}
|
token: ${{ secrets.CHECKOUT_TOKEN || github.token }}
|
||||||
|
|
||||||
- uses: kernelkit/actions/podman-cleanup@v1
|
|
||||||
|
|
||||||
- name: Run pre-test script
|
- name: Run pre-test script
|
||||||
if: ${{ inputs.pre_test_script != '' }}
|
if: ${{ inputs.pre_test_script != '' }}
|
||||||
run: |
|
run: |
|
||||||
@@ -98,7 +101,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
make ${{ env.TARGET }}_defconfig
|
make ${{ env.TARGET }}_defconfig
|
||||||
|
|
||||||
- uses: actions/download-artifact@v8
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
pattern: "artifact-*"
|
pattern: "artifact-*"
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
@@ -110,15 +113,12 @@ jobs:
|
|||||||
|
|
||||||
ls -l
|
ls -l
|
||||||
mkdir -p output
|
mkdir -p output
|
||||||
tarfile=$(ls ${name}-${target}*.tar.gz | head -1)
|
mv ${name}-${target}.tar.gz output/
|
||||||
mv "$tarfile" output/
|
|
||||||
cd output/
|
cd output/
|
||||||
tar xf "$tarfile"
|
tar xf ${name}-${target}.tar.gz
|
||||||
ln -s "${tarfile%.tar.gz}" images
|
ln -s ${name}-${target} images
|
||||||
|
|
||||||
- name: Regression Test ${{ env.TARGET }}
|
- name: Regression Test ${{ env.TARGET }}
|
||||||
env:
|
|
||||||
INFIX_RELEASE: ${{ inputs.release }}
|
|
||||||
run: |
|
run: |
|
||||||
if [ -n "$NINEPM_CONF" ]; then
|
if [ -n "$NINEPM_CONF" ]; then
|
||||||
export NINEPM_PROJ_CONFIG="${GITHUB_WORKSPACE}/$NINEPM_CONF"
|
export NINEPM_PROJ_CONFIG="${GITHUB_WORKSPACE}/$NINEPM_CONF"
|
||||||
@@ -139,7 +139,7 @@ jobs:
|
|||||||
make test-dir="$(pwd)/$TEST_PATH" test-report
|
make test-dir="$(pwd)/$TEST_PATH" test-report
|
||||||
|
|
||||||
- name: Upload Test Report as Artifact
|
- name: Upload Test Report as Artifact
|
||||||
uses: actions/upload-artifact@v7
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: test-report
|
name: test-report
|
||||||
path: output/images/test-report.pdf
|
path: output/images/test-report.pdf
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
name: CI
|
name: Kernelkit Trigger
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
@@ -28,7 +28,6 @@ jobs:
|
|||||||
outputs:
|
outputs:
|
||||||
x86_64_target: ${{ steps.set-targets.outputs.x86_64_target }}
|
x86_64_target: ${{ steps.set-targets.outputs.x86_64_target }}
|
||||||
aarch64_target: ${{ steps.set-targets.outputs.aarch64_target }}
|
aarch64_target: ${{ steps.set-targets.outputs.aarch64_target }}
|
||||||
arm_target: ${{ steps.set-targets.outputs.arm_target }}
|
|
||||||
steps:
|
steps:
|
||||||
- run: |
|
- run: |
|
||||||
echo "Triggering build, logging meta data ..."
|
echo "Triggering build, logging meta data ..."
|
||||||
@@ -44,40 +43,25 @@ jobs:
|
|||||||
| grep -q "ci:main"; then
|
| grep -q "ci:main"; then
|
||||||
echo "x86_64_target=x86_64_minimal" >> $GITHUB_OUTPUT
|
echo "x86_64_target=x86_64_minimal" >> $GITHUB_OUTPUT
|
||||||
echo "aarch64_target=aarch64_minimal" >> $GITHUB_OUTPUT
|
echo "aarch64_target=aarch64_minimal" >> $GITHUB_OUTPUT
|
||||||
echo "arm_target=arm_minimal" >> $GITHUB_OUTPUT
|
|
||||||
else
|
else
|
||||||
echo "x86_64_target=x86_64" >> $GITHUB_OUTPUT
|
echo "x86_64_target=x86_64" >> $GITHUB_OUTPUT
|
||||||
echo "aarch64_target=aarch64" >> $GITHUB_OUTPUT
|
echo "aarch64_target=aarch64" >> $GITHUB_OUTPUT
|
||||||
echo "arm_target=arm" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
fi
|
||||||
unit-test:
|
|
||||||
needs: check-trigger
|
|
||||||
uses: ./.github/workflows/unit-test.yml
|
|
||||||
with:
|
|
||||||
name: "infix"
|
|
||||||
target: ${{ needs.check-trigger.outputs.x86_64_target }}
|
|
||||||
|
|
||||||
build-x86_64:
|
build-x86_64:
|
||||||
needs: [check-trigger, unit-test]
|
needs: check-trigger
|
||||||
uses: ./.github/workflows/build.yml
|
uses: ./.github/workflows/build.yml
|
||||||
with:
|
with:
|
||||||
name: "infix"
|
name: "infix"
|
||||||
target: ${{ needs.check-trigger.outputs.x86_64_target }}
|
target: ${{ needs.check-trigger.outputs.x86_64_target }}
|
||||||
|
|
||||||
build-aarch64:
|
build-aarch64:
|
||||||
needs: [check-trigger, unit-test]
|
needs: check-trigger
|
||||||
uses: ./.github/workflows/build.yml
|
uses: ./.github/workflows/build.yml
|
||||||
with:
|
with:
|
||||||
name: "infix"
|
name: "infix"
|
||||||
target: ${{ needs.check-trigger.outputs.aarch64_target }}
|
target: ${{ needs.check-trigger.outputs.aarch64_target }}
|
||||||
|
|
||||||
build-arm:
|
|
||||||
needs: [check-trigger, unit-test]
|
|
||||||
uses: ./.github/workflows/build.yml
|
|
||||||
with:
|
|
||||||
name: "infix"
|
|
||||||
target: ${{ needs.check-trigger.outputs.arm_target }}
|
|
||||||
|
|
||||||
test-run-x86_64:
|
test-run-x86_64:
|
||||||
needs: [check-trigger, build-x86_64]
|
needs: [check-trigger, build-x86_64]
|
||||||
uses: ./.github/workflows/test.yml
|
uses: ./.github/workflows/test.yml
|
||||||
|
|||||||
@@ -1,116 +0,0 @@
|
|||||||
name: unit-test
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
target:
|
|
||||||
description: "Build target (e.g. aarch64 or aarch64_minimal)"
|
|
||||||
default: "x86_64"
|
|
||||||
type: string
|
|
||||||
parallel:
|
|
||||||
description: 'Massive parallel build of each image'
|
|
||||||
default: true
|
|
||||||
type: boolean
|
|
||||||
name:
|
|
||||||
description: "Name (for spin overrides)"
|
|
||||||
default: "infix"
|
|
||||||
type: string
|
|
||||||
infix_repo:
|
|
||||||
description: 'Repo to checkout (for spin overrides)'
|
|
||||||
default: kernelkit/infix
|
|
||||||
type: string
|
|
||||||
infix_branch:
|
|
||||||
description: 'Branch/tag/commit to checkout (for spin overrides)'
|
|
||||||
default: ''
|
|
||||||
type: string
|
|
||||||
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
target:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
name:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
infix_repo:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
default: kernelkit/infix
|
|
||||||
infix_branch:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
default: ''
|
|
||||||
description: 'Branch/tag/commit to checkout (for spin overrides). Defaults to github.ref if not specified'
|
|
||||||
parallel:
|
|
||||||
required: false
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
pre_build_script:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
default: ''
|
|
||||||
description: 'Optional script to run after checkout (for spin customization)'
|
|
||||||
secrets:
|
|
||||||
CHECKOUT_TOKEN:
|
|
||||||
required: false
|
|
||||||
description: 'Token for cross-repository access'
|
|
||||||
|
|
||||||
env:
|
|
||||||
NAME: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.name || inputs.name }}
|
|
||||||
TARGET: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.target || inputs.target }}
|
|
||||||
INFIX_REPO: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.infix_repo || inputs.infix_repo }}
|
|
||||||
INFIX_BRANCH: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.infix_branch || inputs.infix_branch }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
unit-tests:
|
|
||||||
name: Build ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.name || inputs.name }} ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.target || inputs.target }}
|
|
||||||
runs-on: [ self-hosted, latest ]
|
|
||||||
env:
|
|
||||||
PARALLEL: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.parallel == 'true' || github.event_name != 'workflow_dispatch' && inputs.parallel == true }}
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
steps:
|
|
||||||
- name: Cleanup Build Folder
|
|
||||||
run: |
|
|
||||||
ls -la ./
|
|
||||||
rm -rf ./* || true
|
|
||||||
rm -rf ./.??* || true
|
|
||||||
ls -la ./
|
|
||||||
|
|
||||||
- name: Checkout infix repo
|
|
||||||
uses: actions/checkout@v6
|
|
||||||
with:
|
|
||||||
repository: ${{ env.INFIX_REPO }}
|
|
||||||
ref: ${{ env.INFIX_BRANCH != '' && env.INFIX_BRANCH || github.ref }}
|
|
||||||
clean: true
|
|
||||||
fetch-depth: 0
|
|
||||||
submodules: recursive
|
|
||||||
token: ${{ secrets.CHECKOUT_TOKEN || github.token }}
|
|
||||||
|
|
||||||
- uses: kernelkit/actions/podman-cleanup@v1
|
|
||||||
|
|
||||||
- name: Run pre-build script
|
|
||||||
if: ${{ inputs.pre_build_script != '' }}
|
|
||||||
run: |
|
|
||||||
cat > ./pre-build.sh << 'EOF'
|
|
||||||
${{ inputs.pre_build_script }}
|
|
||||||
EOF
|
|
||||||
chmod +x ./pre-build.sh
|
|
||||||
bash ./pre-build.sh
|
|
||||||
|
|
||||||
- uses: kernelkit/actions/cache-restore@v1
|
|
||||||
with:
|
|
||||||
target: ${{ env.TARGET }}
|
|
||||||
|
|
||||||
- name: Configure ${{ env.TARGET }}
|
|
||||||
run: |
|
|
||||||
make ${{ env.TARGET }}_defconfig
|
|
||||||
|
|
||||||
- name: Cleanup stale containers and ports
|
|
||||||
run: |
|
|
||||||
podman rm -af || true
|
|
||||||
pkill -9 -f rootlessport || true
|
|
||||||
|
|
||||||
- name: Unit Test ${{ env.TARGET }}
|
|
||||||
run: |
|
|
||||||
make test-unit
|
|
||||||
@@ -22,7 +22,7 @@ jobs:
|
|||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/download-artifact@v8
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
pattern: "artifact-*"
|
pattern: "artifact-*"
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
*~
|
*~
|
||||||
.claude
|
|
||||||
.gdb_history
|
.gdb_history
|
||||||
.claude
|
|
||||||
AGENTS.md
|
|
||||||
/.backup
|
/.backup
|
||||||
/.ccache
|
/.ccache
|
||||||
/dl
|
/dl
|
||||||
|
|||||||
@@ -9,10 +9,8 @@ O ?= output
|
|||||||
# otherwise treat it as relative to ./buildroot.
|
# otherwise treat it as relative to ./buildroot.
|
||||||
override O := $(if $(filter /%,$O),$O,$(CURDIR)/$O)
|
override O := $(if $(filter /%,$O),$O,$(CURDIR)/$O)
|
||||||
|
|
||||||
config := $(O)/.config
|
config := $(O)/.config
|
||||||
bmake = $(MAKE) -C buildroot O=$(O) $1
|
bmake = $(MAKE) -C buildroot O=$(O) $1
|
||||||
SNIPPETS_DIR := $(CURDIR)/configs/snippets
|
|
||||||
MERGE_CONFIG := $(CURDIR)/buildroot/support/kconfig/merge_config.sh
|
|
||||||
|
|
||||||
|
|
||||||
all: $(config) buildroot/Makefile
|
all: $(config) buildroot/Makefile
|
||||||
@@ -28,23 +26,6 @@ $(config):
|
|||||||
@echo "'make <board>_defconfig' before building an image."
|
@echo "'make <board>_defconfig' before building an image."
|
||||||
@exit 1
|
@exit 1
|
||||||
|
|
||||||
apply-%: $(SNIPPETS_DIR)/%.conf | $(config)
|
|
||||||
@KCONFIG_CONFIG=$(config) $(MERGE_CONFIG) -m $(config) $<
|
|
||||||
@+$(call bmake,olddefconfig)
|
|
||||||
@echo "Applied snippet: $<"
|
|
||||||
|
|
||||||
list-snippets:
|
|
||||||
@echo "Available snippets (use 'make apply-<name>'):"
|
|
||||||
@ls $(SNIPPETS_DIR)/*.conf 2>/dev/null | sed 's|.*/||; s|\.conf$$||; s|^| |'
|
|
||||||
|
|
||||||
dev: | $(config)
|
|
||||||
@for s in $(SNIPPETS_DIR)/*.conf; do \
|
|
||||||
KCONFIG_CONFIG=$(config) $(MERGE_CONFIG) -m $(config) $$s; \
|
|
||||||
echo "Applied snippet: $$s"; \
|
|
||||||
done
|
|
||||||
@+$(call bmake,olddefconfig)
|
|
||||||
@+$(call bmake,all)
|
|
||||||
|
|
||||||
%: | buildroot/Makefile
|
%: | buildroot/Makefile
|
||||||
@+$(call bmake,$@)
|
@+$(call bmake,$@)
|
||||||
|
|
||||||
@@ -63,4 +44,4 @@ test:
|
|||||||
buildroot/Makefile:
|
buildroot/Makefile:
|
||||||
@git submodule update --init
|
@git submodule update --init
|
||||||
|
|
||||||
.PHONY: all check coverity dep test cyclonedx list-snippets dev
|
.PHONY: all check coverity dep test cyclonedx
|
||||||
|
|||||||
@@ -16,12 +16,10 @@ if something goes wrong. Deploy once, trust forever.
|
|||||||
|
|
||||||
**🤝 Friendly**
|
**🤝 Friendly**
|
||||||
Actually easy to use. Auto-generated CLI from standard YANG models comes
|
Actually easy to use. Auto-generated CLI from standard YANG models comes
|
||||||
with built-in help for every command — just hit <kbd>?</kbd> or
|
with built-in help for every command — just hit `?` or TAB for
|
||||||
<kbd>TAB</kbd> for context-aware assistance.
|
context-aware assistance. Familiar NETCONF/RESTCONF APIs and
|
||||||
|
[comprehensive documentation][4] mean you're never stuck. Whether
|
||||||
Familiar NETCONF & RESTCONF APIs and [comprehensive documentation][4]
|
you're learning networking or managing enterprise infrastructure.
|
||||||
mean you're never stuck. Whether you're learning networking or managing
|
|
||||||
enterprise infrastructure.
|
|
||||||
|
|
||||||
**🛡️ Secure**
|
**🛡️ Secure**
|
||||||
Built with security as a foundation, not an afterthought. Minimal
|
Built with security as a foundation, not an afterthought. Minimal
|
||||||
@@ -55,24 +53,27 @@ your device, your rules.
|
|||||||
Consistent tooling from development to production deployment.
|
Consistent tooling from development to production deployment.
|
||||||
How about a digital twin using raw Qemu or [GNS3](https://gns3.com/infix)!
|
How about a digital twin using raw Qemu or [GNS3](https://gns3.com/infix)!
|
||||||
|
|
||||||
## Quick Example
|
## See It In Action
|
||||||
|
|
||||||
Configure an interface in seconds - the CLI guides you with built-in help:
|
Configure an interface in seconds - the CLI guides you with built-in help:
|
||||||
|
|
||||||
<pre><code>admin@infix-12-34-56:/> <b>configure</b>
|
<details><summary><b>Click Here for an example CLI Session</b></summary>
|
||||||
admin@infix-12-34-56:/config/> <b>edit interface eth0</b>
|
|
||||||
admin@infix-12-34-56:/config/interface/eth0/> <b>set ipv4</b> <kbd>TAB</kbd>
|
```bash
|
||||||
address autoconf bind-ni-name dhcp
|
admin@infix-12-34-56:/> configure
|
||||||
enabled forwarding mtu neighbor
|
admin@infix-12-34-56:/config/> edit interface eth0
|
||||||
admin@infix-12-34-56:/config/interface/eth0/> <b>set ipv4 address 192.168.2.200 prefix-length 24</b>
|
admin@infix-12-34-56:/config/interface/eth0/> set ipv4 <TAB>
|
||||||
admin@infix-12-34-56:/config/interface/eth0/> <b>show</b>
|
address autoconf bind-ni-name enabled
|
||||||
|
forwarding mtu neighbor
|
||||||
|
admin@infix-12-34-56:/config/interface/eth0/> set ipv4 address 192.168.2.200 prefix-length 24
|
||||||
|
admin@infix-12-34-56:/config/interface/eth0/> show
|
||||||
type ethernet;
|
type ethernet;
|
||||||
ipv4 {
|
ipv4 {
|
||||||
address 192.168.2.200 {
|
address 192.168.2.200 {
|
||||||
prefix-length 24;
|
prefix-length 24;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
admin@infix-12-34-56:/config/interface/eth0/> <b>diff</b>
|
admin@infix-12-34-56:/config/interface/eth0/> diff
|
||||||
interfaces {
|
interfaces {
|
||||||
interface eth0 {
|
interface eth0 {
|
||||||
+ ipv4 {
|
+ ipv4 {
|
||||||
@@ -82,23 +83,25 @@ interfaces {
|
|||||||
+ }
|
+ }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
admin@infix-12-34-56:/config/interface/eth0/> <b>leave</b>
|
admin@infix-12-34-56:/config/interface/eth0/> leave
|
||||||
admin@infix-12-34-56:/> <b>show interfaces</b>
|
admin@infix-12-34-56:/> show interfaces
|
||||||
<u>INTERFACE PROTOCOL STATE DATA </u>
|
INTERFACE PROTOCOL STATE DATA
|
||||||
lo ethernet UP 00:00:00:00:00:00
|
|
||||||
ipv4 127.0.0.1/8 (static)
|
|
||||||
ipv6 ::1/128 (static)
|
|
||||||
eth0 ethernet UP 52:54:00:12:34:56
|
eth0 ethernet UP 52:54:00:12:34:56
|
||||||
ipv4 192.168.2.200/24 (static)
|
ipv4 192.168.2.200/24 (static)
|
||||||
ipv6 fe80::5054:ff:fe12:3456/64 (link-layer)
|
ipv6 fe80::5054:ff:fe12:3456/64 (link-layer)
|
||||||
admin@infix-12-34-56:/> <b>copy running startup</b>
|
lo ethernet UP 00:00:00:00:00:00
|
||||||
</code></pre>
|
ipv4 127.0.0.1/8 (static)
|
||||||
|
ipv6 ::1/128 (static)
|
||||||
|
admin@infix-12-34-56:/> copy running-config startup-config
|
||||||
|
```
|
||||||
|
|
||||||
Notice how <kbd>TAB</kbd> completion shows available options, `show`
|
Notice how TAB completion shows available options, `show` displays
|
||||||
displays current config, and `diff` shows exactly what changed before
|
current config, and `diff` shows exactly what changed before you
|
||||||
you commit your changes with the `leave` command.
|
commit your changes with the `leave` command.
|
||||||
|
|
||||||
For more information, see [CLI documentation][3].
|
</details>
|
||||||
|
|
||||||
|
> [Full CLI documentation →][3]
|
||||||
|
|
||||||
## Get Started
|
## Get Started
|
||||||
|
|
||||||
@@ -108,13 +111,12 @@ containers for any custom functionality you need.
|
|||||||
|
|
||||||
### Supported Platforms
|
### Supported Platforms
|
||||||
|
|
||||||
- **Raspberry Pi 2B/3B/4B/CM4** - Perfect for home labs, learning, and prototyping
|
- **Raspberry Pi 4B** - Perfect for home labs, learning, and prototyping
|
||||||
- **Banana Pi-R3** - Your next home router and gateway
|
- **Banana Pi-R3** - Your next home router and gateway
|
||||||
- **NanoPi R2S** - Compact dual-port router in a tiny package
|
- **NanoPi R2S** - Compact dual-port router in a tiny package
|
||||||
- **x86_64** - Run in VMs or on mini PCs for development and testing
|
- **x86_64** - Run in VMs or on mini PCs for development and testing
|
||||||
- **Marvell CN9130 CRB, EspressoBIN** - High-performance ARM64 platforms
|
- **Marvell CN9130 CRB, EspressoBIN** - High-performance ARM64 platforms
|
||||||
- **Microchip SparX-5i** - Enterprise switching capabilities
|
- **Microchip SparX-5i** - Enterprise switching capabilities
|
||||||
- **Microchip SAMA7G54-EK** - ARM Cortex-A7
|
|
||||||
- **NXP i.MX8MP EVK** - Highly capable ARM64 SoC
|
- **NXP i.MX8MP EVK** - Highly capable ARM64 SoC
|
||||||
- **StarFive VisionFive2** - RISC-V architecture support
|
- **StarFive VisionFive2** - RISC-V architecture support
|
||||||
|
|
||||||
@@ -168,13 +170,13 @@ APIs.
|
|||||||
[0]: https://www.kernel.org
|
[0]: https://www.kernel.org
|
||||||
[1]: https://buildroot.org/ "Buildroot Homepage"
|
[1]: https://buildroot.org/ "Buildroot Homepage"
|
||||||
[2]: https://www.sysrepo.org/ "Sysrepo Homepage"
|
[2]: https://www.sysrepo.org/ "Sysrepo Homepage"
|
||||||
[3]: https://www.kernelkit.org/infix/latest/cli/introduction/
|
[3]: https://kernelkit.org/infix/latest/cli/introduction/
|
||||||
[4]: https://www.kernelkit.org/infix/
|
[4]: https://kernelkit.org/infix/
|
||||||
[5]: https://github.com/kernelkit/infix/releases/latest
|
[5]: https://github.com/kernelkit/infix/releases
|
||||||
[Latest Build]: https://github.com/kernelkit/infix/releases/tag/latest "Latest build"
|
[Latest Build]: https://github.com/kernelkit/infix/releases/tag/latest "Latest build"
|
||||||
[License]: https://en.wikipedia.org/wiki/GPL_license
|
[License]: https://en.wikipedia.org/wiki/GPL_license
|
||||||
[License Badge]: https://img.shields.io/badge/License-GPL%20v2-blue.svg
|
[License Badge]: https://img.shields.io/badge/License-GPL%20v2-blue.svg
|
||||||
[Release]: https://github.com/kernelkit/infix/releases/latest
|
[Release]: https://github.com/kernelkit/infix/releases
|
||||||
[Release Badge]: https://img.shields.io/github/v/release/kernelkit/infix
|
[Release Badge]: https://img.shields.io/github/v/release/kernelkit/infix
|
||||||
[GitHub]: https://github.com/kernelkit/infix/actions/workflows/build.yml/
|
[GitHub]: https://github.com/kernelkit/infix/actions/workflows/build.yml/
|
||||||
[GitHub Status]: https://github.com/kernelkit/infix/actions/workflows/build.yml/badge.svg
|
[GitHub Status]: https://github.com/kernelkit/infix/actions/workflows/build.yml/badge.svg
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
menu "Board Support"
|
menu "Board Support"
|
||||||
|
|
||||||
source "$BR2_EXTERNAL_INFIX_PATH/board/arm/Config.in"
|
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch32/Config.in"
|
||||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/Config.in"
|
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/Config.in"
|
||||||
source "$BR2_EXTERNAL_INFIX_PATH/board/riscv64/Config.in"
|
source "$BR2_EXTERNAL_INFIX_PATH/board/riscv64/Config.in"
|
||||||
source "$BR2_EXTERNAL_INFIX_PATH/board/x86_64/Config.in"
|
source "$BR2_EXTERNAL_INFIX_PATH/board/x86_64/Config.in"
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
Board Support
|
|
||||||
=============
|
|
||||||
|
|
||||||
The board support for an architecture always starts with Qemu support,
|
|
||||||
this is what each `linux_defconfig` at the very least sets up. Then
|
|
||||||
each `$BR2_ARCH` has additional BSPs, e.g., Banana Pi BPI-R3.
|
|
||||||
|
|
||||||
The `board/` directory is matched with the `configs/*_defconfigs` and
|
|
||||||
the only execption is `board/common/`, which holds all shared files for
|
|
||||||
Infix builds.
|
|
||||||
|
|
||||||
Each `board/$BR2_ARCH/` can then have vendor/product sub-directories
|
|
||||||
for the BSPs which may contain "fixups" to the base kernel config and
|
|
||||||
any additional device tree files that should be included as well.
|
|
||||||
|
|
||||||
To rebuild a board-specific package, e.g. NanoPi R2S:
|
|
||||||
|
|
||||||
make friendlyarm-nanopi-r2s-rebuild all
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
if BR2_arm
|
||||||
|
|
||||||
|
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch32/raspberrypi-rpi2/Config.in"
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
Arm 32-bit
|
aarch32
|
||||||
==========
|
=======
|
||||||
|
|
||||||
Board Specific Documentation
|
Board Specific Documentation
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
- [Microchip SAMA7G54-EK (32-bit)](microchip-sama7g54-ek/)
|
|
||||||
- [Raspberry Pi 2 Model B (32-bit)](raspberrypi-rpi2/)
|
- [Raspberry Pi 2 Model B (32-bit)](raspberrypi-rpi2/)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
@@ -1,19 +1,20 @@
|
|||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
CONFIG_POSIX_MQUEUE=y
|
CONFIG_POSIX_MQUEUE=y
|
||||||
|
CONFIG_AUDIT=y
|
||||||
CONFIG_NO_HZ_IDLE=y
|
CONFIG_NO_HZ_IDLE=y
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
CONFIG_BPF_SYSCALL=y
|
CONFIG_BPF_SYSCALL=y
|
||||||
CONFIG_BPF_JIT=y
|
CONFIG_BPF_JIT=y
|
||||||
|
CONFIG_PREEMPT=y
|
||||||
CONFIG_BSD_PROCESS_ACCT=y
|
CONFIG_BSD_PROCESS_ACCT=y
|
||||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||||
CONFIG_TASKSTATS=y
|
CONFIG_TASKSTATS=y
|
||||||
CONFIG_TASK_DELAY_ACCT=y
|
CONFIG_TASK_DELAY_ACCT=y
|
||||||
CONFIG_TASK_XACCT=y
|
CONFIG_TASK_XACCT=y
|
||||||
CONFIG_TASK_IO_ACCOUNTING=y
|
CONFIG_TASK_IO_ACCOUNTING=y
|
||||||
# CONFIG_CPU_ISOLATION is not set
|
|
||||||
CONFIG_IKCONFIG=y
|
CONFIG_IKCONFIG=y
|
||||||
CONFIG_IKCONFIG_PROC=y
|
CONFIG_IKCONFIG_PROC=y
|
||||||
CONFIG_LOG_BUF_SHIFT=16
|
CONFIG_LOG_BUF_SHIFT=18
|
||||||
CONFIG_MEMCG=y
|
CONFIG_MEMCG=y
|
||||||
CONFIG_BLK_CGROUP=y
|
CONFIG_BLK_CGROUP=y
|
||||||
CONFIG_CFS_BANDWIDTH=y
|
CONFIG_CFS_BANDWIDTH=y
|
||||||
@@ -30,15 +31,23 @@ CONFIG_SCHED_AUTOGROUP=y
|
|||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_KALLSYMS_ALL=y
|
CONFIG_KALLSYMS_ALL=y
|
||||||
CONFIG_PROFILING=y
|
CONFIG_PROFILING=y
|
||||||
# CONFIG_ARM_ERRATA_643719 is not set
|
CONFIG_KEXEC=y
|
||||||
|
CONFIG_ARCH_MULTI_V6=y
|
||||||
|
CONFIG_ARCH_MULTI_V7=y
|
||||||
|
CONFIG_ARCH_VIRT=y
|
||||||
|
CONFIG_ARCH_BCM=y
|
||||||
|
CONFIG_ARCH_BCM2835=y
|
||||||
CONFIG_SMP=y
|
CONFIG_SMP=y
|
||||||
|
CONFIG_NR_CPUS=4
|
||||||
CONFIG_CPU_FREQ=y
|
CONFIG_CPU_FREQ=y
|
||||||
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
CONFIG_CPU_FREQ_STAT=y
|
||||||
|
CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y
|
||||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
|
||||||
CONFIG_CPUFREQ_DT=y
|
CONFIG_CPUFREQ_DT=y
|
||||||
|
CONFIG_ARM_RASPBERRYPI_CPUFREQ=y
|
||||||
|
CONFIG_AEABI=y
|
||||||
CONFIG_VFP=y
|
CONFIG_VFP=y
|
||||||
CONFIG_NEON=y
|
CONFIG_NEON=y
|
||||||
CONFIG_KERNEL_MODE_NEON=y
|
CONFIG_KERNEL_MODE_NEON=y
|
||||||
@@ -50,11 +59,7 @@ CONFIG_MODULES=y
|
|||||||
CONFIG_MODULE_UNLOAD=y
|
CONFIG_MODULE_UNLOAD=y
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
CONFIG_PARTITION_ADVANCED=y
|
||||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||||
CONFIG_ZSWAP=y
|
|
||||||
CONFIG_ZSWAP_DEFAULT_ON=y
|
|
||||||
CONFIG_ZSWAP_SHRINKER_DEFAULT_ON=y
|
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
# CONFIG_BALLOON_COMPACTION is not set
|
|
||||||
CONFIG_KSM=y
|
CONFIG_KSM=y
|
||||||
CONFIG_CMA=y
|
CONFIG_CMA=y
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
@@ -73,6 +78,7 @@ CONFIG_IP_MROUTE=y
|
|||||||
CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
|
CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
|
||||||
CONFIG_IP_PIMSM_V1=y
|
CONFIG_IP_PIMSM_V1=y
|
||||||
CONFIG_IP_PIMSM_V2=y
|
CONFIG_IP_PIMSM_V2=y
|
||||||
|
CONFIG_SYN_COOKIES=y
|
||||||
CONFIG_NET_IPVTI=m
|
CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_IPV6_SIT=m
|
CONFIG_IPV6_SIT=m
|
||||||
@@ -88,31 +94,12 @@ CONFIG_BRIDGE_NETFILTER=y
|
|||||||
CONFIG_NETFILTER_NETLINK_QUEUE=y
|
CONFIG_NETFILTER_NETLINK_QUEUE=y
|
||||||
CONFIG_NETFILTER_NETLINK_LOG=y
|
CONFIG_NETFILTER_NETLINK_LOG=y
|
||||||
CONFIG_NF_CONNTRACK=y
|
CONFIG_NF_CONNTRACK=y
|
||||||
CONFIG_NF_CONNTRACK_ZONES=y
|
|
||||||
CONFIG_NF_CONNTRACK_PROCFS=y
|
|
||||||
CONFIG_NF_CONNTRACK_EVENTS=y
|
CONFIG_NF_CONNTRACK_EVENTS=y
|
||||||
CONFIG_NF_CONNTRACK_TIMEOUT=y
|
|
||||||
CONFIG_NF_CONNTRACK_TIMESTAMP=y
|
|
||||||
CONFIG_NF_CONNTRACK_AMANDA=y
|
|
||||||
CONFIG_NF_CONNTRACK_FTP=y
|
CONFIG_NF_CONNTRACK_FTP=y
|
||||||
CONFIG_NF_CONNTRACK_H323=y
|
|
||||||
CONFIG_NF_CONNTRACK_IRC=y
|
|
||||||
CONFIG_NF_CONNTRACK_NETBIOS_NS=y
|
|
||||||
CONFIG_NF_CONNTRACK_SNMP=y
|
|
||||||
CONFIG_NF_CONNTRACK_PPTP=y
|
|
||||||
CONFIG_NF_CONNTRACK_SANE=y
|
|
||||||
CONFIG_NF_CONNTRACK_SIP=y
|
|
||||||
CONFIG_NF_CONNTRACK_TFTP=y
|
|
||||||
CONFIG_NF_CT_NETLINK=y
|
|
||||||
CONFIG_NF_CT_NETLINK_TIMEOUT=y
|
|
||||||
CONFIG_NF_CT_NETLINK_HELPER=y
|
|
||||||
CONFIG_NETFILTER_NETLINK_GLUE_CT=y
|
|
||||||
CONFIG_NF_TABLES=y
|
CONFIG_NF_TABLES=y
|
||||||
CONFIG_NF_TABLES_INET=y
|
CONFIG_NF_TABLES_INET=y
|
||||||
CONFIG_NF_TABLES_NETDEV=y
|
CONFIG_NF_TABLES_NETDEV=y
|
||||||
CONFIG_NFT_NUMGEN=y
|
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_FLOW_OFFLOAD=y
|
|
||||||
CONFIG_NFT_CONNLIMIT=m
|
CONFIG_NFT_CONNLIMIT=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
@@ -121,22 +108,15 @@ CONFIG_NFT_REDIR=m
|
|||||||
CONFIG_NFT_NAT=m
|
CONFIG_NFT_NAT=m
|
||||||
CONFIG_NFT_TUNNEL=m
|
CONFIG_NFT_TUNNEL=m
|
||||||
CONFIG_NFT_QUEUE=m
|
CONFIG_NFT_QUEUE=m
|
||||||
CONFIG_NFT_QUOTA=y
|
|
||||||
CONFIG_NFT_REJECT=m
|
CONFIG_NFT_REJECT=m
|
||||||
CONFIG_NFT_COMPAT=m
|
CONFIG_NFT_COMPAT=m
|
||||||
CONFIG_NFT_HASH=m
|
CONFIG_NFT_HASH=m
|
||||||
CONFIG_NFT_FIB_INET=y
|
|
||||||
CONFIG_NFT_XFRM=m
|
CONFIG_NFT_XFRM=m
|
||||||
CONFIG_NFT_SOCKET=m
|
CONFIG_NFT_SOCKET=m
|
||||||
CONFIG_NFT_OSF=m
|
CONFIG_NFT_OSF=m
|
||||||
CONFIG_NFT_TPROXY=y
|
|
||||||
CONFIG_NFT_SYNPROXY=y
|
|
||||||
CONFIG_NFT_DUP_NETDEV=m
|
CONFIG_NFT_DUP_NETDEV=m
|
||||||
CONFIG_NFT_FWD_NETDEV=m
|
CONFIG_NFT_FWD_NETDEV=m
|
||||||
CONFIG_NFT_FIB_NETDEV=y
|
|
||||||
CONFIG_NFT_REJECT_NETDEV=m
|
CONFIG_NFT_REJECT_NETDEV=m
|
||||||
CONFIG_NF_FLOW_TABLE_INET=y
|
|
||||||
CONFIG_NF_FLOW_TABLE=y
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
|
CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
|
||||||
CONFIG_NETFILTER_XT_TARGET_LOG=m
|
CONFIG_NETFILTER_XT_TARGET_LOG=m
|
||||||
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
|
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
|
||||||
@@ -153,58 +133,29 @@ CONFIG_NETFILTER_XT_MATCH_MAC=m
|
|||||||
CONFIG_NETFILTER_XT_MATCH_MARK=m
|
CONFIG_NETFILTER_XT_MATCH_MARK=m
|
||||||
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
|
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
|
||||||
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
|
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
|
||||||
CONFIG_IP_SET=y
|
|
||||||
CONFIG_IP_SET_BITMAP_IP=y
|
|
||||||
CONFIG_IP_SET_BITMAP_IPMAC=y
|
|
||||||
CONFIG_IP_SET_BITMAP_PORT=y
|
|
||||||
CONFIG_IP_SET_HASH_IP=y
|
|
||||||
CONFIG_IP_SET_HASH_IPMARK=y
|
|
||||||
CONFIG_IP_SET_HASH_IPPORT=y
|
|
||||||
CONFIG_IP_SET_HASH_IPPORTIP=y
|
|
||||||
CONFIG_IP_SET_HASH_IPPORTNET=y
|
|
||||||
CONFIG_IP_SET_HASH_IPMAC=y
|
|
||||||
CONFIG_IP_SET_HASH_MAC=y
|
|
||||||
CONFIG_IP_SET_HASH_NETPORTNET=y
|
|
||||||
CONFIG_IP_SET_HASH_NET=y
|
|
||||||
CONFIG_IP_SET_HASH_NETNET=y
|
|
||||||
CONFIG_IP_SET_HASH_NETPORT=y
|
|
||||||
CONFIG_IP_SET_HASH_NETIFACE=y
|
|
||||||
CONFIG_IP_SET_LIST_SET=y
|
|
||||||
CONFIG_NFT_DUP_IPV4=y
|
|
||||||
CONFIG_NFT_FIB_IPV4=y
|
|
||||||
CONFIG_NF_TABLES_ARP=y
|
|
||||||
CONFIG_NF_LOG_ARP=y
|
|
||||||
CONFIG_NF_LOG_IPV4=y
|
|
||||||
CONFIG_IP_NF_IPTABLES=m
|
CONFIG_IP_NF_IPTABLES=m
|
||||||
CONFIG_IP_NF_MATCH_AH=m
|
CONFIG_IP_NF_FILTER=m
|
||||||
CONFIG_IP_NF_MATCH_ECN=m
|
|
||||||
CONFIG_IP_NF_MATCH_RPFILTER=m
|
|
||||||
CONFIG_IP_NF_MATCH_TTL=m
|
|
||||||
CONFIG_IP_NF_TARGET_REJECT=m
|
CONFIG_IP_NF_TARGET_REJECT=m
|
||||||
CONFIG_IP_NF_TARGET_SYNPROXY=m
|
CONFIG_IP_NF_NAT=m
|
||||||
CONFIG_IP_NF_TARGET_ECN=m
|
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||||
CONFIG_IP_NF_ARP_MANGLE=m
|
CONFIG_IP_NF_MANGLE=m
|
||||||
CONFIG_NFT_DUP_IPV6=y
|
|
||||||
CONFIG_NFT_FIB_IPV6=y
|
|
||||||
CONFIG_IP6_NF_IPTABLES=m
|
CONFIG_IP6_NF_IPTABLES=m
|
||||||
CONFIG_IP6_NF_MATCH_AH=m
|
CONFIG_IP6_NF_MATCH_AH=m
|
||||||
CONFIG_IP6_NF_MATCH_EUI64=m
|
CONFIG_IP6_NF_MATCH_EUI64=m
|
||||||
CONFIG_IP6_NF_MATCH_FRAG=m
|
|
||||||
CONFIG_IP6_NF_MATCH_OPTS=m
|
|
||||||
CONFIG_IP6_NF_MATCH_HL=m
|
|
||||||
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
|
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
|
||||||
CONFIG_IP6_NF_MATCH_MH=m
|
CONFIG_IP6_NF_FILTER=m
|
||||||
CONFIG_IP6_NF_MATCH_RPFILTER=m
|
|
||||||
CONFIG_IP6_NF_MATCH_RT=m
|
|
||||||
CONFIG_IP6_NF_MATCH_SRH=m
|
|
||||||
CONFIG_IP6_NF_TARGET_REJECT=m
|
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||||
CONFIG_IP6_NF_TARGET_SYNPROXY=m
|
CONFIG_IP6_NF_RAW=m
|
||||||
|
CONFIG_IP6_NF_NAT=m
|
||||||
|
CONFIG_IP6_NF_TARGET_MASQUERADE=m
|
||||||
CONFIG_IP6_NF_TARGET_NPT=m
|
CONFIG_IP6_NF_TARGET_NPT=m
|
||||||
CONFIG_NF_TABLES_BRIDGE=m
|
CONFIG_NF_TABLES_BRIDGE=m
|
||||||
CONFIG_NFT_BRIDGE_META=m
|
CONFIG_NFT_BRIDGE_META=m
|
||||||
CONFIG_NFT_BRIDGE_REJECT=m
|
|
||||||
CONFIG_NF_CONNTRACK_BRIDGE=m
|
CONFIG_NF_CONNTRACK_BRIDGE=m
|
||||||
CONFIG_BRIDGE_NF_EBTABLES=m
|
CONFIG_BRIDGE_NF_EBTABLES=m
|
||||||
|
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||||
|
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||||
|
CONFIG_BRIDGE_EBT_T_NAT=m
|
||||||
CONFIG_BRIDGE_EBT_802_3=m
|
CONFIG_BRIDGE_EBT_802_3=m
|
||||||
CONFIG_BRIDGE_EBT_ARP=m
|
CONFIG_BRIDGE_EBT_ARP=m
|
||||||
CONFIG_BRIDGE_EBT_IP=m
|
CONFIG_BRIDGE_EBT_IP=m
|
||||||
@@ -243,21 +194,22 @@ CONFIG_NET_MPLS_GSO=y
|
|||||||
CONFIG_MPLS_ROUTING=m
|
CONFIG_MPLS_ROUTING=m
|
||||||
CONFIG_MPLS_IPTUNNEL=m
|
CONFIG_MPLS_IPTUNNEL=m
|
||||||
CONFIG_NET_PKTGEN=y
|
CONFIG_NET_PKTGEN=y
|
||||||
CONFIG_CFG80211=m
|
# CONFIG_WIRELESS is not set
|
||||||
CONFIG_MAC80211=m
|
|
||||||
CONFIG_RFKILL=y
|
|
||||||
CONFIG_NET_9P=y
|
CONFIG_NET_9P=y
|
||||||
CONFIG_NET_9P_VIRTIO=y
|
CONFIG_NET_9P_VIRTIO=y
|
||||||
CONFIG_LWTUNNEL=y
|
CONFIG_LWTUNNEL=y
|
||||||
CONFIG_PCI=y
|
CONFIG_PCI=y
|
||||||
CONFIG_PCIEPORTBUS=y
|
CONFIG_PCIEPORTBUS=y
|
||||||
CONFIG_PCI_IOV=y
|
CONFIG_PCI_IOV=y
|
||||||
|
CONFIG_PCI_AARDVARK=y
|
||||||
CONFIG_PCI_HOST_GENERIC=y
|
CONFIG_PCI_HOST_GENERIC=y
|
||||||
|
CONFIG_PCIE_ARMADA_8K=y
|
||||||
CONFIG_UEVENT_HELPER=y
|
CONFIG_UEVENT_HELPER=y
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
CONFIG_DEVTMPFS_MOUNT=y
|
CONFIG_DEVTMPFS_MOUNT=y
|
||||||
# CONFIG_STANDALONE is not set
|
# CONFIG_STANDALONE is not set
|
||||||
|
CONFIG_RASPBERRYPI_FIRMWARE=y
|
||||||
CONFIG_FW_CFG_SYSFS=y
|
CONFIG_FW_CFG_SYSFS=y
|
||||||
CONFIG_FW_CFG_SYSFS_CMDLINE=y
|
CONFIG_FW_CFG_SYSFS_CMDLINE=y
|
||||||
CONFIG_OF_OVERLAY=y
|
CONFIG_OF_OVERLAY=y
|
||||||
@@ -269,6 +221,7 @@ CONFIG_BLK_DEV_NVME=y
|
|||||||
CONFIG_SRAM=y
|
CONFIG_SRAM=y
|
||||||
CONFIG_EEPROM_AT24=y
|
CONFIG_EEPROM_AT24=y
|
||||||
# CONFIG_SCSI_PROC_FS is not set
|
# CONFIG_SCSI_PROC_FS is not set
|
||||||
|
CONFIG_SCSI=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
CONFIG_SCSI_SAS_LIBSAS=y
|
CONFIG_SCSI_SAS_LIBSAS=y
|
||||||
CONFIG_SCSI_SAS_ATA=y
|
CONFIG_SCSI_SAS_ATA=y
|
||||||
@@ -277,6 +230,7 @@ CONFIG_ATA=y
|
|||||||
CONFIG_SATA_AHCI=y
|
CONFIG_SATA_AHCI=y
|
||||||
CONFIG_SATA_MOBILE_LPM_POLICY=0
|
CONFIG_SATA_MOBILE_LPM_POLICY=0
|
||||||
CONFIG_SATA_AHCI_PLATFORM=y
|
CONFIG_SATA_AHCI_PLATFORM=y
|
||||||
|
CONFIG_AHCI_MVEBU=y
|
||||||
CONFIG_PATA_OF_PLATFORM=y
|
CONFIG_PATA_OF_PLATFORM=y
|
||||||
CONFIG_MD=y
|
CONFIG_MD=y
|
||||||
CONFIG_BLK_DEV_DM=y
|
CONFIG_BLK_DEV_DM=y
|
||||||
@@ -299,29 +253,67 @@ CONFIG_VETH=m
|
|||||||
CONFIG_VIRTIO_NET=y
|
CONFIG_VIRTIO_NET=y
|
||||||
CONFIG_NLMON=y
|
CONFIG_NLMON=y
|
||||||
CONFIG_NET_VRF=y
|
CONFIG_NET_VRF=y
|
||||||
|
CONFIG_BCMGENET=y
|
||||||
|
CONFIG_SMSC911X=y
|
||||||
|
CONFIG_USB_LAN78XX=y
|
||||||
CONFIG_USB_USBNET=y
|
CONFIG_USB_USBNET=y
|
||||||
|
CONFIG_USB_NET_SMSC95XX=y
|
||||||
|
CONFIG_BRCMFMAC=m
|
||||||
|
CONFIG_ZD1211RW=m
|
||||||
|
CONFIG_INPUT_MOUSEDEV=m
|
||||||
CONFIG_INPUT_EVDEV=y
|
CONFIG_INPUT_EVDEV=y
|
||||||
|
CONFIG_INPUT_TOUCHSCREEN=y
|
||||||
|
CONFIG_TOUCHSCREEN_EDT_FT5X06=m
|
||||||
# CONFIG_LEGACY_PTYS is not set
|
# CONFIG_LEGACY_PTYS is not set
|
||||||
|
CONFIG_SERIAL_8250=y
|
||||||
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
|
CONFIG_SERIAL_8250_EXTENDED=y
|
||||||
|
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||||
|
CONFIG_SERIAL_8250_BCM2835AUX=y
|
||||||
|
CONFIG_SERIAL_AMBA_PL011=y
|
||||||
|
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||||
CONFIG_SERIAL_DEV_BUS=y
|
CONFIG_SERIAL_DEV_BUS=y
|
||||||
|
CONFIG_TTY_PRINTK=y
|
||||||
|
CONFIG_HVC_DRIVER=y
|
||||||
CONFIG_VIRTIO_CONSOLE=y
|
CONFIG_VIRTIO_CONSOLE=y
|
||||||
CONFIG_I2C_CHARDEV=y
|
CONFIG_I2C_CHARDEV=y
|
||||||
|
CONFIG_I2C_BCM2835=m
|
||||||
CONFIG_SPI=y
|
CONFIG_SPI=y
|
||||||
|
CONFIG_SPI_BCM2835=y
|
||||||
|
CONFIG_SPI_BCM2835AUX=y
|
||||||
|
CONFIG_GPIO_SYSFS=y
|
||||||
|
CONFIG_SENSORS_RASPBERRYPI_HWMON=m
|
||||||
CONFIG_THERMAL=y
|
CONFIG_THERMAL=y
|
||||||
|
CONFIG_BCM2711_THERMAL=y
|
||||||
|
CONFIG_BCM2835_THERMAL=m
|
||||||
CONFIG_WATCHDOG=y
|
CONFIG_WATCHDOG=y
|
||||||
|
CONFIG_BCM2835_WDT=y
|
||||||
CONFIG_I6300ESB_WDT=y
|
CONFIG_I6300ESB_WDT=y
|
||||||
CONFIG_MFD_SYSCON=y
|
CONFIG_MFD_SYSCON=y
|
||||||
CONFIG_REGULATOR=y
|
CONFIG_REGULATOR=y
|
||||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||||
|
CONFIG_REGULATOR_GPIO=y
|
||||||
CONFIG_MEDIA_SUPPORT=y
|
CONFIG_MEDIA_SUPPORT=y
|
||||||
|
CONFIG_DRM=y
|
||||||
|
CONFIG_DRM_LOAD_EDID_FIRMWARE=y
|
||||||
|
CONFIG_DRM_PANEL_SIMPLE=m
|
||||||
|
CONFIG_DRM_TOSHIBA_TC358762=m
|
||||||
|
CONFIG_DRM_V3D=m
|
||||||
|
CONFIG_DRM_VC4=m
|
||||||
|
CONFIG_DRM_VC4_HDMI_CEC=y
|
||||||
|
CONFIG_DRM_SIMPLEDRM=y
|
||||||
|
CONFIG_FB=y
|
||||||
|
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||||
|
CONFIG_SOUND=y
|
||||||
|
CONFIG_SND=y
|
||||||
|
CONFIG_SND_SOC=y
|
||||||
|
CONFIG_SND_BCM2835_SOC_I2S=y
|
||||||
|
CONFIG_HID_GENERIC=m
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
|
|
||||||
CONFIG_USB_OTG=y
|
CONFIG_USB_OTG=y
|
||||||
CONFIG_USB_EHCI_HCD=m
|
|
||||||
CONFIG_USB_EHCI_ROOT_HUB_TT=y
|
|
||||||
CONFIG_USB_EHCI_HCD_PLATFORM=m
|
|
||||||
CONFIG_USB_OHCI_HCD=m
|
|
||||||
CONFIG_USB_OHCI_HCD_PLATFORM=m
|
|
||||||
CONFIG_USB_STORAGE=y
|
CONFIG_USB_STORAGE=y
|
||||||
|
CONFIG_USB_DWC2=y
|
||||||
|
CONFIG_NOP_USB_XCEIV=y
|
||||||
CONFIG_USB_GADGET=y
|
CONFIG_USB_GADGET=y
|
||||||
CONFIG_USB_ETH=m
|
CONFIG_USB_ETH=m
|
||||||
CONFIG_USB_ETH_EEM=y
|
CONFIG_USB_ETH_EEM=y
|
||||||
@@ -329,6 +321,8 @@ CONFIG_USB_G_SERIAL=m
|
|||||||
CONFIG_MMC=y
|
CONFIG_MMC=y
|
||||||
CONFIG_MMC_SDHCI=y
|
CONFIG_MMC_SDHCI=y
|
||||||
CONFIG_MMC_SDHCI_PLTFM=y
|
CONFIG_MMC_SDHCI_PLTFM=y
|
||||||
|
CONFIG_MMC_SDHCI_IPROC=y
|
||||||
|
CONFIG_MMC_BCM2835=y
|
||||||
CONFIG_NEW_LEDS=y
|
CONFIG_NEW_LEDS=y
|
||||||
CONFIG_LEDS_CLASS=y
|
CONFIG_LEDS_CLASS=y
|
||||||
CONFIG_LEDS_GPIO=y
|
CONFIG_LEDS_GPIO=y
|
||||||
@@ -342,16 +336,23 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
|
|||||||
CONFIG_LEDS_TRIGGER_TRANSIENT=y
|
CONFIG_LEDS_TRIGGER_TRANSIENT=y
|
||||||
CONFIG_LEDS_TRIGGER_CAMERA=y
|
CONFIG_LEDS_TRIGGER_CAMERA=y
|
||||||
CONFIG_DMADEVICES=y
|
CONFIG_DMADEVICES=y
|
||||||
|
CONFIG_DMA_BCM2835=y
|
||||||
CONFIG_VIRTIO_PCI=y
|
CONFIG_VIRTIO_PCI=y
|
||||||
CONFIG_VIRTIO_BALLOON=y
|
CONFIG_VIRTIO_BALLOON=y
|
||||||
CONFIG_VIRTIO_INPUT=y
|
CONFIG_VIRTIO_INPUT=y
|
||||||
CONFIG_VIRTIO_MMIO=y
|
CONFIG_VIRTIO_MMIO=y
|
||||||
|
CONFIG_STAGING=y
|
||||||
|
CONFIG_SND_BCM2835=m
|
||||||
|
CONFIG_VIDEO_BCM2835=m
|
||||||
|
CONFIG_CLK_RASPBERRYPI=y
|
||||||
CONFIG_MAILBOX=y
|
CONFIG_MAILBOX=y
|
||||||
|
CONFIG_BCM2835_MBOX=y
|
||||||
# CONFIG_IOMMU_SUPPORT is not set
|
# CONFIG_IOMMU_SUPPORT is not set
|
||||||
|
CONFIG_RASPBERRYPI_POWER=y
|
||||||
CONFIG_PWM=y
|
CONFIG_PWM=y
|
||||||
|
CONFIG_PWM_BCM2835=y
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
CONFIG_EXT2_FS_POSIX_ACL=y
|
CONFIG_EXT3_FS=y
|
||||||
CONFIG_EXT4_FS=y
|
|
||||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||||
CONFIG_BTRFS_FS=y
|
CONFIG_BTRFS_FS=y
|
||||||
CONFIG_BTRFS_FS_POSIX_ACL=y
|
CONFIG_BTRFS_FS_POSIX_ACL=y
|
||||||
@@ -370,24 +371,25 @@ CONFIG_SQUASHFS_LZO=y
|
|||||||
CONFIG_SQUASHFS_XZ=y
|
CONFIG_SQUASHFS_XZ=y
|
||||||
CONFIG_SQUASHFS_ZSTD=y
|
CONFIG_SQUASHFS_ZSTD=y
|
||||||
CONFIG_9P_FS=y
|
CONFIG_9P_FS=y
|
||||||
CONFIG_NLS_DEFAULT="iso8859-15"
|
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
CONFIG_NLS_ISO8859_15=y
|
|
||||||
CONFIG_NLS_UTF8=y
|
CONFIG_NLS_UTF8=y
|
||||||
CONFIG_CRYPTO_CCM=y
|
CONFIG_CRYPTO_CCM=y
|
||||||
CONFIG_CRYPTO_GCM=y
|
CONFIG_CRYPTO_GCM=y
|
||||||
|
# CONFIG_XZ_DEC_ARM is not set
|
||||||
|
# CONFIG_XZ_DEC_ARMTHUMB is not set
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
CONFIG_CMA_SIZE_MBYTES=32
|
CONFIG_CMA_SIZE_MBYTES=32
|
||||||
CONFIG_PRINTK_TIME=y
|
CONFIG_PRINTK_TIME=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
|
CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_DEBUG_FS=y
|
CONFIG_DEBUG_FS=y
|
||||||
CONFIG_PANIC_ON_OOPS=y
|
CONFIG_PANIC_ON_OOPS=y
|
||||||
CONFIG_PANIC_TIMEOUT=20
|
CONFIG_PANIC_TIMEOUT=20
|
||||||
CONFIG_HARDLOCKUP_DETECTOR=y
|
CONFIG_DETECT_HUNG_TASK=y
|
||||||
CONFIG_BOOTPARAM_HARDLOCKUP_PANIC=y
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
CONFIG_WQ_WATCHDOG=y
|
# CONFIG_RCU_TRACE is not set
|
||||||
CONFIG_TEST_LOCKUP=m
|
|
||||||
CONFIG_FUNCTION_TRACER=y
|
CONFIG_FUNCTION_TRACER=y
|
||||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
# CONFIG_STRICT_DEVMEM is not set
|
||||||
|
CONFIG_MEMTEST=y
|
||||||
@@ -2,10 +2,14 @@ config BR2_PACKAGE_RASPBERRYPI_RPI2
|
|||||||
bool "Raspberry Pi 2 Model B (32-bit ARMv7)"
|
bool "Raspberry Pi 2 Model B (32-bit ARMv7)"
|
||||||
depends on BR2_arm
|
depends on BR2_arm
|
||||||
select SDCARD_AUX
|
select SDCARD_AUX
|
||||||
|
select BR2_PACKAGE_FEATURE_WIFI
|
||||||
|
select BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI
|
||||||
|
select BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI
|
||||||
|
|
||||||
help
|
help
|
||||||
Support for the 32-bit ARMv7 Raspberry Pi 2B single-board computer
|
Support for the 32-bit ARMv7 Raspberry Pi 2B single-board computer
|
||||||
(SBC) with BCM2836 quad-core Cortex-A7 processor.
|
(SBC) with BCM2836 quad-core Cortex-A7 processor.
|
||||||
|
|
||||||
This was the only Raspberry Pi model with the BCM2836 and the rare
|
This was the only Raspberry Pi model with the BCM2836 and the 2B
|
||||||
RPi 2B board revision v1.2 actually got an underclocked BCM2837,
|
actually got a BCM2837 (Cortex-A53) underclocked an w/o wifi in
|
||||||
which is the saem Cortex-A53 as the RPi3, but w/o wifi.
|
the v1.2 board revision.
|
||||||
@@ -21,8 +21,9 @@ The board features:
|
|||||||
How to Build
|
How to Build
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Since there are no pre-built images for ARM 32-bit, you need to build both
|
Since there are no pre-built images for ARM32, you need to build both Infix
|
||||||
Infix and the bootloader from source.
|
and the bootloader from source.
|
||||||
|
|
||||||
|
|
||||||
1. Clone the repository
|
1. Clone the repository
|
||||||
|
|
||||||
@@ -36,12 +37,12 @@ Infix and the bootloader from source.
|
|||||||
|
|
||||||
3. Build Infix (in another tree)
|
3. Build Infix (in another tree)
|
||||||
|
|
||||||
make O=x-arm arm_defconfig
|
make O=x-arm32 aarch32_defconfig
|
||||||
make O=x-arm
|
make O=x-arm32
|
||||||
|
|
||||||
4. Create the SD card image
|
4. Create the SD card image
|
||||||
|
|
||||||
./utils/mkimage.sh -b x-boot -r x-arm raspberrypi-rpi2
|
./utils/mkimage.sh -b x-boot -r x-arm32 raspberrypi-rpi2
|
||||||
|
|
||||||
The resulting image can be found in `x-boot/images/infix-arm-sdcard.img`
|
The resulting image can be found in `x-boot/images/infix-arm-sdcard.img`
|
||||||
|
|
||||||
@@ -91,5 +92,5 @@ Serial settings: 115200 8N1
|
|||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> Use only 3.3V serial adapters. 5V adapters will damage your Raspberry Pi!
|
> Use only 3.3V serial adapters. 5V adapters will damage your Raspberry Pi!
|
||||||
|
|
||||||
[0]: https://www.kernelkit.org/posts/flashing-sdcard/
|
[0]: https://kernelkit.org/posts/flashing-sdcard/
|
||||||
[1]: https://www.raspberrypi.com/products/raspberry-pi-2-model-b/
|
[1]: https://www.raspberrypi.com/products/raspberry-pi-2-model-b/
|
||||||
@@ -1,19 +1,13 @@
|
|||||||
# Raspberry Pi 2 Model B specific kernel configuration
|
# Raspberry Pi 2 Model B specific kernel configuration
|
||||||
define RASPBERRYPI_RPI2_LINUX_CONFIG_FIXUPS
|
define RASPBERRYPI_RPI2_LINUX_CONFIG_FIXUPS
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_ARCH_BCM)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_ARCH_BCM2835)
|
|
||||||
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SOUND)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_SOUND)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SND)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_SND)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SND_SOC)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_SND_SOC)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_SND_BCM2835_SOC_I2S,y)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_SND_BCM2835,m)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_INPUT_MOUSE)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_INPUT_MOUSE)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_INPUT_KEYBOARD)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_INPUT_KEYBOARD)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_INPUT_TOUCHSCREEN)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_INPUT_TOUCHSCREEN)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_INPUT_MOUSEDEV,m)
|
$(call KCONFIG_SET_OPT,CONFIG_INPUT_MOUSEDEV,m)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_HID_GENERIC,m)
|
$(call KCONFIG_SET_OPT,CONFIG_HID_GENERIC,m)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_TOUCHSCREEN_EDT_FT5X06,m)
|
|
||||||
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_ARCH_BCM)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_ARCH_BCM)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_ARCH_BCM2835)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_ARCH_BCM2835)
|
||||||
@@ -21,58 +15,46 @@ define RASPBERRYPI_RPI2_LINUX_CONFIG_FIXUPS
|
|||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_BCM2835_WDT)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_BCM2835_WDT)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_DMA_BCM2835)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_DMA_BCM2835)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_RASPBERRYPI_FIRMWARE)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_RASPBERRYPI_FIRMWARE)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_RASPBERRYPI_POWER)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_ARM_RASPBERRYPI_CPUFREQ)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_CLK_RASPBERRYPI)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_PINCTRL_BCM2835)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_PINCTRL_BCM2835)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_GPIO_BCM2835)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_GPIO_BCM2835)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_PWM_BCM2835)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_BRCMFMAC,m)
|
$(call KCONFIG_SET_OPT,CONFIG_BRCMFMAC,m)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_BRCMFMAC_SDIO)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_BRCMFMAC_SDIO)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_I2C_BCM2835,m)
|
$(call KCONFIG_SET_OPT,CONFIG_I2C_BCM2835,m)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_SPI_BCM2835,y)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_SPI_BCM2835AUX,y)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_SENSORS_RASPBERRYPI_HWMON,m)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_BCM2711_THERMAL,y)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_BCM2835_THERMAL,m)
|
$(call KCONFIG_SET_OPT,CONFIG_BCM2835_THERMAL,m)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MMC_BCM2835)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_MMC_BCM2835)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_MMC_SDHCI_IPROC,y)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_RASPBERRYPI_POWER)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_8250)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_8250)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_8250_CONSOLE)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_8250_CONSOLE)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_8250_BCM2835AUX)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_8250_BCM2835AUX)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_8250_EXTENDED)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_8250_EXTENDED)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_8250_SHARE_IRQ)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_8250_SHARE_IRQ)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_AMBA_PL011)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_AMBA_PL011_CONSOLE)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_NET_VENDOR_BROADCOM)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_NET_VENDOR_BROADCOM)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_BCMGENET,y)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_SMSC911X,y)
|
$(call KCONFIG_SET_OPT,CONFIG_SMSC911X,y)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_USB_USBNET)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_USB_LAN78XX,y)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_USB_NET_SMSC95XX,y)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_REGULATOR_GPIO,y)
|
$(call KCONFIG_SET_OPT,CONFIG_REGULATOR_GPIO,y)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_COMMON_CLK_BCM2835)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_COMMON_CLK_BCM2835)
|
||||||
|
$(call KCONFIG_ENABLE_OPT,CONFIG_CLK_RASPBERRYPI)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_DRM)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_DRM)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_DRM_KMS_HELPER)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_DRM_KMS_HELPER)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_DRM_SIMPLEDRM,y)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_DRM_V3D,m)
|
$(call KCONFIG_SET_OPT,CONFIG_DRM_V3D,m)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_DRM_VC4,m)
|
$(call KCONFIG_SET_OPT,CONFIG_DRM_VC4,m)
|
||||||
|
$(call KCONFIG_SET_OPT,CONFIG_STAGING,y)
|
||||||
|
$(call KCONFIG_SET_OPT,CONFIG_SND_BCM2835,m)
|
||||||
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_DRM_VC4_HDMI_CEC)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_DRM_VC4_HDMI_CEC)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_DRM_LOAD_EDID_FIRMWARE)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_DRM_LOAD_EDID_FIRMWARE)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_DRM_PANEL_BRIDGE)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_DRM_PANEL_BRIDGE)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_DRM_BRIDGE)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_DRM_BRIDGE)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_DRM_TOSHIBA_TC358762,m)
|
$(call KCONFIG_SET_OPT,CONFIG_DRM_TOSHIBA_TC358762,m)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_DRM_PANEL_SIMPLE,m)
|
$(call KCONFIG_SET_OPT,CONFIG_DRM_PANEL_SIMPLE,m)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_STAGING,y)
|
|
||||||
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_FB)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_FB)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_FRAMEBUFFER_CONSOLE)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_FRAMEBUFFER_CONSOLE)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_DRM_FBDEV_EMULATION)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_DRM_FBDEV_EMULATION)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_BACKLIGHT_CLASS_DEVICE)
|
|
||||||
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_USB_DWC2)
|
$(call KCONFIG_SET_OPT,CONFIG_TOUCHSCREEN_EDT_FT5X06,m)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_NOP_USB_XCEIV)
|
|
||||||
|
$(call KCONFIG_ENABLE_OPT,CONFIG_BACKLIGHT_CLASS_DEVICE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(ix-board))
|
$(eval $(ix-board))
|
||||||
@@ -41,32 +41,14 @@
|
|||||||
"ietf-ip:ipv4": {
|
"ietf-ip:ipv4": {
|
||||||
"infix-dhcp-client:dhcp": {
|
"infix-dhcp-client:dhcp": {
|
||||||
"option": [
|
"option": [
|
||||||
{
|
{"id": "netmask"},
|
||||||
"id": "netmask"
|
{"id": "broadcast"},
|
||||||
},
|
{"id": "router"},
|
||||||
{
|
{"id": "domain"},
|
||||||
"id": "broadcast"
|
{"id": "hostname"},
|
||||||
},
|
{"id": "dns-server"},
|
||||||
{
|
{"id": "ntp-server"},
|
||||||
"id": "router"
|
{"id": "vendor-class", "value": "Raspberry Pi 2 Model B"}
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "domain"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "hostname",
|
|
||||||
"value": "auto"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "dns-server"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ntp-server"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "vendor-class",
|
|
||||||
"value": "Raspberry Pi 2 Model B"
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -89,9 +71,6 @@
|
|||||||
},
|
},
|
||||||
"ietf-netconf-acm:nacm": {
|
"ietf-netconf-acm:nacm": {
|
||||||
"enable-nacm": true,
|
"enable-nacm": true,
|
||||||
"read-default": "permit",
|
|
||||||
"write-default": "permit",
|
|
||||||
"exec-default": "permit",
|
|
||||||
"groups": {
|
"groups": {
|
||||||
"group": [
|
"group": [
|
||||||
{
|
{
|
||||||
@@ -99,14 +78,6 @@
|
|||||||
"user-name": [
|
"user-name": [
|
||||||
"admin"
|
"admin"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "operator",
|
|
||||||
"user-name": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "guest",
|
|
||||||
"user-name": []
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -126,37 +97,6 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "operator-acl",
|
|
||||||
"group": [
|
|
||||||
"operator"
|
|
||||||
],
|
|
||||||
"rule": [
|
|
||||||
{
|
|
||||||
"name": "permit-system-rpcs",
|
|
||||||
"module-name": "ietf-system",
|
|
||||||
"rpc-name": "*",
|
|
||||||
"access-operations": "exec",
|
|
||||||
"action": "permit",
|
|
||||||
"comment": "Operators can reboot, shutdown, and set system time."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "guest-acl",
|
|
||||||
"group": [
|
|
||||||
"guest"
|
|
||||||
],
|
|
||||||
"rule": [
|
|
||||||
{
|
|
||||||
"name": "deny-all-write+exec",
|
|
||||||
"module-name": "*",
|
|
||||||
"access-operations": "create update delete exec",
|
|
||||||
"action": "deny",
|
|
||||||
"comment": "Guests cannot change anything or exec rpcs."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "default-deny-all",
|
"name": "default-deny-all",
|
||||||
"group": [
|
"group": [
|
||||||
@@ -164,25 +104,11 @@
|
|||||||
],
|
],
|
||||||
"rule": [
|
"rule": [
|
||||||
{
|
{
|
||||||
"name": "deny-password-access",
|
"name": "deny-password-read",
|
||||||
|
"module-name": "ietf-system",
|
||||||
"path": "/ietf-system:system/authentication/user/password",
|
"path": "/ietf-system:system/authentication/user/password",
|
||||||
"access-operations": "*",
|
"access-operations": "*",
|
||||||
"action": "deny",
|
"action": "deny"
|
||||||
"comment": "No user except admins can access password hashes."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deny-keystore-access",
|
|
||||||
"module-name": "ietf-keystore",
|
|
||||||
"access-operations": "*",
|
|
||||||
"action": "deny",
|
|
||||||
"comment": "No user except admins can access cryptographic keys."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deny-truststore-access",
|
|
||||||
"module-name": "ietf-truststore",
|
|
||||||
"access-operations": "*",
|
|
||||||
"action": "deny",
|
|
||||||
"comment": "No user except admins can access trust store."
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -196,11 +122,7 @@
|
|||||||
"name": "default-ssh",
|
"name": "default-ssh",
|
||||||
"ssh": {
|
"ssh": {
|
||||||
"tcp-server-parameters": {
|
"tcp-server-parameters": {
|
||||||
"local-bind": [
|
"local-address": "::"
|
||||||
{
|
|
||||||
"local-address": "::"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"ssh-server-parameters": {
|
"ssh-server-parameters": {
|
||||||
"server-identity": {
|
"server-identity": {
|
||||||
@@ -246,7 +168,7 @@
|
|||||||
"infix-system:motd-banner": "Li0tLS0tLS0uCnwgIC4gLiAgfCBJbmZpeCBPUyDigJQgSW1tdXRhYmxlLkZyaWVuZGx5LlNlY3VyZQp8LS4gdiAuLXwgaHR0cHM6Ly9rZXJuZWxraXQub3JnCictJy0tLSctJwo="
|
"infix-system:motd-banner": "Li0tLS0tLS0uCnwgIC4gLiAgfCBJbmZpeCBPUyDigJQgSW1tdXRhYmxlLkZyaWVuZGx5LlNlY3VyZQp8LS4gdiAuLXwgaHR0cHM6Ly9rZXJuZWxraXQub3JnCictJy0tLSctJwo="
|
||||||
},
|
},
|
||||||
"infix-meta:meta": {
|
"infix-meta:meta": {
|
||||||
"version": "1.7"
|
"version": "1.6"
|
||||||
},
|
},
|
||||||
"infix-services:mdns": {
|
"infix-services:mdns": {
|
||||||
"enabled": true
|
"enabled": true
|
||||||
@@ -1,10 +1,7 @@
|
|||||||
if BR2_aarch64
|
if BR2_aarch64
|
||||||
|
|
||||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/alder-alder/Config.in"
|
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/alder-alder/Config.in"
|
||||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/acer-connect-vero-w6m/Config.in"
|
|
||||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/bananapi-bpi-r3/Config.in"
|
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/bananapi-bpi-r3/Config.in"
|
||||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/bananapi-bpi-r4/Config.in"
|
|
||||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/bananapi-bpi-r64/Config.in"
|
|
||||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/freescale-imx8mp-evk/Config.in"
|
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/freescale-imx8mp-evk/Config.in"
|
||||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/friendlyarm-nanopi-r2s/Config.in"
|
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/friendlyarm-nanopi-r2s/Config.in"
|
||||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/marvell-cn9130-crb/Config.in"
|
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/marvell-cn9130-crb/Config.in"
|
||||||
|
|||||||
@@ -4,12 +4,8 @@ aarch64
|
|||||||
Board Specific Documentation
|
Board Specific Documentation
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
- [Acer Connect Vero W6m](acer-connect-vero-w6m/)
|
- [Banana Pi R3](banana-pi-r3/)
|
||||||
- [Banana Pi BPi-R3](bananapi-bpi-r3/)
|
- [Marvell CN9130-CRB](cn9130-crb/)
|
||||||
- [Banana Pi BPi-R4](bananapi-bpi-r4/)
|
- [Microchip SparX-5i PCB135 (eMMC)](sparx5-pcb135/)
|
||||||
- [Banana Pi BPi-R64](bananapi-bpi-r64/)
|
- [NanoPi R2S](r2s/)
|
||||||
- [Marvell CN9130-CRB](marvell-cn9130-crb/)
|
- [Raspberry Pi 64-bit](raspberry-pi64/)
|
||||||
- [Marvell ESPRESSObin](marvell-espressobin/)
|
|
||||||
- [Microchip SparX-5i PCB135 (eMMC)](microchip-sparx5-pcb135/)
|
|
||||||
- [NanoPi R2S](friendlyarm-nanopi-r2s/)
|
|
||||||
- [Raspberry Pi 64-bit](raspberrypi-rpi64/)
|
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
config BR2_PACKAGE_ACER_CONNECT_VERO_W6M
|
|
||||||
bool "Acer Connect Vero W6m"
|
|
||||||
depends on BR2_aarch64
|
|
||||||
select BR2_PACKAGE_BANANAPI_BPI_R3
|
|
||||||
help
|
|
||||||
Build Acer Connect Vero W6m
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
Copyright (c) 2026 The KernelKit Authors
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
@@ -1,131 +0,0 @@
|
|||||||
# Acer Connect Vero W6m
|
|
||||||
|
|
||||||
<img src="connect_vero_w6m_case.jpg" alt="Acer Connect Vero W6m" width=400 padding=10>
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
|
|
||||||
The Acer Connect Vero W6m is a compact WiFi 6/6E router platform based
|
|
||||||
on the MediaTek MT7986A SoC. In Infix it is supported as an eMMC-based
|
|
||||||
target that reuses the factory secure boot chain while replacing the
|
|
||||||
system partitions with an Infix installation.
|
|
||||||
|
|
||||||
The Acer Connect Vero W6m is based on the same MT7986a SoC as the
|
|
||||||
BPI-R3, with tri-band WiFi (2.4 GHz + 5 GHz + 6 GHz) using a PCIe
|
|
||||||
MT7916 module and the SoC's built-in MT7976 DBDC radio.
|
|
||||||
|
|
||||||
## Default WiFi Layout
|
|
||||||
|
|
||||||
The factory configuration on this branch enables all three radios in AP
|
|
||||||
mode and bridges them into the default LAN bridge `br0`:
|
|
||||||
|
|
||||||
- `radio0` / `wifi0-ap`: 2.4 GHz, SSID `Infix`
|
|
||||||
- `radio1` / `wifi1-ap`: 6 GHz, SSID `Infix6G`
|
|
||||||
- `radio2` / `wifi2-ap`: 5 GHz, SSID `Infix5G`
|
|
||||||
|
|
||||||
6 GHz operation is enabled in the MT7915e driver configuration, and all
|
|
||||||
three APs use the same default passphrase `infixinfix` from the factory
|
|
||||||
configuration.
|
|
||||||
|
|
||||||
Secure boot is enabled on this device, so the factory bootloader
|
|
||||||
(partitions 1-4: bl2, u-boot-env, factory, fip) must not be modified.
|
|
||||||
Infix is installed by replacing partitions 5+ while keeping the
|
|
||||||
factory bootloader intact. The stock U-Boot chainloads the Infix
|
|
||||||
U-Boot from the first partition after fip.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- Serial console access (115200 8N1) — required to interrupt U-Boot.
|
|
||||||
Disassembly is needed to reach the UART header. See the [OpenWrt
|
|
||||||
Vero W6m page][vero-openwrt] for details.
|
|
||||||
- TFTP server on the local network with `u-boot.bin` for the initial
|
|
||||||
RAM boot.
|
|
||||||
- SSH access from the running Infix system to a host that stores
|
|
||||||
`infix-vero-w-emmc.img`.
|
|
||||||
- Ethernet cable connected between the PC and the Vero Internet/WAN
|
|
||||||
port.
|
|
||||||
- DHCP server running on the PC, serving addresses on that link during
|
|
||||||
installation.
|
|
||||||
- **Save the MAC addresses** from the stock U-Boot environment before
|
|
||||||
installing. Interrupt autoboot and run `printenv` to note down:
|
|
||||||
`2gMAC`, `5gMAC`, `6gMAC`, `LANMAC`, and `WANMAC`.
|
|
||||||
|
|
||||||
## Required Files
|
|
||||||
|
|
||||||
Prepare these files on a host reachable from the Vero:
|
|
||||||
|
|
||||||
1. **Infix Vero image:**
|
|
||||||
- [infix-vero-w-emmc.img][1] (Complete system image)
|
|
||||||
2. **eMMC bootloader** (extracted from):
|
|
||||||
- [bpi-r3-emmc-boot-2025.01-latest.tar.gz][2]
|
|
||||||
- Extract `u-boot.bin` from the tarball to your TFTP server
|
|
||||||
|
|
||||||
## Installing Infix
|
|
||||||
|
|
||||||
Connect the PC directly to the Vero Internet/WAN port before starting
|
|
||||||
the installation. The PC should provide DHCP service on that link so
|
|
||||||
the stock U-Boot and the temporary Infix system can reach the TFTP/SSH
|
|
||||||
host.
|
|
||||||
|
|
||||||
1. **RAM-load Infix U-Boot** from the stock U-Boot serial console
|
|
||||||
(hit any key to stop autoboot):
|
|
||||||
|
|
||||||
```
|
|
||||||
setenv serverip <TFTP_SERVER_IP>
|
|
||||||
setenv ipaddr <VERO_IP>
|
|
||||||
setenv bootmenu_default 7
|
|
||||||
tftpboot 0x46000000 u-boot.bin
|
|
||||||
go 0x46000000
|
|
||||||
```
|
|
||||||
|
|
||||||
`serverip` must point to your TFTP server and `ipaddr` must be a free
|
|
||||||
address for the Vero on the same subnet. `bootmenu_default 7`
|
|
||||||
bypasses secure boot verification. The Infix U-Boot will
|
|
||||||
automatically netboot the Infix system.
|
|
||||||
|
|
||||||
2. **From running Infix**, stream the image directly to eMMC:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ssh <USER>@<HOST> "dd if=/path/to/infix-vero-w-emmc.img bs=512 skip=17408 status=none" | \
|
|
||||||
dd of=/dev/mmcblk0 bs=512 seek=17408 conv=fsync
|
|
||||||
sync
|
|
||||||
```
|
|
||||||
|
|
||||||
This writes only the Infix partitions (starting after fip at sector
|
|
||||||
17408), leaving the factory bootloader and calibration data intact.
|
|
||||||
Do not interrupt the transfer; if it fails, rerun the command from
|
|
||||||
the beginning.
|
|
||||||
|
|
||||||
3. **Update the GPT** to replace stock partitions 5+ with the Infix
|
|
||||||
layout:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo sgdisk --zap-all /dev/mmcblk0
|
|
||||||
sudo sgdisk -a 1 \
|
|
||||||
-n2:8192:9215 -c2:u-boot-env \
|
|
||||||
-n3:9216:13311 -c3:factory \
|
|
||||||
-n4:13312:17407 -c4:fip \
|
|
||||||
-n5:17408:+32M -c5:infix-uboot \
|
|
||||||
-n6:0:+8M -c6:aux \
|
|
||||||
-n7:0:+250M -c7:primary \
|
|
||||||
-n8:0:+250M -c8:secondary \
|
|
||||||
-n9:0:+128M -c9:cfg \
|
|
||||||
-n10:0:+128M -c10:var \
|
|
||||||
-p /dev/mmcblk0
|
|
||||||
```
|
|
||||||
|
|
||||||
4. **Configure U-Boot to chainload Infix permanently** — reboot and
|
|
||||||
interrupt stock U-Boot again:
|
|
||||||
|
|
||||||
```
|
|
||||||
setenv bootmenu_default 7
|
|
||||||
setenv bootcmd 'mmc read 0x46000000 0x4400 0x10000; go 0x46000000'
|
|
||||||
saveenv
|
|
||||||
reset
|
|
||||||
```
|
|
||||||
|
|
||||||
The `bootcmd` reads the Infix U-Boot (at sector 0x4400/17408)
|
|
||||||
into RAM and jumps to it. After `reset`, Infix boots from eMMC.
|
|
||||||
|
|
||||||
[vero-openwrt]: https://openwrt.org/toh/acer/predator_vero_w6m
|
|
||||||
[1]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-vero-w-emmc.img
|
|
||||||
[2]: https://github.com/kernelkit/infix/releases/download/latest-boot/bpi-r3-emmc-boot-2025.01-latest.tar.gz
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
# Locally calculated
|
|
||||||
sha256 d48246c717b505cc11df95171f2fd548b389e1a463f1af4c68d0b69fe0d1009b LICENSE
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
$(eval $(ix-board))
|
|
||||||
$(eval $(generic-package))
|
|
||||||
|
Before Width: | Height: | Size: 18 KiB |
@@ -1 +0,0 @@
|
|||||||
dtb-y += mediatek/mt7986a-acer-connect-vero-w6m.dtb
|
|
||||||
@@ -1,425 +0,0 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
|
||||||
|
|
||||||
#include <dt-bindings/input/input.h>
|
|
||||||
#include <dt-bindings/gpio/gpio.h>
|
|
||||||
#include <dt-bindings/leds/common.h>
|
|
||||||
#include <dt-bindings/pinctrl/mt65xx.h>
|
|
||||||
|
|
||||||
#include <arm64/mediatek/mt7986a.dtsi>
|
|
||||||
|
|
||||||
/ {
|
|
||||||
chosen {
|
|
||||||
stdout-path = "serial0:115200n8";
|
|
||||||
infix {
|
|
||||||
/* Default admin user password: 'admin' */
|
|
||||||
factory-password-hash = "$5$mI/zpOAqZYKLC2WU$i7iPzZiIjOjrBF3NyftS9CCq8dfYwHwrmUK097Jca9A";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
memory@40000000 {
|
|
||||||
reg = <0 0x40000000 0 0x20000000>;
|
|
||||||
device_type = "memory";
|
|
||||||
};
|
|
||||||
|
|
||||||
reg_1p8v: regulator-1p8v {
|
|
||||||
compatible = "regulator-fixed";
|
|
||||||
regulator-name = "fixed-1.8V";
|
|
||||||
regulator-min-microvolt = <1800000>;
|
|
||||||
regulator-max-microvolt = <1800000>;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-always-on;
|
|
||||||
};
|
|
||||||
|
|
||||||
reg_3p3v: regulator-3p3v {
|
|
||||||
compatible = "regulator-fixed";
|
|
||||||
regulator-name = "fixed-3.3V";
|
|
||||||
regulator-min-microvolt = <3300000>;
|
|
||||||
regulator-max-microvolt = <3300000>;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-always-on;
|
|
||||||
};
|
|
||||||
|
|
||||||
reg_5v: regulator-5v {
|
|
||||||
compatible = "regulator-fixed";
|
|
||||||
regulator-name = "fixed-5V";
|
|
||||||
regulator-min-microvolt = <5000000>;
|
|
||||||
regulator-max-microvolt = <5000000>;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-always-on;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio-keys {
|
|
||||||
compatible = "gpio-keys";
|
|
||||||
|
|
||||||
factory {
|
|
||||||
label = "factory";
|
|
||||||
linux,code = <KEY_RESTART>;
|
|
||||||
gpios = <&pio 9 GPIO_ACTIVE_LOW>;
|
|
||||||
};
|
|
||||||
|
|
||||||
wps {
|
|
||||||
label = "wps";
|
|
||||||
linux,code = <KEY_WPS_BUTTON>;
|
|
||||||
gpios = <&pio 10 GPIO_ACTIVE_LOW>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&watchdog {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&pio {
|
|
||||||
wifi_rst_hog: wifi-reset-hog {
|
|
||||||
gpio-hog;
|
|
||||||
gpios = <6 GPIO_ACTIVE_LOW>;
|
|
||||||
output-low;
|
|
||||||
line-name = "wifi-reset";
|
|
||||||
};
|
|
||||||
|
|
||||||
mmc0_pins_default: mmc0-pins {
|
|
||||||
mux {
|
|
||||||
function = "emmc";
|
|
||||||
groups = "emmc_51";
|
|
||||||
};
|
|
||||||
|
|
||||||
conf-cmd-dat {
|
|
||||||
pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
|
|
||||||
"EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
|
|
||||||
"EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
|
|
||||||
input-enable;
|
|
||||||
drive-strength = <MTK_DRIVE_4mA>;
|
|
||||||
bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
|
|
||||||
};
|
|
||||||
|
|
||||||
conf-clk {
|
|
||||||
pins = "EMMC_CK";
|
|
||||||
drive-strength = <MTK_DRIVE_6mA>;
|
|
||||||
bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
|
|
||||||
};
|
|
||||||
|
|
||||||
conf-ds {
|
|
||||||
pins = "EMMC_DSL";
|
|
||||||
bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
|
|
||||||
};
|
|
||||||
|
|
||||||
conf-rst {
|
|
||||||
pins = "EMMC_RSTB";
|
|
||||||
drive-strength = <MTK_DRIVE_4mA>;
|
|
||||||
bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
mmc0_pins_uhs: mmc0-uhs-pins {
|
|
||||||
mux {
|
|
||||||
function = "emmc";
|
|
||||||
groups = "emmc_51";
|
|
||||||
};
|
|
||||||
|
|
||||||
conf-cmd-dat {
|
|
||||||
pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
|
|
||||||
"EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
|
|
||||||
"EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
|
|
||||||
input-enable;
|
|
||||||
drive-strength = <MTK_DRIVE_4mA>;
|
|
||||||
bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
|
|
||||||
};
|
|
||||||
|
|
||||||
conf-clk {
|
|
||||||
pins = "EMMC_CK";
|
|
||||||
drive-strength = <MTK_DRIVE_6mA>;
|
|
||||||
bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
|
|
||||||
};
|
|
||||||
|
|
||||||
conf-ds {
|
|
||||||
pins = "EMMC_DSL";
|
|
||||||
bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
|
|
||||||
};
|
|
||||||
|
|
||||||
conf-rst {
|
|
||||||
pins = "EMMC_RSTB";
|
|
||||||
drive-strength = <MTK_DRIVE_4mA>;
|
|
||||||
bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
pcie_pins: pcie-pins {
|
|
||||||
mux {
|
|
||||||
function = "pcie";
|
|
||||||
groups = "pcie_pereset";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
wf_2g_5g_pins: wf_2g_5g-pins {
|
|
||||||
mux {
|
|
||||||
function = "wifi";
|
|
||||||
groups = "wf_2g", "wf_5g";
|
|
||||||
};
|
|
||||||
conf {
|
|
||||||
pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
|
|
||||||
"WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
|
|
||||||
"WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
|
|
||||||
"WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
|
|
||||||
"WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
|
|
||||||
"WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
|
|
||||||
"WF1_TOP_CLK", "WF1_TOP_DATA";
|
|
||||||
drive-strength = <MTK_DRIVE_4mA>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
wf_dbdc_pins: wf-dbdc-pins {
|
|
||||||
mux {
|
|
||||||
function = "wifi";
|
|
||||||
groups = "wf_dbdc";
|
|
||||||
};
|
|
||||||
conf {
|
|
||||||
pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
|
|
||||||
"WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
|
|
||||||
"WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
|
|
||||||
"WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
|
|
||||||
"WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
|
|
||||||
"WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
|
|
||||||
"WF1_TOP_CLK", "WF1_TOP_DATA";
|
|
||||||
drive-strength = <MTK_DRIVE_4mA>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
i2c_pins: i2c-pins {
|
|
||||||
mux {
|
|
||||||
function = "i2c";
|
|
||||||
groups = "i2c";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&trng {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&crypto {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&uart0 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c0 {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&i2c_pins>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&mmc0 {
|
|
||||||
status = "okay";
|
|
||||||
pinctrl-names = "default", "state_uhs";
|
|
||||||
pinctrl-0 = <&mmc0_pins_default>;
|
|
||||||
pinctrl-1 = <&mmc0_pins_uhs>;
|
|
||||||
bus-width = <0x08>;
|
|
||||||
max-frequency = <200000000>;
|
|
||||||
cap-mmc-highspeed;
|
|
||||||
mmc-hs200-1_8v;
|
|
||||||
mmc-hs400-1_8v;
|
|
||||||
hs400-ds-delay = <0x14014>;
|
|
||||||
vmmc-supply = <®_3p3v>;
|
|
||||||
vqmmc-supply = <®_1p8v>;
|
|
||||||
non-removable;
|
|
||||||
no-sd;
|
|
||||||
no-sdio;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
card@0 {
|
|
||||||
compatible = "mmc-card";
|
|
||||||
reg = <0>;
|
|
||||||
|
|
||||||
block {
|
|
||||||
compatible = "block-device";
|
|
||||||
|
|
||||||
partitions {
|
|
||||||
block-partition-factory {
|
|
||||||
partname = "factory";
|
|
||||||
|
|
||||||
nvmem: nvmem-layout {
|
|
||||||
compatible = "fixed-layout";
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <1>;
|
|
||||||
|
|
||||||
eeprom_factory_0: eeprom@0 {
|
|
||||||
reg = <0x0 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
precal_factory_1010: precal@1010 {
|
|
||||||
reg = <0x1010 0x62810>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&pcie {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&pcie_pins>;
|
|
||||||
num-lanes = <1>;
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
slot0: pcie@0,0 {
|
|
||||||
reg = <0x0000 0 0 0 0>;
|
|
||||||
#address-cells = <0x03>;
|
|
||||||
#size-cells = <0x02>;
|
|
||||||
|
|
||||||
pcie_wifi: wifi@0,0 {
|
|
||||||
compatible = "mediatek,mt76";
|
|
||||||
reg = <0x0000 0 0 0 0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&pcie_phy {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&pcie_port {
|
|
||||||
clocks = <&clk40m>, <&topckgen CLK_TOP_PCIE_PHY_SEL>;
|
|
||||||
clock-names = "ref", "da_ref";
|
|
||||||
};
|
|
||||||
|
|
||||||
ð {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
gmac0: mac@0 {
|
|
||||||
compatible = "mediatek,eth-mac";
|
|
||||||
reg = <0>;
|
|
||||||
phy-mode = "2500base-x";
|
|
||||||
|
|
||||||
fixed-link {
|
|
||||||
speed = <2500>;
|
|
||||||
full-duplex;
|
|
||||||
pause;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
mdio: mdio-bus {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
switch: switch@1f {
|
|
||||||
compatible = "mediatek,mt7531";
|
|
||||||
reg = <31>;
|
|
||||||
reset-gpios = <&pio 5 GPIO_ACTIVE_HIGH>;
|
|
||||||
|
|
||||||
ports {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
swport0: port@0 {
|
|
||||||
reg = <0>;
|
|
||||||
phy-handle = <&swphy0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
port@1 {
|
|
||||||
reg = <1>;
|
|
||||||
label = "lan1";
|
|
||||||
phy-handle = <&swphy1>;
|
|
||||||
};
|
|
||||||
|
|
||||||
port@2 {
|
|
||||||
reg = <2>;
|
|
||||||
label = "lan2";
|
|
||||||
phy-handle = <&swphy2>;
|
|
||||||
};
|
|
||||||
|
|
||||||
port@3 {
|
|
||||||
reg = <3>;
|
|
||||||
label = "lan3";
|
|
||||||
phy-handle = <&swphy3>;
|
|
||||||
};
|
|
||||||
|
|
||||||
port@6 {
|
|
||||||
reg = <6>;
|
|
||||||
label = "cpu";
|
|
||||||
ethernet = <&gmac0>;
|
|
||||||
phy-mode = "2500base-x";
|
|
||||||
|
|
||||||
fixed-link {
|
|
||||||
speed = <2500>;
|
|
||||||
full-duplex;
|
|
||||||
pause;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
mdio {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
swphy0: phy@0 {
|
|
||||||
reg = <0>;
|
|
||||||
|
|
||||||
mediatek,led-config = <
|
|
||||||
0x21 0x8008 /* BASIC_CTRL */
|
|
||||||
0x22 0x0c00 /* ON_DURATION */
|
|
||||||
0x23 0x1400 /* BLINK_DURATION */
|
|
||||||
0x24 0xc001 /* LED0_ON_CTRL */
|
|
||||||
0x25 0x0003 /* LED0_BLINK_CTRL */
|
|
||||||
0x26 0xc006 /* LED1_ON_CTRL */
|
|
||||||
0x27 0x003c /* LED1_BLINK_CTRL */
|
|
||||||
>;
|
|
||||||
};
|
|
||||||
|
|
||||||
swphy1: phy@1 {
|
|
||||||
reg = <1>;
|
|
||||||
|
|
||||||
mediatek,led-config = <
|
|
||||||
0x21 0x8008 /* BASIC_CTRL */
|
|
||||||
0x22 0x0c00 /* ON_DURATION */
|
|
||||||
0x23 0x1400 /* BLINK_DURATION */
|
|
||||||
0x24 0xc001 /* LED0_ON_CTRL */
|
|
||||||
0x25 0x0003 /* LED0_BLINK_CTRL */
|
|
||||||
0x26 0xc006 /* LED1_ON_CTRL */
|
|
||||||
0x27 0x003c /* LED1_BLINK_CTRL */
|
|
||||||
>;
|
|
||||||
};
|
|
||||||
|
|
||||||
swphy2: phy@2 {
|
|
||||||
reg = <2>;
|
|
||||||
|
|
||||||
mediatek,led-config = <
|
|
||||||
0x21 0x8008 /* BASIC_CTRL */
|
|
||||||
0x22 0x0c00 /* ON_DURATION */
|
|
||||||
0x23 0x1400 /* BLINK_DURATION */
|
|
||||||
0x24 0xc001 /* LED0_ON_CTRL */
|
|
||||||
0x25 0x0003 /* LED0_BLINK_CTRL */
|
|
||||||
0x26 0xc006 /* LED1_ON_CTRL */
|
|
||||||
0x27 0x003c /* LED1_BLINK_CTRL */
|
|
||||||
>;
|
|
||||||
};
|
|
||||||
|
|
||||||
swphy3: phy@3 {
|
|
||||||
reg = <3>;
|
|
||||||
|
|
||||||
mediatek,led-config = <
|
|
||||||
0x21 0x8008 /* BASIC_CTRL */
|
|
||||||
0x22 0x0c00 /* ON_DURATION */
|
|
||||||
0x23 0x1400 /* BLINK_DURATION */
|
|
||||||
0x24 0xc001 /* LED0_ON_CTRL */
|
|
||||||
0x25 0x0003 /* LED0_BLINK_CTRL */
|
|
||||||
0x26 0xc006 /* LED1_ON_CTRL */
|
|
||||||
0x27 0x003c /* LED1_BLINK_CTRL */
|
|
||||||
>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&wifi {
|
|
||||||
nvmem-cells = <&eeprom_factory_0>, <&precal_factory_1010>;
|
|
||||||
nvmem-cell-names = "eeprom", "precal";
|
|
||||||
pinctrl-names = "default", "dbdc";
|
|
||||||
pinctrl-0 = <&wf_2g_5g_pins>;
|
|
||||||
pinctrl-1 = <&wf_dbdc_pins>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
@@ -1,263 +0,0 @@
|
|||||||
/* Factory EEPROM for MT7976 WMAC (DBDC) - Acer Connect Vero W */
|
|
||||||
/* Band 1 patched from 5GHz-only to 5GHz+6GHz selectable */
|
|
||||||
|
|
||||||
&wifi {
|
|
||||||
mediatek,eeprom-data = <
|
|
||||||
0x86790100 0x000c4326 0x60100000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x01000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000800 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x12525353 0x003c003f 0x3a100700 0x15030000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x0000be00 0x00000000
|
|
||||||
0x0000c100 0x00000000 0x00000000 0xc3000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000009 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000303 0x03030303 0x03030303
|
|
||||||
0x03030303 0x03030303 0x03040303 0x03040303
|
|
||||||
0x03040303 0x03040000 0x00161b18 0x1b1a1a1a
|
|
||||||
0x1a0d0008 0x0f0d0209 0x0e0d0209 0x0e0d0209
|
|
||||||
0x0e0c020a 0x0e0c020a 0x0e0c020a 0x0e0b020b
|
|
||||||
0x0e2b2b2b 0x2b222222 0x22222222 0x22222222
|
|
||||||
0x22222222 0x22222222 0x22000000 0x00000000
|
|
||||||
0x00000000 0x002a2a2a 0x2a282828 0x282a2a2a
|
|
||||||
0x2a282828 0x282a2a2a 0x2a282828 0x282a2a2a
|
|
||||||
0x2a282828 0x28000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x007f7f20 0x2530363c 0x41014847 0x4c52575c
|
|
||||||
0x7f7f7f7f 0x1b222a33 0x3a40014d 0x464c525a
|
|
||||||
0x5e7f7f7f 0x7f252834 0x3c424a01 0x4a4f555d
|
|
||||||
0x636e7f7f 0x7f7f202a 0x303b444a 0x014a5158
|
|
||||||
0x5f666e7f 0x7f7f7f7f 0x8080c5c5 0xd1d1dddd
|
|
||||||
0xe5e5f3f3 0x40408080 0xcfcfdbdb 0xe3e3efef
|
|
||||||
0xf7f74040 0x8080bfbf 0xcbcbd9d9 0xe5e5eded
|
|
||||||
0x40408080 0xb9b9c5c5 0xd3d3dfdf 0xe7e74040
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0xc0a0c0e0 0xfcfcafe0 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x02200220 0x02200220 0x02300230 0x02300230
|
|
||||||
0x02300230 0x02300230 0x02300230 0x02300230
|
|
||||||
0x02240224 0x02240224 0x02240224 0x02240224
|
|
||||||
0x02240224 0x02240224 0x02240224 0x02240224
|
|
||||||
0x000000c4 0xc4c4c4c4 0x0000c4c4 0xc4c4c1c1
|
|
||||||
0x008282c3 0xc3000000 0x00838300 0xc4c4c4c1
|
|
||||||
0xc1008282 0x8383c3c3 0xc2c10000 0x83838484
|
|
||||||
0xc4c4c4c1 0xc1008282 0x8383c4c4 0xc4c1c100
|
|
||||||
0x82828383 0xc4c4c4c1 0xc1008282 0x8383c4c4
|
|
||||||
0xc3c100c4 0x81c4c3c2 0x00818181 0xc4c4c3c2
|
|
||||||
0x00818282 0x00c4c4c2 0xc2008182 0x8200c4c4
|
|
||||||
0xc3c20081 0x82828484 0xc4c4c3c2 0x00818282
|
|
||||||
0x8484c4c4 0xc2c20081 0x82828484 0xc4c4c2c1
|
|
||||||
0x81828383 0x8585c4c4 0xc3c20081 0x82828484
|
|
||||||
0xc4c4c3c2 0x00818282 0x8484c4c4 0xc3c20081
|
|
||||||
0x82828484 0xc6c5c3c1 0x00c5c5c3 0xc2008182
|
|
||||||
0x828484c5 0xc5c3c200 0x81828284 0x84c4c4c3
|
|
||||||
0xc2008182 0x828484c4 0xc4c2c181 0x82838385
|
|
||||||
0x85c5c5c3 0xc2008182 0x828484c5 0xc5c3c200
|
|
||||||
0x81828284 0x84c5c5c3 0xc2008182 0x82848400
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x378a6e05 0x0ae64a6c 0x00000000 0x50050000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00b40000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x86828786 0x87c8cb8a 0x8380c982 0x00c8ca86
|
|
||||||
0x8383c583 0x83c1c58c 0x8883c78b 0x8780c28c
|
|
||||||
0x8485c682 0xc3c4c4c4 0xc5c6c7c8 0xcfcecdcc
|
|
||||||
0xcccdcec1 0xc1c1c1c2 0xc4c6c7ce 0xcecfcfcf
|
|
||||||
0xcecec6c7 0xc8c9caca 0xcbcbd2d2 0xd2d2d0ce
|
|
||||||
0xcc8100c1 0xc3c5c6c7 0xc8d0d0d1 0xd1d1d0cf
|
|
||||||
0xdeee6be7 0x5fede2eb 0xce08ce09 0xce0ace0a
|
|
||||||
0x4e0b4f0b 0x4f0c4f0c 0x4f0d4f0d 0x540a540b
|
|
||||||
0x540c540b 0x540c510a 0x510b510c 0xd10c510d
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0xde0fde10 0xde115e12
|
|
||||||
0xde12de12 0xde135e14 0x5e0cde0d 0xde0e5e10
|
|
||||||
0x5e105e10 0x5e11de11 0xde0ede0f 0xde10de11
|
|
||||||
0x5e12de12 0x5e135e13 0xde0f5e11 0x5e12de13
|
|
||||||
0x5e13de13 0xde14de14 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00848484 0x84848484 0x84000000 0x00e4d5d4
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
>;
|
|
||||||
};
|
|
||||||
@@ -1,263 +0,0 @@
|
|||||||
/* Factory EEPROM for PCIe MT7916 radio - Acer Connect Vero W */
|
|
||||||
/* Offset 0xa0000 in the "factory" GPT partition on eMMC */
|
|
||||||
|
|
||||||
&pcie_wifi {
|
|
||||||
mediatek,eeprom-data = <
|
|
||||||
0x16790000 0x000c4326 0x60000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x50750000 0x07670700 0x00000400 0x50710000
|
|
||||||
0x00000000 0x00000400 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0xb101e748 0xf57f5e99
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000800 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x12924848 0x003e003f 0x3a100000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x81a3a380
|
|
||||||
0xa4910091 0x00910091 0x00910000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x000a0000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x0000c500 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000013 0x12120000 0x00000000
|
|
||||||
0x00000000 0x00000303 0x03030303 0x03030303
|
|
||||||
0x03030303 0x03030505 0x05050505 0x05050505
|
|
||||||
0x05050505 0x05050000 0x001b1919 0x19181818
|
|
||||||
0x180f0006 0x1c0e080a 0x170e080a 0x170d0809
|
|
||||||
0x170d020a 0x0e0d020a 0x0e0d020a 0x0e0b020a
|
|
||||||
0x0e22222c 0x2c2b2b2b 0x2b2b2b2b 0x2b2b2b2b
|
|
||||||
0x2b2b2b2b 0x2b2b2b2b 0x2b000000 0x00000000
|
|
||||||
0x00000000 0x001e201e 0x201e2020 0x201e201e
|
|
||||||
0x20201e20 0x20272929 0x29272727 0x27272929
|
|
||||||
0x29272727 0x27000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00cdcfcf 0xcfcfcf00 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x007f7f20 0x2530363c 0x41014347 0x4c52575c
|
|
||||||
0x7f7f0000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x0000007f 0x7f252834 0x3c424a01 0x4d4f555f
|
|
||||||
0x636e7f7f 0x7f7f202a 0x303b444a 0x014d5158
|
|
||||||
0x5f666e7f 0x7f7f7f7f 0x8080c5c5 0xcbcbd9d9
|
|
||||||
0xe1e1ebeb 0x40408080 0xcfcfdbdb 0xe3e3efef
|
|
||||||
0xf7f74040 0x8080c1c1 0xcdcdd5d5 0xe1e1eded
|
|
||||||
0x40408080 0xbbbbc7c7 0xcfcfdbdb 0xe7e74040
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0xb0900000 0x0000c0f0 0xf8000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x02000200 0x02000200 0x02000200 0x02000200
|
|
||||||
0x02000200 0x02000200 0x02000200 0x02000200
|
|
||||||
0x02000200 0x02000200 0x02000200 0x02000200
|
|
||||||
0x02000200 0x02000200 0x02000200 0x02000200
|
|
||||||
0x000000c6 0xc6c6c6c4 0x0000c5c5 0xc5c4c1c1
|
|
||||||
0x818383c3 0xc3c2c100 0x81848400 0xc5c5c4c1
|
|
||||||
0xc1818383 0x8585c3c3 0xc2c10081 0x84848686
|
|
||||||
0xc5c5c4c1 0xc1818383 0x8585c5c5 0xc4c1c181
|
|
||||||
0x83838585 0xc5c5c4c1 0xc1818383 0x8585c6c6
|
|
||||||
0xc4c300c6 0x00c6c4c3 0xc1008181 0xc6c6c4c3
|
|
||||||
0xc1008181 0x00c5c5c3 0xc2008182 0x8200c6c6
|
|
||||||
0xc4c3c100 0x81818686 0xc6c6c4c3 0xc1008181
|
|
||||||
0x8686c5c5 0xc3c20081 0x82828787 0xc5c5c3c2
|
|
||||||
0x00818282 0x8787c6c6 0xc4c3c100 0x81818686
|
|
||||||
0xc6c6c4c3 0xc1008181 0x8686c6c6 0xc4c3c100
|
|
||||||
0x81818686 0xc6c6c4c3 0x00c6c6c4 0xc3c10081
|
|
||||||
0x818686c6 0xc6c4c3c1 0x00818186 0x86c5c5c3
|
|
||||||
0xc2008182 0x828787c5 0xc5c3c281 0x82838388
|
|
||||||
0x88c6c6c4 0xc3c10081 0x818686c6 0xc6c4c3c1
|
|
||||||
0x00818186 0x86c6c6c4 0xc3c10081 0x81868600
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00b70000 0x00b70000 0x00000000 0x00000000
|
|
||||||
0x01000000 0x0000c400 0xb8008700 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0xc7c60000 0x89898987 0x87858381 0x898a8b8b
|
|
||||||
0x8a898785 0x88898988 0x87868584 0x00000000
|
|
||||||
0x00000000 0xcccfcecd 0xcdcacecd 0xcbcfcece
|
|
||||||
0xcfcfcfc7 0xcececdce 0xc7cfcec7 0xcfcfcfcf
|
|
||||||
0xcfcf0000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x7fe2f0e4 0x00000000 0xa4de24df 0xa4e0a4e1
|
|
||||||
0xa4e1a4de 0x24dfa4e0 0xa4e1a4e1 0xa4dea4df
|
|
||||||
0xa4e0a4e1 0xa4e1a4de 0xa4df24e0 0xa4e1a4e1
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0xde0fde0f 0xde0fde10
|
|
||||||
0xde11de11 0x5e12de12 0xde10de10 0xde10de11
|
|
||||||
0xde12de12 0xde13de13 0x5a085a09 0x5a0a5a0a
|
|
||||||
0x5a0a5a0a 0x5a0a5a0a 0x5a055a06 0x5a075a08
|
|
||||||
0x5a085a09 0x5a095a09 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00ded453
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
0x00000000 0x00000000 0x00000000 0x00000000
|
|
||||||
>;
|
|
||||||
};
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
|
||||||
|
|
||||||
/dts-v1/;
|
|
||||||
#include "mt7986a-acer-connect-vero-w6m-common.dtsi"
|
|
||||||
#include "mt7986a-acer-connect-vero-w6m-pcie-eeprom.dtsi"
|
|
||||||
|
|
||||||
/ {
|
|
||||||
model = "Acer Connect Vero W6m";
|
|
||||||
compatible = "acer,connect-vero-w", "mediatek,mt7986a";
|
|
||||||
|
|
||||||
aliases {
|
|
||||||
serial0 = &uart0;
|
|
||||||
led-boot = &led_status;
|
|
||||||
led-failsafe = &led_status;
|
|
||||||
led-running = &led_status;
|
|
||||||
led-upgrade = &led_status;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c0 {
|
|
||||||
led-controller@30 {
|
|
||||||
compatible = "kinetic,ktd2026";
|
|
||||||
reg = <0x30>;
|
|
||||||
vin-supply = <®_5v>;
|
|
||||||
vio-supply = <®_3p3v>;
|
|
||||||
|
|
||||||
led_status: multi-led {
|
|
||||||
color = <LED_COLOR_ID_RGB>;
|
|
||||||
function = LED_FUNCTION_STATUS;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
led@0 {
|
|
||||||
reg = <0>;
|
|
||||||
color = <LED_COLOR_ID_RED>;
|
|
||||||
};
|
|
||||||
|
|
||||||
led@1 {
|
|
||||||
reg = <1>;
|
|
||||||
color = <LED_COLOR_ID_GREEN>;
|
|
||||||
};
|
|
||||||
|
|
||||||
led@2 {
|
|
||||||
reg = <2>;
|
|
||||||
color = <LED_COLOR_ID_BLUE>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&nvmem {
|
|
||||||
eeprom_factory_a0000: eeprom@a0000 {
|
|
||||||
reg = <0xa0000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
precal_factory_a1010: precal@a1010 {
|
|
||||||
reg = <0xa1010 0x62810>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&swport0 {
|
|
||||||
label = "internet";
|
|
||||||
};
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
image cfg.ext4 {
|
|
||||||
empty = true
|
|
||||||
temporary = true
|
|
||||||
size = 128M
|
|
||||||
ext4 {
|
|
||||||
label = "cfg"
|
|
||||||
use-mke2fs = true
|
|
||||||
features = "uninit_bg"
|
|
||||||
extraargs = "-m 0 -i 4096"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
image var.ext4 {
|
|
||||||
empty = true
|
|
||||||
temporary = true
|
|
||||||
size = 128M
|
|
||||||
ext4 {
|
|
||||||
label = "var"
|
|
||||||
use-mke2fs = true
|
|
||||||
features = "uninit_bg"
|
|
||||||
extraargs = "-m 0 -i 4096"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
image #INFIX_ID##VERSION#-vero-w-#TARGET#.img {
|
|
||||||
hdimage {
|
|
||||||
partition-table-type = "gpt"
|
|
||||||
gpt-no-backup = true
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Factory partitions (1-4) -- secure boot, do not overwrite.
|
|
||||||
* Offsets and sizes match the stock Acer GPT exactly.
|
|
||||||
* No image data is written, preserving factory content.
|
|
||||||
*/
|
|
||||||
partition u-boot-env {
|
|
||||||
offset = 8192s
|
|
||||||
size = 1024s
|
|
||||||
}
|
|
||||||
|
|
||||||
partition factory {
|
|
||||||
offset = 9216s
|
|
||||||
size = 4096s
|
|
||||||
}
|
|
||||||
|
|
||||||
partition fip {
|
|
||||||
offset = 13312s
|
|
||||||
size = 4096s
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Infix U-Boot, chainloaded by stock bootloader */
|
|
||||||
partition infix-uboot {
|
|
||||||
offset = 17408s
|
|
||||||
image = "u-boot.bin"
|
|
||||||
size = 32M
|
|
||||||
}
|
|
||||||
|
|
||||||
partition aux {
|
|
||||||
partition-uuid = D4EF35A0-0652-45A1-B3DE-D63339C82035
|
|
||||||
image = "aux.ext4"
|
|
||||||
}
|
|
||||||
|
|
||||||
partition primary {
|
|
||||||
partition-type-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4
|
|
||||||
bootable = true
|
|
||||||
size = 250M
|
|
||||||
image = "rootfs.squashfs"
|
|
||||||
}
|
|
||||||
|
|
||||||
partition secondary {
|
|
||||||
partition-type-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4
|
|
||||||
bootable = true
|
|
||||||
size = 250M
|
|
||||||
image = "rootfs.squashfs"
|
|
||||||
}
|
|
||||||
|
|
||||||
partition cfg {
|
|
||||||
partition-uuid = 7aa497f0-73b5-47e5-b2ab-8752d8a48105
|
|
||||||
image = "cfg.ext4"
|
|
||||||
}
|
|
||||||
|
|
||||||
partition var {
|
|
||||||
partition-uuid = 8046A06A-E45A-4A14-A6AD-6684704A393F
|
|
||||||
image = "var.ext4"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,488 +0,0 @@
|
|||||||
{
|
|
||||||
"ieee802-dot1ab-lldp:lldp": {
|
|
||||||
"infix-lldp:enabled": true
|
|
||||||
},
|
|
||||||
"ietf-hardware:hardware": {
|
|
||||||
"component": [
|
|
||||||
{
|
|
||||||
"name": "USB",
|
|
||||||
"class": "infix-hardware:usb",
|
|
||||||
"state": {
|
|
||||||
"admin-state": "unlocked"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"class": "infix-hardware:usb",
|
|
||||||
"name": "USB2",
|
|
||||||
"state": {
|
|
||||||
"admin-state": "unlocked"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "radio0",
|
|
||||||
"class": "infix-hardware:wifi",
|
|
||||||
"infix-hardware:wifi-radio": {
|
|
||||||
"country-code": "DE",
|
|
||||||
"band": "2.4GHz",
|
|
||||||
"channel": "auto"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "radio1",
|
|
||||||
"class": "infix-hardware:wifi",
|
|
||||||
"infix-hardware:wifi-radio": {
|
|
||||||
"country-code": "DE",
|
|
||||||
"band": "6GHz",
|
|
||||||
"channel": "auto"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "radio2",
|
|
||||||
"class": "infix-hardware:wifi",
|
|
||||||
"infix-hardware:wifi-radio": {
|
|
||||||
"country-code": "DE",
|
|
||||||
"band": "5GHz",
|
|
||||||
"channel": "auto"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ietf-interfaces:interfaces": {
|
|
||||||
"interface": [
|
|
||||||
{
|
|
||||||
"name": "br0",
|
|
||||||
"type": "infix-if-type:bridge",
|
|
||||||
"ietf-ip:ipv4": {
|
|
||||||
"address": [
|
|
||||||
{
|
|
||||||
"ip": "192.168.0.1",
|
|
||||||
"prefix-length": 24
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lan1",
|
|
||||||
"type": "infix-if-type:ethernet",
|
|
||||||
"ietf-ip:ipv6": {},
|
|
||||||
"infix-interfaces:bridge-port": {
|
|
||||||
"bridge": "br0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lan2",
|
|
||||||
"type": "infix-if-type:ethernet",
|
|
||||||
"ietf-ip:ipv6": {},
|
|
||||||
"infix-interfaces:bridge-port": {
|
|
||||||
"bridge": "br0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lan3",
|
|
||||||
"type": "infix-if-type:ethernet",
|
|
||||||
"ietf-ip:ipv6": {},
|
|
||||||
"infix-interfaces:bridge-port": {
|
|
||||||
"bridge": "br0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lo",
|
|
||||||
"type": "infix-if-type:loopback",
|
|
||||||
"ietf-ip:ipv4": {
|
|
||||||
"address": [
|
|
||||||
{
|
|
||||||
"ip": "127.0.0.1",
|
|
||||||
"prefix-length": 8
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ietf-ip:ipv6": {
|
|
||||||
"address": [
|
|
||||||
{
|
|
||||||
"ip": "::1",
|
|
||||||
"prefix-length": 128
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "internet",
|
|
||||||
"type": "infix-if-type:ethernet",
|
|
||||||
"ietf-ip:ipv4": {
|
|
||||||
"infix-dhcp-client:dhcp": {
|
|
||||||
"option": [
|
|
||||||
{
|
|
||||||
"id": "ntp-server"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "broadcast"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "domain"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "hostname",
|
|
||||||
"value": "auto"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "dns-server"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "router"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "netmask"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "vendor-class",
|
|
||||||
"value": "Acer Connect Vero W"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ietf-ip:ipv6": {
|
|
||||||
"infix-dhcpv6-client:dhcp": {
|
|
||||||
"option": [
|
|
||||||
{
|
|
||||||
"id": "ntp-server"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "client-fqdn"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "domain-search"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "dns-server"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "wifi0-ap",
|
|
||||||
"type": "infix-if-type:wifi",
|
|
||||||
"infix-interfaces:wifi": {
|
|
||||||
"radio": "radio0",
|
|
||||||
"access-point": {
|
|
||||||
"ssid": "Infix",
|
|
||||||
"security": {
|
|
||||||
"secret": "wifi"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"infix-interfaces:bridge-port": {
|
|
||||||
"bridge": "br0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "wifi1-ap",
|
|
||||||
"type": "infix-if-type:wifi",
|
|
||||||
"infix-interfaces:wifi": {
|
|
||||||
"radio": "radio1",
|
|
||||||
"access-point": {
|
|
||||||
"ssid": "Infix6G",
|
|
||||||
"security": {
|
|
||||||
"secret": "wifi"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"infix-interfaces:bridge-port": {
|
|
||||||
"bridge": "br0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "wifi2-ap",
|
|
||||||
"type": "infix-if-type:wifi",
|
|
||||||
"infix-interfaces:wifi": {
|
|
||||||
"radio": "radio2",
|
|
||||||
"access-point": {
|
|
||||||
"ssid": "Infix5G",
|
|
||||||
"security": {
|
|
||||||
"secret": "wifi"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"infix-interfaces:bridge-port": {
|
|
||||||
"bridge": "br0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ietf-keystore:keystore": {
|
|
||||||
"asymmetric-keys": {
|
|
||||||
"asymmetric-key": [
|
|
||||||
{
|
|
||||||
"name": "genkey",
|
|
||||||
"public-key-format": "infix-crypto-types:ssh-public-key-format",
|
|
||||||
"public-key": "",
|
|
||||||
"private-key-format": "infix-crypto-types:rsa-private-key-format",
|
|
||||||
"cleartext-private-key": "",
|
|
||||||
"certificates": {}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"symmetric-keys": {
|
|
||||||
"symmetric-key": [
|
|
||||||
{
|
|
||||||
"name": "wifi",
|
|
||||||
"cleartext-symmetric-key": "aW5maXhpbmZpeA==",
|
|
||||||
"key-format": "infix-crypto-types:passphrase-key-format"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ietf-netconf-acm:nacm": {
|
|
||||||
"enable-nacm": true,
|
|
||||||
"read-default": "permit",
|
|
||||||
"write-default": "permit",
|
|
||||||
"exec-default": "permit",
|
|
||||||
"groups": {
|
|
||||||
"group": [
|
|
||||||
{
|
|
||||||
"name": "admin",
|
|
||||||
"user-name": [
|
|
||||||
"admin"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "operator",
|
|
||||||
"user-name": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "guest",
|
|
||||||
"user-name": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"rule-list": [
|
|
||||||
{
|
|
||||||
"name": "admin-acl",
|
|
||||||
"group": [
|
|
||||||
"admin"
|
|
||||||
],
|
|
||||||
"rule": [
|
|
||||||
{
|
|
||||||
"name": "permit-all",
|
|
||||||
"module-name": "*",
|
|
||||||
"access-operations": "*",
|
|
||||||
"action": "permit",
|
|
||||||
"comment": "Allow 'admin' group complete access to all operations and data."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "operator-acl",
|
|
||||||
"group": [
|
|
||||||
"operator"
|
|
||||||
],
|
|
||||||
"rule": [
|
|
||||||
{
|
|
||||||
"name": "permit-system-rpcs",
|
|
||||||
"module-name": "ietf-system",
|
|
||||||
"rpc-name": "*",
|
|
||||||
"access-operations": "exec",
|
|
||||||
"action": "permit",
|
|
||||||
"comment": "Operators can reboot, shutdown, and set system time."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "guest-acl",
|
|
||||||
"group": [
|
|
||||||
"guest"
|
|
||||||
],
|
|
||||||
"rule": [
|
|
||||||
{
|
|
||||||
"name": "deny-all-write+exec",
|
|
||||||
"module-name": "*",
|
|
||||||
"access-operations": "create update delete exec",
|
|
||||||
"action": "deny",
|
|
||||||
"comment": "Guests cannot change anything or exec rpcs."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "default-deny-all",
|
|
||||||
"group": [
|
|
||||||
"*"
|
|
||||||
],
|
|
||||||
"rule": [
|
|
||||||
{
|
|
||||||
"name": "deny-password-access",
|
|
||||||
"path": "/ietf-system:system/authentication/user/password",
|
|
||||||
"access-operations": "*",
|
|
||||||
"action": "deny",
|
|
||||||
"comment": "No user except admins can access password hashes."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deny-keystore-access",
|
|
||||||
"module-name": "ietf-keystore",
|
|
||||||
"access-operations": "*",
|
|
||||||
"action": "deny",
|
|
||||||
"comment": "No user except admins can access cryptographic keys."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deny-truststore-access",
|
|
||||||
"module-name": "ietf-truststore",
|
|
||||||
"access-operations": "*",
|
|
||||||
"action": "deny",
|
|
||||||
"comment": "No user except admins can access trust store."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ietf-netconf-server:netconf-server": {
|
|
||||||
"listen": {
|
|
||||||
"endpoints": {
|
|
||||||
"endpoint": [
|
|
||||||
{
|
|
||||||
"name": "default-ssh",
|
|
||||||
"ssh": {
|
|
||||||
"tcp-server-parameters": {
|
|
||||||
"local-bind": [
|
|
||||||
{
|
|
||||||
"local-address": "::"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ssh-server-parameters": {
|
|
||||||
"server-identity": {
|
|
||||||
"host-key": [
|
|
||||||
{
|
|
||||||
"name": "default-key",
|
|
||||||
"public-key": {
|
|
||||||
"central-keystore-reference": "genkey"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ietf-system:system": {
|
|
||||||
"hostname": "acer-connect-%m",
|
|
||||||
"ntp": {
|
|
||||||
"server": [
|
|
||||||
{
|
|
||||||
"name": "default",
|
|
||||||
"udp": {
|
|
||||||
"address": "pool.ntp.org"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"authentication": {
|
|
||||||
"user": [
|
|
||||||
{
|
|
||||||
"name": "admin",
|
|
||||||
"password": "$factory$",
|
|
||||||
"infix-system:shell": "bash"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"infix-system:motd-banner": "Li0tLS0tLS0uCnwgIC4gLiAgfCBJbmZpeCBPUyDigJQgSW1tdXRhYmxlLkZyaWVuZGx5LlNlY3VyZQp8LS4gdiAuLXwgaHR0cHM6Ly9rZXJuZWxraXQub3JnCictJy0tLSctJwo="
|
|
||||||
},
|
|
||||||
"infix-dhcp-server:dhcp-server": {
|
|
||||||
"option": [
|
|
||||||
{
|
|
||||||
"id": "ntp-server",
|
|
||||||
"address": "auto"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "dns-server",
|
|
||||||
"address": "auto"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "router",
|
|
||||||
"address": "auto"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"subnet": [
|
|
||||||
{
|
|
||||||
"subnet": "192.168.0.0/24",
|
|
||||||
"pool": {
|
|
||||||
"start-address": "192.168.0.100",
|
|
||||||
"end-address": "192.168.0.250"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"infix-firewall:firewall": {
|
|
||||||
"default": "wan",
|
|
||||||
"zone": [
|
|
||||||
{
|
|
||||||
"name": "lan",
|
|
||||||
"action": "accept",
|
|
||||||
"interface": [
|
|
||||||
"br0"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "wan",
|
|
||||||
"action": "drop",
|
|
||||||
"interface": [
|
|
||||||
"internet"
|
|
||||||
],
|
|
||||||
"service": [
|
|
||||||
"dhcpv6-client"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"policy": [
|
|
||||||
{
|
|
||||||
"name": "lan-to-wan",
|
|
||||||
"action": "accept",
|
|
||||||
"ingress": [
|
|
||||||
"lan"
|
|
||||||
],
|
|
||||||
"egress": [
|
|
||||||
"wan"
|
|
||||||
],
|
|
||||||
"masquerade": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"infix-meta:meta": {
|
|
||||||
"version": "1.7"
|
|
||||||
},
|
|
||||||
"infix-services:mdns": {
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
"infix-services:ssh": {
|
|
||||||
"enabled": true,
|
|
||||||
"hostkey": [
|
|
||||||
"genkey"
|
|
||||||
],
|
|
||||||
"listen": [
|
|
||||||
{
|
|
||||||
"name": "ipv4",
|
|
||||||
"address": "0.0.0.0",
|
|
||||||
"port": 22
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ipv6",
|
|
||||||
"address": "::",
|
|
||||||
"port": 22
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"infix-services:web": {
|
|
||||||
"enabled": true,
|
|
||||||
"console": {
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
"netbrowse": {
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
"restconf": {
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
config BR2_PACKAGE_ALDER_ALDER
|
config BR2_PACKAGE_ALDER_ALDER
|
||||||
bool "Alder"
|
bool "Alder"
|
||||||
depends on BR2_aarch64
|
depends on BR2_aarch64
|
||||||
select BR2_PACKAGE_LINUX_FIRMWARE_INSIDE_SECURE_MINIFW
|
|
||||||
help
|
help
|
||||||
Alder
|
Alder
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
# Locally calculated
|
|
||||||
sha256 d2f96418893ac66156d0e691cda189b0d85ae1d814065d1d9aa1845383100f46 LICENSE
|
|
||||||
@@ -5,8 +5,6 @@ config BR2_PACKAGE_BANANAPI_BPI_R3
|
|||||||
select BR2_PACKAGE_LINUX_FIRMWARE
|
select BR2_PACKAGE_LINUX_FIRMWARE
|
||||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK
|
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK
|
||||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7986
|
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7986
|
||||||
select BR2_PACKAGE_LINUX_FIRMWARE_AIROHA_EN8811H
|
|
||||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7916
|
|
||||||
select SDCARD_AUX
|
select SDCARD_AUX
|
||||||
help
|
help
|
||||||
Build Banana PI R3 support
|
Build Banana PI R3 support
|
||||||
|
|||||||
@@ -1,29 +1,20 @@
|
|||||||
# Banana Pi BPI-R3 / BPI-R3 Mini
|
# Banana Pi BPI-R3
|
||||||
|
|
||||||
<img src="bananapi-bpi-r3.webp" alt="The board" width=800 padding=10>
|
<img src="bananapi-bpi-r3.webp" alt="The board" width=800 padding=10>
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
The Banana Pi BPI-R3 and BPI-R3 Mini are high-performance networking
|
The Banana Pi R3 is a high-performance networking board with full Infix
|
||||||
boards with full Infix support for all enabled features including
|
support for all enabled features including switched Ethernet ports, WiFi,
|
||||||
Ethernet, WiFi, and SFP interfaces.
|
and SFP interfaces.
|
||||||
|
|
||||||
Both boards share the same SoC and most peripherals. The key
|
|
||||||
differences are:
|
|
||||||
|
|
||||||
| Feature | BPI-R3 | BPI-R3 Mini |
|
|
||||||
|-----------------|--------------------|-------------------------|
|
|
||||||
| Ethernet switch | Yes (4x LAN + WAN) | No (WAN/LAN ports only) |
|
|
||||||
| SD card slot | Yes | No |
|
|
||||||
|
|
||||||
### Hardware Features
|
### Hardware Features
|
||||||
|
|
||||||
- MediaTek MT7986 ARM Cortex-A53 quad-core processor @ 2.0 GHz
|
- MediaTek MT7986 ARM Cortex-A53 quad-core processor @ 2.0 GHz
|
||||||
- 2 GB DDR4 RAM
|
- 2 GB DDR4 RAM
|
||||||
- 8 GB eMMC storage
|
- 8 GB eMMC storage + microSD card slot
|
||||||
- microSD card slot (BPI-R3 only)
|
- 5x Gigabit Ethernet ports (4x LAN, 1x WAN)
|
||||||
- 5x Gigabit Ethernet ports with switch core (BPI-R3 only)
|
- 2x SFP cages for fiber connectivity (1G/2.5G)
|
||||||
- 2x SFP cages for fiber connectivity (1G/2.5G) (BPI-R3 only)
|
|
||||||
- Dual-band WiFi (2.4 GHz + 5 GHz)
|
- Dual-band WiFi (2.4 GHz + 5 GHz)
|
||||||
- USB 3.0 port
|
- USB 3.0 port
|
||||||
- Mini PCIe slot
|
- Mini PCIe slot
|
||||||
@@ -32,20 +23,16 @@ differences are:
|
|||||||
|
|
||||||
Infix comes preconfigured with:
|
Infix comes preconfigured with:
|
||||||
|
|
||||||
- **LAN ports** (lan1-lan4): Bridged for internal networking (BPI-R3 only)
|
- **LAN ports** (lan1-lan4): Bridged for internal networking
|
||||||
- **WAN port**: DHCP client enabled for internet connectivity
|
- **WAN port**: DHCP client enabled for internet connectivity
|
||||||
- **SFP ports** (sfp1, sfp2): Available for configuration (BPI-R3 only)
|
- **SFP ports** (sfp1, sfp2): Available for configuration
|
||||||
- **WiFi interfaces** (wifi0, wifi1): Available for configuration
|
- **WiFi interfaces** (wifi0, wifi1): Available for configuration
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
### BPI-R3: Quick Start with SD Card
|
### Quick Start with SD Card
|
||||||
|
|
||||||
The easiest way to get started with the BPI-R3 is using an SD card:
|
The easiest way to get started is using an SD card:
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> SD card boot works but we have observed stability issues. For production
|
|
||||||
> use or long-term reliability, we recommend installing to eMMC (see below).
|
|
||||||
|
|
||||||
1. **Download the SD card image:** [infix-bpi-r3-sdcard.img][2]
|
1. **Download the SD card image:** [infix-bpi-r3-sdcard.img][2]
|
||||||
2. **Flash the image to an SD card:** see [this guide][0]
|
2. **Flash the image to an SD card:** see [this guide][0]
|
||||||
@@ -58,63 +45,67 @@ The easiest way to get started with the BPI-R3 is using an SD card:
|
|||||||
- Connect to LAN port or console (115200 8N1)
|
- Connect to LAN port or console (115200 8N1)
|
||||||
- Default login: `admin` / `admin`
|
- Default login: `admin` / `admin`
|
||||||
|
|
||||||
### BPI-R3 Mini: Getting Started
|
|
||||||
|
|
||||||
The BPI-R3 Mini does not have an SD card slot, so you must install
|
|
||||||
directly to eMMC. See [Installing to eMMC — BPI-R3
|
|
||||||
Mini](#bpi-r3-mini) below.
|
|
||||||
|
|
||||||
### Boot Switch Reference
|
### Boot Switch Reference
|
||||||
|
|
||||||
The BPI-R3 has a 4-position DIP switch that controls boot media:
|
The BPI-R3 has a 4-position DIP switch that controls boot media:
|
||||||
|
|
||||||
<img align="right" src="bootstrap-switch.webp" alt="DIP switches" width=200 padding=10>
|
<img align="right" src="bootstrap-switch.webp" alt="DIP switches" width=200 padding=10>
|
||||||
|
|
||||||
| ABCD | Mode | Description |
|
| Position | Mode | Description |
|
||||||
|------|----------|---------------------------------------|
|
|----------|-------------|---------------------------------------|
|
||||||
| 0000 | SD card | Boot from microSD card |
|
| 0000 | SD card | Boot from microSD card (recommended) |
|
||||||
| 0101 | SPI NAND | Boot from SPI NAND (advanced users) |
|
| 0110 | eMMC | Boot from internal eMMC storage |
|
||||||
| 1001 | eMMC | Boot from internal eMMC (recommended) |
|
| 1010 | SPI NAND | Boot from SPI NAND (advanced users) |
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> Switch position is read from left to right: "0" = OFF, "1" = ON.
|
> Switch position is read from left to right: "0" = OFF, "1" = ON.
|
||||||
> When the DIP switch is in the "UP" position it is OFF(0).
|
> When the DIP switch is in the "UP" position it is OFF(0).
|
||||||
|
|
||||||
## Installing to eMMC
|
## Advanced: Installing to eMMC
|
||||||
|
|
||||||
For production deployments or better performance, you can install Infix
|
For production deployments or better performance, you can install Infix
|
||||||
to the internal eMMC storage.
|
to the internal eMMC storage. This is more complex but provides faster
|
||||||
|
boot times and eliminates the external SD card.
|
||||||
|
|
||||||
> [!IMPORTANT]
|
### Why Use eMMC?
|
||||||
> While Infix boots on both SD card and eMMC on the BPI-R3, we have
|
|
||||||
> observed stability issues with SD cards on this platform. **eMMC is
|
**Advantages:**
|
||||||
> recommended** for reliable operation.
|
|
||||||
|
- Faster boot and better performance
|
||||||
|
- No external SD card to manage
|
||||||
|
- More robust for industrial/embedded deployments
|
||||||
|
|
||||||
|
**Disadvantages:**
|
||||||
|
|
||||||
|
- More complex installation process
|
||||||
|
- Requires intermediate NAND boot step
|
||||||
|
- Harder to recover from errors
|
||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
- FTDI USB-to-serial cable (3.3V) for console access
|
- FTDI USB-to-serial cable (3.3V) for console access
|
||||||
|
- microSD card with Infix (for initial boot)
|
||||||
- USB flash drive (FAT32 formatted)
|
- USB flash drive (FAT32 formatted)
|
||||||
- microSD card with Infix, for initial boot (BPI-R3 only)
|
|
||||||
- Downloaded files (see below)
|
- Downloaded files (see below)
|
||||||
|
|
||||||
### Required Files
|
### Required Files
|
||||||
|
|
||||||
Download and place these files on a FAT32-formatted USB drive:
|
Download and place these files on a FAT32-formatted USB drive:
|
||||||
|
|
||||||
1. **Infix eMMC image:**
|
1. **Intermediate NAND bootloader** (from Frank-W's U-Boot):
|
||||||
- [infix-bpi-r3-emmc.img][3] (Complete system image)
|
|
||||||
2. **eMMC bootloader** (extracted from):
|
|
||||||
- [bpi-r3-emmc-boot-2025.01-latest.tar.gz][4]
|
|
||||||
- Extract `bl2.img` from the tarball to your USB drive
|
|
||||||
3. **Intermediate NAND bootloader** (BPI-R3 only, from Frank-W's U-Boot):
|
|
||||||
- [bpi-r3_spim-nand_bl2.img][5] (BL2 loader)
|
- [bpi-r3_spim-nand_bl2.img][5] (BL2 loader)
|
||||||
- [bpi-r3_spim-nand_fip.bin][6] (FIP image)
|
- [bpi-r3_spim-nand_fip.bin][6] (FIP image)
|
||||||
|
2. **Infix eMMC image:**
|
||||||
|
- [infix-bpi-r3-emmc.img][3] (Complete system image)
|
||||||
|
3. **eMMC bootloader** (extracted from):
|
||||||
|
- [bpi-r3-emmc-boot-2025.01-latest.tar.gz][4]
|
||||||
|
- Extract `bl2.img` from the tarball to your USB drive
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> The following process involves multiple boot mode changes. Take your
|
> The following process involves multiple boot mode changes. Take your
|
||||||
> time and verify each step carefully.
|
> time verify each step carefully.
|
||||||
|
|
||||||
### BPI-R3
|
### Installation Steps
|
||||||
|
|
||||||
#### Step 1: Boot from SD card
|
#### Step 1: Boot from SD card
|
||||||
|
|
||||||
@@ -150,7 +141,6 @@ From the U-Boot prompt:
|
|||||||
usb start
|
usb start
|
||||||
fatload usb 0:1 0x50000000 infix-bpi-r3-emmc.img
|
fatload usb 0:1 0x50000000 infix-bpi-r3-emmc.img
|
||||||
setexpr blocks ${filesize} / 0x200
|
setexpr blocks ${filesize} / 0x200
|
||||||
mmc dev 0
|
|
||||||
mmc write 0x50000000 0x0 ${blocks}
|
mmc write 0x50000000 0x0 ${blocks}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -177,49 +167,13 @@ mmc partconf 0 1 1 0
|
|||||||
|
|
||||||
Your BPI-R3 should now boot Infix from internal eMMC storage!
|
Your BPI-R3 should now boot Infix from internal eMMC storage!
|
||||||
|
|
||||||
### BPI-R3 Mini
|
|
||||||
|
|
||||||
The BPI-R3 Mini does not have an SD card slot, so you have to go
|
|
||||||
through the factory-installed Linux (OpenWRT) to flash the Infix
|
|
||||||
bootloader and OS to eMMC.
|
|
||||||
|
|
||||||
#### Step 1: Boot from NAND (factory default)
|
|
||||||
|
|
||||||
<img src="r3mini_nandboot2.png" alt="BPI-R3 Mini NAND boot switch position" width=400>
|
|
||||||
|
|
||||||
1. Ensure boot switches are set to NAND mode (factory default)
|
|
||||||
2. Place `infix-bpi-r3-emmc.img` and `bl2.img` on a USB drive
|
|
||||||
3. Power on and boot into Linux
|
|
||||||
4. Mount the USB drive to `/mnt`
|
|
||||||
|
|
||||||
#### Step 2: Flash Infix to eMMC
|
|
||||||
|
|
||||||
From the Linux shell:
|
|
||||||
|
|
||||||
```
|
|
||||||
echo 0 > /proc/sys/kernel/printk
|
|
||||||
dd if=/mnt/infix-bpi-r3-emmc.img of=/dev/mmcblk0
|
|
||||||
echo 0 > /sys/block/mmcblk0boot0/force_ro
|
|
||||||
dd if=/mnt/bl2.img of=/dev/mmcblk0boot0
|
|
||||||
sync
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Step 3: Boot from eMMC
|
|
||||||
|
|
||||||
<img src="r3mini_emmcboot.png" alt="BPI-R3 Mini eMMC boot switch position" width=400>
|
|
||||||
|
|
||||||
1. Power off the board
|
|
||||||
2. Set boot switches to eMMC mode (see image above)
|
|
||||||
3. Power on
|
|
||||||
|
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
### Board won't boot
|
### Board won't boot
|
||||||
|
|
||||||
- Verify boot switch positions (check twice!)
|
- Verify boot switch positions (check twice!)
|
||||||
- Ensure power supply provides adequate current (12V/2A recommended)
|
- Ensure power supply provides adequate current (12V/2A recommended)
|
||||||
- Try booting from SD card with switches at **0000** (BPI-R3 only)
|
- Try booting from SD card with switches at **0000**
|
||||||
|
|
||||||
### Can't break into U-Boot
|
### Can't break into U-Boot
|
||||||
|
|
||||||
@@ -231,9 +185,9 @@ sync
|
|||||||
|
|
||||||
- Boot from NAND (**1010**) and verify eMMC image was written
|
- Boot from NAND (**1010**) and verify eMMC image was written
|
||||||
- Check USB drive contents - ensure all files are present
|
- Check USB drive contents - ensure all files are present
|
||||||
- Re-run the eMMC boot configuration step
|
- Re-run Step 5 (eMMC boot configuration)
|
||||||
|
|
||||||
### Reverting to SD card (BPI-R3 only)
|
### Reverting to SD card
|
||||||
|
|
||||||
Simply set boot switches back to **0000** and boot from SD card. The
|
Simply set boot switches back to **0000** and boot from SD card. The
|
||||||
eMMC installation does not affect SD card functionality.
|
eMMC installation does not affect SD card functionality.
|
||||||
@@ -264,8 +218,8 @@ make aarch64
|
|||||||
./utils/mkimage.sh -odt emmc bananapi-bpi-r3
|
./utils/mkimage.sh -odt emmc bananapi-bpi-r3
|
||||||
```
|
```
|
||||||
|
|
||||||
[0]: https://www.kernelkit.org/posts/flashing-sdcard/
|
[0]: https://kernelkit.org/posts/flashing-sdcard/
|
||||||
[1]: https://www.kernelkit.org/infix/latest/
|
[1]: https://kernelkit.org/infix/latest/
|
||||||
[2]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-bpi-r3-sdcard.img
|
[2]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-bpi-r3-sdcard.img
|
||||||
[3]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-bpi-r3-emmc.img
|
[3]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-bpi-r3-emmc.img
|
||||||
[4]: https://github.com/kernelkit/infix/releases/download/latest-boot/bpi-r3-emmc-boot-2025.01-latest.tar.gz
|
[4]: https://github.com/kernelkit/infix/releases/download/latest-boot/bpi-r3-emmc-boot-2025.01-latest.tar.gz
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
# Locally calculated
|
|
||||||
sha256 dbe4eae8debbba8135297e15f24aeefef0b4c03781f3f9328db4398d58a728b3 LICENSE
|
|
||||||
@@ -6,10 +6,9 @@ define BANANAPI_BPI_R3_LINUX_CONFIG_FIXUPS
|
|||||||
$(call KCONFIG_SET_OPT,CONFIG_I2C_GPIO,y)
|
$(call KCONFIG_SET_OPT,CONFIG_I2C_GPIO,y)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_MTK_THERMAL,m)
|
$(call KCONFIG_SET_OPT,CONFIG_MTK_THERMAL,m)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MTK_UART)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_MTK_UART)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MEDIATEK_WATCHDOG)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_MTK_WATCHDOG)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MEDIATEK_GE_PHY)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_MEDIATEK_GE_PHY)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_REALTEK_PHY)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_REALTEK_PHY)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_AIR_EN8811H_PHY,m)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_NET_VENDOR_MEDIATEK)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_NET_VENDOR_MEDIATEK)
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_NET_MEDIATEK_SOC)
|
$(call KCONFIG_ENABLE_OPT,CONFIG_NET_MEDIATEK_SOC)
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_NET_DSA_MT7530,m)
|
$(call KCONFIG_SET_OPT,CONFIG_NET_DSA_MT7530,m)
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
dtb-y += mediatek/mt7986a-bananapi-bpi-r3-sd.dtb mediatek/mt7986a-bananapi-bpi-r3-emmc.dtb mediatek/mt7986a-bananapi-bpi-r3-mini.dtb
|
dtb-y += mediatek/mt7986a-bananapi-bpi-r3-sd.dtb mediatek/mt7986a-bananapi-bpi-r3-emmc.dtb
|
||||||
|
|||||||
@@ -1,4 +1,2 @@
|
|||||||
#include <arm64/mediatek/mt7986a-bananapi-bpi-r3.dts>
|
|
||||||
|
|
||||||
#include "mt7986a-bananapi-bpi-r3.dtsi"
|
#include "mt7986a-bananapi-bpi-r3.dtsi"
|
||||||
#include "mt7986a-bananapi-bpi-r3-emmc.dtsi"
|
#include "mt7986a-bananapi-bpi-r3-emmc.dtsi"
|
||||||
|
|||||||
@@ -19,34 +19,4 @@ possible to use dtbo in sysboot unless present in syslinux.conf
|
|||||||
no-sd;
|
no-sd;
|
||||||
no-sdio;
|
no-sdio;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
card@0 {
|
|
||||||
compatible = "mmc-card";
|
|
||||||
reg = <0>;
|
|
||||||
|
|
||||||
partitions {
|
|
||||||
compatible = "gpt-partitions";
|
|
||||||
|
|
||||||
partition-factory {
|
|
||||||
partname = "factory";
|
|
||||||
|
|
||||||
nvmem-layout {
|
|
||||||
compatible = "fixed-layout";
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <1>;
|
|
||||||
|
|
||||||
eeprom_factory_wmac: eeprom@0 {
|
|
||||||
reg = <0x0 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
eeprom_factory_pcie: eeprom@a0000 {
|
|
||||||
reg = <0xa0000 0x1000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
#include <arm64/mediatek/mt7986a-bananapi-bpi-r3-mini.dts>
|
|
||||||
|
|
||||||
#include "mt7986a-bananapi-bpi-r3.dtsi"
|
|
||||||
#include "mt7986a-bananapi-bpi-r3-emmc.dtsi"
|
|
||||||
|
|
||||||
&phy0 {
|
|
||||||
compatible = "ethernet-phy-id03a2.a411";
|
|
||||||
};
|
|
||||||
&phy1 {
|
|
||||||
compatible = "ethernet-phy-id03a2.a411";
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
#include "mt7986a-bananapi-bpi-r3.dtsi"
|
|
||||||
#include "mt7986a-bananapi-bpi-r3-emmc.dtsi"
|
|
||||||
@@ -1,4 +1,2 @@
|
|||||||
#include <arm64/mediatek/mt7986a-bananapi-bpi-r3.dts>
|
|
||||||
|
|
||||||
#include "mt7986a-bananapi-bpi-r3.dtsi"
|
#include "mt7986a-bananapi-bpi-r3.dtsi"
|
||||||
#include "mt7986a-bananapi-bpi-r3-sd.dtsi"
|
#include "mt7986a-bananapi-bpi-r3-sd.dtsi"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
#include <arm64/mediatek/mt7986a-bananapi-bpi-r3.dts>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
chosen {
|
chosen {
|
||||||
infix {
|
infix {
|
||||||
@@ -8,33 +10,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
/*
|
|
||||||
From 236317dd4e55512933dcdaec3d0b4a0824f5e5bd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Shiji Yang <yangshiji66@outlook.com>
|
|
||||||
Date: Sun, 10 Aug 2025 18:11:01 +0800
|
|
||||||
Subject: [PATCH] arm64: dts: mediatek: mt7986: increase ATF reserved memory to
|
|
||||||
256 kiB
|
|
||||||
|
|
||||||
The latest Mediatek open-source Trusted Firmware-A project has
|
|
||||||
reserved 256 KiB for BL2 and BL31. It is better to increase the
|
|
||||||
reserved memory region in the Linux kernel to protect the data.
|
|
||||||
|
|
||||||
https://github.com/openwrt/openwrt/blob/main/target/linux/mediatek/patches-6.12/199-arm64-dts-mediatek-mt7986-increase-ATF-reserved-memo.patch
|
|
||||||
*/
|
|
||||||
&secmon_reserved {
|
|
||||||
reg = <0 0x43000000 0 0x40000>;
|
|
||||||
};
|
|
||||||
/*
|
|
||||||
* The T-PHY's pcie-phy sub-node only claims clk40m ("ref") in the SoC
|
|
||||||
* dtsi. CLK_TOP_PCIE_PHY_SEL ("da_ref") is left unclaimed, so the
|
|
||||||
* kernel's clk_disable_unused late_initcall gates it — killing the
|
|
||||||
* PCIe REFCLK output to the endpoint mid-probe. Wire it here so the
|
|
||||||
* clock stays enabled while the PHY is active.
|
|
||||||
*/
|
|
||||||
&pcie_port {
|
|
||||||
clocks = <&clk40m>, <&topckgen CLK_TOP_PCIE_PHY_SEL>;
|
|
||||||
clock-names = "ref", "da_ref";
|
|
||||||
};
|
|
||||||
|
|
||||||
&cpu_thermal {
|
&cpu_thermal {
|
||||||
/delete-node/ trips;
|
/delete-node/ trips;
|
||||||
|
|||||||
@@ -51,11 +51,6 @@ image #INFIX_ID##VERSION#-bpi-r3-#TARGET#.img {
|
|||||||
size = 4096s
|
size = 4096s
|
||||||
}
|
}
|
||||||
|
|
||||||
partition en8811h_fw {
|
|
||||||
size = 10M
|
|
||||||
image = "en8811h-fw.bin"
|
|
||||||
}
|
|
||||||
|
|
||||||
partition aux {
|
partition aux {
|
||||||
partition-uuid = D4EF35A0-0652-45A1-B3DE-D63339C82035
|
partition-uuid = D4EF35A0-0652-45A1-B3DE-D63339C82035
|
||||||
image = "aux.ext4"
|
image = "aux.ext4"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 111 KiB |
|
Before Width: | Height: | Size: 110 KiB |
@@ -17,24 +17,6 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"admin-state": "unlocked"
|
"admin-state": "unlocked"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "radio0",
|
|
||||||
"class": "infix-hardware:wifi",
|
|
||||||
"infix-hardware:wifi-radio": {
|
|
||||||
"country-code": "DE",
|
|
||||||
"band": "2.4GHz",
|
|
||||||
"channel": "auto"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "radio1",
|
|
||||||
"class": "infix-hardware:wifi",
|
|
||||||
"infix-hardware:wifi-radio": {
|
|
||||||
"country-code": "DE",
|
|
||||||
"band": "5GHz",
|
|
||||||
"channel": "auto"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -117,119 +99,58 @@
|
|||||||
{
|
{
|
||||||
"name": "wan",
|
"name": "wan",
|
||||||
"type": "infix-if-type:ethernet",
|
"type": "infix-if-type:ethernet",
|
||||||
|
"ietf-ip:ipv6": {},
|
||||||
"ietf-ip:ipv4": {
|
"ietf-ip:ipv4": {
|
||||||
"infix-dhcp-client:dhcp": {
|
"infix-dhcp-client:dhcp": {
|
||||||
"option": [
|
"option": [
|
||||||
{
|
{"id": "ntp-server"},
|
||||||
"id": "ntp-server"
|
{"id": "broadcast"},
|
||||||
},
|
{"id": "domain"},
|
||||||
{
|
{"id": "hostname"},
|
||||||
"id": "broadcast"
|
{"id": "dns-server"},
|
||||||
},
|
{"id": "router"},
|
||||||
{
|
{"id": "netmask"},
|
||||||
"id": "domain"
|
{"id": "vendor-class", "value": "Banana Pi BPI-R3"}
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "hostname",
|
|
||||||
"value": "auto"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "dns-server"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "router"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "netmask"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "vendor-class",
|
|
||||||
"value": "Banana Pi BPI-R3"
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ietf-ip:ipv6": {
|
"ietf-ip:ipv6": {
|
||||||
"infix-dhcpv6-client:dhcp": {
|
"infix-dhcpv6-client:dhcp": {
|
||||||
"option": [
|
"option": [
|
||||||
{
|
{"id": "ntp-server"},
|
||||||
"id": "ntp-server"
|
{"id": "client-fqdn"},
|
||||||
},
|
{"id": "domain-search"},
|
||||||
{
|
{"id": "dns-server"}
|
||||||
"id": "client-fqdn"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "domain-search"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "dns-server"
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "wifi0-ap",
|
"name": "wifi0",
|
||||||
"type": "infix-if-type:wifi",
|
"type": "infix-if-type:wifi"
|
||||||
"infix-interfaces:wifi": {
|
|
||||||
"radio": "radio0",
|
|
||||||
"access-point": {
|
|
||||||
"ssid": "Infix",
|
|
||||||
"security": {
|
|
||||||
"secret": "wifi"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"infix-interfaces:bridge-port": {
|
|
||||||
"bridge": "br0"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "wifi1-ap",
|
"name": "wifi1",
|
||||||
"type": "infix-if-type:wifi",
|
"type": "infix-if-type:wifi"
|
||||||
"infix-interfaces:wifi": {
|
|
||||||
"radio": "radio1",
|
|
||||||
"access-point": {
|
|
||||||
"ssid": "Infix5Ghz",
|
|
||||||
"security": {
|
|
||||||
"secret": "wifi"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"infix-interfaces:bridge-port": {
|
|
||||||
"bridge": "br0"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"ietf-keystore:keystore": {
|
"ietf-keystore:keystore": {
|
||||||
"asymmetric-keys": {
|
"asymmetric-keys": {
|
||||||
"asymmetric-key": [
|
"asymmetric-key": [
|
||||||
{
|
{
|
||||||
"name": "genkey",
|
"name": "genkey",
|
||||||
"public-key-format": "infix-crypto-types:ssh-public-key-format",
|
"public-key-format": "infix-crypto-types:ssh-public-key-format",
|
||||||
"public-key": "",
|
"public-key": "",
|
||||||
"private-key-format": "infix-crypto-types:rsa-private-key-format",
|
"private-key-format": "infix-crypto-types:rsa-private-key-format",
|
||||||
"cleartext-private-key": "",
|
"cleartext-private-key": "",
|
||||||
"certificates": {}
|
"certificates": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
|
||||||
},
|
|
||||||
"symmetric-keys": {
|
|
||||||
"symmetric-key": [
|
|
||||||
{
|
|
||||||
"name": "wifi",
|
|
||||||
"cleartext-symmetric-key": "aW5maXhpbmZpeA==",
|
|
||||||
"key-format": "infix-crypto-types:passphrase-key-format"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"ietf-netconf-acm:nacm": {
|
"ietf-netconf-acm:nacm": {
|
||||||
"enable-nacm": true,
|
"enable-nacm": true,
|
||||||
"read-default": "permit",
|
|
||||||
"write-default": "permit",
|
|
||||||
"exec-default": "permit",
|
|
||||||
"groups": {
|
"groups": {
|
||||||
"group": [
|
"group": [
|
||||||
{
|
{
|
||||||
@@ -237,14 +158,6 @@
|
|||||||
"user-name": [
|
"user-name": [
|
||||||
"admin"
|
"admin"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "operator",
|
|
||||||
"user-name": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "guest",
|
|
||||||
"user-name": []
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -264,37 +177,6 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "operator-acl",
|
|
||||||
"group": [
|
|
||||||
"operator"
|
|
||||||
],
|
|
||||||
"rule": [
|
|
||||||
{
|
|
||||||
"name": "permit-system-rpcs",
|
|
||||||
"module-name": "ietf-system",
|
|
||||||
"rpc-name": "*",
|
|
||||||
"access-operations": "exec",
|
|
||||||
"action": "permit",
|
|
||||||
"comment": "Operators can reboot, shutdown, and set system time."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "guest-acl",
|
|
||||||
"group": [
|
|
||||||
"guest"
|
|
||||||
],
|
|
||||||
"rule": [
|
|
||||||
{
|
|
||||||
"name": "deny-all-write+exec",
|
|
||||||
"module-name": "*",
|
|
||||||
"access-operations": "create update delete exec",
|
|
||||||
"action": "deny",
|
|
||||||
"comment": "Guests cannot change anything or exec rpcs."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "default-deny-all",
|
"name": "default-deny-all",
|
||||||
"group": [
|
"group": [
|
||||||
@@ -302,25 +184,11 @@
|
|||||||
],
|
],
|
||||||
"rule": [
|
"rule": [
|
||||||
{
|
{
|
||||||
"name": "deny-password-access",
|
"name": "deny-password-read",
|
||||||
|
"module-name": "ietf-system",
|
||||||
"path": "/ietf-system:system/authentication/user/password",
|
"path": "/ietf-system:system/authentication/user/password",
|
||||||
"access-operations": "*",
|
"access-operations": "*",
|
||||||
"action": "deny",
|
"action": "deny"
|
||||||
"comment": "No user except admins can access password hashes."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deny-keystore-access",
|
|
||||||
"module-name": "ietf-keystore",
|
|
||||||
"access-operations": "*",
|
|
||||||
"action": "deny",
|
|
||||||
"comment": "No user except admins can access cryptographic keys."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deny-truststore-access",
|
|
||||||
"module-name": "ietf-truststore",
|
|
||||||
"access-operations": "*",
|
|
||||||
"action": "deny",
|
|
||||||
"comment": "No user except admins can access trust store."
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -334,11 +202,7 @@
|
|||||||
"name": "default-ssh",
|
"name": "default-ssh",
|
||||||
"ssh": {
|
"ssh": {
|
||||||
"tcp-server-parameters": {
|
"tcp-server-parameters": {
|
||||||
"local-bind": [
|
"local-address": "::"
|
||||||
{
|
|
||||||
"local-address": "::"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"ssh-server-parameters": {
|
"ssh-server-parameters": {
|
||||||
"server-identity": {
|
"server-identity": {
|
||||||
@@ -430,7 +294,7 @@
|
|||||||
"policy": [
|
"policy": [
|
||||||
{
|
{
|
||||||
"name": "lan-to-wan",
|
"name": "lan-to-wan",
|
||||||
"action": "accept",
|
"action": "accept",
|
||||||
"ingress": [
|
"ingress": [
|
||||||
"lan"
|
"lan"
|
||||||
],
|
],
|
||||||
@@ -442,7 +306,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"infix-meta:meta": {
|
"infix-meta:meta": {
|
||||||
"version": "1.7"
|
"version": "1.6"
|
||||||
},
|
},
|
||||||
"infix-services:mdns": {
|
"infix-services:mdns": {
|
||||||
"enabled": true
|
"enabled": true
|
||||||
@@ -478,3 +342,4 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
udevadm control --reload-rules
|
||||||
|
udevadm trigger --subsystem-match=net --action=add
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"sfp1": {
|
|
||||||
"comment": "Reports it supports autoneg, but if setting it, dagger crashes",
|
|
||||||
"broken-autoneg": true
|
|
||||||
},
|
|
||||||
"sfp2": {
|
|
||||||
"comment": "Reports it supports autoneg, but if setting it, dagger crashes",
|
|
||||||
"broken-autoneg": true
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,446 +0,0 @@
|
|||||||
{
|
|
||||||
"ieee802-dot1ab-lldp:lldp": {
|
|
||||||
"infix-lldp:enabled": true
|
|
||||||
},
|
|
||||||
"ietf-hardware:hardware": {
|
|
||||||
"component": [
|
|
||||||
{
|
|
||||||
"name": "USB",
|
|
||||||
"class": "infix-hardware:usb",
|
|
||||||
"state": {
|
|
||||||
"admin-state": "unlocked"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"class": "infix-hardware:usb",
|
|
||||||
"name": "USB2",
|
|
||||||
"state": {
|
|
||||||
"admin-state": "unlocked"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "radio0",
|
|
||||||
"class": "infix-hardware:wifi",
|
|
||||||
"infix-hardware:wifi-radio": {
|
|
||||||
"country-code": "DE",
|
|
||||||
"band": "2.4GHz",
|
|
||||||
"channel": "auto"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "radio1",
|
|
||||||
"class": "infix-hardware:wifi",
|
|
||||||
"infix-hardware:wifi-radio": {
|
|
||||||
"country-code": "DE",
|
|
||||||
"band": "5GHz",
|
|
||||||
"channel": "auto"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ietf-interfaces:interfaces": {
|
|
||||||
"interface": [
|
|
||||||
{
|
|
||||||
"name": "br0",
|
|
||||||
"type": "infix-if-type:bridge",
|
|
||||||
"ietf-ip:ipv4": {
|
|
||||||
"address": [
|
|
||||||
{
|
|
||||||
"ip": "192.168.0.1",
|
|
||||||
"prefix-length": 24
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lan",
|
|
||||||
"type": "infix-if-type:ethernet",
|
|
||||||
"ietf-ip:ipv6": {},
|
|
||||||
"infix-interfaces:bridge-port": {
|
|
||||||
"bridge": "br0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lo",
|
|
||||||
"type": "infix-if-type:loopback",
|
|
||||||
"ietf-ip:ipv4": {
|
|
||||||
"address": [
|
|
||||||
{
|
|
||||||
"ip": "127.0.0.1",
|
|
||||||
"prefix-length": 8
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ietf-ip:ipv6": {
|
|
||||||
"address": [
|
|
||||||
{
|
|
||||||
"ip": "::1",
|
|
||||||
"prefix-length": 128
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "wan",
|
|
||||||
"type": "infix-if-type:ethernet",
|
|
||||||
"ietf-ip:ipv4": {
|
|
||||||
"infix-dhcp-client:dhcp": {
|
|
||||||
"option": [
|
|
||||||
{
|
|
||||||
"id": "ntp-server"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "broadcast"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "domain"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "hostname",
|
|
||||||
"value": "auto"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "dns-server"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "router"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "netmask"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "vendor-class",
|
|
||||||
"value": "Banana Pi BPI-R3"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ietf-ip:ipv6": {
|
|
||||||
"infix-dhcpv6-client:dhcp": {
|
|
||||||
"option": [
|
|
||||||
{
|
|
||||||
"id": "ntp-server"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "client-fqdn"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "domain-search"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "dns-server"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "wifi0-ap",
|
|
||||||
"type": "infix-if-type:wifi",
|
|
||||||
"infix-interfaces:wifi": {
|
|
||||||
"radio": "radio0",
|
|
||||||
"access-point": {
|
|
||||||
"ssid": "Infix",
|
|
||||||
"security": {
|
|
||||||
"secret": "wifi"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"infix-interfaces:bridge-port": {
|
|
||||||
"bridge": "br0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "wifi1-ap",
|
|
||||||
"type": "infix-if-type:wifi",
|
|
||||||
"infix-interfaces:wifi": {
|
|
||||||
"radio": "radio1",
|
|
||||||
"access-point": {
|
|
||||||
"ssid": "Infix5Ghz",
|
|
||||||
"security": {
|
|
||||||
"secret": "wifi"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"infix-interfaces:bridge-port": {
|
|
||||||
"bridge": "br0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ietf-keystore:keystore": {
|
|
||||||
"asymmetric-keys": {
|
|
||||||
"asymmetric-key": [
|
|
||||||
{
|
|
||||||
"name": "genkey",
|
|
||||||
"public-key-format": "infix-crypto-types:ssh-public-key-format",
|
|
||||||
"public-key": "",
|
|
||||||
"private-key-format": "infix-crypto-types:rsa-private-key-format",
|
|
||||||
"cleartext-private-key": "",
|
|
||||||
"certificates": {}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"symmetric-keys": {
|
|
||||||
"symmetric-key": [
|
|
||||||
{
|
|
||||||
"name": "wifi",
|
|
||||||
"cleartext-symmetric-key": "aW5maXhpbmZpeA==",
|
|
||||||
"key-format": "infix-crypto-types:passphrase-key-format"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ietf-netconf-acm:nacm": {
|
|
||||||
"enable-nacm": true,
|
|
||||||
"read-default": "permit",
|
|
||||||
"write-default": "permit",
|
|
||||||
"exec-default": "permit",
|
|
||||||
"groups": {
|
|
||||||
"group": [
|
|
||||||
{
|
|
||||||
"name": "admin",
|
|
||||||
"user-name": [
|
|
||||||
"admin"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "operator",
|
|
||||||
"user-name": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "guest",
|
|
||||||
"user-name": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"rule-list": [
|
|
||||||
{
|
|
||||||
"name": "admin-acl",
|
|
||||||
"group": [
|
|
||||||
"admin"
|
|
||||||
],
|
|
||||||
"rule": [
|
|
||||||
{
|
|
||||||
"name": "permit-all",
|
|
||||||
"module-name": "*",
|
|
||||||
"access-operations": "*",
|
|
||||||
"action": "permit",
|
|
||||||
"comment": "Allow 'admin' group complete access to all operations and data."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "operator-acl",
|
|
||||||
"group": [
|
|
||||||
"operator"
|
|
||||||
],
|
|
||||||
"rule": [
|
|
||||||
{
|
|
||||||
"name": "permit-system-rpcs",
|
|
||||||
"module-name": "ietf-system",
|
|
||||||
"rpc-name": "*",
|
|
||||||
"access-operations": "exec",
|
|
||||||
"action": "permit",
|
|
||||||
"comment": "Operators can reboot, shutdown, and set system time."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "guest-acl",
|
|
||||||
"group": [
|
|
||||||
"guest"
|
|
||||||
],
|
|
||||||
"rule": [
|
|
||||||
{
|
|
||||||
"name": "deny-all-write+exec",
|
|
||||||
"module-name": "*",
|
|
||||||
"access-operations": "create update delete exec",
|
|
||||||
"action": "deny",
|
|
||||||
"comment": "Guests cannot change anything or exec rpcs."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "default-deny-all",
|
|
||||||
"group": [
|
|
||||||
"*"
|
|
||||||
],
|
|
||||||
"rule": [
|
|
||||||
{
|
|
||||||
"name": "deny-password-access",
|
|
||||||
"path": "/ietf-system:system/authentication/user/password",
|
|
||||||
"access-operations": "*",
|
|
||||||
"action": "deny",
|
|
||||||
"comment": "No user except admins can access password hashes."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deny-keystore-access",
|
|
||||||
"module-name": "ietf-keystore",
|
|
||||||
"access-operations": "*",
|
|
||||||
"action": "deny",
|
|
||||||
"comment": "No user except admins can access cryptographic keys."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deny-truststore-access",
|
|
||||||
"module-name": "ietf-truststore",
|
|
||||||
"access-operations": "*",
|
|
||||||
"action": "deny",
|
|
||||||
"comment": "No user except admins can access trust store."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ietf-netconf-server:netconf-server": {
|
|
||||||
"listen": {
|
|
||||||
"endpoints": {
|
|
||||||
"endpoint": [
|
|
||||||
{
|
|
||||||
"name": "default-ssh",
|
|
||||||
"ssh": {
|
|
||||||
"tcp-server-parameters": {
|
|
||||||
"local-bind": [
|
|
||||||
{
|
|
||||||
"local-address": "::"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ssh-server-parameters": {
|
|
||||||
"server-identity": {
|
|
||||||
"host-key": [
|
|
||||||
{
|
|
||||||
"name": "default-key",
|
|
||||||
"public-key": {
|
|
||||||
"central-keystore-reference": "genkey"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ietf-system:system": {
|
|
||||||
"hostname": "bpi-%m",
|
|
||||||
"ntp": {
|
|
||||||
"server": [
|
|
||||||
{
|
|
||||||
"name": "default",
|
|
||||||
"udp": {
|
|
||||||
"address": "pool.ntp.org"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"authentication": {
|
|
||||||
"user": [
|
|
||||||
{
|
|
||||||
"name": "admin",
|
|
||||||
"password": "$factory$",
|
|
||||||
"infix-system:shell": "bash"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"infix-system:motd-banner": "Li0tLS0tLS0uCnwgIC4gLiAgfCBJbmZpeCBPUyDigJQgSW1tdXRhYmxlLkZyaWVuZGx5LlNlY3VyZQp8LS4gdiAuLXwgaHR0cHM6Ly9rZXJuZWxraXQub3JnCictJy0tLSctJwo="
|
|
||||||
},
|
|
||||||
"infix-dhcp-server:dhcp-server": {
|
|
||||||
"option": [
|
|
||||||
{
|
|
||||||
"id": "ntp-server",
|
|
||||||
"address": "auto"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "dns-server",
|
|
||||||
"address": "auto"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "router",
|
|
||||||
"address": "auto"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"subnet": [
|
|
||||||
{
|
|
||||||
"subnet": "192.168.0.0/24",
|
|
||||||
"pool": {
|
|
||||||
"start-address": "192.168.0.100",
|
|
||||||
"end-address": "192.168.0.250"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"infix-firewall:firewall": {
|
|
||||||
"default": "wan",
|
|
||||||
"zone": [
|
|
||||||
{
|
|
||||||
"name": "lan",
|
|
||||||
"action": "accept",
|
|
||||||
"interface": [
|
|
||||||
"br0"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "wan",
|
|
||||||
"action": "drop",
|
|
||||||
"interface": [
|
|
||||||
"wan"
|
|
||||||
],
|
|
||||||
"service": [
|
|
||||||
"dhcpv6-client"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"policy": [
|
|
||||||
{
|
|
||||||
"name": "lan-to-wan",
|
|
||||||
"action": "accept",
|
|
||||||
"ingress": [
|
|
||||||
"lan"
|
|
||||||
],
|
|
||||||
"egress": [
|
|
||||||
"wan"
|
|
||||||
],
|
|
||||||
"masquerade": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"infix-meta:meta": {
|
|
||||||
"version": "1.7"
|
|
||||||
},
|
|
||||||
"infix-services:mdns": {
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
"infix-services:ssh": {
|
|
||||||
"enabled": true,
|
|
||||||
"hostkey": [
|
|
||||||
"genkey"
|
|
||||||
],
|
|
||||||
"listen": [
|
|
||||||
{
|
|
||||||
"name": "ipv4",
|
|
||||||
"address": "0.0.0.0",
|
|
||||||
"port": 22
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ipv6",
|
|
||||||
"address": "::",
|
|
||||||
"port": 22
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"infix-services:web": {
|
|
||||||
"enabled": true,
|
|
||||||
"console": {
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
"netbrowse": {
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
"restconf": {
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
ACTION=="add", SUBSYSTEM=="net", DEVPATH=="/devices/platform/soc/15100000.ethernet/net/eth0", NAME="lan"
|
|
||||||
ACTION=="add", SUBSYSTEM=="net", DEVPATH=="/devices/platform/soc/15100000.ethernet/net/eth1", NAME="wan"
|
|
||||||
@@ -3,9 +3,6 @@ CONFIG_BOOTDELAY=2
|
|||||||
# CONFIG_MMC_PCI is not set
|
# CONFIG_MMC_PCI is not set
|
||||||
CONFIG_ENV_IS_NOWHERE=y
|
CONFIG_ENV_IS_NOWHERE=y
|
||||||
# CONFIG_ENV_IS_IN_MMC is not set
|
# CONFIG_ENV_IS_IN_MMC is not set
|
||||||
CONFIG_MULTI_DTB_FIT=y
|
|
||||||
CONFIG_OF_LIST="mt7986a-bpi-r3-sd mt7986a-bpi-r3-emmc mt7986a-bpi-r3-mini mt7986a-acer-connect-vero-w6m"
|
|
||||||
|
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
CONFIG_USB_XHCI_HCD=y
|
CONFIG_USB_XHCI_HCD=y
|
||||||
CONFIG_USB_XHCI_MTK=y
|
CONFIG_USB_XHCI_MTK=y
|
||||||
@@ -29,17 +26,8 @@ CONFIG_MTD_SPI_NAND=y
|
|||||||
CONFIG_MTK_SPIM=y
|
CONFIG_MTK_SPIM=y
|
||||||
CONFIG_MTK_SNOR=y
|
CONFIG_MTK_SNOR=y
|
||||||
|
|
||||||
CONFIG_DM_MDIO=y
|
|
||||||
CONFIG_DM_ETH_PHY=y
|
|
||||||
CONFIG_PHY_ETHERNET_ID=y
|
|
||||||
|
|
||||||
CONFIG_PHY_AIROHA=y
|
|
||||||
CONFIG_PHY_AIROHA_EN8811H=y
|
|
||||||
CONFIG_PHY_AIROHA_FW_IN_MMC=y
|
|
||||||
|
|
||||||
CONFIG_CMD_SF=y
|
CONFIG_CMD_SF=y
|
||||||
CONFIG_CMD_USB=y
|
CONFIG_CMD_USB=y
|
||||||
CONFIG_CMD_MTD=y
|
CONFIG_CMD_MTD=y
|
||||||
CONFIG_CMD_MDIO=y
|
|
||||||
CONFIG_CMD_MTDPARTS=y
|
CONFIG_CMD_MTDPARTS=y
|
||||||
CONFIG_CMD_DM=y
|
CONFIG_CMD_DM=y
|
||||||
|
|||||||
@@ -15,10 +15,6 @@
|
|||||||
scriptaddr = "0x48000000";
|
scriptaddr = "0x48000000";
|
||||||
ramdisk_addr_r = "0x4A000000";
|
ramdisk_addr_r = "0x4A000000";
|
||||||
|
|
||||||
en8811h_fw_part = "0#en8811h_fw";
|
|
||||||
en8811h_fw_dm_dir = "EthMD32.dm.bin";
|
|
||||||
en8811h_fw_dsp_dir = "EthMD32.DSP.bin";
|
|
||||||
|
|
||||||
/* This is a development platform, keep
|
/* This is a development platform, keep
|
||||||
* developer mode statically enabled.
|
* developer mode statically enabled.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
config BR2_PACKAGE_BANANAPI_BPI_R4
|
|
||||||
bool "Banana Pi R4"
|
|
||||||
depends on BR2_aarch64
|
|
||||||
select BR2_PACKAGE_FEATURE_WIFI
|
|
||||||
select BR2_PACKAGE_LINUX_FIRMWARE
|
|
||||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK
|
|
||||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7988
|
|
||||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7996
|
|
||||||
select SDCARD_AUX
|
|
||||||
help
|
|
||||||
Build Banana PI R4 support
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
Copyright (c) 2026 The KernelKit Authors
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
@@ -1,402 +0,0 @@
|
|||||||
# Banana Pi BPI-R4 / BPI-R4-2g5 / BPI-R4P
|
|
||||||
|
|
||||||
<img src="banana_pi_bpi-r4_poe.jpg" alt="The board" width=800 padding=10>
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
|
|
||||||
The Banana Pi BPI-R4 is a high-performance networking board built around the
|
|
||||||
MediaTek MT7988A SoC (Filogic 880). It is a successor to the BPI-R3 and
|
|
||||||
represents a significant step up: the CPU switches from in-order Cortex-A53
|
|
||||||
cores to out-of-order Cortex-A73 cores, and the MT7531 switch is now part of
|
|
||||||
the SOC. The base model comes with two SFP+ cages supporting 1.25/2.5/5/10
|
|
||||||
Gbps, and the R4P model comes with one SFP+ cage and one 2.5 Gbps RJ45 jack,
|
|
||||||
which with an optional PoE board means the board can act as PD. Unlike the
|
|
||||||
BPi-R3, however, there is no on-board WiFi support, that requires an external
|
|
||||||
tri-band WiFi 7 (IEEE 802.11be) card.
|
|
||||||
|
|
||||||
### Variants
|
|
||||||
|
|
||||||
| **Feature** | **BPI-R4** | **BPI-R4-2g5** | **BPI-R4P** |
|
|
||||||
|------------------|------------------|-------------------|---------------------------|
|
|
||||||
| 1G switch ports | wan, lan1–lan3 | lan0–lan3 | lan0–lan3 |
|
|
||||||
| 2.5G RJ45 (WAN) | — | wan | wan (PoE input) |
|
|
||||||
| SFP+ port(s) | sfp1, sfp2 (10G) | sfp1 (10G) | sfp1 (10G) |
|
|
||||||
| Linux DT | bpi-r4 | bpi-r4-2g5 | bpi-r4-2g5 (same) |
|
|
||||||
|
|
||||||
On the standard BPI-R4 the four 1G switch ports are labeled `wan`, `lan1`, `lan2`,
|
|
||||||
and `lan3`. On the R4-2g5 and R4P, the port that would otherwise be `wan` on the
|
|
||||||
switch is relabeled `lan0` via a device tree overlay, since the actual WAN port on
|
|
||||||
those variants is the dedicated 2.5G internal PHY on the separate RJ45 jack.
|
|
||||||
|
|
||||||
The BPI-R4P is mechanically and electrically identical to the BPI-R4-2g5
|
|
||||||
with an additional PoE daughterboard header. From a Linux kernel and
|
|
||||||
Infix perspective the two boards are treated identically.
|
|
||||||
|
|
||||||
### SoC: MediaTek MT7988A vs MT7986 (BPI-R3)
|
|
||||||
|
|
||||||
The MT7988A (Filogic 880) and MT7986 (Filogic 820) may look similar from
|
|
||||||
their part numbers, but they are built on entirely different silicon with
|
|
||||||
distinct system architectures:
|
|
||||||
|
|
||||||
| **Aspect** | **MT7988A (BPI-R4)** | **MT7986 (BPI-R3)** |
|
|
||||||
|------------------|--------------------------|---------------------------|
|
|
||||||
| CPU cores | 4x Cortex-A73 @ 1.8 GHz | 4x Cortex-A53 @ 2.0 GHz |
|
|
||||||
| CPU architecture | ARMv8-A, out-of-order | ARMv8-A, in-order |
|
|
||||||
| Internal switch | 1 Gbps per port | 1 Gbps per port |
|
|
||||||
| Uplinks | USXGMII (native 10 Gbps) | USXGMII (native 2.5 Gbps) |
|
|
||||||
| WiFi | MT7996E PCIe module | MT7915E (built-in) |
|
|
||||||
| WiFi standard | WiFi 7 (802.11be) | WiFi 6 (802.11ax) |
|
|
||||||
| WiFi bands | 2.4 / 5 / 6 GHz | 2.4 / 5 GHz |
|
|
||||||
| Hardware crypto | EIP-197 NPU | EIP-93 |
|
|
||||||
| PCIe slots | 4 (2x mPCIe, 2x M.2) | 1 mPCIe |
|
|
||||||
| Boot ROM offset | Sector 1024 (0x80000) | Sector 1024 (0x80000) |
|
|
||||||
|
|
||||||
### Hardware Features
|
|
||||||
|
|
||||||
- **SoC:** MediaTek MT7988A (Filogic 880)
|
|
||||||
- **CPU:** Quad-core ARM Cortex-A73, up to 1.8 GHz
|
|
||||||
- **RAM:** 4 GB DDR4
|
|
||||||
- **Storage:** 8 GB eMMC, microSD card slot, SPI NAND flash
|
|
||||||
- **Ethernet switch:** 4-port 1 GbE (10/100/1000) internal DSA switch
|
|
||||||
- **SFP+ ports:** 2x 10 Gbps USXGMII (standard R4) or 1x SFP+ (R4-2g5/R4P)
|
|
||||||
- **WiFi:** optional MediaTek MT7996E PCIe module — tri-band WiFi 7 (2.4/5/6 GHz)
|
|
||||||
- **USB:** 1x USB 3.0 (xHCI)
|
|
||||||
- **PCIe:** 2x mPCIe (SIM2/SIM3), 1x M.2 Key-B (SIM1), 1x M.2 Key-M (SSD)
|
|
||||||
- **RTC:** PCF8563 on I2C
|
|
||||||
- **Fan:** PWM-controlled cooling with thermal management
|
|
||||||
- **Console:** UART at 115200 8N1 (3.3 V, USB-to-serial adapter required)
|
|
||||||
|
|
||||||
### Default Network Configuration
|
|
||||||
|
|
||||||
Infix ships with the following factory defaults.
|
|
||||||
|
|
||||||
**Standard BPI-R4:**
|
|
||||||
|
|
||||||
- **LAN bridge** (`br0`, 192.168.0.1/24): `lan1`, `lan2`, `lan3` (1G switch ports)
|
|
||||||
- **WAN port** (`wan`): DHCP client, used for internet uplink (1G switch port)
|
|
||||||
- **SFP+ ports** (`sfp1`, `sfp2`): Present but unconfigured
|
|
||||||
|
|
||||||
**BPI-R4-2g5 and BPI-R4P:**
|
|
||||||
|
|
||||||
- **LAN bridge** (`br0`, 192.168.0.1/24): `lan0`, `lan1`, `lan2`, `lan3` (1G switch ports)
|
|
||||||
- **WAN port** (`wan`): DHCP client, used for internet uplink (2.5G internal PHY)
|
|
||||||
- **SFP+ port** (`sfp1`): Present but unconfigured
|
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> If an optional WiFi 7 (MT7996E) PCIe card is installed, the radio interfaces
|
|
||||||
> are bridged into the LAN as access points. WiFi is not included with the board
|
|
||||||
> and is not part of the factory default configuration.
|
|
||||||
|
|
||||||
## SIM Card Installation
|
|
||||||
|
|
||||||
The BPI-R4 has three SIM holders, one per PCIe slot:
|
|
||||||
|
|
||||||
| Slot | PCIe socket | Typical use |
|
|
||||||
|----------|-------------|--------------------------|
|
|
||||||
| **SIM1** | M.2 Key-B | 4G/5G WWAN modem |
|
|
||||||
| **SIM2** | mPCIe #1 | Cellular or other modem |
|
|
||||||
| **SIM3** | mPCIe #2 | Cellular or other modem |
|
|
||||||
|
|
||||||
All three take **nano-SIM (4FF)** cards.
|
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> The official Banana Pi pages show an older board revision with a sliding
|
|
||||||
> "sled" holder. Newer boards ship with a fixed friction-fit holder instead:
|
|
||||||
> there is no lid to lift and no spring eject. The [closest matching photo on
|
|
||||||
> bananapi.org][15] shows the current mechanism.
|
|
||||||
|
|
||||||
### Inserting a SIM
|
|
||||||
|
|
||||||
1. Orient the card with the gold contacts facing the PCB (printed
|
|
||||||
side up) and the cut corner pointing toward the M.2/mPCIe socket,
|
|
||||||
which on this board is also toward the outer edge. The silkscreen
|
|
||||||
next to each holder shows the same outline.
|
|
||||||
2. Push the SIM straight in until it is fully seated. There is no
|
|
||||||
click and the holder is not spring-loaded, so press firmly until
|
|
||||||
the contacts engage and the rear edge of the card sits flush with
|
|
||||||
the holder.
|
|
||||||
3. A SIM that still protrudes is not fully inserted; push again.
|
|
||||||
|
|
||||||
### Removing a SIM
|
|
||||||
|
|
||||||
The friction grip on these holders is tight. Gently pry the card out
|
|
||||||
with a fingernail or a thin plastic spudger. Avoid metal tweezers
|
|
||||||
near the contacts. Removing the front panel of the metal case is
|
|
||||||
absolutely necessary to access the SIM holder.
|
|
||||||
|
|
||||||
For software configuration once the modem is recognised, see the
|
|
||||||
[Cellular Modem User's Guide][16].
|
|
||||||
|
|
||||||
## Getting Started
|
|
||||||
|
|
||||||
<img align="right" src="console-header.png" alt="Console header pins" width=200 padding=10>
|
|
||||||
|
|
||||||
### Quick Start with SD Card
|
|
||||||
|
|
||||||
1. **Download the SD card image:** [infix-bpi-r4-sdcard.img][2]
|
|
||||||
2. **Flash the image to an SD card:** see [this guide][0]
|
|
||||||
3. **Set boot switches to SD card mode** (see Boot Switch Reference below)
|
|
||||||
4. **Insert the SD card, connect power and a serial console (115200 8N1)**
|
|
||||||
5. Default login: `admin` / `admin`
|
|
||||||
|
|
||||||
### Boot Switch Reference
|
|
||||||
|
|
||||||
<img align="right" src="bootstrap-sw3.png" alt="DIP switches" width=140 padding=10>
|
|
||||||
|
|
||||||
The BPI-R4 has a 2-position DIP switch (SW3) that selects the boot media.
|
|
||||||
Switch positions are printed on the board near the SD card slot.
|
|
||||||
|
|
||||||
| A | B | Boot media (SW3) |
|
|
||||||
|-----|-----|------------------|
|
|
||||||
| OFF | ON | SPI NAND |
|
|
||||||
| ON | OFF | eMMC |
|
|
||||||
| ON | ON | SD card |
|
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> "OFF" = switch in the UP position = logical 0.
|
|
||||||
|
|
||||||
## Installing to eMMC
|
|
||||||
|
|
||||||
For production use or better reliability, install Infix to the internal
|
|
||||||
eMMC storage.
|
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> The MT7988A has a single MMC controller that can only operate in one mode
|
|
||||||
> (SD or eMMC) per boot session. The SD card U-Boot cannot switch to eMMC
|
|
||||||
> mode mid-session, so an intermediate NAND bootloader step is required to
|
|
||||||
> write the eMMC — the same approach as BPi-R3.
|
|
||||||
>
|
|
||||||
> The MT7988A boot chain is: **BROM → BL2 → FIP (BL31 + U-Boot)**. The FIP
|
|
||||||
> (Firmware Image Package) bundles ARM Trusted Firmware (BL31) and U-Boot
|
|
||||||
> together; it is not just a U-Boot binary. When BL2 runs, it loads the FIP
|
|
||||||
> from a fixed offset and hands off to BL31, which then jumps into U-Boot.
|
|
||||||
>
|
|
||||||
> The factory SPI NAND contains a minimal recovery U-Boot that only supports
|
|
||||||
> TFTP — it has no USB command. You cannot use it to load files from a USB
|
|
||||||
> drive. Similarly, the factory eMMC ships with a basic OpenWRT image.
|
|
||||||
> You must first flash a full-featured U-Boot (from Frank-W) to SPI NAND via
|
|
||||||
> the SD card U-Boot before you can write the eMMC.
|
|
||||||
>
|
|
||||||
> This process involves three boot mode changes and multiple flash operations.
|
|
||||||
> Take your time and verify each step carefully.
|
|
||||||
|
|
||||||
### Prerequisites
|
|
||||||
|
|
||||||
- USB-to-serial adapter (3.3 V) for console access
|
|
||||||
- USB flash drive (FAT32 formatted)
|
|
||||||
- microSD card with Infix SD image, for initial boot
|
|
||||||
- Downloaded files (see below)
|
|
||||||
|
|
||||||
### Required Files
|
|
||||||
|
|
||||||
Place these files on a FAT32-formatted USB drive:
|
|
||||||
|
|
||||||
1. **Infix eMMC image:** [infix-bpi-r4-emmc.img][3]
|
|
||||||
2. **eMMC bootloader** (from): [bpi-r4-emmc-boot-2026.01-latest.tar.gz][4]
|
|
||||||
- Extract `bl2.img` from the tarball to your USB drive
|
|
||||||
3. **Intermediate NAND bootloader** from Frank-W's U-Boot (for BPI-R4, SPI NAND):
|
|
||||||
- [bpi-r4_spim-nand_bl2.img][13] — BL2 first-stage loader
|
|
||||||
- [bpi-r4_spim-nand_fip.bin][14] — FIP image (BL31 + U-Boot)
|
|
||||||
|
|
||||||
### Step 1: Boot from SD card
|
|
||||||
|
|
||||||
1. Set boot switches to **SD card mode** (SW3: A=ON, B=ON)
|
|
||||||
2. Insert the SD card with the Infix image
|
|
||||||
3. Power on and break into U-Boot (press Ctrl-C during countdown)
|
|
||||||
|
|
||||||
### Step 2: Flash intermediate NAND bootloader
|
|
||||||
|
|
||||||
This installs a full-featured U-Boot to SPI NAND so the board can load files
|
|
||||||
from USB in the next step. From the SD card U-Boot prompt:
|
|
||||||
|
|
||||||
```
|
|
||||||
usb start
|
|
||||||
mtd erase spi-nand0
|
|
||||||
fatload usb 0:1 0x50000000 bpi-r4_spim-nand_bl2.img
|
|
||||||
mtd write spi-nand0 0x50000000 0x0 0x100000
|
|
||||||
fatload usb 0:1 0x50000000 bpi-r4_spim-nand_fip.bin
|
|
||||||
mtd write spi-nand0 0x50000000 0x580000 0x200000
|
|
||||||
```
|
|
||||||
|
|
||||||
### Step 3: Boot from NAND
|
|
||||||
|
|
||||||
1. Power off the board
|
|
||||||
2. Set boot switches to **SPI NAND mode** (SW3: A=OFF, B=ON)
|
|
||||||
3. Power on — you should boot into U-Boot again
|
|
||||||
|
|
||||||
### Step 4: Write Infix image to eMMC
|
|
||||||
|
|
||||||
From the U-Boot prompt:
|
|
||||||
|
|
||||||
```
|
|
||||||
usb start
|
|
||||||
fatload usb 0:1 0x50000000 infix-bpi-r4-emmc.img
|
|
||||||
setexpr blocks ${filesize} / 0x200
|
|
||||||
mmc write 0x50000000 0x0 ${blocks}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Step 5: Configure eMMC boot partition
|
|
||||||
|
|
||||||
Write the BL2 bootloader to the eMMC boot partition:
|
|
||||||
|
|
||||||
```
|
|
||||||
mmc partconf 0 1 1 1
|
|
||||||
mmc erase 0x0 0x400
|
|
||||||
fatload usb 0:1 0x50000000 bl2.img
|
|
||||||
mmc write 0x50000000 0x0 0x400
|
|
||||||
mmc partconf 0 1 1 0
|
|
||||||
```
|
|
||||||
|
|
||||||
### Step 6: Boot from eMMC
|
|
||||||
|
|
||||||
1. Power off the board
|
|
||||||
2. Set boot switches to **eMMC mode** (SW3: A=ON, B=OFF)
|
|
||||||
3. Remove the SD card (optional, recommended to verify eMMC boot)
|
|
||||||
4. Power on
|
|
||||||
|
|
||||||
Your BPI-R4 should now boot Infix from internal eMMC storage.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
### Board won't boot
|
|
||||||
|
|
||||||
- Verify boot switch positions — double-check against the wiki
|
|
||||||
- Ensure the power supply provides adequate current (12 V / 3 A recommended)
|
|
||||||
- Check the serial console output at 115200 8N1
|
|
||||||
|
|
||||||
### Can't break into U-Boot
|
|
||||||
|
|
||||||
- Connect the serial console before powering on
|
|
||||||
- Press Ctrl-C immediately when boot messages appear
|
|
||||||
- Try power cycling and pressing Ctrl-C repeatedly during the countdown
|
|
||||||
|
|
||||||
### eMMC boot fails after installation
|
|
||||||
|
|
||||||
- Boot from NAND (SW3=ON) and verify the eMMC write completed without errors
|
|
||||||
- Re-run the `mmc partconf` sequence — a missed step is the most common
|
|
||||||
cause of failure
|
|
||||||
- Use `mmc info` to confirm the eMMC is detected
|
|
||||||
|
|
||||||
### No network connectivity
|
|
||||||
|
|
||||||
The interface names on BPI-R4 differ from BPI-R3. Confirm what Linux
|
|
||||||
has created with `ip link` and compare with the factory configuration:
|
|
||||||
|
|
||||||
- `wan`, `lan1`–`lan3`: 1G switch ports (standard R4)
|
|
||||||
- `wan`, `lan0`–`lan3`: on R4-2g5/R4P, `wan` is the 2.5G internal PHY; `lan0`–`lan3` are 1G switch ports
|
|
||||||
- `sfp1` (and `sfp2` on standard R4): 10G SFP+ cage(s)
|
|
||||||
|
|
||||||
If interface renames look wrong, check `dmesg | grep renamed` and if
|
|
||||||
you spot any errors, please report as an issue to the Infix tracker
|
|
||||||
on GitHub.
|
|
||||||
|
|
||||||
## Board Variants
|
|
||||||
|
|
||||||
### BPI-R4
|
|
||||||
|
|
||||||
The base model BPi-R4 ports look like this, the `wan` port is the same physical
|
|
||||||
switch port as `lan0` on the R4-2g5/R4P, but here it serves as the WAN port in
|
|
||||||
the factory default configuration.
|
|
||||||
|
|
||||||
```
|
|
||||||
.-.
|
|
||||||
| | .-----.-----.-----.-----.
|
|
||||||
| | _______ _______ | | | | | .---.
|
|
||||||
| | | | | | | | | | | | | .-----.
|
|
||||||
'-' '-------' '-------' '-----'-----'-----'-----' '---' '-----'
|
|
||||||
USB1 sfp1 sfp2 wan lan1 lan2 lan3 DC12V PD20V
|
|
||||||
```
|
|
||||||
|
|
||||||
### BPI-R4-2g5 and BPI-R4P
|
|
||||||
|
|
||||||
These variants substitute one SFP+ cage for an internal 2.5 Gbps PHY
|
|
||||||
connected to a standard RJ45 jack. From a kernel perspective they use
|
|
||||||
the `mt7988a-bananapi-bpi-r4-2g5` device tree.
|
|
||||||
|
|
||||||
The BPI-R4P additionally supports an optional PoE input daughterboard on
|
|
||||||
the 2.5 Gbps RJ45 port. The PoE circuitry is passive with respect to
|
|
||||||
Linux — no special kernel driver is required for basic operation.
|
|
||||||
|
|
||||||
For these board variants, the WAN role moves to the dedicated 2.5G internal PHY,
|
|
||||||
so all four switch ports become LAN ports (`lan0`–`lan3`) instead of three:
|
|
||||||
|
|
||||||
```
|
|
||||||
.-.
|
|
||||||
| | .-----. .-----.-----.-----.-----.
|
|
||||||
| | _______ | | | | | | | .---.
|
|
||||||
| | | | | | | | | | | | | .-----.
|
|
||||||
'-' '-------' '-----' '-----'-----'-----'-----' '---' '-----'
|
|
||||||
USB1 sfp1 wan lan0 lan1 lan2 lan3 DC12V PD20V
|
|
||||||
```
|
|
||||||
|
|
||||||
### Selecting the Board Variant
|
|
||||||
|
|
||||||
U-Boot cannot automatically distinguish the standard R4 from the R4-2g5/R4P at
|
|
||||||
boot time (the on-board EEPROM is not programmed from factory). Instead, the
|
|
||||||
variant is read from the persistent U-Boot environment on the `aux` partition,
|
|
||||||
and you have to set it manually using `fw_setenv` from a UNIX shell:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# For BPI-R4-2g5 or BPI-R4P (1x SFP+ + 1x 2.5 Gbps RJ45):
|
|
||||||
sudo fw_setenv BOARD_VARIANT 2g5
|
|
||||||
|
|
||||||
# To revert to the standard BPI-R4 (2x SFP+) clear the setting:
|
|
||||||
sudo fw_setenv BOARD_VARIANT
|
|
||||||
```
|
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> The change takes effect on the next reboot. No re-flashing is required, but
|
|
||||||
> you may want to do a factory reset to activate the changes in your system
|
|
||||||
> `startup-config`: `sudo factory -y` from shell, or the CLI.
|
|
||||||
|
|
||||||
`fw_setenv` writes to the `uboot.env` file on the aux partition. U-Boot
|
|
||||||
reads this at every boot (before loading the kernel) and selects the
|
|
||||||
matching device tree:
|
|
||||||
|
|
||||||
| `BOARD_VARIANT` | Device tree loaded |
|
|
||||||
|-----------------|-----------------------------------|
|
|
||||||
| *(unset)* | `mt7988a-bananapi-bpi-r4.dtb` |
|
|
||||||
| `2g5` | `mt7988a-bananapi-bpi-r4-2g5.dtb` |
|
|
||||||
|
|
||||||
## Additional Resources
|
|
||||||
|
|
||||||
- [Infix Documentation][1]
|
|
||||||
- [Official BPI-R4 Page][7]
|
|
||||||
- [BPI-R4 Forum][8]
|
|
||||||
- [Frank-W's site][9]
|
|
||||||
- [Release Downloads][10]
|
|
||||||
- [Bootloader Builds][11]
|
|
||||||
|
|
||||||
## Building Custom Images
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Build bootloaders for SD and eMMC
|
|
||||||
make x-bpi-r4-sd-boot
|
|
||||||
make x-bpi-r4-emmc-boot
|
|
||||||
|
|
||||||
# Build main system
|
|
||||||
make aarch64
|
|
||||||
|
|
||||||
# Create SD card image
|
|
||||||
./utils/mkimage.sh -od bananapi-bpi-r4
|
|
||||||
|
|
||||||
# Create eMMC image
|
|
||||||
./utils/mkimage.sh -odt emmc bananapi-bpi-r4
|
|
||||||
```
|
|
||||||
|
|
||||||
[0]: https://www.kernelkit.org/posts/flashing-sdcard/
|
|
||||||
[1]: https://www.kernelkit.org/infix/latest/
|
|
||||||
[2]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-bpi-r4-sdcard.img
|
|
||||||
[3]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-bpi-r4-emmc.img
|
|
||||||
[4]: https://github.com/kernelkit/infix/releases/download/latest-boot/bpi-r4-emmc-boot-2026.01-latest.tar.gz
|
|
||||||
[7]: https://docs.banana-pi.org/en/BPI-R4/BananaPi_BPI-R4
|
|
||||||
[8]: https://forum.banana-pi.org/
|
|
||||||
[9]: https://wiki.fw-web.de/doku.php?id=en:bpi-r4:start
|
|
||||||
[10]: https://github.com/kernelkit/infix/releases/tag/latest
|
|
||||||
[11]: https://github.com/kernelkit/infix/releases/tag/latest-boot
|
|
||||||
[12]: https://github.com/frank-w/u-boot/releases
|
|
||||||
[13]: https://github.com/frank-w/u-boot/releases/download/CI-BUILD-2026-01-bpi-2026.01-2026-01-15_2013/bpi-r4_spim-nand_bl2.img
|
|
||||||
[14]: https://github.com/frank-w/u-boot/releases/download/CI-BUILD-2026-01-bpi-2026.01-2026-01-15_2013/bpi-r4_spim-nand_fip.bin
|
|
||||||
[15]: https://docs.banana-pi.org/bpi-r4/bpi-r4_4g5g_2.jpg
|
|
||||||
[16]: https://www.kernelkit.org/infix/latest/modem/
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 92 KiB |
@@ -1,2 +0,0 @@
|
|||||||
# Locally calculated
|
|
||||||
sha256 d48246c717b505cc11df95171f2fd548b389e1a463f1af4c68d0b69fe0d1009b LICENSE
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
define BANANAPI_BPI_R4_LINUX_CONFIG_FIXUPS
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_ARCH_MEDIATEK)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MACH_MT7988)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_PINCTRL_MT7988)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_8250_MT6577)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_I2C_GPIO,y)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_MTK_THERMAL,m)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_MTK_LVTS_THERMAL,m)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MTK_UART)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MEDIATEK_WATCHDOG)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MEDIATEK_GE_PHY)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MEDIATEK_GE_SOC_PHY)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_NET_VENDOR_MEDIATEK)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_NET_MEDIATEK_SOC)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_NET_DSA_MT7530,m)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_MT7996E,m)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_PCIE_MEDIATEK_GEN3,m)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MTK_SCPSYS)
|
|
||||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MMC_MTK)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_I2C_MT65XX,m)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_USB_XHCI_MTK,m)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_PHY_MTK_TPHY,m)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_PHY_MTK_XSPHY,m)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_PHY_MTK_XFI_TPHY,m)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_PCS_STANDALONE,y)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_PCS_MTK_USXGMII,y)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_PWM_MEDIATEK,m)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_SENSORS_PWM_FAN,m)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_NVMEM_MTK_EFUSE,m)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_MEDIATEK_2P5GE_PHY,m)
|
|
||||||
$(call KCONFIG_SET_OPT,CONFIG_CRYPTO_DEV_SAFEXCEL,m)
|
|
||||||
endef
|
|
||||||
|
|
||||||
LINUX_DTS_MT7988 = $(LINUX_DIR)/arch/arm64/boot/dts/mediatek
|
|
||||||
|
|
||||||
define BANANAPI_BPI_R4_KERNEL_DTBS_INSTALL_TARGET
|
|
||||||
@$(call MESSAGE,"Installing kernel DTBs and DTBOs for BPI-R4")
|
|
||||||
$(foreach f, \
|
|
||||||
mt7988a-bananapi-bpi-r4.dtb \
|
|
||||||
mt7988a-bananapi-bpi-r4-2g5.dtb \
|
|
||||||
mt7988a-bananapi-bpi-r4-sd.dtbo \
|
|
||||||
mt7988a-bananapi-bpi-r4-emmc.dtbo, \
|
|
||||||
$(INSTALL) -D $(LINUX_DTS_MT7988)/$(f) \
|
|
||||||
$(TARGET_DIR)/boot/mediatek/$(f)$(sep))
|
|
||||||
endef
|
|
||||||
BANANAPI_BPI_R4_POST_INSTALL_TARGET_HOOKS += BANANAPI_BPI_R4_KERNEL_DTBS_INSTALL_TARGET
|
|
||||||
|
|
||||||
$(eval $(ix-board))
|
|
||||||
$(eval $(generic-package))
|
|
||||||
|
Before Width: | Height: | Size: 348 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 282 KiB |
@@ -1,2 +0,0 @@
|
|||||||
dtb-y += infix/bananapi,bpi-r4.dtbo
|
|
||||||
dtb-y += infix/bananapi,bpi-r4-2g5.dtbo
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
|
|
||||||
/dts-v1/;
|
|
||||||
/plugin/;
|
|
||||||
|
|
||||||
/ {
|
|
||||||
compatible = "bananapi,bpi-r4-2g5";
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* On the 2g5 variant, GMAC1 uses the internal 2.5G PHY (eth1 renamed to
|
|
||||||
* "wan" by udev). The switch's port0, which is labeled "wan" in the base
|
|
||||||
* DTS, would cause a name collision when the switch driver registers it.
|
|
||||||
* Rename it to "lan0" here so the kernel names it correctly from the start.
|
|
||||||
*/
|
|
||||||
&gsw_port0 {
|
|
||||||
label = "lan0";
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The upstream mt7988a.dtsi sets compatible = "ethernet-phy-ieee802.3-c45"
|
|
||||||
* on the internal 2.5G PHY node. That gives genphy_c45 (built-in) OF-match
|
|
||||||
* priority over the PHY-ID-based mtk-2p5ge driver, leaving the PHY powered
|
|
||||||
* down and unclaimed. Replace it with the standard ethernet-phy-idXXXX.XXXX
|
|
||||||
* form so of_get_phy_id() registers the PHY as C22 with explicit ID 0x00339c11.
|
|
||||||
* mtk-2p5ge then matches via PHY_ID_MATCH_VENDOR(0x00339c00) instead of
|
|
||||||
* genphy_c45 winning via OF-match.
|
|
||||||
* Note: /delete-property/ is not used because U-Boot fdt apply does not
|
|
||||||
* implement property deletion in overlays.
|
|
||||||
*/
|
|
||||||
&int_2p5g_phy {
|
|
||||||
compatible = "ethernet-phy-id0033.9c11";
|
|
||||||
};
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
|
|
||||||
/dts-v1/;
|
|
||||||
/plugin/;
|
|
||||||
|
|
||||||
/ {
|
|
||||||
compatible = "bananapi,bpi-r4", "mediatek,mt7988a";
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The upstream mt7988a-bananapi-bpi-r4.dtsi sets stdout-path = "serial0:..."
|
|
||||||
* but the aliases node there only has ethernet entries. Linux resolves
|
|
||||||
* stdout-path by looking in /aliases, so we must add serial0 here.
|
|
||||||
* Path references in overlay aliases cannot use &label, so use the full path.
|
|
||||||
*/
|
|
||||||
&{/} {
|
|
||||||
aliases {
|
|
||||||
serial0 = "/soc/serial@11000000";
|
|
||||||
};
|
|
||||||
|
|
||||||
chosen {
|
|
||||||
infix {
|
|
||||||
/* Default admin user password: 'admin' */
|
|
||||||
factory-password-hash = "$5$mI/zpOAqZYKLC2WU$i7iPzZiIjOjrBF3NyftS9CCq8dfYwHwrmUK097Jca9A";
|
|
||||||
usb-ports = <&ssusb1>;
|
|
||||||
usb-port-names = "USB";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
image cfg.ext4 {
|
|
||||||
empty = true
|
|
||||||
temporary = true
|
|
||||||
size = 128M
|
|
||||||
ext4 {
|
|
||||||
label = "cfg"
|
|
||||||
use-mke2fs = true
|
|
||||||
features = "uninit_bg"
|
|
||||||
extraargs = "-m 0 -i 4096"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# The /var partition will be expanded automatically at first boot
|
|
||||||
# to use the full size of the SD-card or eMMC media.
|
|
||||||
image var.ext4 {
|
|
||||||
empty = true
|
|
||||||
temporary = true
|
|
||||||
size = 128M
|
|
||||||
ext4 {
|
|
||||||
label = "var"
|
|
||||||
use-mke2fs = true
|
|
||||||
features = "uninit_bg"
|
|
||||||
extraargs = "-m 0 -i 4096"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
image #INFIX_ID##VERSION#-bpi-r4-#TARGET#.img {
|
|
||||||
hdimage {
|
|
||||||
partition-table-type = "gpt"
|
|
||||||
gpt-no-backup = true
|
|
||||||
}
|
|
||||||
# BL2 bootloader partition (MediaTek official location)
|
|
||||||
partition bl2 {
|
|
||||||
image = "bl2.img"
|
|
||||||
offset = 1024s # 0x80000 = sector 1024
|
|
||||||
size = 4M # 0x400000
|
|
||||||
bootable = true
|
|
||||||
}
|
|
||||||
|
|
||||||
# Factory/calibration data (sectors 9216-13311)
|
|
||||||
partition factory {
|
|
||||||
offset = 4608K # 0x480000
|
|
||||||
size = 2M # 0x200000
|
|
||||||
}
|
|
||||||
|
|
||||||
# FIP partition - BL31 + U-Boot (sectors 13312-17407)
|
|
||||||
partition fip {
|
|
||||||
image = "fip.bin"
|
|
||||||
offset = 13312s
|
|
||||||
size = 4096s
|
|
||||||
}
|
|
||||||
|
|
||||||
partition aux {
|
|
||||||
partition-uuid = D4EF35A0-0652-45A1-B3DE-D63339C82035
|
|
||||||
image = "aux.ext4"
|
|
||||||
}
|
|
||||||
|
|
||||||
partition primary {
|
|
||||||
partition-type-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4
|
|
||||||
bootable = true
|
|
||||||
size = 250M
|
|
||||||
image = "rootfs.squashfs"
|
|
||||||
}
|
|
||||||
|
|
||||||
partition secondary {
|
|
||||||
partition-type-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4
|
|
||||||
bootable = true
|
|
||||||
size = 250M
|
|
||||||
image = "rootfs.squashfs"
|
|
||||||
}
|
|
||||||
|
|
||||||
partition cfg {
|
|
||||||
partition-uuid = 7aa497f0-73b5-47e5-b2ab-8752d8a48105
|
|
||||||
image = "cfg.ext4"
|
|
||||||
}
|
|
||||||
|
|
||||||
partition var {
|
|
||||||
partition-uuid = 8046A06A-E45A-4A14-A6AD-6684704A393F
|
|
||||||
image = "var.ext4"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
label Infix (aarch64)
|
|
||||||
kernel /boot/Image
|
|
||||||
fdtdir /boot
|
|
||||||
fdtoverlays /boot/mediatek/mt7988a-bananapi-bpi-r4-emmc.dtbo /boot/infix/bananapi,bpi-r4.dtbo /boot/infix/bananapi,bpi-r4-2g5.dtbo
|
|
||||||
append ${bootargs_root} ${bootargs_log} usbcore.authorized_default=2 -- ${bootargs_user}
|
|
||||||