Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f1d0d87b24 | ||
|
|
a06786d36c | ||
|
|
16a173e20b | ||
|
|
6c38666229 | ||
|
|
b940e14eb7 | ||
|
|
1774e08219 | ||
|
|
5950e665ab | ||
|
|
fadffef6cd | ||
|
|
69d599e2ab | ||
|
|
6c879d81d1 | ||
|
|
e5b5b6203b | ||
|
|
31df56308b | ||
|
|
19c8c80294 | ||
|
|
db422ecc5e | ||
|
|
5b870a273e | ||
|
|
e29e2093ab | ||
|
|
d5df85afad | ||
|
|
003aee9b53 | ||
|
|
12a50a8523 | ||
|
|
bae80ba9d8 | ||
|
|
addd89e07e | ||
|
|
9014d7edb7 | ||
|
|
c0475fc886 | ||
|
|
de3a44e58d | ||
|
|
996c857e20 | ||
|
|
823bba0ece | ||
|
|
93bff6260e | ||
|
|
cdc28ffe00 | ||
|
|
9b9ba63d09 | ||
|
|
5b1211365b | ||
|
|
e51daefe99 | ||
|
|
1659ca2a05 | ||
|
|
e2d1ed275b | ||
|
|
5ed71fa10d | ||
|
|
cfcc83f15d | ||
|
|
e168633f4e | ||
|
|
8d164216fc | ||
|
|
4cb2d28e3c | ||
|
|
3a7ef41629 | ||
|
|
1558b6bf7e | ||
|
|
349a89ba52 | ||
|
|
55e9a57ae3 | ||
|
|
15d6947207 | ||
|
|
e536deab65 | ||
|
|
a556abbdfc | ||
|
|
d3dc47ac8e | ||
|
|
cf08b577ed | ||
|
|
1c6c7724b9 | ||
|
|
94a036be3a | ||
|
|
281f027749 | ||
|
|
4dee5e4f1f | ||
|
|
e9f165ebd8 | ||
|
|
abad3cedc6 | ||
|
|
7b4e9b3366 | ||
|
|
ed1d6b7d5c | ||
|
|
0ee3159ac6 | ||
|
|
bc6313d2db | ||
|
|
0884227afa | ||
|
|
7f2fbc8bbf | ||
|
|
fee552196a | ||
|
|
adee27f923 | ||
|
|
9472e08262 | ||
|
|
d3c091e746 | ||
|
|
5583b97da9 | ||
|
|
9e7cdf492f | ||
|
|
929f53d270 | ||
|
|
1966d104c9 | ||
|
|
3507cd5601 | ||
|
|
97c26d36bf | ||
|
|
06361032d2 | ||
|
|
f61e1580cd | ||
|
|
8d87465876 | ||
|
|
f257ab58d4 | ||
|
|
07f23ec4f5 | ||
|
|
4ca53f8ec2 | ||
|
|
4bc08e7323 | ||
|
|
9c2a90c07a | ||
|
|
3deb021bce | ||
|
|
77a7915e1f | ||
|
|
3b85fdff87 | ||
|
|
ea5071a264 | ||
|
|
50be4d1a43 | ||
|
|
63c3d244ae | ||
|
|
7050f400d5 | ||
|
|
23cbfd6f4e | ||
|
|
e2bb1cfbe0 | ||
|
|
95abdac7ee | ||
|
|
0a7bd76ede | ||
|
|
f8ef10ff2f | ||
|
|
2137a3bf75 | ||
|
|
b38c039be1 | ||
|
|
63f9e8a939 | ||
|
|
be85775e50 | ||
|
|
2fea1e4a2b | ||
|
|
fcf9782a8c | ||
|
|
f1584f5937 | ||
|
|
3d67876136 | ||
|
|
0f01012c07 | ||
|
|
63f46d4d43 | ||
|
|
5487344034 | ||
|
|
3e762e6111 | ||
|
|
af15e65087 | ||
|
|
03b4466e09 | ||
|
|
a1903a893a | ||
|
|
b9cbbb053d | ||
|
|
49c66ee957 | ||
|
|
43f3bf0322 | ||
|
|
ba8d1f6b4a | ||
|
|
221fea13a2 | ||
|
|
cb243304ad | ||
|
|
fc757a439a | ||
|
|
757afe5206 | ||
|
|
5b7b0bc249 | ||
|
|
d04f493f08 | ||
|
|
f0b220b6e7 | ||
|
|
f35e3b3ec3 | ||
|
|
312b856fba | ||
|
|
4deaee0b8e | ||
|
|
121abe7891 | ||
|
|
cc10b70f19 | ||
|
|
6560af1b94 | ||
|
|
784b911253 | ||
|
|
35ba2ca37f | ||
|
|
e16f0a2504 | ||
|
|
799fd93cac | ||
|
|
726a3132e3 | ||
|
|
6994e5dd63 | ||
|
|
5bb21e5221 | ||
|
|
04eef91c0d | ||
|
|
6c8eeb2a5f | ||
|
|
784be611de | ||
|
|
cdd56e6a2d | ||
|
|
4b39b2c2d3 | ||
|
|
b2c729dc7d | ||
|
|
290c03b2b5 | ||
|
|
b9a8014e41 | ||
|
|
27a07d0179 | ||
|
|
2d9f973e82 | ||
|
|
09c649f0b3 | ||
|
|
982e610fef | ||
|
|
9ea1e82728 | ||
|
|
7a23181b96 | ||
|
|
0489fb5403 | ||
|
|
585907daae | ||
|
|
62559655dc | ||
|
|
c68db78309 | ||
|
|
87c671b4cc | ||
|
|
571edefa9d | ||
|
|
1282352359 | ||
|
|
89c95d6baa | ||
|
|
e255828418 | ||
|
|
e2c29cb1a7 | ||
|
|
707731d23e | ||
|
|
ff4a346fd4 | ||
|
|
ba801be402 | ||
|
|
debee83b15 | ||
|
|
b078a570ec | ||
|
|
a712fd5907 | ||
|
|
30b12d1467 | ||
|
|
6534086d89 | ||
|
|
57961ac0a5 | ||
|
|
565a07a0b2 | ||
|
|
054faa6763 | ||
|
|
3d86d5f6e2 | ||
|
|
5518574fee | ||
|
|
434248a6de | ||
|
|
082bcd1712 | ||
|
|
0bedde52d3 | ||
|
|
b315e444fd | ||
|
|
a8094c8026 | ||
|
|
afa01489e6 | ||
|
|
26320cc771 | ||
|
|
7990ae4e9d | ||
|
|
2671873b6f | ||
|
|
e64d29196d | ||
|
|
b446d92b0d | ||
|
|
e7cb85edf3 | ||
|
|
000c04cc8c | ||
|
|
6e5283f5d1 | ||
|
|
8fcb291f5e | ||
|
|
1a1d917cd6 |
@@ -1,8 +1,10 @@
|
||||
Limited free support is only available using the online resources of the
|
||||
project on GitHub, and Discord, see <https://github.com/kernelkit>:
|
||||
project on GitHub, and Discord, see <https://github.com/kernelkit/infix>:
|
||||
|
||||
: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>
|
||||
:bug: <https://github.com/kernelkit/infix/issues>
|
||||
:bug: <https://github.com/kernelkit/infix/issues>
|
||||
|
||||
Support contracts, development of new features, fast-tracking of reviews
|
||||
and contributions, customer branding of Infix, and even customer specific
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
name: 'Restore Build Caches'
|
||||
description: 'Restore dl/ and .ccache/ caches for Buildroot builds'
|
||||
inputs:
|
||||
target:
|
||||
description: 'Build target for cache key differentiation'
|
||||
required: true
|
||||
dl-prefix:
|
||||
description: 'Prefix for dl/ cache key (e.g., "dl", "dl-boot")'
|
||||
required: false
|
||||
default: 'dl'
|
||||
ccache-prefix:
|
||||
description: 'Prefix for .ccache/ cache key (e.g., "ccache", "ccache-boot")'
|
||||
required: false
|
||||
default: 'ccache'
|
||||
enabled:
|
||||
description: 'Set to false to skip cache restoration'
|
||||
required: false
|
||||
default: 'true'
|
||||
runs:
|
||||
using: 'composite'
|
||||
steps:
|
||||
- name: Restore Cache of dl/
|
||||
if: ${{ inputs.enabled == 'true' }}
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: dl/
|
||||
key: ${{ inputs.dl-prefix }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'configs/*', 'package/*/*.hash') }}
|
||||
restore-keys: |
|
||||
${{ inputs.dl-prefix }}-
|
||||
dl-
|
||||
|
||||
- name: Restore Cache of .ccache/
|
||||
if: ${{ inputs.enabled == 'true' }}
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: .ccache/
|
||||
key: ${{ inputs.ccache-prefix }}-${{ inputs.target }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
|
||||
restore-keys: |
|
||||
${{ inputs.ccache-prefix }}-${{ inputs.target }}-
|
||||
${{ inputs.ccache-prefix }}-
|
||||
ccache-
|
||||
@@ -1,15 +0,0 @@
|
||||
name: 'Podman Cleanup'
|
||||
description: 'Clean up stale podman state from previous runs'
|
||||
runs:
|
||||
using: 'composite'
|
||||
steps:
|
||||
- name: Cleanup podman state
|
||||
shell: bash
|
||||
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
|
||||
@@ -19,6 +19,10 @@ jobs:
|
||||
- aarch64_qemu_boot
|
||||
- bpi_r3_sd_boot
|
||||
- bpi_r3_emmc_boot
|
||||
- bpi_r4_sd_boot
|
||||
- bpi_r4_emmc_boot
|
||||
- bpi_r64_sd_boot
|
||||
- bpi_r64_emmc_boot
|
||||
- cn9130_crb_boot
|
||||
- fireant_boot
|
||||
- nanopi_r2s_boot
|
||||
@@ -66,7 +70,7 @@ jobs:
|
||||
|
||||
echo "Building ${defconfig}_defconfig, version ${version}-${rev}, artifact ${archive} ..."
|
||||
|
||||
- uses: ./.github/actions/cache-restore
|
||||
- uses: kernelkit/actions/cache-restore@v1
|
||||
with:
|
||||
target: ${{ matrix.defconfig }}
|
||||
dl-prefix: dl-boot
|
||||
|
||||
@@ -11,6 +11,8 @@ on:
|
||||
- raspberrypi-rpi2
|
||||
- raspberrypi-rpi64
|
||||
- bananapi-bpi-r3
|
||||
- bananapi-bpi-r4
|
||||
- bananapi-bpi-r64
|
||||
- friendlyarm-nanopi-r2s
|
||||
- microchip-sama7g54-ek
|
||||
default: 'raspberrypi-rpi64'
|
||||
@@ -67,6 +69,18 @@ jobs:
|
||||
echo "ARCH=aarch64" >> $GITHUB_ENV
|
||||
echo "BUILD_EMMC=true" >> $GITHUB_ENV
|
||||
;;
|
||||
bananapi-bpi-r4)
|
||||
echo "BOOTLOADER_SD=bpi-r4-sd-boot" >> $GITHUB_ENV
|
||||
echo "BOOTLOADER_EMMC=bpi-r4-emmc-boot" >> $GITHUB_ENV
|
||||
echo "ARCH=aarch64" >> $GITHUB_ENV
|
||||
echo "BUILD_EMMC=true" >> $GITHUB_ENV
|
||||
;;
|
||||
bananapi-bpi-r64)
|
||||
echo "BOOTLOADER_SD=bpi-r64-sd-boot" >> $GITHUB_ENV
|
||||
echo "BOOTLOADER_EMMC=bpi-r64-emmc-boot" >> $GITHUB_ENV
|
||||
echo "ARCH=aarch64" >> $GITHUB_ENV
|
||||
echo "BUILD_EMMC=true" >> $GITHUB_ENV
|
||||
;;
|
||||
friendlyarm-nanopi-r2s)
|
||||
echo "BOOTLOADER=nanopi-r2s-boot" >> $GITHUB_ENV
|
||||
echo "ARCH=aarch64" >> $GITHUB_ENV
|
||||
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
clean: true
|
||||
submodules: recursive
|
||||
|
||||
- uses: ./.github/actions/podman-cleanup
|
||||
- uses: kernelkit/actions/podman-cleanup@v1
|
||||
|
||||
- name: Set Release Variables
|
||||
id: vars
|
||||
@@ -40,7 +40,7 @@ jobs:
|
||||
echo "dir=infix-$target" >> $GITHUB_OUTPUT
|
||||
echo "tgz=infix-$target.tar.gz" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: ./.github/actions/cache-restore
|
||||
- uses: kernelkit/actions/cache-restore@v1
|
||||
with:
|
||||
target: ${{ matrix.target }}
|
||||
enabled: ${{ inputs.use_cache }}
|
||||
|
||||
@@ -89,7 +89,7 @@ jobs:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.CHECKOUT_TOKEN || github.token }}
|
||||
|
||||
- uses: ./.github/actions/podman-cleanup
|
||||
- uses: kernelkit/actions/podman-cleanup@v1
|
||||
|
||||
- name: Run pre-build script
|
||||
if: ${{ inputs.pre_build_script != '' }}
|
||||
@@ -120,7 +120,7 @@ jobs:
|
||||
echo "tgz=${name}-${target}.tar.gz" >> $GITHUB_OUTPUT
|
||||
echo "Building target ${target}_defconfig"
|
||||
|
||||
- uses: ./.github/actions/cache-restore
|
||||
- uses: kernelkit/actions/cache-restore@v1
|
||||
with:
|
||||
target: ${{ env.TARGET }}
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@ on:
|
||||
env:
|
||||
PROJECT_NAME: Infix
|
||||
CONTACT_EMAIL: troglobit@gmail.com
|
||||
LIBYANG_VERSION: 4.2.2
|
||||
SYSREPO_VERSION: 4.2.10
|
||||
|
||||
jobs:
|
||||
coverity:
|
||||
@@ -55,16 +57,24 @@ jobs:
|
||||
sudo apt-get -y update
|
||||
sudo apt-get -y install pkg-config libjansson-dev libev-dev \
|
||||
libcrypt-dev libglib2.0-dev libpcre2-dev \
|
||||
libuev-dev
|
||||
libuev-dev libavahi-client-dev
|
||||
|
||||
- name: Build dependencies
|
||||
run: |
|
||||
git clone https://github.com/CESNET/libyang.git
|
||||
git clone -b v${LIBYANG_VERSION} --depth 1 https://github.com/CESNET/libyang.git
|
||||
for p in patches/libyang/${LIBYANG_VERSION}/*.patch; do
|
||||
git -C libyang apply < "$p"
|
||||
done
|
||||
mkdir libyang/build
|
||||
(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
|
||||
(cd sysrepo/build && cmake .. && make all && sudo make install)
|
||||
|
||||
git clone https://github.com/troglobit/libite.git
|
||||
(cd libite && ./autogen.sh && ./configure && make && sudo make install)
|
||||
make dep
|
||||
|
||||
@@ -45,7 +45,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./.github/actions/cache-restore
|
||||
- uses: kernelkit/actions/cache-restore@v1
|
||||
with:
|
||||
target: x86_64
|
||||
dl-prefix: dl-netconf
|
||||
|
||||
@@ -52,7 +52,7 @@ jobs:
|
||||
with:
|
||||
submodules: 'true'
|
||||
|
||||
- uses: ./.github/actions/podman-cleanup
|
||||
- uses: kernelkit/actions/podman-cleanup@v1
|
||||
|
||||
- name: Set Release Variables
|
||||
id: rel
|
||||
|
||||
@@ -70,7 +70,7 @@ jobs:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.CHECKOUT_TOKEN || github.token }}
|
||||
|
||||
- uses: ./.github/actions/podman-cleanup
|
||||
- uses: kernelkit/actions/podman-cleanup@v1
|
||||
|
||||
- name: Run pre-test script
|
||||
if: ${{ inputs.pre_test_script != '' }}
|
||||
|
||||
@@ -87,7 +87,7 @@ jobs:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.CHECKOUT_TOKEN || github.token }}
|
||||
|
||||
- uses: ./.github/actions/podman-cleanup
|
||||
- uses: kernelkit/actions/podman-cleanup@v1
|
||||
|
||||
- name: Run pre-build script
|
||||
if: ${{ inputs.pre_build_script != '' }}
|
||||
@@ -98,7 +98,7 @@ jobs:
|
||||
chmod +x ./pre-build.sh
|
||||
bash ./pre-build.sh
|
||||
|
||||
- uses: ./.github/actions/cache-restore
|
||||
- uses: kernelkit/actions/cache-restore@v1
|
||||
with:
|
||||
target: ${{ env.TARGET }}
|
||||
|
||||
|
||||
@@ -85,12 +85,12 @@ interfaces {
|
||||
admin@infix-12-34-56:/config/interface/eth0/> <b>leave</b>
|
||||
admin@infix-12-34-56:/> <b>show interfaces</b>
|
||||
<u>INTERFACE PROTOCOL STATE DATA </u>
|
||||
eth0 ethernet UP 52:54:00:12:34:56
|
||||
ipv4 192.168.2.200/24 (static)
|
||||
ipv6 fe80::5054:ff:fe12:3456/64 (link-layer)
|
||||
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
|
||||
ipv4 192.168.2.200/24 (static)
|
||||
ipv6 fe80::5054:ff:fe12:3456/64 (link-layer)
|
||||
admin@infix-12-34-56:/> <b>copy running startup</b>
|
||||
</code></pre>
|
||||
|
||||
@@ -114,6 +114,7 @@ containers for any custom functionality you need.
|
||||
- **x86_64** - Run in VMs or on mini PCs for development and testing
|
||||
- **Marvell CN9130 CRB, EspressoBIN** - High-performance ARM64 platforms
|
||||
- **Microchip SparX-5i** - Enterprise switching capabilities
|
||||
- **Microchip SAMA7G54-EK** - ARM Cortex-A7
|
||||
- **NXP i.MX8MP EVK** - Highly capable ARM64 SoC
|
||||
- **StarFive VisionFive2** - RISC-V architecture support
|
||||
|
||||
@@ -169,11 +170,11 @@ APIs.
|
||||
[2]: https://www.sysrepo.org/ "Sysrepo Homepage"
|
||||
[3]: https://www.kernelkit.org/infix/latest/cli/introduction/
|
||||
[4]: https://www.kernelkit.org/infix/
|
||||
[5]: https://github.com/kernelkit/infix/releases
|
||||
[5]: https://github.com/kernelkit/infix/releases/latest
|
||||
[Latest Build]: https://github.com/kernelkit/infix/releases/tag/latest "Latest build"
|
||||
[License]: https://en.wikipedia.org/wiki/GPL_license
|
||||
[License Badge]: https://img.shields.io/badge/License-GPL%20v2-blue.svg
|
||||
[Release]: https://github.com/kernelkit/infix/releases
|
||||
[Release]: https://github.com/kernelkit/infix/releases/latest
|
||||
[Release Badge]: https://img.shields.io/github/v/release/kernelkit/infix
|
||||
[GitHub]: https://github.com/kernelkit/infix/actions/workflows/build.yml/
|
||||
[GitHub Status]: https://github.com/kernelkit/infix/actions/workflows/build.yml/badge.svg
|
||||
|
||||
@@ -2,6 +2,8 @@ if BR2_aarch64
|
||||
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/alder-alder/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/friendlyarm-nanopi-r2s/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/marvell-cn9130-crb/Config.in"
|
||||
|
||||
@@ -4,8 +4,10 @@ aarch64
|
||||
Board Specific Documentation
|
||||
----------------------------
|
||||
|
||||
- [Banana Pi R3](banana-pi-r3/)
|
||||
- [Marvell CN9130-CRB](cn9130-crb/)
|
||||
- [Microchip SparX-5i PCB135 (eMMC)](sparx5-pcb135/)
|
||||
- [NanoPi R2S](r2s/)
|
||||
- [Raspberry Pi 64-bit](raspberry-pi64/)
|
||||
- [Banana Pi BPi-R3](bananapi-bpi-r3/)
|
||||
- [Banana Pi BPi-R4](bananapi-bpi-r4/)
|
||||
- [Banana Pi BPi-R64](bananapi-bpi-r64/)
|
||||
- [Marvell CN9130-CRB](marvell-cn9130-crb/)
|
||||
- [Microchip SparX-5i PCB135 (eMMC)](microchip-sparx5-pcb135/)
|
||||
- [NanoPi R2S](friendlyarm-nanopi-r2s/)
|
||||
- [Raspberry Pi 64-bit](raspberrypi-rpi64/)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
config BR2_PACKAGE_ALDER_ALDER
|
||||
bool "Alder"
|
||||
depends on BR2_aarch64
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_INSIDE_SECURE_MINIFW
|
||||
help
|
||||
Alder
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 d2f96418893ac66156d0e691cda189b0d85ae1d814065d1d9aa1845383100f46 LICENSE
|
||||
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 dbe4eae8debbba8135297e15f24aeefef0b4c03781f3f9328db4398d58a728b3 LICENSE
|
||||
@@ -8,7 +8,22 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
/*
|
||||
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>;
|
||||
};
|
||||
&cpu_thermal {
|
||||
/delete-node/ trips;
|
||||
/delete-node/ cooling-maps;
|
||||
|
||||
@@ -21,21 +21,21 @@
|
||||
{
|
||||
"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",
|
||||
"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": {
|
||||
@@ -130,7 +130,8 @@
|
||||
"id": "domain"
|
||||
},
|
||||
{
|
||||
"id": "hostname"
|
||||
"id": "hostname",
|
||||
"value": "auto"
|
||||
},
|
||||
{
|
||||
"id": "dns-server"
|
||||
@@ -179,7 +180,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
},
|
||||
@@ -195,7 +196,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,21 +21,21 @@
|
||||
{
|
||||
"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",
|
||||
"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": {
|
||||
@@ -96,7 +96,8 @@
|
||||
"id": "domain"
|
||||
},
|
||||
{
|
||||
"id": "hostname"
|
||||
"id": "hostname",
|
||||
"value": "auto"
|
||||
},
|
||||
{
|
||||
"id": "dns-server"
|
||||
@@ -145,7 +146,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
},
|
||||
@@ -161,7 +162,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
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
|
||||
@@ -0,0 +1,13 @@
|
||||
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.
|
||||
@@ -0,0 +1,360 @@
|
||||
# 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.
|
||||
|
||||
|
||||
## 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
|
||||
|
After Width: | Height: | Size: 92 KiB |
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 d48246c717b505cc11df95171f2fd548b389e1a463f1af4c68d0b69fe0d1009b LICENSE
|
||||
@@ -0,0 +1,49 @@
|
||||
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))
|
||||
|
After Width: | Height: | Size: 348 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 282 KiB |
@@ -0,0 +1,2 @@
|
||||
dtb-y += infix/bananapi,bpi-r4.dtbo
|
||||
dtb-y += infix/bananapi,bpi-r4-2g5.dtbo
|
||||
@@ -0,0 +1,32 @@
|
||||
// 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";
|
||||
};
|
||||
@@ -0,0 +1,28 @@
|
||||
// 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,81 @@
|
||||
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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
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}
|
||||
@@ -0,0 +1,5 @@
|
||||
label Infix (aarch64)
|
||||
kernel /boot/Image
|
||||
fdtdir /boot
|
||||
fdtoverlays /boot/mediatek/mt7988a-bananapi-bpi-r4-sd.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}
|
||||
@@ -0,0 +1,5 @@
|
||||
label Infix (aarch64)
|
||||
kernel /boot/Image
|
||||
fdtdir /boot
|
||||
fdtoverlays /boot/mediatek/mt7988a-bananapi-bpi-r4-emmc.dtbo /boot/infix/bananapi,bpi-r4.dtbo
|
||||
append ${bootargs_root} ${bootargs_log} usbcore.authorized_default=2 -- ${bootargs_user}
|
||||
@@ -0,0 +1,5 @@
|
||||
label Infix (aarch64)
|
||||
kernel /boot/Image
|
||||
fdtdir /boot
|
||||
fdtoverlays /boot/mediatek/mt7988a-bananapi-bpi-r4-sd.dtbo /boot/infix/bananapi,bpi-r4.dtbo
|
||||
append ${bootargs_root} ${bootargs_log} usbcore.authorized_default=2 -- ${bootargs_user}
|
||||
@@ -0,0 +1,404 @@
|
||||
{
|
||||
"ieee802-dot1ab-lldp:lldp": {
|
||||
"infix-lldp:enabled": true
|
||||
},
|
||||
"ietf-hardware:hardware": {
|
||||
"component": [
|
||||
{
|
||||
"name": "USB",
|
||||
"class": "infix-hardware:usb",
|
||||
"state": {
|
||||
"admin-state": "unlocked"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ietf-interfaces:interfaces": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "br0",
|
||||
"type": "infix-if-type:bridge",
|
||||
"ietf-ip:ipv4": {
|
||||
"address": [
|
||||
{
|
||||
"ip": "192.168.0.1",
|
||||
"prefix-length": 24
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lan0",
|
||||
"type": "infix-if-type:ethernet",
|
||||
"ietf-ip:ipv6": {},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "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-R4"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ietf-ip:ipv6": {
|
||||
"infix-dhcpv6-client:dhcp": {
|
||||
"option": [
|
||||
{
|
||||
"id": "ntp-server"
|
||||
},
|
||||
{
|
||||
"id": "client-fqdn"
|
||||
},
|
||||
{
|
||||
"id": "domain-search"
|
||||
},
|
||||
{
|
||||
"id": "dns-server"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"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": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
# The mtk-2p5ge PHY driver uses MDIO PHY ID matching, not OF compatible
|
||||
# matching. udev auto-loading is based on MODALIAS, which for DT-described
|
||||
# devices is "of:N...C<compatible>" — a format that never matches the driver's
|
||||
# "mdio:..." module alias. Match on OF_COMPATIBLE_0 explicitly instead.
|
||||
ACTION=="add", SUBSYSTEM=="mdio_bus", ENV{OF_COMPATIBLE_0}=="ethernet-phy-id0033.9c11", RUN+="/sbin/modprobe -b mtk-2p5ge"
|
||||
@@ -0,0 +1,2 @@
|
||||
ACTION=="add", SUBSYSTEM=="net", DEVPATH=="/devices/platform/soc/15100000.ethernet/net/eth1", NAME="wan"
|
||||
ACTION=="add", SUBSYSTEM=="net", DEVPATH=="/devices/platform/soc/15100000.ethernet/net/eth2", NAME="sfp1"
|
||||
@@ -0,0 +1,396 @@
|
||||
{
|
||||
"ieee802-dot1ab-lldp:lldp": {
|
||||
"infix-lldp:enabled": true
|
||||
},
|
||||
"ietf-hardware:hardware": {
|
||||
"component": [
|
||||
{
|
||||
"name": "USB",
|
||||
"class": "infix-hardware:usb",
|
||||
"state": {
|
||||
"admin-state": "unlocked"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"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": "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-R4"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ietf-ip:ipv6": {
|
||||
"infix-dhcpv6-client:dhcp": {
|
||||
"option": [
|
||||
{
|
||||
"id": "ntp-server"
|
||||
},
|
||||
{
|
||||
"id": "client-fqdn"
|
||||
},
|
||||
{
|
||||
"id": "domain-search"
|
||||
},
|
||||
{
|
||||
"id": "dns-server"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"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": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
ACTION=="add", SUBSYSTEM=="net", DEVPATH=="/devices/platform/soc/15100000.ethernet/net/eth1", NAME="sfp2"
|
||||
ACTION=="add", SUBSYSTEM=="net", DEVPATH=="/devices/platform/soc/15100000.ethernet/net/eth2", NAME="sfp1"
|
||||
@@ -0,0 +1 @@
|
||||
CONFIG_DEVICE_TREE_INCLUDES="infix-env.dtsi infix-key.dtsi mt7988-emmc-env.dtsi"
|
||||
@@ -0,0 +1,40 @@
|
||||
CONFIG_AUTOBOOT=y
|
||||
CONFIG_BOOTDELAY=2
|
||||
# CONFIG_MMC_PCI is not set
|
||||
CONFIG_ENV_IS_NOWHERE=y
|
||||
# CONFIG_ENV_IS_IN_MMC is not set
|
||||
CONFIG_MULTI_DTB_FIT=y
|
||||
CONFIG_OF_LIST="mt7988a-bananapi-bpi-r4 mt7988a-bananapi-bpi-r4-2g5"
|
||||
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_MTK=y
|
||||
CONFIG_USB_MTU3=y
|
||||
CONFIG_PHY=y
|
||||
CONFIG_PHY_MTK_TPHY=y
|
||||
|
||||
CONFIG_MTK_SPIM=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_DM_SPI=y
|
||||
CONFIG_SPI_FLASH=y
|
||||
CONFIG_DM_SPI_FLASH=y
|
||||
CONFIG_SPI_FLASH_MTD=y
|
||||
CONFIG_SPI_FLASH_MACRONIX=y
|
||||
CONFIG_SPI_FLASH_WINBOND=y
|
||||
CONFIG_SPI_FLASH_GIGADEVICE=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_DM_MTD=y
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_SPI_NAND=y
|
||||
CONFIG_MTK_SPIM=y
|
||||
CONFIG_MTK_SNOR=y
|
||||
|
||||
CONFIG_BUTTON=y
|
||||
CONFIG_BUTTON_CMD=y
|
||||
CONFIG_BUTTON_GPIO=y
|
||||
|
||||
CONFIG_CMD_SF=y
|
||||
CONFIG_CMD_USB=y
|
||||
CONFIG_CMD_MTD=y
|
||||
CONFIG_CMD_MTDPARTS=y
|
||||
CONFIG_CMD_DM=y
|
||||
@@ -0,0 +1,7 @@
|
||||
#include <mt7988-env.dtsi>
|
||||
|
||||
&env {
|
||||
fdtfile = "mediatek/mt7988a-bananapi-bpi-r4.dtb";
|
||||
board = "bananapi,bpi-r4-emmc";
|
||||
ixvariant = "if test \"${BOARD_VARIANT}\" = \"2g5\"; then setenv fdtfile mediatek/mt7988a-bananapi-bpi-r4-2g5.dtb; setenv board bananapi,bpi-r4-2g5-emmc; fi";
|
||||
};
|
||||
@@ -0,0 +1,27 @@
|
||||
/ {
|
||||
config {
|
||||
env: environment {
|
||||
bootcmd = "run ixboot";
|
||||
boot_targets = "mmc0";
|
||||
ethprime = "eth0";
|
||||
fdt_addr_r = "0x43f00000";
|
||||
kernel_addr_r = "0x44000000";
|
||||
fdtoverlay_addr_r = "0x47f00000";
|
||||
scriptaddr = "0x48000000";
|
||||
ramdisk_addr_r = "0x4A000000";
|
||||
|
||||
/*
|
||||
* Apply BOARD_VARIANT from aux uboot.env.
|
||||
* Infix writes BOARD_VARIANT=2g5 via fw_setenv on
|
||||
* BPI-R4-2g5 / BPI-R4P boards to select the correct
|
||||
* device tree. Unset = standard R4 (2x SFP+).
|
||||
*/
|
||||
ixvariant = "if test \"${BOARD_VARIANT}\" = \"2g5\"; then setenv fdtfile mediatek/mt7988a-bananapi-bpi-r4-2g5.dtb; fi";
|
||||
|
||||
/* This is a development platform, keep
|
||||
* developer mode statically enabled.
|
||||
*/
|
||||
ixbtn-devmode = "setenv dev_mode yes; echo Enabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,7 @@
|
||||
#include <mt7988-env.dtsi>
|
||||
|
||||
&env {
|
||||
fdtfile = "mediatek/mt7988a-bananapi-bpi-r4.dtb";
|
||||
board = "bananapi,bpi-r4-sdmmc";
|
||||
ixvariant = "if test \"${BOARD_VARIANT}\" = \"2g5\"; then setenv fdtfile mediatek/mt7988a-bananapi-bpi-r4-2g5.dtb; setenv board bananapi,bpi-r4-2g5-sdmmc; fi";
|
||||
};
|
||||
@@ -0,0 +1,2 @@
|
||||
CONFIG_DEVICE_TREE_INCLUDES="infix-env.dtsi infix-key.dtsi mt7988-sd-env.dtsi"
|
||||
CONFIG_OF_LIST="mt7988a-bananapi-bpi-r4-sd"
|
||||
@@ -0,0 +1,7 @@
|
||||
config BR2_PACKAGE_BANANAPI_BPI_R64
|
||||
bool "Banana Pi R64"
|
||||
depends on BR2_aarch64
|
||||
select BR2_PACKAGE_FEATURE_WIFI
|
||||
select SDCARD_AUX
|
||||
help
|
||||
Build Banana PI R64 support
|
||||
@@ -0,0 +1,13 @@
|
||||
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.
|
||||
@@ -0,0 +1,135 @@
|
||||
# Banana Pi BPI-R64
|
||||
|
||||
## Overview
|
||||
|
||||
<img align="right" src="banana_pi_bpi-r64_interface.jpg" alt="Board Overview" width=400 padding=10>
|
||||
|
||||
The Banana Pi BPI-R64 is a networking board based on the MediaTek MT7622
|
||||
(dual Cortex-A53, AArch64) SoC.
|
||||
|
||||
### Hardware Features
|
||||
|
||||
- MediaTek MT7622 ARM Cortex-A53 dual-core processor @ 1.35 GHz
|
||||
- 1 GB DDR3L RAM
|
||||
- 8 GB eMMC storage
|
||||
- microSD card slot
|
||||
- MT7531 Gigabit Ethernet switch (4x LAN + 1x WAN)
|
||||
- MT7603E built-in 2.4 GHz WiFi
|
||||
- USB 3.0 port
|
||||
- 2x Mini PCIe slots
|
||||
|
||||
### Default Network Configuration
|
||||
|
||||
Infix comes preconfigured with:
|
||||
|
||||
- **LAN ports** (lan0-lan3): Bridged for internal networking
|
||||
- **WAN port**: DHCP client enabled for internet connectivity
|
||||
- **WiFi** (wifi0-ap): Bridged to LAN (MT7615 PCIe card if fitted, otherwise MT7603E)
|
||||
|
||||
## Boot Switch Reference
|
||||
|
||||
<img align="right" src="bpi-r64-sw1.png" alt="SW1 Boot Switch" width=90 padding=10>
|
||||
|
||||
The BPI-R64 has a 2-position DIP switch (SW1) for selecting the boot device.
|
||||
The MT7622 Boot ROM always tries SD first if a card is present, so you can
|
||||
leave SW1 in the OFF (eMMC) position and simply insert or remove an SD card
|
||||
to control boot device selection.
|
||||
|
||||
| SW1 | Boot device |
|
||||
|-----|-------------|
|
||||
| OFF | eMMC |
|
||||
| ON | SD card |
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Quick Start with SD Card
|
||||
|
||||
1. **Flash the image to an SD card** (the filename includes the version, e.g.
|
||||
`infix-25.01-bpi-r64-sdcard.img`):
|
||||
|
||||
<img align="right" src="debug-uart.png" alt="Debug UART" width=100 padding=10>
|
||||
|
||||
```sh
|
||||
dd if=infix-*-bpi-r64-sdcard.img of=/dev/sdX bs=4M status=progress
|
||||
```
|
||||
|
||||
2. **Insert SD card and power on**
|
||||
3. **Connect console:** 115200 8N1 — use the dedicated Debug UART header
|
||||
just below the 40-pin GPIO header; pins are labeled GND, RX, TX on the board
|
||||
4. **Default login:** `admin` / `admin`
|
||||
|
||||
## Installing to eMMC
|
||||
|
||||
Unlike the BPI-R3 (where SD and eMMC share a bus, requiring a NAND intermediate
|
||||
step), the BPI-R64 has separate controllers for SD (mmc1/MSDC1) and eMMC
|
||||
(mmc0/MSDC0). You can write directly to eMMC while booted from SD.
|
||||
|
||||
### eMMC Boot ROM Behaviour
|
||||
|
||||
> [!IMPORTANT]
|
||||
> The MT7622 Boot ROM reads BL2 from the eMMC BOOT0 hardware partition (offset
|
||||
> 0), not from the User Data Area where the main disk image lives. The
|
||||
> installation procedure below writes BL2 to BOOT0 separately to handle this.
|
||||
|
||||
### Procedure
|
||||
|
||||
Boot from SD and write the eMMC image from U-Boot using a FAT32-formatted USB
|
||||
drive.
|
||||
|
||||
#### Step 1: Boot from SD card
|
||||
|
||||
1. Insert SD card with Infix
|
||||
2. Power on and break into U-Boot (press Ctrl-C during boot)
|
||||
|
||||
#### Step 2: Write the eMMC image from U-Boot
|
||||
|
||||
Place `infix-bpi-r64-emmc.img` and `bl2.img` on a FAT32-formatted USB drive,
|
||||
then from the U-Boot prompt:
|
||||
|
||||
```
|
||||
usb start
|
||||
fatload usb 0:1 0x44000000 infix-bpi-r64-emmc.img
|
||||
setexpr blocks ${filesize} / 0x200
|
||||
mmc dev 0
|
||||
mmc write 0x44000000 0x0 ${blocks}
|
||||
```
|
||||
|
||||
#### Step 3: Write BL2 to eMMC BOOT0
|
||||
|
||||
```
|
||||
fatload usb 0:1 0x44000000 bl2.img
|
||||
mmc partconf 0 1 1 1
|
||||
setexpr blkcnt ${filesize} + 0x1ff
|
||||
setexpr blkcnt ${blkcnt} / 0x200
|
||||
mmc write 0x44000000 0x0 ${blkcnt}
|
||||
mmc partconf 0 1 1 0
|
||||
```
|
||||
|
||||
#### Step 4: Boot from eMMC
|
||||
|
||||
1. Power off the board
|
||||
2. Remove SD card and USB drive
|
||||
3. Power on
|
||||
|
||||
## Platform Notes
|
||||
|
||||
### mmc0 = eMMC, mmc1 = SD
|
||||
|
||||
On MT7622, MSDC0 (mmc0) is the 8-bit eMMC controller and MSDC1 (mmc1) is the
|
||||
4-bit SD card controller — the reverse of many other platforms.
|
||||
|
||||
## Building
|
||||
|
||||
```sh
|
||||
# Bootloader only (SD)
|
||||
make O=x-boot-bpir64-sd bpi_r64_sd_boot_defconfig && make O=x-boot-bpir64-sd
|
||||
|
||||
# Bootloader only (eMMC)
|
||||
make O=x-boot-bpir64-emmc bpi_r64_emmc_boot_defconfig && make O=x-boot-bpir64-emmc
|
||||
|
||||
# Compose SD image (pass the Infix rootfs output directory)
|
||||
utils/mkimage.sh -b x-boot-bpir64-sd -r x-aarch64/images bananapi-bpi-r64
|
||||
|
||||
# Compose eMMC image
|
||||
utils/mkimage.sh -b x-boot-bpir64-emmc -r x-aarch64/images -t emmc bananapi-bpi-r64
|
||||
```
|
||||
|
After Width: | Height: | Size: 228 KiB |
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 d48246c717b505cc11df95171f2fd548b389e1a463f1af4c68d0b69fe0d1009b LICENSE
|
||||
@@ -0,0 +1,35 @@
|
||||
define BANANAPI_BPI_R64_LINUX_CONFIG_FIXUPS
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_ARCH_MEDIATEK)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MACH_MT7622)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_PINCTRL_MT7622)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_8250_MT6577)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MTK_UART)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MEDIATEK_WATCHDOG)
|
||||
# Ethernet subsystem clock controller — required for the eth MAC,
|
||||
# MT7531 DSA switch, and HSDMA to get their clocks from ðsys.
|
||||
# Without this, eth probe fails and the switch is never detected.
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_COMMON_CLK_MT7622_ETHSYS)
|
||||
# HIF subsystem clock controller — required for PCIe and USB.
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_COMMON_CLK_MT7622_HIFSYS)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MEDIATEK_GE_PHY)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_REALTEK_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_MT7603E,m)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_PCIE_MEDIATEK,m)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MMC_MTK)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_USB_XHCI_MTK,m)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_PHY_MTK_TPHY,m)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_MTK_THERMAL,m)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_MTK_SOC_THERMAL,m)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_I2C_MT65XX,m)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_PWM_MEDIATEK,m)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_REGULATOR_MT6380,m)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_NVMEM_MTK_EFUSE,m)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_CRYPTO_DEV_SAFEXCEL,m)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_RTC_DRV_MT7622)
|
||||
endef
|
||||
|
||||
$(eval $(ix-board))
|
||||
$(eval $(generic-package))
|
||||
|
After Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 96 KiB |
@@ -0,0 +1 @@
|
||||
dtb-y += mediatek/mt7622-bananapi-bpi-r64.dtb
|
||||
@@ -0,0 +1,3 @@
|
||||
#include <arm64/mediatek/mt7622-bananapi-bpi-r64.dts>
|
||||
|
||||
#include "mt7622-bananapi-bpi-r64.dtsi"
|
||||
@@ -0,0 +1,10 @@
|
||||
/ {
|
||||
chosen {
|
||||
infix {
|
||||
/* Default admin user password: 'admin' */
|
||||
factory-password-hash = "$5$mI/zpOAqZYKLC2WU$i7iPzZiIjOjrBF3NyftS9CCq8dfYwHwrmUK097Jca9A";
|
||||
usb-ports = <&ssusb>;
|
||||
usb-port-names = "USB";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,89 @@
|
||||
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-r64-#TARGET#.img {
|
||||
hdimage {
|
||||
partition-table-type = "hybrid"
|
||||
# MT7622 TF-A partition driver detects GPT by checking MBR[0]
|
||||
# for the 0xEE protective entry. Place it first so that BL2
|
||||
# (with partition-type = 0x83) lands at MBR slot 1.
|
||||
gpt-protective-first = true
|
||||
}
|
||||
|
||||
# BL2 bootloader at sector 1024 (0x80000). The MT7622 Boot ROM scans
|
||||
# the hybrid MBR for a bootable entry and loads BL2 from its offset.
|
||||
# partition-type makes it visible in the MBR at slot 1 (slot 0 holds
|
||||
# the 0xEE protective entry required by the TF-A partition driver).
|
||||
partition bl2 {
|
||||
partition-type = 0x83
|
||||
image = "bl2.img"
|
||||
offset = 1024s
|
||||
size = 1024s
|
||||
bootable = true
|
||||
}
|
||||
|
||||
# Factory/calibration data at fixed offset
|
||||
partition factory {
|
||||
offset = 4608K
|
||||
size = 2M
|
||||
}
|
||||
|
||||
# FIP partition - BL31 + U-Boot
|
||||
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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,438 @@
|
||||
{
|
||||
"ieee802-dot1ab-lldp:lldp": {
|
||||
"infix-lldp:enabled": true
|
||||
},
|
||||
"ietf-hardware:hardware": {
|
||||
"component": [
|
||||
{
|
||||
"name": "USB",
|
||||
"class": "infix-hardware:usb",
|
||||
"state": {
|
||||
"admin-state": "unlocked"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "radio0",
|
||||
"class": "infix-hardware:wifi",
|
||||
"infix-hardware:wifi-radio": {
|
||||
"country-code": "DE",
|
||||
"band": "2.4GHz",
|
||||
"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": "lan0",
|
||||
"type": "infix-if-type:ethernet",
|
||||
"ietf-ip:ipv6": {},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "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-R64"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
# Rename MT7531 external switch ports by DT node path.
|
||||
|
||||
# The DTS already contains this but it has been observed in the wild
|
||||
# that we may end up with names like lan118 rather than by DTS label,
|
||||
# so this set of rules, that run after most other rules, match on the
|
||||
# OF_FULLNAME which is a stable reference.
|
||||
#
|
||||
# MT7622 / BPI-R64 switch topology (switch@1f, ports):
|
||||
# port@0 = wan, port@1..4 = lan0..lan3, port@5,6 = cpu
|
||||
ACTION=="add", SUBSYSTEM=="net", ENV{OF_FULLNAME}=="*/switch@1f/ports/port@0", NAME="wan"
|
||||
ACTION=="add", SUBSYSTEM=="net", ENV{OF_FULLNAME}=="*/switch@1f/ports/port@1", NAME="lan0"
|
||||
ACTION=="add", SUBSYSTEM=="net", ENV{OF_FULLNAME}=="*/switch@1f/ports/port@2", NAME="lan1"
|
||||
ACTION=="add", SUBSYSTEM=="net", ENV{OF_FULLNAME}=="*/switch@1f/ports/port@3", NAME="lan2"
|
||||
ACTION=="add", SUBSYSTEM=="net", ENV{OF_FULLNAME}=="*/switch@1f/ports/port@4", NAME="lan3"
|
||||
@@ -0,0 +1,3 @@
|
||||
CONFIG_DEVICE_TREE_INCLUDES="infix-env.dtsi infix-key.dtsi mt7622-emmc-env.dtsi"
|
||||
CONFIG_SUPPORT_EMMC_BOOT=y
|
||||
CONFIG_CMD_MMC_PARTCONF=y
|
||||
@@ -0,0 +1,19 @@
|
||||
CONFIG_AUTOBOOT=y
|
||||
CONFIG_BOOTDELAY=2
|
||||
# CONFIG_MMC_PCI is not set
|
||||
CONFIG_ENV_IS_NOWHERE=y
|
||||
# CONFIG_ENV_IS_IN_MMC is not set
|
||||
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_MTK=y
|
||||
CONFIG_PHY=y
|
||||
CONFIG_PHY_MTK_TPHY=y
|
||||
|
||||
CONFIG_DM_MDIO=y
|
||||
CONFIG_DM_ETH_PHY=y
|
||||
CONFIG_PHY_ETHERNET_ID=y
|
||||
|
||||
CONFIG_CMD_MDIO=y
|
||||
CONFIG_CMD_USB=y
|
||||
CONFIG_CMD_DM=y
|
||||
@@ -0,0 +1,5 @@
|
||||
#include <mt7622-env.dtsi>
|
||||
|
||||
&env {
|
||||
fdtfile = "mediatek/mt7622-bananapi-bpi-r64.dtb";
|
||||
};
|
||||
@@ -0,0 +1,18 @@
|
||||
/ {
|
||||
config {
|
||||
env: environment {
|
||||
bootcmd = "run ixboot";
|
||||
boot_targets = "mmc0";
|
||||
ethprime = "eth0";
|
||||
fdt_addr_r = "0x43f00000";
|
||||
kernel_addr_r = "0x44000000";
|
||||
scriptaddr = "0x48000000";
|
||||
ramdisk_addr_r = "0x4A000000";
|
||||
|
||||
/* This is a development platform, keep
|
||||
* developer mode statically enabled.
|
||||
*/
|
||||
ixbtn-devmode = "setenv dev_mode yes; echo Enabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,6 @@
|
||||
#include <mt7622-env.dtsi>
|
||||
|
||||
&env {
|
||||
boot_targets = "mmc1"; /* SD = mmc1 on MT7622 */
|
||||
fdtfile = "mediatek/mt7622-bananapi-bpi-r64.dtb";
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
CONFIG_DEVICE_TREE_INCLUDES="infix-env.dtsi infix-key.dtsi mt7622-sd-env.dtsi"
|
||||
CONFIG_SUPPORT_EMMC_BOOT=y
|
||||
CONFIG_CMD_MMC_PARTCONF=y
|
||||
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 d2f96418893ac66156d0e691cda189b0d85ae1d814065d1d9aa1845383100f46 LICENSE
|
||||
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 dbe4eae8debbba8135297e15f24aeefef0b4c03781f3f9328db4398d58a728b3 LICENSE
|
||||
@@ -71,7 +71,8 @@
|
||||
"id": "domain"
|
||||
},
|
||||
{
|
||||
"id": "hostname"
|
||||
"id": "hostname",
|
||||
"value": "auto"
|
||||
},
|
||||
{
|
||||
"id": "dns-server"
|
||||
|
||||
@@ -502,6 +502,7 @@ CONFIG_USB_OTG=y
|
||||
CONFIG_USB_XHCI_HCD=m
|
||||
CONFIG_USB_XHCI_MVEBU=m
|
||||
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
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
config BR2_PACKAGE_MARVELL_CN9130_CRB
|
||||
bool "Marvell CN9130-CRB"
|
||||
depends on BR2_aarch64
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_INSIDE_SECURE_MINIFW
|
||||
help
|
||||
Customer Reference Board for CN9130
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 d2f96418893ac66156d0e691cda189b0d85ae1d814065d1d9aa1845383100f46 LICENSE
|
||||
@@ -1,5 +1,6 @@
|
||||
config BR2_PACKAGE_MARVELL_ESPRESSOBIN
|
||||
bool "Marvell ESPRESSObin"
|
||||
depends on BR2_aarch64
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_INSIDE_SECURE_MINIFW
|
||||
help
|
||||
Marvell ESPRESSObin
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 d2f96418893ac66156d0e691cda189b0d85ae1d814065d1d9aa1845383100f46 LICENSE
|
||||
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 d2f96418893ac66156d0e691cda189b0d85ae1d814065d1d9aa1845383100f46 LICENSE
|
||||
@@ -2,9 +2,6 @@ config BR2_PACKAGE_RASPBERRYPI_RPI64
|
||||
bool "Raspberry Pi 64-bit (RPi3 and later)"
|
||||
depends on BR2_aarch64
|
||||
select SDCARD_AUX
|
||||
select BR2_PACKAGE_FEATURE_WIFI
|
||||
select BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI
|
||||
select BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169
|
||||
help
|
||||
Raspberry Pi 64-bit adds support for the Raspberry Pi family of
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Raspberry Pi 3B/4B/CM4
|
||||
# Raspberry Pi 3B/4B/400/CM4/5B
|
||||
|
||||
## Overview
|
||||
|
||||
@@ -31,6 +31,18 @@ learning, prototyping, and lightweight network applications.
|
||||
- GPIO header (40-pin)
|
||||
- PoE support (with add-on HAT)
|
||||
|
||||
**Raspberry Pi 5B:**
|
||||
|
||||
- Broadcom BCM2712 ARM Cortex-A76 quad-core processor @ 2.4 GHz
|
||||
- 4 GB or 8 GB LPDDR4X RAM
|
||||
- microSD card slot for storage (PCIe Gen 2 speed via RP1)
|
||||
- 2x USB 3.0 + 2x USB 2.0 ports (via RP1 companion chip)
|
||||
- Gigabit Ethernet (via RP1)
|
||||
- Dual-band WiFi (2.4 GHz + 5 GHz) and Bluetooth 5.0
|
||||
- 2x micro-HDMI ports (up to 4K@60fps output)
|
||||
- GPIO header (40-pin)
|
||||
- PCIe Gen 2 x1 connector (FPC)
|
||||
|
||||
**Compute Module 4 (CM4):**
|
||||
|
||||
- Same processor as Pi 4B
|
||||
@@ -53,6 +65,12 @@ Full support for base board networking and core functionality. GPIO extension
|
||||
boards (HATs) are not currently supported. Other Raspberry Pi boards of the
|
||||
same generation may work but may require additional testing.
|
||||
|
||||
> [!NOTE]
|
||||
> The Raspberry Pi 5B uses the RP1 companion chip, which provides USB, Ethernet,
|
||||
> and PCIe connectivity over an internal PCIe Gen 2 link. The mainline Linux
|
||||
> `drm/vc4` driver handles HDMI display on the Pi 5 — no firmware overlay is
|
||||
> required, unlike on the Pi 4.
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Quick Start with SD Card
|
||||
@@ -71,10 +89,10 @@ The easiest way to get started is using a microSD card:
|
||||
- Default login: `admin` / `admin`
|
||||
|
||||
> [!NOTE]
|
||||
> Raspberry Pi 3B and 4B boot with a factory configuration (`factory-config.cfg`)
|
||||
> that enables DHCP client on the Ethernet port. This means you can access
|
||||
> the device over the network without needing a serial console. Simply find
|
||||
> the assigned IP address and SSH in!
|
||||
> Raspberry Pi 3B/4B/5B boot with a dedicated `factory-config.cfg` that
|
||||
> enables DHCP client on the Ethernet port. This means you can access the
|
||||
> device over the network without needing a serial console. Simply find the
|
||||
> assigned IP address using an mDNS scan and SSH in!
|
||||
>
|
||||
> **Compute Module 4 (CM4)** and some other variants do not have this factory
|
||||
> configuration, so you'll need to use a serial console for initial setup or
|
||||
@@ -176,6 +194,7 @@ admin@infix:/config/container/…/var/> leave
|
||||
|
||||
Proper power supply is critical for stable operation:
|
||||
|
||||
- **Raspberry Pi 5B:** 5V/5A USB-C power supply (official 27W recommended)
|
||||
- **Raspberry Pi 4B:** 5V/3A USB-C power supply (official recommended)
|
||||
- **Raspberry Pi 3B:** 5V/2.5A micro-USB power supply
|
||||
- **Compute Module 4:** Power requirements depend on carrier board
|
||||
@@ -190,11 +209,16 @@ Inadequate power can cause:
|
||||
|
||||
### Serial Console Access (Optional)
|
||||
|
||||
A serial console is useful for debugging but not required for Pi 3B/4B, since
|
||||
A serial console is useful for debugging but not required for Pi 3B/4B/5B, since
|
||||
the factory configuration enables network access via DHCP. For CM4 and other
|
||||
variants without factory configuration, serial console access is required for
|
||||
initial setup.
|
||||
|
||||
> [!NOTE]
|
||||
> On the Raspberry Pi 5B the serial console is on `ttyAMA10` (GPIO pins 8/10),
|
||||
> not `ttyAMA0` as on earlier models. Use the same wiring but connect to the
|
||||
> correct UART in your terminal emulator.
|
||||
|
||||
To connect via serial:
|
||||
|
||||
1. Connect a USB-to-TTL serial adapter (3.3V) to GPIO pins:
|
||||
|
||||
@@ -35,7 +35,6 @@ fixup_file=fixup4.dat
|
||||
dtoverlay=vc4-kms-v3d-pi4
|
||||
lcd_rotate=2
|
||||
|
||||
# Prevent console on DSI
|
||||
console=map:0
|
||||
|
||||
gpu_mem=256
|
||||
|
||||
[pi5]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
dtb-y += broadcom/bcm2837-rpi-3-b.dtb broadcom/bcm2837-rpi-zero-2-w.dtb \
|
||||
broadcom/bcm2711-rpi-4-b.dtb broadcom/bcm2711-rpi-4-b-dsi.dtb \
|
||||
broadcom/bcm2711-rpi-400.dtb broadcom/bcm2711-rpi-cm4-io.dtb \
|
||||
broadcom/bcm2711-rpi-cm4.dtb
|
||||
broadcom/bcm2711-rpi-cm4.dtb \
|
||||
broadcom/bcm2712-rpi-5-b.dtb
|
||||
|
||||
@@ -2,29 +2,18 @@
|
||||
#include "infix.dtsi"
|
||||
|
||||
/ {
|
||||
/* Dynamic GPU reservation */
|
||||
gpu-reserved {
|
||||
size = <0x0 0x10000000>; /* 256MB */
|
||||
alignment = <0x0 0x1000000>; /* 16MB aligned */
|
||||
alloc-ranges = <0x0 0x10000000 0x1 0x00000000>; /* Allow anywhere in RAM */
|
||||
no-map;
|
||||
};
|
||||
|
||||
/* CMA pool */
|
||||
cma-reserved {
|
||||
compatible = "shared-dma-pool";
|
||||
size = <0x0 0x10000000>; /* 256MB */
|
||||
alignment = <0x0 0x1000000>; /* 16MB aligned */
|
||||
linux,cma-default;
|
||||
reusable;
|
||||
};
|
||||
|
||||
chosen {
|
||||
/* 8250 auxiliary UART instead of pl011 */
|
||||
stdout-path = "serial1:115200n8";
|
||||
};
|
||||
};
|
||||
|
||||
/* Override upstream 64MB CMA with 256MB for vc4 GPU */
|
||||
&rmem {
|
||||
cma: linux,cma {
|
||||
size = <0x10000000>; /* 256MB */
|
||||
};
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
status = "okay";
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
#include <arm64/broadcom/bcm2712-rpi-5-b.dts>
|
||||
#include "infix.dtsi"
|
||||
@@ -43,8 +43,8 @@ image #INFIX_ID##VERSION#-rpi64-sdcard.img {
|
||||
|
||||
partition boot {
|
||||
partition-type = 0xc
|
||||
bootable = "true"
|
||||
image = "boot.vfat"
|
||||
bootable = "true"
|
||||
}
|
||||
|
||||
partition aux {
|
||||
@@ -54,16 +54,14 @@ image #INFIX_ID##VERSION#-rpi64-sdcard.img {
|
||||
|
||||
partition primary {
|
||||
partition-type-uuid = linux
|
||||
bootable = "true"
|
||||
size = 250M
|
||||
image = "rootfs.squashfs"
|
||||
size = 250M
|
||||
}
|
||||
|
||||
partition secondary {
|
||||
partition-type-uuid = linux
|
||||
bootable = "true"
|
||||
size = 250M
|
||||
image = "rootfs.squashfs"
|
||||
size = 250M
|
||||
}
|
||||
|
||||
partition cfg {
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 dbe4eae8debbba8135297e15f24aeefef0b4c03781f3f9328db4398d58a728b3 LICENSE
|
||||
@@ -61,6 +61,15 @@ define RASPBERRYPI_RPI64_LINUX_CONFIG_FIXUPS
|
||||
$(call KCONFIG_SET_OPT,CONFIG_TOUCHSCREEN_EDT_FT5X06,m)
|
||||
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_BACKLIGHT_CLASS_DEVICE)
|
||||
|
||||
# RPi 5 (BCM2712): PCIe bus to RP1 companion chip and its sub-drivers.
|
||||
# Must be built-in (=y) — no initramfs, root is on RP1 SDHCI via PCIe.
|
||||
$(call KCONFIG_SET_OPT,CONFIG_PCIE_BRCMSTB,y)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_MISC_RP1,y)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_COMMON_CLK_RP1,y)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_PINCTRL_RP1,y)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_MMC_SDHCI_BRCMSTB,y)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_PINCTRL_BCM2712)
|
||||
endef
|
||||
|
||||
$(eval $(ix-board))
|
||||
|
||||
@@ -62,7 +62,8 @@
|
||||
"id": "domain"
|
||||
},
|
||||
{
|
||||
"id": "hostname"
|
||||
"id": "hostname",
|
||||
"value": "auto"
|
||||
},
|
||||
{
|
||||
"id": "dns-server"
|
||||
|
||||
@@ -0,0 +1,313 @@
|
||||
{
|
||||
"ieee802-dot1ab-lldp:lldp": {
|
||||
"infix-lldp:enabled": true
|
||||
},
|
||||
"ietf-hardware:hardware": {
|
||||
"component": [
|
||||
{
|
||||
"name": "USB1",
|
||||
"class": "infix-hardware:usb",
|
||||
"state": {
|
||||
"admin-state": "unlocked"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "USB2",
|
||||
"class": "infix-hardware:usb",
|
||||
"state": {
|
||||
"admin-state": "unlocked"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "USB3",
|
||||
"class": "infix-hardware:usb",
|
||||
"state": {
|
||||
"admin-state": "unlocked"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "radio0",
|
||||
"class": "infix-hardware:wifi",
|
||||
"infix-hardware:wifi-radio": {
|
||||
"country-code": "00"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ietf-interfaces:interfaces": {
|
||||
"interface": [
|
||||
{
|
||||
"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": "eth0",
|
||||
"type": "infix-if-type:ethernet",
|
||||
"ietf-ip:ipv6": {},
|
||||
"ietf-ip:ipv4": {
|
||||
"infix-dhcp-client:dhcp": {
|
||||
"option": [
|
||||
{
|
||||
"id": "netmask"
|
||||
},
|
||||
{
|
||||
"id": "broadcast"
|
||||
},
|
||||
{
|
||||
"id": "router"
|
||||
},
|
||||
{
|
||||
"id": "domain"
|
||||
},
|
||||
{
|
||||
"id": "hostname",
|
||||
"value": "auto"
|
||||
},
|
||||
{
|
||||
"id": "dns-server"
|
||||
},
|
||||
{
|
||||
"id": "ntp-server"
|
||||
},
|
||||
{
|
||||
"id": "vendor-class",
|
||||
"value": "Raspberry Pi 400"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "wifi0",
|
||||
"type": "infix-if-type:wifi",
|
||||
"infix-interfaces:wifi": {
|
||||
"radio": "radio0"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"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": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"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": "rpi-%m",
|
||||
"ntp": {
|
||||
"enabled": true,
|
||||
"server": [
|
||||
{
|
||||
"name": "ntp.org",
|
||||
"udp": {
|
||||
"address": "pool.ntp.org"
|
||||
},
|
||||
"iburst": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"authentication": {
|
||||
"user": [
|
||||
{
|
||||
"name": "admin",
|
||||
"password": "$factory$",
|
||||
"infix-system:shell": "bash"
|
||||
}
|
||||
]
|
||||
},
|
||||
"infix-system:motd-banner": "Li0tLS0tLS0uCnwgIC4gLiAgfCBJbmZpeCBPUyDigJQgSW1tdXRhYmxlLkZyaWVuZGx5LlNlY3VyZQp8LS4gdiAuLXwgaHR0cHM6Ly9rZXJuZWxraXQub3JnCictJy0tLSctJwo="
|
||||
},
|
||||
"infix-meta:meta": {
|
||||
"version": "1.7"
|
||||
},
|
||||
"infix-services:mdns": {
|
||||
"enabled": true
|
||||
},
|
||||
"infix-services:web": {
|
||||
"enabled": true,
|
||||
"console": {
|
||||
"enabled": true
|
||||
},
|
||||
"netbrowse": {
|
||||
"enabled": true
|
||||
},
|
||||
"restconf": {
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
"infix-services:ssh": {
|
||||
"enabled": true,
|
||||
"hostkey": [
|
||||
"genkey"
|
||||
],
|
||||
"listen": [
|
||||
{
|
||||
"name": "ipv4",
|
||||
"address": "0.0.0.0",
|
||||
"port": 22
|
||||
},
|
||||
{
|
||||
"name": "ipv6",
|
||||
"address": "::",
|
||||
"port": 22
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"eth0": {
|
||||
"comment": "Primary Ethernet controller, native on BCM2711, and smsc95xx on BCM2837",
|
||||
"phy-detached-when-down": true
|
||||
},
|
||||
"@ethtool:driver=smsc95xx": {
|
||||
"comment": "BCM2837 smsc95xx driver does not support disabling flow control",
|
||||
"broken-flow-control": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,299 @@
|
||||
{
|
||||
"ieee802-dot1ab-lldp:lldp": {
|
||||
"infix-lldp:enabled": true
|
||||
},
|
||||
"ietf-hardware:hardware": {
|
||||
"component": [
|
||||
{
|
||||
"name": "USB",
|
||||
"class": "infix-hardware:usb",
|
||||
"state": {
|
||||
"admin-state": "unlocked"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "radio0",
|
||||
"class": "infix-hardware:wifi",
|
||||
"infix-hardware:wifi-radio": {
|
||||
"country-code": "00"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ietf-interfaces:interfaces": {
|
||||
"interface": [
|
||||
{
|
||||
"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": "eth0",
|
||||
"type": "infix-if-type:ethernet",
|
||||
"ietf-ip:ipv6": {},
|
||||
"ietf-ip:ipv4": {
|
||||
"infix-dhcp-client:dhcp": {
|
||||
"option": [
|
||||
{
|
||||
"id": "netmask"
|
||||
},
|
||||
{
|
||||
"id": "broadcast"
|
||||
},
|
||||
{
|
||||
"id": "router"
|
||||
},
|
||||
{
|
||||
"id": "domain"
|
||||
},
|
||||
{
|
||||
"id": "hostname",
|
||||
"value": "auto"
|
||||
},
|
||||
{
|
||||
"id": "dns-server"
|
||||
},
|
||||
{
|
||||
"id": "ntp-server"
|
||||
},
|
||||
{
|
||||
"id": "vendor-class",
|
||||
"value": "Raspberry Pi 5 Model B"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "wifi0",
|
||||
"type": "infix-if-type:wifi",
|
||||
"infix-interfaces:wifi": {
|
||||
"radio": "radio0"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"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": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"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": "rpi-%m",
|
||||
"ntp": {
|
||||
"enabled": true,
|
||||
"server": [
|
||||
{
|
||||
"name": "ntp.org",
|
||||
"udp": {
|
||||
"address": "pool.ntp.org"
|
||||
},
|
||||
"iburst": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"authentication": {
|
||||
"user": [
|
||||
{
|
||||
"name": "admin",
|
||||
"password": "$factory$",
|
||||
"infix-system:shell": "bash"
|
||||
}
|
||||
]
|
||||
},
|
||||
"infix-system:motd-banner": "Li0tLS0tLS0uCnwgIC4gLiAgfCBJbmZpeCBPUyDigJQgSW1tdXRhYmxlLkZyaWVuZGx5LlNlY3VyZQp8LS4gdiAuLXwgaHR0cHM6Ly9rZXJuZWxraXQub3JnCictJy0tLSctJwo="
|
||||
},
|
||||
"infix-meta:meta": {
|
||||
"version": "1.7"
|
||||
},
|
||||
"infix-services:mdns": {
|
||||
"enabled": true
|
||||
},
|
||||
"infix-services:web": {
|
||||
"enabled": true,
|
||||
"console": {
|
||||
"enabled": true
|
||||
},
|
||||
"netbrowse": {
|
||||
"enabled": true
|
||||
},
|
||||
"restconf": {
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
"infix-services:ssh": {
|
||||
"enabled": true,
|
||||
"hostkey": [
|
||||
"genkey"
|
||||
],
|
||||
"listen": [
|
||||
{
|
||||
"name": "ipv4",
|
||||
"address": "0.0.0.0",
|
||||
"port": 22
|
||||
},
|
||||
{
|
||||
"name": "ipv6",
|
||||
"address": "::",
|
||||
"port": 22
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
config BR2_PACKAGE_STYX_DCP_SC_28P
|
||||
bool "Styx DCP-SC-28P"
|
||||
depends on BR2_aarch64
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_INSIDE_SECURE_MINIFW
|
||||
help
|
||||
Styx DCP-SC-28P
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 d2f96418893ac66156d0e691cda189b0d85ae1d814065d1d9aa1845383100f46 LICENSE
|
||||
@@ -4,4 +4,5 @@ Arm 32-bit
|
||||
Board Specific Documentation
|
||||
----------------------------
|
||||
|
||||
- [Microchip SAMA7G54-EK (32-bit)](microchip-sama7g54-ek/)
|
||||
- [Raspberry Pi 2 Model B (32-bit)](raspberrypi-rpi2/)
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
CONFIG_BPF_JIT=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||
CONFIG_TASKSTATS=y
|
||||
CONFIG_TASK_DELAY_ACCT=y
|
||||
CONFIG_TASK_XACCT=y
|
||||
CONFIG_TASK_IO_ACCOUNTING=y
|
||||
# CONFIG_CPU_ISOLATION is not set
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=18
|
||||
CONFIG_LOG_BUF_SHIFT=16
|
||||
CONFIG_MEMCG=y
|
||||
CONFIG_BLK_CGROUP=y
|
||||
CONFIG_CFS_BANDWIDTH=y
|
||||
@@ -31,19 +30,15 @@ CONFIG_SCHED_AUTOGROUP=y
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_ARCH_MULTI_V6=y
|
||||
CONFIG_ARCH_VIRT=y
|
||||
CONFIG_ARCH_BCM=y
|
||||
CONFIG_ARCH_BCM2835=y
|
||||
# CONFIG_ARM_ERRATA_643719 is not set
|
||||
CONFIG_SMP=y
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
CONFIG_CPUFREQ_DT=y
|
||||
CONFIG_ARM_RASPBERRYPI_CPUFREQ=y
|
||||
CONFIG_VFP=y
|
||||
CONFIG_NEON=y
|
||||
CONFIG_KERNEL_MODE_NEON=y
|
||||
@@ -55,7 +50,11 @@ CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
# 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_BALLOON_COMPACTION is not set
|
||||
CONFIG_KSM=y
|
||||
CONFIG_CMA=y
|
||||
CONFIG_NET=y
|
||||
@@ -259,7 +258,6 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
CONFIG_RASPBERRYPI_FIRMWARE=y
|
||||
CONFIG_FW_CFG_SYSFS=y
|
||||
CONFIG_FW_CFG_SYSFS_CMDLINE=y
|
||||
CONFIG_OF_OVERLAY=y
|
||||
@@ -301,63 +299,29 @@ CONFIG_VETH=m
|
||||
CONFIG_VIRTIO_NET=y
|
||||
CONFIG_NLMON=y
|
||||
CONFIG_NET_VRF=y
|
||||
CONFIG_BCMGENET=y
|
||||
CONFIG_SMSC911X=y
|
||||
CONFIG_USB_LAN78XX=y
|
||||
CONFIG_USB_USBNET=y
|
||||
CONFIG_USB_NET_SMSC95XX=y
|
||||
CONFIG_INPUT_MOUSEDEV=m
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
CONFIG_INPUT_TOUCHSCREEN=y
|
||||
CONFIG_TOUCHSCREEN_EDT_FT5X06=m
|
||||
# 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_VIRTIO_CONSOLE=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_BCM2835=m
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_BCM2835=y
|
||||
CONFIG_SPI_BCM2835AUX=y
|
||||
CONFIG_SENSORS_RASPBERRYPI_HWMON=m
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_BCM2711_THERMAL=y
|
||||
CONFIG_BCM2835_THERMAL=m
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_I6300ESB_WDT=y
|
||||
CONFIG_BCM2835_WDT=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_REGULATOR_GPIO=y
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_DRM=y
|
||||
CONFIG_DRM_LOAD_EDID_FIRMWARE=y
|
||||
CONFIG_DRM_SIMPLEDRM=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_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_ANNOUNCE_NEW_DEVICES=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_DWC2=y
|
||||
CONFIG_NOP_USB_XCEIV=y
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_ETH=m
|
||||
CONFIG_USB_ETH_EEM=y
|
||||
@@ -365,8 +329,6 @@ CONFIG_USB_G_SERIAL=m
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MMC_SDHCI_IPROC=y
|
||||
CONFIG_MMC_BCM2835=y
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
@@ -380,20 +342,13 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
|
||||
CONFIG_LEDS_TRIGGER_TRANSIENT=y
|
||||
CONFIG_LEDS_TRIGGER_CAMERA=y
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_DMA_BCM2835=y
|
||||
CONFIG_VIRTIO_PCI=y
|
||||
CONFIG_VIRTIO_BALLOON=y
|
||||
CONFIG_VIRTIO_INPUT=y
|
||||
CONFIG_VIRTIO_MMIO=y
|
||||
CONFIG_STAGING=y
|
||||
CONFIG_SND_BCM2835=m
|
||||
CONFIG_CLK_RASPBERRYPI=y
|
||||
CONFIG_MAILBOX=y
|
||||
CONFIG_BCM2835_MBOX=y
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_RASPBERRYPI_POWER=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_BCM2835=y
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT2_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS=y
|
||||
@@ -426,18 +381,13 @@ CONFIG_DMA_CMA=y
|
||||
CONFIG_CMA_SIZE_MBYTES=32
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_PANIC_ON_OOPS=y
|
||||
CONFIG_PANIC_TIMEOUT=20
|
||||
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
|
||||
CONFIG_HARDLOCKUP_DETECTOR=y
|
||||
CONFIG_BOOTPARAM_HARDLOCKUP_PANIC=y
|
||||
CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
|
||||
CONFIG_WQ_WATCHDOG=y
|
||||
CONFIG_WQ_CPU_INTENSIVE_REPORT=y
|
||||
CONFIG_TEST_LOCKUP=m
|
||||
# CONFIG_RCU_TRACE is not set
|
||||
CONFIG_FUNCTION_TRACER=y
|
||||
CONFIG_MEMTEST=y
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
|
||||
@@ -16,3 +16,28 @@
|
||||
&thermal_sensor {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
/*
|
||||
* Enable SDMMC high speed mode, please note that neither 'mmc-ddr-1_8v'
|
||||
* or 'mmc-hs200-1_8v' work, even though [1] states they are supported,
|
||||
* the errata [2] tells a different story: "Using mode SDR104, HS200 or
|
||||
* HS400 may lead to tuning issues, data read errors or clock switching
|
||||
* failures." — empirical testing has proved this on a rev 5 board.
|
||||
*
|
||||
* [1]: https://github.com/linux4sam/linux-at91/commit/5b35500
|
||||
* [2]: https://ww1.microchip.com/downloads/en/DeviceDoc/SAMA7G5-Series-Silicon-Errata-and-Data-Sheet-Clarification-DS80001016A.pdf
|
||||
*/
|
||||
&sdmmc0 {
|
||||
/delete-property/ sdhci-caps-mask;
|
||||
cap-mmc-highspeed;
|
||||
cap-mmc-hw-reset;
|
||||
};
|
||||
|
||||
&sdmmc1 {
|
||||
/delete-property/ no-1-8-v;
|
||||
/delete-property/ sdhci-caps-mask;
|
||||
};
|
||||
|
||||
&sdmmc2 {
|
||||
/delete-property/ sdhci-caps-mask;
|
||||
};
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 d48246c717b505cc11df95171f2fd548b389e1a463f1af4c68d0b69fe0d1009b LICENSE
|
||||
@@ -1,12 +0,0 @@
|
||||
[system]
|
||||
compatible=infix-sama7g54-ek
|
||||
bootloader=uboot
|
||||
statusfile=/mnt/aux/rauc.status
|
||||
|
||||
[slot.rootfs.0]
|
||||
device=/dev/disk/by-partlabel/primary
|
||||
bootname=primary
|
||||
|
||||
[slot.rootfs.1]
|
||||
device=/dev/disk/by-partlabel/secondary
|
||||
bootname=secondary
|
||||
@@ -1,6 +1,8 @@
|
||||
# Common U-Boot extras for SAMA7G54-EK
|
||||
CONFIG_EFI_PARTITION=y
|
||||
CONFIG_ENV_IMPORT_FDT=y
|
||||
# CONFIG_ENV_IS_IN_FAT is not set
|
||||
CONFIG_ENV_IS_NOWHERE=y
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_SIGNATURE=y
|
||||
CONFIG_RSA=y
|
||||
|
||||
@@ -2,9 +2,6 @@ config BR2_PACKAGE_RASPBERRYPI_RPI2
|
||||
bool "Raspberry Pi 2 Model B (32-bit ARMv7)"
|
||||
depends on BR2_arm
|
||||
select SDCARD_AUX
|
||||
select BR2_PACKAGE_FEATURE_WIFI
|
||||
select BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI
|
||||
select BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI
|
||||
help
|
||||
Support for the 32-bit ARMv7 Raspberry Pi 2B single-board computer
|
||||
(SBC) with BCM2836 quad-core Cortex-A7 processor.
|
||||
|
||||