mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-26 18:53:01 +02:00
Compare commits
57
Commits
v26.04.0-rc3
...
saphire
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
77fec32429 | ||
|
|
27f4a130c6 | ||
|
|
9a2f143d31 | ||
|
|
76cc1e8061 | ||
|
|
762915b703 | ||
|
|
5fd5d1254a | ||
|
|
1012759a41 | ||
|
|
925a43dead | ||
|
|
6958c9bb1a | ||
|
|
65eb4c072a | ||
|
|
c3d17586fd | ||
|
|
4c17a79de6 | ||
|
|
7fa141178f | ||
|
|
f7236fd59c | ||
|
|
aecb4546f8 | ||
|
|
9b0837100c | ||
|
|
b650d91895 | ||
|
|
68e4dc3e9b | ||
|
|
e8f14e1a06 | ||
|
|
230bd77623 | ||
|
|
0bc998c24a | ||
|
|
6618bcdf1e | ||
|
|
cf4de78d29 | ||
|
|
555de63fd6 | ||
|
|
9d4d521fa2 | ||
|
|
e994d976ff | ||
|
|
3fdbe15585 | ||
|
|
eb2135bd15 | ||
|
|
5cf180b4d7 | ||
|
|
bcc2df7e20 | ||
|
|
02a5079c6a | ||
|
|
f39e62fdb1 | ||
|
|
87c2d3fc77 | ||
|
|
ab3594e124 | ||
|
|
01cb60d125 | ||
|
|
0c35a90841 | ||
|
|
bfbf08943b | ||
|
|
21fd80a71d | ||
|
|
64819075d5 | ||
|
|
2885112da8 | ||
|
|
48a1df4c67 | ||
|
|
ed6171f920 | ||
|
|
689bd64b4d | ||
|
|
dbdf5d9b78 | ||
|
|
f13ee49f3c | ||
|
|
1b34874d3d | ||
|
|
081491a380 | ||
|
|
a19684c15c | ||
|
|
f3183cd911 | ||
|
|
e4203b0c9e | ||
|
|
3be640409a | ||
|
|
d393a10994 | ||
|
|
5e6183eb4f | ||
|
|
562435fac9 | ||
|
|
21c070b928 | ||
|
|
23da086976 | ||
|
|
3c0c456bba |
+121
-193
@@ -1,4 +1,4 @@
|
||||
name: Create SD Card & eMMC Images
|
||||
name: Create Images
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
@@ -15,11 +15,12 @@ on:
|
||||
- bananapi-bpi-r64
|
||||
- friendlyarm-nanopi-r2s
|
||||
- microchip-sama7g54-ek
|
||||
- acer-connect-vero-w
|
||||
default: 'raspberrypi-rpi64'
|
||||
|
||||
jobs:
|
||||
create-image:
|
||||
name: Create SD Card Image for ${{ inputs.board }}
|
||||
name: Create images for ${{ inputs.board }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
@@ -50,231 +51,168 @@ jobs:
|
||||
mkdir -p output/images
|
||||
mkdir -p build
|
||||
|
||||
- name: Set bootloader and target based on board
|
||||
- name: Set bootloaders and targets based on board
|
||||
run: |
|
||||
arch=
|
||||
targets=
|
||||
bootloader_sdcard=
|
||||
bootloader_emmc=
|
||||
|
||||
case "${{ inputs.board }}" in
|
||||
raspberrypi-rpi2)
|
||||
echo "BOOTLOADER=rpi2-boot" >> $GITHUB_ENV
|
||||
echo "ARCH=arm" >> $GITHUB_ENV
|
||||
echo "BUILD_EMMC=false" >> $GITHUB_ENV
|
||||
arch=arm
|
||||
targets="sdcard"
|
||||
bootloader_sdcard=rpi2-boot
|
||||
;;
|
||||
raspberrypi-rpi64)
|
||||
echo "BOOTLOADER=rpi64-boot" >> $GITHUB_ENV
|
||||
echo "ARCH=aarch64" >> $GITHUB_ENV
|
||||
echo "BUILD_EMMC=false" >> $GITHUB_ENV
|
||||
arch=aarch64
|
||||
targets="sdcard"
|
||||
bootloader_sdcard=rpi64-boot
|
||||
;;
|
||||
bananapi-bpi-r3)
|
||||
echo "BOOTLOADER_SD=bpi-r3-sd-boot" >> $GITHUB_ENV
|
||||
echo "BOOTLOADER_EMMC=bpi-r3-emmc-boot" >> $GITHUB_ENV
|
||||
echo "ARCH=aarch64" >> $GITHUB_ENV
|
||||
echo "BUILD_EMMC=true" >> $GITHUB_ENV
|
||||
arch=aarch64
|
||||
targets="sdcard emmc"
|
||||
bootloader_sdcard=bpi-r3-sd-boot
|
||||
bootloader_emmc=bpi-r3-emmc-boot
|
||||
;;
|
||||
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
|
||||
arch=aarch64
|
||||
targets="sdcard emmc"
|
||||
bootloader_sdcard=bpi-r4-sd-boot
|
||||
bootloader_emmc=bpi-r4-emmc-boot
|
||||
;;
|
||||
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
|
||||
arch=aarch64
|
||||
targets="sdcard emmc"
|
||||
bootloader_sdcard=bpi-r64-sd-boot
|
||||
bootloader_emmc=bpi-r64-emmc-boot
|
||||
;;
|
||||
acer-connect-vero-w)
|
||||
arch=aarch64
|
||||
targets="emmc"
|
||||
bootloader_emmc=bpi-r3-emmc-boot
|
||||
;;
|
||||
friendlyarm-nanopi-r2s)
|
||||
echo "BOOTLOADER=nanopi-r2s-boot" >> $GITHUB_ENV
|
||||
echo "ARCH=aarch64" >> $GITHUB_ENV
|
||||
echo "BUILD_EMMC=false" >> $GITHUB_ENV
|
||||
arch=aarch64
|
||||
targets="sdcard"
|
||||
bootloader_sdcard=nanopi-r2s-boot
|
||||
;;
|
||||
microchip-sama7g54-ek)
|
||||
echo "BOOTLOADER_SD=sama7g54-ek-sd-boot" >> $GITHUB_ENV
|
||||
echo "BOOTLOADER_EMMC=sama7g54-ek-emmc-boot" >> $GITHUB_ENV
|
||||
echo "ARCH=arm" >> $GITHUB_ENV
|
||||
echo "BUILD_EMMC=true" >> $GITHUB_ENV
|
||||
arch=arm
|
||||
targets="sdcard emmc"
|
||||
bootloader_sdcard=sama7g54-ek-sd-boot
|
||||
bootloader_emmc=sama7g54-ek-emmc-boot
|
||||
;;
|
||||
*)
|
||||
echo "Error: Unknown board ${{ inputs.board }}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
echo "Arch: $ARCH for board: ${{ inputs.board }}"
|
||||
if [ "$BUILD_EMMC" = "true" ]; then
|
||||
echo "Building both SD and eMMC images"
|
||||
echo "SD Bootloader: $BOOTLOADER_SD"
|
||||
echo "eMMC Bootloader: $BOOTLOADER_EMMC"
|
||||
else
|
||||
echo "Building SD image only"
|
||||
echo "Bootloader: $BOOTLOADER"
|
||||
fi
|
||||
|
||||
echo "ARCH=$arch" >> $GITHUB_ENV
|
||||
echo "TARGETS=$targets" >> $GITHUB_ENV
|
||||
[ -n "$bootloader_sdcard" ] && echo "BOOTLOADER_SDCARD=$bootloader_sdcard" >> $GITHUB_ENV
|
||||
[ -n "$bootloader_emmc" ] && echo "BOOTLOADER_EMMC=$bootloader_emmc" >> $GITHUB_ENV
|
||||
|
||||
echo "Arch: $arch for board: ${{ inputs.board }}"
|
||||
echo "Targets: $targets"
|
||||
[ -n "$bootloader_sdcard" ] && echo "SD bootloader: $bootloader_sdcard"
|
||||
[ -n "$bootloader_emmc" ] && echo "eMMC bootloader: $bootloader_emmc"
|
||||
|
||||
- name: Download bootloader artifacts
|
||||
run: |
|
||||
# Download bootloader from latest-boot release tag
|
||||
if [ "$BUILD_EMMC" = "true" ]; then
|
||||
# Download both SD and eMMC bootloaders for boards that support both
|
||||
echo "Downloading SD bootloader: ${BOOTLOADER_SD}"
|
||||
gh release download latest-boot --pattern "*${BOOTLOADER_SD}*" --dir temp_bootloader_sd/
|
||||
mkdir -p output_sd/images
|
||||
cd temp_bootloader_sd/
|
||||
tar -xzf *.tar.gz --strip-components=1 -C ../output_sd/images/
|
||||
cd ../
|
||||
rm -rf temp_bootloader_sd/
|
||||
for target in $TARGETS; do
|
||||
upper=$(printf '%s' "$target" | tr '[:lower:]' '[:upper:]')
|
||||
bootloader_var="BOOTLOADER_${upper}"
|
||||
bootloader="${!bootloader_var}"
|
||||
temp_dir="temp_bootloader_${target}"
|
||||
out_dir="output_${target}/images"
|
||||
|
||||
echo "Downloading eMMC bootloader: ${BOOTLOADER_EMMC}"
|
||||
gh release download latest-boot --pattern "*${BOOTLOADER_EMMC}*" --dir temp_bootloader_emmc/
|
||||
mkdir -p output_emmc/images
|
||||
cd temp_bootloader_emmc/
|
||||
tar -xzf *.tar.gz --strip-components=1 -C ../output_emmc/images/
|
||||
cd ../
|
||||
rm -rf temp_bootloader_emmc/
|
||||
echo "Downloading ${target} bootloader: ${bootloader}"
|
||||
mkdir -p "$out_dir"
|
||||
gh release download latest-boot --pattern "*${bootloader}*" --dir "$temp_dir/"
|
||||
tar -xzf "$temp_dir"/*.tar.gz --strip-components=1 -C "$out_dir/"
|
||||
rm -rf "$temp_dir"
|
||||
|
||||
echo "SD bootloader files:"
|
||||
ls -la output_sd/images/
|
||||
echo "eMMC bootloader files:"
|
||||
ls -la output_emmc/images/
|
||||
else
|
||||
# Single bootloader for boards that only support SD
|
||||
gh release download latest-boot --pattern "*${BOOTLOADER}*" --dir temp_bootloader/
|
||||
|
||||
# Extract bootloader directly to output/images
|
||||
cd temp_bootloader/
|
||||
tar -xzf *.tar.gz --strip-components=1 -C ../output/images/
|
||||
cd ../
|
||||
rm -rf temp_bootloader/
|
||||
|
||||
echo "Bootloader files extracted to output/images:"
|
||||
ls -la output/images/
|
||||
fi
|
||||
echo "${target} bootloader files:"
|
||||
ls -la "$out_dir/"
|
||||
done
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Download Infix artifacts
|
||||
run: |
|
||||
# Download from latest Kernelkit Trigger workflow for main branch
|
||||
gh run list --workflow=164295764 --branch=main --limit=1 --status=success --json databaseId --jq '.[0].databaseId' > latest_infix_run_id
|
||||
INFIX_RUN_ID=$(cat latest_infix_run_id)
|
||||
|
||||
if [ "$BUILD_EMMC" = "true" ]; then
|
||||
# Copy Infix artifacts to both SD and eMMC output directories
|
||||
gh run download ${INFIX_RUN_ID} --name artifact-${ARCH} --dir temp_infix/
|
||||
gh run download ${INFIX_RUN_ID} --name artifact-${ARCH} --dir temp_infix/
|
||||
|
||||
cd temp_infix/
|
||||
tar -xzf *.tar.gz --strip-components=1 -C ../output_sd/images/
|
||||
tar -xzf *.tar.gz --strip-components=1 -C ../output_emmc/images/
|
||||
cd ../
|
||||
rm -rf temp_infix/
|
||||
for target in $TARGETS; do
|
||||
out_dir="output_${target}/images"
|
||||
mkdir -p "$out_dir"
|
||||
tar -xzf temp_infix/*.tar.gz --strip-components=1 -C "$out_dir/"
|
||||
|
||||
echo "Infix files extracted to output_sd/images:"
|
||||
ls -la output_sd/images/
|
||||
echo "Infix files extracted to output_emmc/images:"
|
||||
ls -la output_emmc/images/
|
||||
else
|
||||
# Single output directory for SD-only boards
|
||||
gh run download ${INFIX_RUN_ID} --name artifact-${ARCH} --dir temp_infix/
|
||||
echo "Infix files extracted to ${out_dir}:"
|
||||
ls -la "$out_dir/"
|
||||
done
|
||||
|
||||
# Extract Infix directly to output/images
|
||||
cd temp_infix/
|
||||
tar -xzf *.tar.gz --strip-components=1 -C ../output/images/
|
||||
cd ../
|
||||
rm -rf temp_infix/
|
||||
|
||||
echo "Infix files extracted to output/images:"
|
||||
ls -la output/images/
|
||||
fi
|
||||
rm -rf temp_infix/
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Verify extracted files
|
||||
run: |
|
||||
if [ "$BUILD_EMMC" = "true" ]; then
|
||||
echo "Files available for SD image:"
|
||||
ls -la output_sd/images/
|
||||
for target in $TARGETS; do
|
||||
echo "Files available for ${target} image:"
|
||||
ls -la "output_${target}/images/"
|
||||
echo ""
|
||||
echo "Files available for eMMC image:"
|
||||
ls -la output_emmc/images/
|
||||
else
|
||||
echo "Files available for mkimage.sh:"
|
||||
ls -la output/images/
|
||||
echo ""
|
||||
echo "File types:"
|
||||
file output/images/* || true
|
||||
fi
|
||||
done
|
||||
|
||||
- name: Create SD card image
|
||||
- name: Create images
|
||||
run: |
|
||||
if [ "$BUILD_EMMC" = "true" ]; then
|
||||
export BINARIES_DIR=$PWD/output_sd/images
|
||||
export BUILD_DIR=$PWD/build
|
||||
export BR2_EXTERNAL_INFIX_PATH=$PWD
|
||||
export RELEASE=""
|
||||
export INFIX_ID="infix"
|
||||
./utils/mkimage.sh -t sdcard ${{ inputs.board }}
|
||||
else
|
||||
export BINARIES_DIR=$PWD/output/images
|
||||
export BUILD_DIR=$PWD/build
|
||||
export BR2_EXTERNAL_INFIX_PATH=$PWD
|
||||
export RELEASE=""
|
||||
export INFIX_ID="infix"
|
||||
./utils/mkimage.sh -t sdcard ${{ inputs.board }}
|
||||
fi
|
||||
|
||||
- name: Create eMMC image
|
||||
if: ${{ env.BUILD_EMMC == 'true' }}
|
||||
run: |
|
||||
export BINARIES_DIR=$PWD/output_emmc/images
|
||||
export BUILD_DIR=$PWD/build
|
||||
export BR2_EXTERNAL_INFIX_PATH=$PWD
|
||||
export RELEASE=""
|
||||
export INFIX_ID="infix"
|
||||
./utils/mkimage.sh -t emmc ${{ inputs.board }}
|
||||
|
||||
for target in $TARGETS; do
|
||||
export BINARIES_DIR=$PWD/output_${target}/images
|
||||
./utils/mkimage.sh -t "$target" ${{ inputs.board }}
|
||||
done
|
||||
|
||||
- name: Verify created images
|
||||
run: |
|
||||
if [ "$BUILD_EMMC" = "true" ]; then
|
||||
echo "SD card image:"
|
||||
ls -lh output_sd/images/*-sdcard.img* 2>/dev/null || true
|
||||
if ls output_sd/images/*-sdcard.img 1> /dev/null 2>&1; then
|
||||
for img in output_sd/images/*-sdcard.img; do
|
||||
echo "- $(basename $img)"
|
||||
file "$img"
|
||||
fdisk -l "$img" 2>/dev/null | head -20
|
||||
done
|
||||
fi
|
||||
mkdir -p output/images
|
||||
|
||||
echo ""
|
||||
echo "eMMC image:"
|
||||
ls -lh output_emmc/images/*-emmc.img* 2>/dev/null || true
|
||||
if ls output_emmc/images/*-emmc.img 1> /dev/null 2>&1; then
|
||||
for img in output_emmc/images/*-emmc.img; do
|
||||
echo "- $(basename $img)"
|
||||
file "$img"
|
||||
fdisk -l "$img" 2>/dev/null | head -20
|
||||
done
|
||||
fi
|
||||
for target in $TARGETS; do
|
||||
src_dir="output_${target}/images"
|
||||
found=false
|
||||
|
||||
# Copy both images to output/images for artifact upload
|
||||
mkdir -p output/images
|
||||
cp output_sd/images/*-sdcard.img* output/images/ 2>/dev/null || true
|
||||
cp output_emmc/images/*-emmc.img* output/images/ 2>/dev/null || true
|
||||
else
|
||||
echo "Contents of output/images after mkimage.sh:"
|
||||
ls -lh output/images/
|
||||
echo "${target} image:"
|
||||
ls -lh "$src_dir"/*-"$target".img* 2>/dev/null || true
|
||||
|
||||
# Look for SD card image with pattern: *-sdcard.img
|
||||
if ls output/images/*-sdcard.img 1> /dev/null 2>&1; then
|
||||
echo "Found SD card image(s):"
|
||||
for img in output/images/*-sdcard.img; do
|
||||
echo "- $(basename $img)"
|
||||
file "$img"
|
||||
fdisk -l "$img" 2>/dev/null || true
|
||||
done
|
||||
else
|
||||
echo "No SD card image found matching pattern: *-sdcard.img"
|
||||
echo "Available files:"
|
||||
ls -la output/images/
|
||||
for img in "$src_dir"/*-"$target".img; do
|
||||
[ -e "$img" ] || continue
|
||||
found=true
|
||||
echo "- $(basename "$img")"
|
||||
file "$img"
|
||||
fdisk -l "$img" 2>/dev/null || true
|
||||
done
|
||||
|
||||
if [ "$found" = false ]; then
|
||||
echo "No ${target} image found matching pattern: *-${target}.img"
|
||||
echo "Available files in ${src_dir}:"
|
||||
ls -la "$src_dir/"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
for artifact in "$src_dir"/*-"$target".img*; do
|
||||
[ -e "$artifact" ] || continue
|
||||
cp "$artifact" output/images/
|
||||
done
|
||||
|
||||
echo ""
|
||||
done
|
||||
|
||||
- name: Upload images as artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
@@ -308,37 +246,27 @@ jobs:
|
||||
|
||||
- name: Generate summary
|
||||
run: |
|
||||
if [ "$BUILD_EMMC" = "true" ]; then
|
||||
cat <<EOF >> $GITHUB_STEP_SUMMARY
|
||||
# SD Card & eMMC Image Build Complete! 🚀
|
||||
cat <<EOF >> $GITHUB_STEP_SUMMARY
|
||||
# Image Build Complete! 🚀
|
||||
|
||||
**Board:** ${{ inputs.board }}
|
||||
**Arch:** ${{ env.ARCH }}
|
||||
**SD Bootloader:** ${{ env.BOOTLOADER_SD }}
|
||||
**eMMC Bootloader:** ${{ env.BOOTLOADER_EMMC }}
|
||||
**Targets:** ${{ env.TARGETS }}
|
||||
**Bootloader Source:** latest-boot release
|
||||
**Infix Source:** Latest workflow run on main
|
||||
|
||||
## Bootloaders
|
||||
$(for target in $TARGETS; do
|
||||
case "$target" in
|
||||
sdcard) bootloader="$BOOTLOADER_SDCARD" ;;
|
||||
emmc) bootloader="$BOOTLOADER_EMMC" ;;
|
||||
esac
|
||||
printf -- '- %s: %s\n' "$target" "$bootloader"
|
||||
done)
|
||||
|
||||
## Created Images
|
||||
$(find output/images/ -name "*.img" -o -name "*.img.bmap" | xargs ls -lh 2>/dev/null | awk '{print "- " $9 " (" $5 ")"}' || echo "- No images found")
|
||||
|
||||
## Download
|
||||
Both SD card and eMMC images are available as workflow artifacts above and in the latest-boot release.
|
||||
The generated images are available as workflow artifacts above and in the latest-boot release.
|
||||
EOF
|
||||
else
|
||||
cat <<EOF >> $GITHUB_STEP_SUMMARY
|
||||
# SD Card Image Build Complete! 🚀
|
||||
|
||||
**Board:** ${{ inputs.board }}
|
||||
**Arch:** ${{ env.ARCH }}
|
||||
**Bootloader:** ${{ env.BOOTLOADER }}
|
||||
**Bootloader Source:** latest-boot release
|
||||
**Infix Source:** Latest workflow run on main
|
||||
|
||||
## Created Images
|
||||
$(find output/images/ -name "*.img" -o -name "*.img.bmap" | xargs ls -lh 2>/dev/null | awk '{print "- " $9 " (" $5 ")"}' || echo "- No images found")
|
||||
|
||||
## Download
|
||||
The SD card image is available as a workflow artifact above.
|
||||
EOF
|
||||
fi
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
if BR2_aarch64
|
||||
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/alder-alder/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/acer-connect-vero-w6m/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/bananapi-bpi-r3/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/bananapi-bpi-r4/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/bananapi-bpi-r64/Config.in"
|
||||
|
||||
@@ -4,6 +4,7 @@ aarch64
|
||||
Board Specific Documentation
|
||||
----------------------------
|
||||
|
||||
- [Acer Connect Vero W6m](acer-connect-vero-w6m/)
|
||||
- [Banana Pi BPi-R3](bananapi-bpi-r3/)
|
||||
- [Banana Pi BPi-R4](bananapi-bpi-r4/)
|
||||
- [Banana Pi BPi-R64](bananapi-bpi-r64/)
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
config BR2_PACKAGE_ACER_CONNECT_VERO_W6M
|
||||
bool "Acer Connect Vero W6m"
|
||||
depends on BR2_aarch64
|
||||
select BR2_PACKAGE_BANANAPI_BPI_R3
|
||||
help
|
||||
Build Acer Connect Vero W6m
|
||||
@@ -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,131 @@
|
||||
# Acer Connect Vero W6m
|
||||
|
||||
<img src="connect_vero_w6m_case.jpg" alt="Acer Connect Vero W6m" width=400 padding=10>
|
||||
|
||||
## Overview
|
||||
|
||||
The Acer Connect Vero W6m is a compact WiFi 6/6E router platform based
|
||||
on the MediaTek MT7986A SoC. In Infix it is supported as an eMMC-based
|
||||
target that reuses the factory secure boot chain while replacing the
|
||||
system partitions with an Infix installation.
|
||||
|
||||
The Acer Connect Vero W6m is based on the same MT7986a SoC as the
|
||||
BPI-R3, with tri-band WiFi (2.4 GHz + 5 GHz + 6 GHz) using a PCIe
|
||||
MT7916 module and the SoC's built-in MT7976 DBDC radio.
|
||||
|
||||
## Default WiFi Layout
|
||||
|
||||
The factory configuration on this branch enables all three radios in AP
|
||||
mode and bridges them into the default LAN bridge `br0`:
|
||||
|
||||
- `radio0` / `wifi0-ap`: 2.4 GHz, SSID `Infix`
|
||||
- `radio1` / `wifi1-ap`: 6 GHz, SSID `Infix6G`
|
||||
- `radio2` / `wifi2-ap`: 5 GHz, SSID `Infix5G`
|
||||
|
||||
6 GHz operation is enabled in the MT7915e driver configuration, and all
|
||||
three APs use the same default passphrase `infixinfix` from the factory
|
||||
configuration.
|
||||
|
||||
Secure boot is enabled on this device, so the factory bootloader
|
||||
(partitions 1-4: bl2, u-boot-env, factory, fip) must not be modified.
|
||||
Infix is installed by replacing partitions 5+ while keeping the
|
||||
factory bootloader intact. The stock U-Boot chainloads the Infix
|
||||
U-Boot from the first partition after fip.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Serial console access (115200 8N1) — required to interrupt U-Boot.
|
||||
Disassembly is needed to reach the UART header. See the [OpenWrt
|
||||
Vero W6m page][vero-openwrt] for details.
|
||||
- TFTP server on the local network with `u-boot.bin` for the initial
|
||||
RAM boot.
|
||||
- SSH access from the running Infix system to a host that stores
|
||||
`infix-vero-w-emmc.img`.
|
||||
- Ethernet cable connected between the PC and the Vero Internet/WAN
|
||||
port.
|
||||
- DHCP server running on the PC, serving addresses on that link during
|
||||
installation.
|
||||
- **Save the MAC addresses** from the stock U-Boot environment before
|
||||
installing. Interrupt autoboot and run `printenv` to note down:
|
||||
`2gMAC`, `5gMAC`, `6gMAC`, `LANMAC`, and `WANMAC`.
|
||||
|
||||
## Required Files
|
||||
|
||||
Prepare these files on a host reachable from the Vero:
|
||||
|
||||
1. **Infix Vero image:**
|
||||
- [infix-vero-w-emmc.img][1] (Complete system image)
|
||||
2. **eMMC bootloader** (extracted from):
|
||||
- [bpi-r3-emmc-boot-2025.01-latest.tar.gz][2]
|
||||
- Extract `u-boot.bin` from the tarball to your TFTP server
|
||||
|
||||
## Installing Infix
|
||||
|
||||
Connect the PC directly to the Vero Internet/WAN port before starting
|
||||
the installation. The PC should provide DHCP service on that link so
|
||||
the stock U-Boot and the temporary Infix system can reach the TFTP/SSH
|
||||
host.
|
||||
|
||||
1. **RAM-load Infix U-Boot** from the stock U-Boot serial console
|
||||
(hit any key to stop autoboot):
|
||||
|
||||
```
|
||||
setenv serverip <TFTP_SERVER_IP>
|
||||
setenv ipaddr <VERO_IP>
|
||||
setenv bootmenu_default 7
|
||||
tftpboot 0x46000000 u-boot.bin
|
||||
go 0x46000000
|
||||
```
|
||||
|
||||
`serverip` must point to your TFTP server and `ipaddr` must be a free
|
||||
address for the Vero on the same subnet. `bootmenu_default 7`
|
||||
bypasses secure boot verification. The Infix U-Boot will
|
||||
automatically netboot the Infix system.
|
||||
|
||||
2. **From running Infix**, stream the image directly to eMMC:
|
||||
|
||||
```bash
|
||||
ssh <USER>@<HOST> "dd if=/path/to/infix-vero-w-emmc.img bs=512 skip=17408 status=none" | \
|
||||
dd of=/dev/mmcblk0 bs=512 seek=17408 conv=fsync
|
||||
sync
|
||||
```
|
||||
|
||||
This writes only the Infix partitions (starting after fip at sector
|
||||
17408), leaving the factory bootloader and calibration data intact.
|
||||
Do not interrupt the transfer; if it fails, rerun the command from
|
||||
the beginning.
|
||||
|
||||
3. **Update the GPT** to replace stock partitions 5+ with the Infix
|
||||
layout:
|
||||
|
||||
```bash
|
||||
sudo sgdisk --zap-all /dev/mmcblk0
|
||||
sudo sgdisk -a 1 \
|
||||
-n2:8192:9215 -c2:u-boot-env \
|
||||
-n3:9216:13311 -c3:factory \
|
||||
-n4:13312:17407 -c4:fip \
|
||||
-n5:17408:+32M -c5:infix-uboot \
|
||||
-n6:0:+8M -c6:aux \
|
||||
-n7:0:+250M -c7:primary \
|
||||
-n8:0:+250M -c8:secondary \
|
||||
-n9:0:+128M -c9:cfg \
|
||||
-n10:0:+128M -c10:var \
|
||||
-p /dev/mmcblk0
|
||||
```
|
||||
|
||||
4. **Configure U-Boot to chainload Infix permanently** — reboot and
|
||||
interrupt stock U-Boot again:
|
||||
|
||||
```
|
||||
setenv bootmenu_default 7
|
||||
setenv bootcmd 'mmc read 0x46000000 0x4400 0x10000; go 0x46000000'
|
||||
saveenv
|
||||
reset
|
||||
```
|
||||
|
||||
The `bootcmd` reads the Infix U-Boot (at sector 0x4400/17408)
|
||||
into RAM and jumps to it. After `reset`, Infix boots from eMMC.
|
||||
|
||||
[vero-openwrt]: https://openwrt.org/toh/acer/predator_vero_w6m
|
||||
[1]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-vero-w-emmc.img
|
||||
[2]: https://github.com/kernelkit/infix/releases/download/latest-boot/bpi-r3-emmc-boot-2025.01-latest.tar.gz
|
||||
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 d48246c717b505cc11df95171f2fd548b389e1a463f1af4c68d0b69fe0d1009b LICENSE
|
||||
@@ -0,0 +1,2 @@
|
||||
$(eval $(ix-board))
|
||||
$(eval $(generic-package))
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1 @@
|
||||
dtb-y += mediatek/mt7986a-acer-connect-vero-w6m.dtb
|
||||
+425
@@ -0,0 +1,425 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include <dt-bindings/pinctrl/mt65xx.h>
|
||||
|
||||
#include <arm64/mediatek/mt7986a.dtsi>
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
infix {
|
||||
/* Default admin user password: 'admin' */
|
||||
factory-password-hash = "$5$mI/zpOAqZYKLC2WU$i7iPzZiIjOjrBF3NyftS9CCq8dfYwHwrmUK097Jca9A";
|
||||
};
|
||||
};
|
||||
|
||||
memory@40000000 {
|
||||
reg = <0 0x40000000 0 0x20000000>;
|
||||
device_type = "memory";
|
||||
};
|
||||
|
||||
reg_1p8v: regulator-1p8v {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "fixed-1.8V";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_3p3v: regulator-3p3v {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "fixed-3.3V";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_5v: regulator-5v {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "fixed-5V";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
factory {
|
||||
label = "factory";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&pio 9 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
wps {
|
||||
label = "wps";
|
||||
linux,code = <KEY_WPS_BUTTON>;
|
||||
gpios = <&pio 10 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&watchdog {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pio {
|
||||
wifi_rst_hog: wifi-reset-hog {
|
||||
gpio-hog;
|
||||
gpios = <6 GPIO_ACTIVE_LOW>;
|
||||
output-low;
|
||||
line-name = "wifi-reset";
|
||||
};
|
||||
|
||||
mmc0_pins_default: mmc0-pins {
|
||||
mux {
|
||||
function = "emmc";
|
||||
groups = "emmc_51";
|
||||
};
|
||||
|
||||
conf-cmd-dat {
|
||||
pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
|
||||
"EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
|
||||
"EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
|
||||
input-enable;
|
||||
drive-strength = <MTK_DRIVE_4mA>;
|
||||
bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
|
||||
};
|
||||
|
||||
conf-clk {
|
||||
pins = "EMMC_CK";
|
||||
drive-strength = <MTK_DRIVE_6mA>;
|
||||
bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
|
||||
};
|
||||
|
||||
conf-ds {
|
||||
pins = "EMMC_DSL";
|
||||
bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
|
||||
};
|
||||
|
||||
conf-rst {
|
||||
pins = "EMMC_RSTB";
|
||||
drive-strength = <MTK_DRIVE_4mA>;
|
||||
bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
|
||||
};
|
||||
};
|
||||
|
||||
mmc0_pins_uhs: mmc0-uhs-pins {
|
||||
mux {
|
||||
function = "emmc";
|
||||
groups = "emmc_51";
|
||||
};
|
||||
|
||||
conf-cmd-dat {
|
||||
pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
|
||||
"EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
|
||||
"EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
|
||||
input-enable;
|
||||
drive-strength = <MTK_DRIVE_4mA>;
|
||||
bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
|
||||
};
|
||||
|
||||
conf-clk {
|
||||
pins = "EMMC_CK";
|
||||
drive-strength = <MTK_DRIVE_6mA>;
|
||||
bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
|
||||
};
|
||||
|
||||
conf-ds {
|
||||
pins = "EMMC_DSL";
|
||||
bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
|
||||
};
|
||||
|
||||
conf-rst {
|
||||
pins = "EMMC_RSTB";
|
||||
drive-strength = <MTK_DRIVE_4mA>;
|
||||
bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
|
||||
};
|
||||
};
|
||||
|
||||
pcie_pins: pcie-pins {
|
||||
mux {
|
||||
function = "pcie";
|
||||
groups = "pcie_pereset";
|
||||
};
|
||||
};
|
||||
|
||||
wf_2g_5g_pins: wf_2g_5g-pins {
|
||||
mux {
|
||||
function = "wifi";
|
||||
groups = "wf_2g", "wf_5g";
|
||||
};
|
||||
conf {
|
||||
pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
|
||||
"WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
|
||||
"WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
|
||||
"WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
|
||||
"WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
|
||||
"WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
|
||||
"WF1_TOP_CLK", "WF1_TOP_DATA";
|
||||
drive-strength = <MTK_DRIVE_4mA>;
|
||||
};
|
||||
};
|
||||
|
||||
wf_dbdc_pins: wf-dbdc-pins {
|
||||
mux {
|
||||
function = "wifi";
|
||||
groups = "wf_dbdc";
|
||||
};
|
||||
conf {
|
||||
pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
|
||||
"WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
|
||||
"WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
|
||||
"WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
|
||||
"WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
|
||||
"WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
|
||||
"WF1_TOP_CLK", "WF1_TOP_DATA";
|
||||
drive-strength = <MTK_DRIVE_4mA>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c_pins: i2c-pins {
|
||||
mux {
|
||||
function = "i2c";
|
||||
groups = "i2c";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&trng {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&crypto {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mmc0 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default", "state_uhs";
|
||||
pinctrl-0 = <&mmc0_pins_default>;
|
||||
pinctrl-1 = <&mmc0_pins_uhs>;
|
||||
bus-width = <0x08>;
|
||||
max-frequency = <200000000>;
|
||||
cap-mmc-highspeed;
|
||||
mmc-hs200-1_8v;
|
||||
mmc-hs400-1_8v;
|
||||
hs400-ds-delay = <0x14014>;
|
||||
vmmc-supply = <®_3p3v>;
|
||||
vqmmc-supply = <®_1p8v>;
|
||||
non-removable;
|
||||
no-sd;
|
||||
no-sdio;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
card@0 {
|
||||
compatible = "mmc-card";
|
||||
reg = <0>;
|
||||
|
||||
block {
|
||||
compatible = "block-device";
|
||||
|
||||
partitions {
|
||||
block-partition-factory {
|
||||
partname = "factory";
|
||||
|
||||
nvmem: nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
eeprom_factory_0: eeprom@0 {
|
||||
reg = <0x0 0x1000>;
|
||||
};
|
||||
|
||||
precal_factory_1010: precal@1010 {
|
||||
reg = <0x1010 0x62810>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pcie_pins>;
|
||||
num-lanes = <1>;
|
||||
status = "okay";
|
||||
|
||||
slot0: pcie@0,0 {
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
#address-cells = <0x03>;
|
||||
#size-cells = <0x02>;
|
||||
|
||||
pcie_wifi: wifi@0,0 {
|
||||
compatible = "mediatek,mt76";
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie_phy {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie_port {
|
||||
clocks = <&clk40m>, <&topckgen CLK_TOP_PCIE_PHY_SEL>;
|
||||
clock-names = "ref", "da_ref";
|
||||
};
|
||||
|
||||
ð {
|
||||
status = "okay";
|
||||
|
||||
gmac0: mac@0 {
|
||||
compatible = "mediatek,eth-mac";
|
||||
reg = <0>;
|
||||
phy-mode = "2500base-x";
|
||||
|
||||
fixed-link {
|
||||
speed = <2500>;
|
||||
full-duplex;
|
||||
pause;
|
||||
};
|
||||
};
|
||||
|
||||
mdio: mdio-bus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
switch: switch@1f {
|
||||
compatible = "mediatek,mt7531";
|
||||
reg = <31>;
|
||||
reset-gpios = <&pio 5 GPIO_ACTIVE_HIGH>;
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
swport0: port@0 {
|
||||
reg = <0>;
|
||||
phy-handle = <&swphy0>;
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
label = "lan1";
|
||||
phy-handle = <&swphy1>;
|
||||
};
|
||||
|
||||
port@2 {
|
||||
reg = <2>;
|
||||
label = "lan2";
|
||||
phy-handle = <&swphy2>;
|
||||
};
|
||||
|
||||
port@3 {
|
||||
reg = <3>;
|
||||
label = "lan3";
|
||||
phy-handle = <&swphy3>;
|
||||
};
|
||||
|
||||
port@6 {
|
||||
reg = <6>;
|
||||
label = "cpu";
|
||||
ethernet = <&gmac0>;
|
||||
phy-mode = "2500base-x";
|
||||
|
||||
fixed-link {
|
||||
speed = <2500>;
|
||||
full-duplex;
|
||||
pause;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
swphy0: phy@0 {
|
||||
reg = <0>;
|
||||
|
||||
mediatek,led-config = <
|
||||
0x21 0x8008 /* BASIC_CTRL */
|
||||
0x22 0x0c00 /* ON_DURATION */
|
||||
0x23 0x1400 /* BLINK_DURATION */
|
||||
0x24 0xc001 /* LED0_ON_CTRL */
|
||||
0x25 0x0003 /* LED0_BLINK_CTRL */
|
||||
0x26 0xc006 /* LED1_ON_CTRL */
|
||||
0x27 0x003c /* LED1_BLINK_CTRL */
|
||||
>;
|
||||
};
|
||||
|
||||
swphy1: phy@1 {
|
||||
reg = <1>;
|
||||
|
||||
mediatek,led-config = <
|
||||
0x21 0x8008 /* BASIC_CTRL */
|
||||
0x22 0x0c00 /* ON_DURATION */
|
||||
0x23 0x1400 /* BLINK_DURATION */
|
||||
0x24 0xc001 /* LED0_ON_CTRL */
|
||||
0x25 0x0003 /* LED0_BLINK_CTRL */
|
||||
0x26 0xc006 /* LED1_ON_CTRL */
|
||||
0x27 0x003c /* LED1_BLINK_CTRL */
|
||||
>;
|
||||
};
|
||||
|
||||
swphy2: phy@2 {
|
||||
reg = <2>;
|
||||
|
||||
mediatek,led-config = <
|
||||
0x21 0x8008 /* BASIC_CTRL */
|
||||
0x22 0x0c00 /* ON_DURATION */
|
||||
0x23 0x1400 /* BLINK_DURATION */
|
||||
0x24 0xc001 /* LED0_ON_CTRL */
|
||||
0x25 0x0003 /* LED0_BLINK_CTRL */
|
||||
0x26 0xc006 /* LED1_ON_CTRL */
|
||||
0x27 0x003c /* LED1_BLINK_CTRL */
|
||||
>;
|
||||
};
|
||||
|
||||
swphy3: phy@3 {
|
||||
reg = <3>;
|
||||
|
||||
mediatek,led-config = <
|
||||
0x21 0x8008 /* BASIC_CTRL */
|
||||
0x22 0x0c00 /* ON_DURATION */
|
||||
0x23 0x1400 /* BLINK_DURATION */
|
||||
0x24 0xc001 /* LED0_ON_CTRL */
|
||||
0x25 0x0003 /* LED0_BLINK_CTRL */
|
||||
0x26 0xc006 /* LED1_ON_CTRL */
|
||||
0x27 0x003c /* LED1_BLINK_CTRL */
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&wifi {
|
||||
nvmem-cells = <&eeprom_factory_0>, <&precal_factory_1010>;
|
||||
nvmem-cell-names = "eeprom", "precal";
|
||||
pinctrl-names = "default", "dbdc";
|
||||
pinctrl-0 = <&wf_2g_5g_pins>;
|
||||
pinctrl-1 = <&wf_dbdc_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
+263
@@ -0,0 +1,263 @@
|
||||
/* Factory EEPROM for MT7976 WMAC (DBDC) - Acer Connect Vero W */
|
||||
/* Band 1 patched from 5GHz-only to 5GHz+6GHz selectable */
|
||||
|
||||
&wifi {
|
||||
mediatek,eeprom-data = <
|
||||
0x86790100 0x000c4326 0x60100000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x01000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000800 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x12525353 0x003c003f 0x3a100700 0x15030000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x0000be00 0x00000000
|
||||
0x0000c100 0x00000000 0x00000000 0xc3000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000009 0x00000000 0x00000000
|
||||
0x00000000 0x00000303 0x03030303 0x03030303
|
||||
0x03030303 0x03030303 0x03040303 0x03040303
|
||||
0x03040303 0x03040000 0x00161b18 0x1b1a1a1a
|
||||
0x1a0d0008 0x0f0d0209 0x0e0d0209 0x0e0d0209
|
||||
0x0e0c020a 0x0e0c020a 0x0e0c020a 0x0e0b020b
|
||||
0x0e2b2b2b 0x2b222222 0x22222222 0x22222222
|
||||
0x22222222 0x22222222 0x22000000 0x00000000
|
||||
0x00000000 0x002a2a2a 0x2a282828 0x282a2a2a
|
||||
0x2a282828 0x282a2a2a 0x2a282828 0x282a2a2a
|
||||
0x2a282828 0x28000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x007f7f20 0x2530363c 0x41014847 0x4c52575c
|
||||
0x7f7f7f7f 0x1b222a33 0x3a40014d 0x464c525a
|
||||
0x5e7f7f7f 0x7f252834 0x3c424a01 0x4a4f555d
|
||||
0x636e7f7f 0x7f7f202a 0x303b444a 0x014a5158
|
||||
0x5f666e7f 0x7f7f7f7f 0x8080c5c5 0xd1d1dddd
|
||||
0xe5e5f3f3 0x40408080 0xcfcfdbdb 0xe3e3efef
|
||||
0xf7f74040 0x8080bfbf 0xcbcbd9d9 0xe5e5eded
|
||||
0x40408080 0xb9b9c5c5 0xd3d3dfdf 0xe7e74040
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0xc0a0c0e0 0xfcfcafe0 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x02200220 0x02200220 0x02300230 0x02300230
|
||||
0x02300230 0x02300230 0x02300230 0x02300230
|
||||
0x02240224 0x02240224 0x02240224 0x02240224
|
||||
0x02240224 0x02240224 0x02240224 0x02240224
|
||||
0x000000c4 0xc4c4c4c4 0x0000c4c4 0xc4c4c1c1
|
||||
0x008282c3 0xc3000000 0x00838300 0xc4c4c4c1
|
||||
0xc1008282 0x8383c3c3 0xc2c10000 0x83838484
|
||||
0xc4c4c4c1 0xc1008282 0x8383c4c4 0xc4c1c100
|
||||
0x82828383 0xc4c4c4c1 0xc1008282 0x8383c4c4
|
||||
0xc3c100c4 0x81c4c3c2 0x00818181 0xc4c4c3c2
|
||||
0x00818282 0x00c4c4c2 0xc2008182 0x8200c4c4
|
||||
0xc3c20081 0x82828484 0xc4c4c3c2 0x00818282
|
||||
0x8484c4c4 0xc2c20081 0x82828484 0xc4c4c2c1
|
||||
0x81828383 0x8585c4c4 0xc3c20081 0x82828484
|
||||
0xc4c4c3c2 0x00818282 0x8484c4c4 0xc3c20081
|
||||
0x82828484 0xc6c5c3c1 0x00c5c5c3 0xc2008182
|
||||
0x828484c5 0xc5c3c200 0x81828284 0x84c4c4c3
|
||||
0xc2008182 0x828484c4 0xc4c2c181 0x82838385
|
||||
0x85c5c5c3 0xc2008182 0x828484c5 0xc5c3c200
|
||||
0x81828284 0x84c5c5c3 0xc2008182 0x82848400
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x378a6e05 0x0ae64a6c 0x00000000 0x50050000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00b40000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x86828786 0x87c8cb8a 0x8380c982 0x00c8ca86
|
||||
0x8383c583 0x83c1c58c 0x8883c78b 0x8780c28c
|
||||
0x8485c682 0xc3c4c4c4 0xc5c6c7c8 0xcfcecdcc
|
||||
0xcccdcec1 0xc1c1c1c2 0xc4c6c7ce 0xcecfcfcf
|
||||
0xcecec6c7 0xc8c9caca 0xcbcbd2d2 0xd2d2d0ce
|
||||
0xcc8100c1 0xc3c5c6c7 0xc8d0d0d1 0xd1d1d0cf
|
||||
0xdeee6be7 0x5fede2eb 0xce08ce09 0xce0ace0a
|
||||
0x4e0b4f0b 0x4f0c4f0c 0x4f0d4f0d 0x540a540b
|
||||
0x540c540b 0x540c510a 0x510b510c 0xd10c510d
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0xde0fde10 0xde115e12
|
||||
0xde12de12 0xde135e14 0x5e0cde0d 0xde0e5e10
|
||||
0x5e105e10 0x5e11de11 0xde0ede0f 0xde10de11
|
||||
0x5e12de12 0x5e135e13 0xde0f5e11 0x5e12de13
|
||||
0x5e13de13 0xde14de14 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00848484 0x84848484 0x84000000 0x00e4d5d4
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
>;
|
||||
};
|
||||
+263
@@ -0,0 +1,263 @@
|
||||
/* Factory EEPROM for PCIe MT7916 radio - Acer Connect Vero W */
|
||||
/* Offset 0xa0000 in the "factory" GPT partition on eMMC */
|
||||
|
||||
&pcie_wifi {
|
||||
mediatek,eeprom-data = <
|
||||
0x16790000 0x000c4326 0x60000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x50750000 0x07670700 0x00000400 0x50710000
|
||||
0x00000000 0x00000400 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0xb101e748 0xf57f5e99
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000800 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x12924848 0x003e003f 0x3a100000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x81a3a380
|
||||
0xa4910091 0x00910091 0x00910000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x000a0000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x0000c500 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000013 0x12120000 0x00000000
|
||||
0x00000000 0x00000303 0x03030303 0x03030303
|
||||
0x03030303 0x03030505 0x05050505 0x05050505
|
||||
0x05050505 0x05050000 0x001b1919 0x19181818
|
||||
0x180f0006 0x1c0e080a 0x170e080a 0x170d0809
|
||||
0x170d020a 0x0e0d020a 0x0e0d020a 0x0e0b020a
|
||||
0x0e22222c 0x2c2b2b2b 0x2b2b2b2b 0x2b2b2b2b
|
||||
0x2b2b2b2b 0x2b2b2b2b 0x2b000000 0x00000000
|
||||
0x00000000 0x001e201e 0x201e2020 0x201e201e
|
||||
0x20201e20 0x20272929 0x29272727 0x27272929
|
||||
0x29272727 0x27000000 0x00000000 0x00000000
|
||||
0x00000000 0x00cdcfcf 0xcfcfcf00 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x007f7f20 0x2530363c 0x41014347 0x4c52575c
|
||||
0x7f7f0000 0x00000000 0x00000000 0x00000000
|
||||
0x0000007f 0x7f252834 0x3c424a01 0x4d4f555f
|
||||
0x636e7f7f 0x7f7f202a 0x303b444a 0x014d5158
|
||||
0x5f666e7f 0x7f7f7f7f 0x8080c5c5 0xcbcbd9d9
|
||||
0xe1e1ebeb 0x40408080 0xcfcfdbdb 0xe3e3efef
|
||||
0xf7f74040 0x8080c1c1 0xcdcdd5d5 0xe1e1eded
|
||||
0x40408080 0xbbbbc7c7 0xcfcfdbdb 0xe7e74040
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0xb0900000 0x0000c0f0 0xf8000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x02000200 0x02000200 0x02000200 0x02000200
|
||||
0x02000200 0x02000200 0x02000200 0x02000200
|
||||
0x02000200 0x02000200 0x02000200 0x02000200
|
||||
0x02000200 0x02000200 0x02000200 0x02000200
|
||||
0x000000c6 0xc6c6c6c4 0x0000c5c5 0xc5c4c1c1
|
||||
0x818383c3 0xc3c2c100 0x81848400 0xc5c5c4c1
|
||||
0xc1818383 0x8585c3c3 0xc2c10081 0x84848686
|
||||
0xc5c5c4c1 0xc1818383 0x8585c5c5 0xc4c1c181
|
||||
0x83838585 0xc5c5c4c1 0xc1818383 0x8585c6c6
|
||||
0xc4c300c6 0x00c6c4c3 0xc1008181 0xc6c6c4c3
|
||||
0xc1008181 0x00c5c5c3 0xc2008182 0x8200c6c6
|
||||
0xc4c3c100 0x81818686 0xc6c6c4c3 0xc1008181
|
||||
0x8686c5c5 0xc3c20081 0x82828787 0xc5c5c3c2
|
||||
0x00818282 0x8787c6c6 0xc4c3c100 0x81818686
|
||||
0xc6c6c4c3 0xc1008181 0x8686c6c6 0xc4c3c100
|
||||
0x81818686 0xc6c6c4c3 0x00c6c6c4 0xc3c10081
|
||||
0x818686c6 0xc6c4c3c1 0x00818186 0x86c5c5c3
|
||||
0xc2008182 0x828787c5 0xc5c3c281 0x82838388
|
||||
0x88c6c6c4 0xc3c10081 0x818686c6 0xc6c4c3c1
|
||||
0x00818186 0x86c6c6c4 0xc3c10081 0x81868600
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00b70000 0x00b70000 0x00000000 0x00000000
|
||||
0x01000000 0x0000c400 0xb8008700 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0xc7c60000 0x89898987 0x87858381 0x898a8b8b
|
||||
0x8a898785 0x88898988 0x87868584 0x00000000
|
||||
0x00000000 0xcccfcecd 0xcdcacecd 0xcbcfcece
|
||||
0xcfcfcfc7 0xcececdce 0xc7cfcec7 0xcfcfcfcf
|
||||
0xcfcf0000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x7fe2f0e4 0x00000000 0xa4de24df 0xa4e0a4e1
|
||||
0xa4e1a4de 0x24dfa4e0 0xa4e1a4e1 0xa4dea4df
|
||||
0xa4e0a4e1 0xa4e1a4de 0xa4df24e0 0xa4e1a4e1
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0xde0fde0f 0xde0fde10
|
||||
0xde11de11 0x5e12de12 0xde10de10 0xde10de11
|
||||
0xde12de12 0xde13de13 0x5a085a09 0x5a0a5a0a
|
||||
0x5a0a5a0a 0x5a0a5a0a 0x5a055a06 0x5a075a08
|
||||
0x5a085a09 0x5a095a09 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00ded453
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x00000000 0x00000000 0x00000000 0x00000000
|
||||
>;
|
||||
};
|
||||
@@ -0,0 +1,63 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
/dts-v1/;
|
||||
#include "mt7986a-acer-connect-vero-w6m-common.dtsi"
|
||||
#include "mt7986a-acer-connect-vero-w6m-pcie-eeprom.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Acer Connect Vero W6m";
|
||||
compatible = "acer,connect-vero-w", "mediatek,mt7986a";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
led-boot = &led_status;
|
||||
led-failsafe = &led_status;
|
||||
led-running = &led_status;
|
||||
led-upgrade = &led_status;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
led-controller@30 {
|
||||
compatible = "kinetic,ktd2026";
|
||||
reg = <0x30>;
|
||||
vin-supply = <®_5v>;
|
||||
vio-supply = <®_3p3v>;
|
||||
|
||||
led_status: multi-led {
|
||||
color = <LED_COLOR_ID_RGB>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
led@0 {
|
||||
reg = <0>;
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
};
|
||||
|
||||
led@1 {
|
||||
reg = <1>;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
};
|
||||
|
||||
led@2 {
|
||||
reg = <2>;
|
||||
color = <LED_COLOR_ID_BLUE>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&nvmem {
|
||||
eeprom_factory_a0000: eeprom@a0000 {
|
||||
reg = <0xa0000 0x1000>;
|
||||
};
|
||||
|
||||
precal_factory_a1010: precal@a1010 {
|
||||
reg = <0xa1010 0x62810>;
|
||||
};
|
||||
};
|
||||
|
||||
&swport0 {
|
||||
label = "internet";
|
||||
};
|
||||
@@ -0,0 +1,86 @@
|
||||
image cfg.ext4 {
|
||||
empty = true
|
||||
temporary = true
|
||||
size = 128M
|
||||
ext4 {
|
||||
label = "cfg"
|
||||
use-mke2fs = true
|
||||
features = "uninit_bg"
|
||||
extraargs = "-m 0 -i 4096"
|
||||
}
|
||||
}
|
||||
|
||||
image var.ext4 {
|
||||
empty = true
|
||||
temporary = true
|
||||
size = 128M
|
||||
ext4 {
|
||||
label = "var"
|
||||
use-mke2fs = true
|
||||
features = "uninit_bg"
|
||||
extraargs = "-m 0 -i 4096"
|
||||
}
|
||||
}
|
||||
|
||||
image #INFIX_ID##VERSION#-vero-w-#TARGET#.img {
|
||||
hdimage {
|
||||
partition-table-type = "gpt"
|
||||
gpt-no-backup = true
|
||||
}
|
||||
|
||||
/*
|
||||
* Factory partitions (1-4) -- secure boot, do not overwrite.
|
||||
* Offsets and sizes match the stock Acer GPT exactly.
|
||||
* No image data is written, preserving factory content.
|
||||
*/
|
||||
partition u-boot-env {
|
||||
offset = 8192s
|
||||
size = 1024s
|
||||
}
|
||||
|
||||
partition factory {
|
||||
offset = 9216s
|
||||
size = 4096s
|
||||
}
|
||||
|
||||
partition fip {
|
||||
offset = 13312s
|
||||
size = 4096s
|
||||
}
|
||||
|
||||
/* Infix U-Boot, chainloaded by stock bootloader */
|
||||
partition infix-uboot {
|
||||
offset = 17408s
|
||||
image = "u-boot.bin"
|
||||
size = 32M
|
||||
}
|
||||
|
||||
partition aux {
|
||||
partition-uuid = D4EF35A0-0652-45A1-B3DE-D63339C82035
|
||||
image = "aux.ext4"
|
||||
}
|
||||
|
||||
partition primary {
|
||||
partition-type-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4
|
||||
bootable = true
|
||||
size = 250M
|
||||
image = "rootfs.squashfs"
|
||||
}
|
||||
|
||||
partition secondary {
|
||||
partition-type-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4
|
||||
bootable = true
|
||||
size = 250M
|
||||
image = "rootfs.squashfs"
|
||||
}
|
||||
|
||||
partition cfg {
|
||||
partition-uuid = 7aa497f0-73b5-47e5-b2ab-8752d8a48105
|
||||
image = "cfg.ext4"
|
||||
}
|
||||
|
||||
partition var {
|
||||
partition-uuid = 8046A06A-E45A-4A14-A6AD-6684704A393F
|
||||
image = "var.ext4"
|
||||
}
|
||||
}
|
||||
+488
@@ -0,0 +1,488 @@
|
||||
{
|
||||
"ieee802-dot1ab-lldp:lldp": {
|
||||
"infix-lldp:enabled": true
|
||||
},
|
||||
"ietf-hardware:hardware": {
|
||||
"component": [
|
||||
{
|
||||
"name": "USB",
|
||||
"class": "infix-hardware:usb",
|
||||
"state": {
|
||||
"admin-state": "unlocked"
|
||||
}
|
||||
},
|
||||
{
|
||||
"class": "infix-hardware:usb",
|
||||
"name": "USB2",
|
||||
"state": {
|
||||
"admin-state": "unlocked"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "radio0",
|
||||
"class": "infix-hardware:wifi",
|
||||
"infix-hardware:wifi-radio": {
|
||||
"country-code": "DE",
|
||||
"band": "2.4GHz",
|
||||
"channel": "auto"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "radio1",
|
||||
"class": "infix-hardware:wifi",
|
||||
"infix-hardware:wifi-radio": {
|
||||
"country-code": "DE",
|
||||
"band": "6GHz",
|
||||
"channel": "auto"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "radio2",
|
||||
"class": "infix-hardware:wifi",
|
||||
"infix-hardware:wifi-radio": {
|
||||
"country-code": "DE",
|
||||
"band": "5GHz",
|
||||
"channel": "auto"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ietf-interfaces:interfaces": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "br0",
|
||||
"type": "infix-if-type:bridge",
|
||||
"ietf-ip:ipv4": {
|
||||
"address": [
|
||||
{
|
||||
"ip": "192.168.0.1",
|
||||
"prefix-length": 24
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lan1",
|
||||
"type": "infix-if-type:ethernet",
|
||||
"ietf-ip:ipv6": {},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lan2",
|
||||
"type": "infix-if-type:ethernet",
|
||||
"ietf-ip:ipv6": {},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lan3",
|
||||
"type": "infix-if-type:ethernet",
|
||||
"ietf-ip:ipv6": {},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lo",
|
||||
"type": "infix-if-type:loopback",
|
||||
"ietf-ip:ipv4": {
|
||||
"address": [
|
||||
{
|
||||
"ip": "127.0.0.1",
|
||||
"prefix-length": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
"ietf-ip:ipv6": {
|
||||
"address": [
|
||||
{
|
||||
"ip": "::1",
|
||||
"prefix-length": 128
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "internet",
|
||||
"type": "infix-if-type:ethernet",
|
||||
"ietf-ip:ipv4": {
|
||||
"infix-dhcp-client:dhcp": {
|
||||
"option": [
|
||||
{
|
||||
"id": "ntp-server"
|
||||
},
|
||||
{
|
||||
"id": "broadcast"
|
||||
},
|
||||
{
|
||||
"id": "domain"
|
||||
},
|
||||
{
|
||||
"id": "hostname",
|
||||
"value": "auto"
|
||||
},
|
||||
{
|
||||
"id": "dns-server"
|
||||
},
|
||||
{
|
||||
"id": "router"
|
||||
},
|
||||
{
|
||||
"id": "netmask"
|
||||
},
|
||||
{
|
||||
"id": "vendor-class",
|
||||
"value": "Acer Connect Vero W"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ietf-ip:ipv6": {
|
||||
"infix-dhcpv6-client:dhcp": {
|
||||
"option": [
|
||||
{
|
||||
"id": "ntp-server"
|
||||
},
|
||||
{
|
||||
"id": "client-fqdn"
|
||||
},
|
||||
{
|
||||
"id": "domain-search"
|
||||
},
|
||||
{
|
||||
"id": "dns-server"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "wifi0-ap",
|
||||
"type": "infix-if-type:wifi",
|
||||
"infix-interfaces:wifi": {
|
||||
"radio": "radio0",
|
||||
"access-point": {
|
||||
"ssid": "Infix",
|
||||
"security": {
|
||||
"secret": "wifi"
|
||||
}
|
||||
}
|
||||
},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "wifi1-ap",
|
||||
"type": "infix-if-type:wifi",
|
||||
"infix-interfaces:wifi": {
|
||||
"radio": "radio1",
|
||||
"access-point": {
|
||||
"ssid": "Infix6G",
|
||||
"security": {
|
||||
"secret": "wifi"
|
||||
}
|
||||
}
|
||||
},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "wifi2-ap",
|
||||
"type": "infix-if-type:wifi",
|
||||
"infix-interfaces:wifi": {
|
||||
"radio": "radio2",
|
||||
"access-point": {
|
||||
"ssid": "Infix5G",
|
||||
"security": {
|
||||
"secret": "wifi"
|
||||
}
|
||||
}
|
||||
},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
}
|
||||
|
||||
]
|
||||
},
|
||||
"ietf-keystore:keystore": {
|
||||
"asymmetric-keys": {
|
||||
"asymmetric-key": [
|
||||
{
|
||||
"name": "genkey",
|
||||
"public-key-format": "infix-crypto-types:ssh-public-key-format",
|
||||
"public-key": "",
|
||||
"private-key-format": "infix-crypto-types:rsa-private-key-format",
|
||||
"cleartext-private-key": "",
|
||||
"certificates": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
"symmetric-keys": {
|
||||
"symmetric-key": [
|
||||
{
|
||||
"name": "wifi",
|
||||
"cleartext-symmetric-key": "aW5maXhpbmZpeA==",
|
||||
"key-format": "infix-crypto-types:passphrase-key-format"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ietf-netconf-acm:nacm": {
|
||||
"enable-nacm": true,
|
||||
"read-default": "permit",
|
||||
"write-default": "permit",
|
||||
"exec-default": "permit",
|
||||
"groups": {
|
||||
"group": [
|
||||
{
|
||||
"name": "admin",
|
||||
"user-name": [
|
||||
"admin"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "operator",
|
||||
"user-name": []
|
||||
},
|
||||
{
|
||||
"name": "guest",
|
||||
"user-name": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"rule-list": [
|
||||
{
|
||||
"name": "admin-acl",
|
||||
"group": [
|
||||
"admin"
|
||||
],
|
||||
"rule": [
|
||||
{
|
||||
"name": "permit-all",
|
||||
"module-name": "*",
|
||||
"access-operations": "*",
|
||||
"action": "permit",
|
||||
"comment": "Allow 'admin' group complete access to all operations and data."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "operator-acl",
|
||||
"group": [
|
||||
"operator"
|
||||
],
|
||||
"rule": [
|
||||
{
|
||||
"name": "permit-system-rpcs",
|
||||
"module-name": "ietf-system",
|
||||
"rpc-name": "*",
|
||||
"access-operations": "exec",
|
||||
"action": "permit",
|
||||
"comment": "Operators can reboot, shutdown, and set system time."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "guest-acl",
|
||||
"group": [
|
||||
"guest"
|
||||
],
|
||||
"rule": [
|
||||
{
|
||||
"name": "deny-all-write+exec",
|
||||
"module-name": "*",
|
||||
"access-operations": "create update delete exec",
|
||||
"action": "deny",
|
||||
"comment": "Guests cannot change anything or exec rpcs."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "default-deny-all",
|
||||
"group": [
|
||||
"*"
|
||||
],
|
||||
"rule": [
|
||||
{
|
||||
"name": "deny-password-access",
|
||||
"path": "/ietf-system:system/authentication/user/password",
|
||||
"access-operations": "*",
|
||||
"action": "deny",
|
||||
"comment": "No user except admins can access password hashes."
|
||||
},
|
||||
{
|
||||
"name": "deny-keystore-access",
|
||||
"module-name": "ietf-keystore",
|
||||
"access-operations": "*",
|
||||
"action": "deny",
|
||||
"comment": "No user except admins can access cryptographic keys."
|
||||
},
|
||||
{
|
||||
"name": "deny-truststore-access",
|
||||
"module-name": "ietf-truststore",
|
||||
"access-operations": "*",
|
||||
"action": "deny",
|
||||
"comment": "No user except admins can access trust store."
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"ietf-netconf-server:netconf-server": {
|
||||
"listen": {
|
||||
"endpoints": {
|
||||
"endpoint": [
|
||||
{
|
||||
"name": "default-ssh",
|
||||
"ssh": {
|
||||
"tcp-server-parameters": {
|
||||
"local-bind": [
|
||||
{
|
||||
"local-address": "::"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ssh-server-parameters": {
|
||||
"server-identity": {
|
||||
"host-key": [
|
||||
{
|
||||
"name": "default-key",
|
||||
"public-key": {
|
||||
"central-keystore-reference": "genkey"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"ietf-system:system": {
|
||||
"hostname": "acer-connect-%m",
|
||||
"ntp": {
|
||||
"server": [
|
||||
{
|
||||
"name": "default",
|
||||
"udp": {
|
||||
"address": "pool.ntp.org"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"authentication": {
|
||||
"user": [
|
||||
{
|
||||
"name": "admin",
|
||||
"password": "$factory$",
|
||||
"infix-system:shell": "bash"
|
||||
}
|
||||
]
|
||||
},
|
||||
"infix-system:motd-banner": "Li0tLS0tLS0uCnwgIC4gLiAgfCBJbmZpeCBPUyDigJQgSW1tdXRhYmxlLkZyaWVuZGx5LlNlY3VyZQp8LS4gdiAuLXwgaHR0cHM6Ly9rZXJuZWxraXQub3JnCictJy0tLSctJwo="
|
||||
},
|
||||
"infix-dhcp-server:dhcp-server": {
|
||||
"option": [
|
||||
{
|
||||
"id": "ntp-server",
|
||||
"address": "auto"
|
||||
},
|
||||
{
|
||||
"id": "dns-server",
|
||||
"address": "auto"
|
||||
},
|
||||
{
|
||||
"id": "router",
|
||||
"address": "auto"
|
||||
}
|
||||
],
|
||||
"subnet": [
|
||||
{
|
||||
"subnet": "192.168.0.0/24",
|
||||
"pool": {
|
||||
"start-address": "192.168.0.100",
|
||||
"end-address": "192.168.0.250"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"infix-firewall:firewall": {
|
||||
"default": "wan",
|
||||
"zone": [
|
||||
{
|
||||
"name": "lan",
|
||||
"action": "accept",
|
||||
"interface": [
|
||||
"br0"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "wan",
|
||||
"action": "drop",
|
||||
"interface": [
|
||||
"internet"
|
||||
],
|
||||
"service": [
|
||||
"dhcpv6-client"
|
||||
]
|
||||
}
|
||||
],
|
||||
"policy": [
|
||||
{
|
||||
"name": "lan-to-wan",
|
||||
"action": "accept",
|
||||
"ingress": [
|
||||
"lan"
|
||||
],
|
||||
"egress": [
|
||||
"wan"
|
||||
],
|
||||
"masquerade": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"infix-meta:meta": {
|
||||
"version": "1.7"
|
||||
},
|
||||
"infix-services:mdns": {
|
||||
"enabled": true
|
||||
},
|
||||
"infix-services:ssh": {
|
||||
"enabled": true,
|
||||
"hostkey": [
|
||||
"genkey"
|
||||
],
|
||||
"listen": [
|
||||
{
|
||||
"name": "ipv4",
|
||||
"address": "0.0.0.0",
|
||||
"port": 22
|
||||
},
|
||||
{
|
||||
"name": "ipv6",
|
||||
"address": "::",
|
||||
"port": 22
|
||||
}
|
||||
]
|
||||
},
|
||||
"infix-services:web": {
|
||||
"enabled": true,
|
||||
"console": {
|
||||
"enabled": true
|
||||
},
|
||||
"netbrowse": {
|
||||
"enabled": true
|
||||
},
|
||||
"restconf": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ config BR2_PACKAGE_BANANAPI_BPI_R3
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7986
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_AIROHA_EN8811H
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7916
|
||||
select SDCARD_AUX
|
||||
help
|
||||
Build Banana PI R3 support
|
||||
|
||||
@@ -212,6 +212,7 @@ sync
|
||||
2. Set boot switches to eMMC mode (see image above)
|
||||
3. Power on
|
||||
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Board won't boot
|
||||
|
||||
@@ -19,4 +19,34 @@ possible to use dtbo in sysboot unless present in syslinux.conf
|
||||
no-sd;
|
||||
no-sdio;
|
||||
status = "okay";
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
card@0 {
|
||||
compatible = "mmc-card";
|
||||
reg = <0>;
|
||||
|
||||
partitions {
|
||||
compatible = "gpt-partitions";
|
||||
|
||||
partition-factory {
|
||||
partname = "factory";
|
||||
|
||||
nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
eeprom_factory_wmac: eeprom@0 {
|
||||
reg = <0x0 0x1000>;
|
||||
};
|
||||
|
||||
eeprom_factory_pcie: eeprom@a0000 {
|
||||
reg = <0xa0000 0x1000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -4,7 +4,7 @@ CONFIG_BOOTDELAY=2
|
||||
CONFIG_ENV_IS_NOWHERE=y
|
||||
# CONFIG_ENV_IS_IN_MMC is not set
|
||||
CONFIG_MULTI_DTB_FIT=y
|
||||
CONFIG_OF_LIST="mt7986a-bpi-r3-sd mt7986a-bpi-r3-emmc mt7986a-bpi-r3-mini"
|
||||
CONFIG_OF_LIST="mt7986a-bpi-r3-sd mt7986a-bpi-r3-emmc mt7986a-bpi-r3-mini mt7986a-acer-connect-vero-w6m"
|
||||
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
|
||||
Executable
+49
@@ -0,0 +1,49 @@
|
||||
#!/bin/sh
|
||||
|
||||
case $1 in
|
||||
base|baseline) mode="baseline" ;;
|
||||
incr|incremental) mode="incremental" ;;
|
||||
ival|interval) mode="interval" ;;
|
||||
single) mode="single" ;;
|
||||
*) exit 1 ;;
|
||||
esac
|
||||
shift
|
||||
|
||||
slug=$(echo $* | tr ' ' '_' | tr -cd '[a-zA-Z0-9]-_')
|
||||
baseline=/tmp/swatch-"$slug"
|
||||
now=/tmp/swatch-"$slug".now
|
||||
|
||||
output()
|
||||
{
|
||||
diff -u -U0 "$baseline" "$now" | awk '
|
||||
/^\-[^-]/ {
|
||||
sub(/^-/, "");
|
||||
last[$1] = $2;
|
||||
}
|
||||
/^\+[^+]/ {
|
||||
sub(/^\+/, "");
|
||||
diff = $2 - last[$1];
|
||||
if (diff)
|
||||
printf("%-60s %10d\n", $1, diff);
|
||||
}
|
||||
'
|
||||
}
|
||||
|
||||
if [ $mode = baseline ] || ! [ -f "$baseline" ]; then
|
||||
$@ >"$baseline"
|
||||
[ $mode = baseline ] && exit
|
||||
fi
|
||||
|
||||
if [ $mode = single ]; then
|
||||
$@ >"$now"
|
||||
output
|
||||
exit
|
||||
fi
|
||||
|
||||
while sleep 1; do
|
||||
$@ >"$now"
|
||||
|
||||
printf '\e[2J\e[H'
|
||||
output
|
||||
[ $mode = interval ] && mv "$now" "$baseline"
|
||||
done
|
||||
@@ -652,7 +652,9 @@ wrap()
|
||||
|
||||
if [ "$cmd" = "stop" ]; then
|
||||
# The setup phase may run forever in the background trying to fetch
|
||||
# the image. It saves its PID in /run/containers/${name}.pid
|
||||
# the image. It saves its PID in /run/containers/${name}.pid. Kill
|
||||
# any in-flight setup, then fall through to podman stop -- a stale
|
||||
# pidfile is not proof the container isn't running.
|
||||
if [ -f "$pidfile" ]; then
|
||||
pid=$(cat "$pidfile")
|
||||
|
||||
@@ -663,10 +665,9 @@ wrap()
|
||||
fi
|
||||
|
||||
rm -f "$pidfile"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Only the 'podman stop' command takes -i and --timeout
|
||||
# Only the 'podman stop' command takes -i (ignore missing) and --timeout
|
||||
args="-i --timeout $timeout"
|
||||
fi
|
||||
|
||||
|
||||
+1
-1
Submodule buildroot updated: 168601af48...d8431707cf
@@ -27,7 +27,7 @@ BR2_ROOTFS_OVERLAY="${BR2_EXTERNAL_INFIX_PATH}/board/common/rootfs ${BR2_EXTERNA
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="${BR2_EXTERNAL_INFIX_PATH}/board/common/post-build.sh"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.25"
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.33"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="${BR2_EXTERNAL_INFIX_PATH}/board/aarch64/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
||||
@@ -134,6 +134,7 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
||||
BR2_PACKAGE_ALDER_ALDER=y
|
||||
BR2_PACKAGE_ACER_CONNECT_VERO_W6M=y
|
||||
BR2_PACKAGE_BANANAPI_BPI_R3=y
|
||||
BR2_PACKAGE_BANANAPI_BPI_R4=y
|
||||
BR2_PACKAGE_BANANAPI_BPI_R64=y
|
||||
|
||||
@@ -27,7 +27,7 @@ BR2_ROOTFS_OVERLAY="${BR2_EXTERNAL_INFIX_PATH}/board/common/rootfs ${BR2_EXTERNA
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="${BR2_EXTERNAL_INFIX_PATH}/board/common/post-build.sh"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.25"
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.33"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="${BR2_EXTERNAL_INFIX_PATH}/board/aarch64/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
||||
|
||||
@@ -28,7 +28,7 @@ BR2_ROOTFS_OVERLAY="${BR2_EXTERNAL_INFIX_PATH}/board/common/rootfs ${BR2_EXTERNA
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="${BR2_EXTERNAL_INFIX_PATH}/board/common/post-build.sh"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.25"
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.33"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="${BR2_EXTERNAL_INFIX_PATH}/board/arm/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
||||
|
||||
@@ -28,7 +28,7 @@ BR2_ROOTFS_OVERLAY="${BR2_EXTERNAL_INFIX_PATH}/board/common/rootfs ${BR2_EXTERNA
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="${BR2_EXTERNAL_INFIX_PATH}/board/common/post-build.sh"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.25"
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.33"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="${BR2_EXTERNAL_INFIX_PATH}/board/arm/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
||||
|
||||
@@ -26,7 +26,7 @@ BR2_ROOTFS_OVERLAY="${BR2_EXTERNAL_INFIX_PATH}/board/common/rootfs ${BR2_EXTERNA
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="board/qemu/x86_64/post-build.sh ${BR2_EXTERNAL_INFIX_PATH}/board/common/post-build.sh"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.25"
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.33"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="${BR2_EXTERNAL_INFIX_PATH}/board/x86_64/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
||||
|
||||
@@ -26,7 +26,7 @@ BR2_ROOTFS_OVERLAY="${BR2_EXTERNAL_INFIX_PATH}/board/common/rootfs ${BR2_EXTERNA
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="board/qemu/x86_64/post-build.sh ${BR2_EXTERNAL_INFIX_PATH}/board/common/post-build.sh"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.25"
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.33"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="${BR2_EXTERNAL_INFIX_PATH}/board/x86_64/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
||||
|
||||
+65
-3
@@ -3,6 +3,67 @@ Change Log
|
||||
|
||||
All notable changes to the project are documented in this file.
|
||||
|
||||
[v26.05.0][] - 2026-05-29
|
||||
-------------------------
|
||||
|
||||
### Changes
|
||||
|
||||
- Upgrade Linux kernel to 6.18.33 (LTS)
|
||||
- Upgrade Buildroot to 2025.02.14 (LTS)
|
||||
- Upgrade FRR to 10.5.4
|
||||
- Add support for [Acer Connect Vero W6m][AcerConnectVero], a low-cost COTS
|
||||
home router, based on the same hardware as [Banana Pi BPI-R3][BPI-R3], but
|
||||
with a Wi-Fi 6E (6 GHz band) chip.
|
||||
- Add configurable channel-width in Wi-Fi configuration.
|
||||
- Upgrade `ieee802-ethernet-interface` YANG model to revision 2025-09-10 (IEEE
|
||||
Std 802.3.2-2025), adding the standard `phy-type` and `pmd-type` operational
|
||||
leaves. Speed is now exposed via `ietf-interfaces:speed` (bps, RFC 8343);
|
||||
the now obsolete `eth:speed` is no longer returned
|
||||
- Rework `show interface` summary output as layered protocol rows. When a
|
||||
port has link, a physical-medium row (e.g. `1000baseT`, `10GbaseLR`) appears
|
||||
above the `ethernet` row. VLAN, GRE, VXLAN and WiFi interfaces likewise get
|
||||
one row per protocol layer, with type-specific data on each (`vid:`,
|
||||
`remote:`, `vni:`, `station ssid:`, etc.), issue #530
|
||||
- Add support for configurable auto-negotiation for Ethernet ports. A new
|
||||
`advertised-pmd-types` leaf-list replaces the fixed speed idiom for pinned
|
||||
link modes, issue #805. See the [Ethernet Interfaces][ethernet] section in
|
||||
the User Guide for details. Existing configurations using fixed speed are
|
||||
migrated automatically on upgrade
|
||||
- Add support for configurable MDI/MDI-X pinout on Ethernet ports. Needed on
|
||||
some PHYs where Auto-MDIX stops working once auto-negotiation is disabled
|
||||
- New operational `supported-pmd-types` leaf-list on each Ethernet interface,
|
||||
exposing the set of PMD types currently supported
|
||||
- New CLI command `show operational`, and optional XPath filtering for this
|
||||
and any of the other datastores, using `[path /path/to/subtree]`
|
||||
- CLI `show` commands now surface human-friendly error messages instead of a
|
||||
raw Python exceptions, e.g., `Interface "w" not found`
|
||||
|
||||
### Fixes
|
||||
|
||||
- Fix #1493: container with a physical interface not properly removed when
|
||||
switching to a configuration without containers
|
||||
- Fix #1506: add documentation on how to configure VLAN interfaces, including
|
||||
stacked (Q-in-Q) VLAN interfaces, in a dedicated `vlan.md`
|
||||
- Handle unclean daemon exits better, e.g., `dbus-daemon` crashing and leaving
|
||||
a stale pidfile behind, causing it to refuse to be restarted
|
||||
- Fix occasional blank or garbled `[ OK ]` lines at startup
|
||||
- Disallow multicast MAC addresses in custom MAC address configuration
|
||||
- Fix broken Wi-Fi 6 GHz band configuration.
|
||||
- Fix operational read of `/containers` failing and thereby aborting all
|
||||
operational get-data, including RESTCONF/NETCONF reads — for containers
|
||||
whose command contains shell metacharacters, e.g. `sh -c "... && ..."`
|
||||
- WireGuard interfaces are now regenerated when a referenced keystore key
|
||||
changes: the asymmetric `private-key`, and the symmetric `preshared-key` at
|
||||
both peer-group and per-peer level
|
||||
- Fix crash in operational data when a bridge has VLAN ranges configured: the
|
||||
kernel may report ranges (e.g. `vlan 1 vlanEnd 3`) from `bridge vlan global
|
||||
show`, which were not expanded, so `show interface` and other operational
|
||||
reads failed. Ranges are now expanded and listed correctly
|
||||
|
||||
[ethernet]: ethernet.md#restricting-advertised-link-modes
|
||||
[BPI-R3]: https://docs.banana-pi.org/en/BPI-R3/BananaPi_BPI-R3
|
||||
[AcerConnectVero]: ../board/aarch64/acer-connect-vero-w6m/
|
||||
|
||||
[v26.04.0][] - 2026-04-30
|
||||
-------------------------
|
||||
|
||||
@@ -48,7 +109,6 @@ All notable changes to the project are documented in this file.
|
||||
- Fix [BPI-R3][] PCIe devices failing to initialize on boot due to a missing
|
||||
clock definition in the device tree
|
||||
|
||||
[BPI-R3]: https://wiki.banana-pi.org/Banana_Pi_BPI-R3
|
||||
[BPI-R4]: https://docs.banana-pi.org/en/BPI-R4/BananaPi_BPI-R4
|
||||
[ESPRESSObin]: https://espressobin.net/
|
||||
[SAMA7G54]: https://www.microchip.com/en-us/development-tool/ev21h18a
|
||||
@@ -152,7 +212,7 @@ All notable changes to the project are documented in this file.
|
||||
|
||||
- Fix CLI `copy` command problem to copy to scp/sftp destinations
|
||||
|
||||
[BPI-R3-MINI]: https://wiki.banana-pi.org/Banana_Pi_BPI-R3_Mini
|
||||
[BPI-R3-MINI]: https://docs.banana-pi.org/en/BPI-R3_Mini/BananaPi_BPI-R3_Mini
|
||||
[SAMA7G54-EK]: https://www.microchip.com/en-us/development-tool/ev21h18a
|
||||
|
||||
[v26.01.0][] - 2026-02-03
|
||||
@@ -2075,7 +2135,9 @@ Supported YANG models in addition to those used by sysrepo and netopeer:
|
||||
- N/A
|
||||
|
||||
[buildroot]: https://buildroot.org/
|
||||
[UNRELEASED]: https://github.com/kernelkit/infix/compare/v26.03.0...HEAD
|
||||
[UNRELEASED]: https://github.com/kernelkit/infix/compare/v26.05.0...HEAD
|
||||
[v26.05.0]: https://github.com/kernelkit/infix/compare/v26.04.0...v26.05.0
|
||||
[v26.04.0]: https://github.com/kernelkit/infix/compare/v26.03.0...v26.04.0
|
||||
[v26.03.0]: https://github.com/kernelkit/infix/compare/v26.02.0...v26.03.0
|
||||
[v26.02.0]: https://github.com/kernelkit/infix/compare/v26.01.0...v26.02.0
|
||||
[v26.01.0]: https://github.com/kernelkit/infix/compare/v25.11.0...v26.01.0
|
||||
|
||||
+2
-2
@@ -73,8 +73,8 @@ admin@example:/config/interface/br0/> <b>set bridge vlans vlan 20 tagged br0</b>
|
||||
</code></pre>
|
||||
|
||||
To route or to manage via a VLAN, a VLAN interface needs to be created
|
||||
on top of the bridge, see section [VLAN Interfaces](ethernet.md#vlan-interfaces)
|
||||
for more on this topic.
|
||||
on top of the bridge, see section [VLAN Interfaces](vlan.md) for more
|
||||
on this topic.
|
||||
|
||||
> [!NOTE]
|
||||
> In some use-cases only a single management VLAN on the bridge is used.
|
||||
|
||||
@@ -164,7 +164,7 @@ interfaces {
|
||||
}
|
||||
}
|
||||
admin@host-12-34-56:/config/interface/eth0/> leave
|
||||
admin@host-12-34-56:/> show interfaces
|
||||
admin@host-12-34-56:/> show interface
|
||||
INTERFACE PROTOCOL STATE DATA
|
||||
lo loopback UNKNOWN 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
|
||||
+4
-4
@@ -109,11 +109,11 @@ When configuring, e.g., `dns-server`, or `router` options with the value
|
||||
`auto`, the system uses the IP address from the interface matching the
|
||||
subnet. For example:
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interfaces</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
ipv4 192.168.1.1/24 (static)
|
||||
eth1 ethernet UP 02:00:00:00:00:01
|
||||
eth1 ethernet UP 02:00:00:00:00:01
|
||||
ipv4 192.168.2.1/24 (static)
|
||||
|
||||
admin@example:/config/dhcp-server/subnet/192.168.1.0/24/> <b>edit option dns-server</b>
|
||||
|
||||
+184
-120
@@ -1,52 +1,8 @@
|
||||
# Ethernet Interfaces
|
||||
|
||||
This document covers VLAN interfaces, physical Ethernet interfaces,
|
||||
and virtual Ethernet (VETH) pairs.
|
||||
|
||||
|
||||
## VLAN Interfaces
|
||||
|
||||
Creating a VLAN can be done in many ways. This section assumes VLAN
|
||||
interfaces created atop another Linux interface. E.g., the VLAN
|
||||
interfaces created on top of the Ethernet interface or bridge in the
|
||||
picture below.
|
||||
|
||||

|
||||
|
||||
A VLAN interface is basically a filtering abstraction. When you run
|
||||
`tcpdump` on a VLAN interface you will only see the frames matching the
|
||||
VLAN ID of the interface, compared to *all* the VLAN IDs if you run
|
||||
`tcpdump` on the lower-layer interface.
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
||||
admin@example:/config/> <b>edit interface eth0.20</b>
|
||||
admin@example:/config/interface/eth0.20/> <b>show</b>
|
||||
type vlan;
|
||||
vlan {
|
||||
tag-type c-vlan;
|
||||
id 20;
|
||||
lower-layer-if eth0;
|
||||
}
|
||||
admin@example:/config/interface/eth0.20/> <b>leave</b>
|
||||
</code></pre>
|
||||
|
||||
The example below assumes bridge br0 is already created, see [VLAN
|
||||
Filtering Bridge](bridging.md#vlan-filtering-bridge).
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
||||
admin@example:/config/> <b>edit interface vlan10</b>
|
||||
admin@example:/config/interface/vlan10/> <b>set vlan id 10</b>
|
||||
admin@example:/config/interface/vlan10/> <b>set vlan lower-layer-if br0</b>
|
||||
admin@example:/config/interface/vlan10/> <b>leave</b>
|
||||
</code></pre>
|
||||
|
||||
As conventions, a VLAN interface for VID 20 on top of an Ethernet
|
||||
interface *eth0* is named *eth0.20*, and a VLAN interface for VID 10 on
|
||||
top of a bridge interface *br0* is named *vlan10*.
|
||||
|
||||
> [!NOTE]
|
||||
> If you name your VLAN interface `foo0.N` or `vlanN`, where `N` is a
|
||||
> number, the CLI infers the interface type automatically.
|
||||
This document covers physical Ethernet interfaces and virtual Ethernet
|
||||
(VETH) pairs. For VLAN interfaces stacked on top of an Ethernet port
|
||||
or bridge, see [VLAN Interfaces](vlan.md).
|
||||
|
||||
|
||||
## Physical Ethernet Interfaces
|
||||
@@ -56,111 +12,219 @@ top of a bridge interface *br0* is named *vlan10*.
|
||||
Physical Ethernet interfaces provide low-level settings for speed/duplex as
|
||||
well as packet status and [statistics](#ethernet-statistics).
|
||||
|
||||
By default, Ethernet interfaces defaults to auto-negotiating
|
||||
speed/duplex modes, advertising all speed and duplex modes available.
|
||||
In the example below, the switch would by default auto-negotiate speed
|
||||
1 Gbit/s on port eth1 and 100 Mbit/s on port eth4, as those are the
|
||||
highest speeds supported by H1 and H2 respectively.
|
||||
By default, Ethernet interfaces defaults to auto-negotiating speed/duplex
|
||||
modes, advertising all speed and duplex modes available. In the example
|
||||
below, the switch would by default auto-negotiate speed 1 Gbps on port eth1
|
||||
and 100 Mbps on port eth4, as those are the highest speeds supported by H1 and
|
||||
H2 respectively.
|
||||
|
||||

|
||||
|
||||
The speed and duplex status for the links can be listed as shown
|
||||
below, assuming the link operational status is 'up'.
|
||||
A quick at-a-glance view of the physical link is available in the summary
|
||||
listing. When a port is up, a physical-layer row appears above the ethernet
|
||||
row, naming the IEEE PMD type (e.g. `1000baseT`, `10GbaseLR`) in the PROTOCOL
|
||||
column and the negotiated duplex in DATA. When the link is down the row is
|
||||
omitted and the interface name falls onto the ethernet row.
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth1 1000baseT UP duplex: full
|
||||
ethernet 00:53:00:06:11:01
|
||||
eth2 1000baseT UP duplex: full
|
||||
ethernet 00:53:00:06:11:02
|
||||
eth3 ethernet DOWN 00:53:00:06:11:03
|
||||
eth4 100baseTX UP duplex: full
|
||||
ethernet 00:53:00:06:11:04
|
||||
...
|
||||
</code></pre>
|
||||
|
||||
The detail view spells everything out, including auto-negotiation
|
||||
state and the speed in Mbit/s.
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface eth1</b>
|
||||
name : eth1
|
||||
index : 2
|
||||
mtu : 1500
|
||||
operational status : up
|
||||
auto-negotiation : on
|
||||
duplex : full
|
||||
speed : 1000
|
||||
physical address : 00:53:00:06:11:01
|
||||
ipv4 addresses :
|
||||
ipv6 addresses :
|
||||
in-octets : 75581
|
||||
out-octets : 43130
|
||||
name : eth1
|
||||
index : 2
|
||||
mtu : 1500
|
||||
operational status : up
|
||||
link mode : 1000baseT
|
||||
auto-negotiation : on
|
||||
duplex : full
|
||||
speed : 1000
|
||||
physical address : 00:53:00:06:11:01
|
||||
ipv4 addresses :
|
||||
ipv6 addresses :
|
||||
in-octets : 75581
|
||||
out-octets : 43130
|
||||
...
|
||||
admin@example:/> <b>show interface eth4</b>
|
||||
name : eth4
|
||||
index : 5
|
||||
mtu : 1500
|
||||
operational status : up
|
||||
auto-negotiation : on
|
||||
duplex : full
|
||||
speed : 100
|
||||
physical address : 00:53:00:06:11:04
|
||||
ipv4 addresses :
|
||||
ipv6 addresses :
|
||||
in-octets : 75439
|
||||
out-octets : 550704
|
||||
name : eth4
|
||||
index : 5
|
||||
mtu : 1500
|
||||
operational status : up
|
||||
link mode : 100baseTX
|
||||
auto-negotiation : on
|
||||
duplex : full
|
||||
speed : 100
|
||||
physical address : 00:53:00:06:11:04
|
||||
ipv4 addresses :
|
||||
ipv6 addresses :
|
||||
in-octets : 75439
|
||||
out-octets : 550704
|
||||
...
|
||||
admin@example:/>
|
||||
</code></pre>
|
||||
|
||||
### Configuring fixed speed and duplex
|
||||
### Restricting advertised link modes
|
||||
|
||||
Auto-negotiation of speed/duplex mode is desired in almost all
|
||||
use-cases, but it is possible to disable auto-negotiation and specify
|
||||
a fixed speed and duplex mode.
|
||||
Auto-negotiation is the right default for almost all links, but sometimes a
|
||||
port has to come up at a fixed speed, usually when talking to old hardware
|
||||
that won't auto-negotiate or does it badly. IEEE Std 802.3.2-2025 dropped
|
||||
the old "turn off auto-negotiation, then set a fixed speed and duplex"
|
||||
approach. Instead you restrict the set of PMD types the port may advertise:
|
||||
list a single PMD and the link pins to that mode against any peer that
|
||||
supports it.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> When setting a fixed speed and duplex mode, ensure both sides of the
|
||||
> link have matching configuration. If speed does not match, the link
|
||||
> will not come up. If duplex mode does not match, the result is
|
||||
> reported collisions and/or bad throughput.
|
||||
> [!NOTE]
|
||||
> Earlier Infix releases needed `enable false` plus explicit `speed` and
|
||||
> `duplex` leaves. IEEE Std 802.3.2-2025 retired the `eth:speed` leaf, so
|
||||
> the speed now comes from the `advertised-pmd-types` entry instead.
|
||||
> Existing `startup-config.cfg` files are migrated automatically on upgrade.
|
||||
|
||||
The example below configures port eth3 to fixed speed 100 Mbit/s
|
||||
half-duplex mode.
|
||||
Each entry in `auto-negotiation/advertised-pmd-types` is an IEEE PMD-type
|
||||
identity (`ieee802-ethernet-phy-type:pmd-type-*`). The separate `duplex`
|
||||
leaf controls half vs full duplex.
|
||||
|
||||
The example below pins port `eth3` to 100 Mbit/s half-duplex.
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
||||
admin@example:/config/> <b>edit interface eth3 ethernet</b>
|
||||
admin@example:/config/interface/eth3/ethernet/> <b>set speed 0.1</b>
|
||||
admin@example:/config/interface/eth3/ethernet/> <b>set auto-negotiation advertised-pmd-types pmd-type-100BASE-TX</b>
|
||||
admin@example:/config/interface/eth3/ethernet/> <b>set duplex half</b>
|
||||
admin@example:/config/interface/eth3/ethernet/> <b>set auto-negotiation enable false</b>
|
||||
admin@example:/config/interface/eth3/ethernet/> <b>show</b>
|
||||
auto-negotiation {
|
||||
enable false;
|
||||
advertised-pmd-types [ ieee802-ethernet-phy-type:pmd-type-100BASE-TX ];
|
||||
}
|
||||
duplex half;
|
||||
speed 0.1;
|
||||
admin@example:/config/interface/eth3/ethernet/> <b>leave</b>
|
||||
admin@example:/>
|
||||
</code></pre>
|
||||
|
||||
Speed metric is in Gbit/s. Auto-negotiation needs to be disabled in
|
||||
order for fixed speed/duplex to apply. Only speeds `0.1`(100 Mbit/s)
|
||||
and `0.01` (10 Mbit/s) can be specified. 1 Gbit/s and higher speeds
|
||||
require auto-negotiation to be enabled.
|
||||
List several PMDs to advertise all of them; auto-negotiation then settles
|
||||
on the highest mode both ends support.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> When pinning a link mode, make sure both ends share at least one common
|
||||
> (PMD, duplex) combination, otherwise the link will not come up.
|
||||
|
||||
#### Duplex and advertised modes
|
||||
|
||||
A PMD type like `10BASE-T` or `100BASE-TX` says nothing about duplex on its
|
||||
own, but the kernel tracks half and full duplex as separate link modes.
|
||||
Infix advertises both variants of every PMD you list, then narrows to one
|
||||
duplex when the `duplex` leaf is set:
|
||||
|
||||
| `advertised-pmd-types` | `duplex` | Resulting advertised modes |
|
||||
|----------------------------|----------|------------------------------------------|
|
||||
| `[10BASE-T]` | _unset_ | `10baseT/Half` + `10baseT/Full` |
|
||||
| `[10BASE-T]` | `full` | `10baseT/Full` |
|
||||
| `[10BASE-T]` | `half` | `10baseT/Half` |
|
||||
| `[10BASE-T, 100BASE-TX]` | _unset_ | all four half/full combinations |
|
||||
| `[10BASE-T, 100BASE-TX]` | `full` | `10baseT/Full` + `100baseT/Full` |
|
||||
| _unset_ | _unset_ | every mode the PHY supports (default) |
|
||||
|
||||
So `duplex` filters the PMDs you listed. PMDs with no half-duplex variant
|
||||
(everything above 1 Gbps) only ever advertise full.
|
||||
|
||||
#### Disabling auto-negotiation
|
||||
|
||||
The method above keeps auto-negotiation on and only limits what it
|
||||
advertises, so the peer still negotiates as usual. That doesn't help with
|
||||
gear that won't negotiate at all, like some old switches or a back-to-back
|
||||
copper link. For those, set `auto-negotiation/enable false` together with a
|
||||
single `advertised-pmd-types` entry to force a fixed speed and duplex with
|
||||
negotiation off:
|
||||
|
||||
<pre class="cli"><code>admin@example:/config/interface/eth3/ethernet/> <b>set auto-negotiation enable false</b>
|
||||
admin@example:/config/interface/eth3/ethernet/> <b>set auto-negotiation advertised-pmd-types pmd-type-100BASE-TX</b>
|
||||
admin@example:/config/interface/eth3/ethernet/> <b>set duplex full</b>
|
||||
</code></pre>
|
||||
|
||||
With `enable false` you must list exactly one PMD: it sets the speed, and
|
||||
the `duplex` leaf sets half or full. Leave `duplex` out and Infix uses
|
||||
whatever the PMD supports, normally full.
|
||||
|
||||
Auto-MDIX usually rides along with auto-negotiation, so turning negotiation
|
||||
off can leave both ends picking the same MDI/MDI-X pinout. The link then
|
||||
comes up electrically but carries no traffic. When that happens, force
|
||||
opposite pinouts with the `mdi-x` leaf — set one end true (MDI-X) and the
|
||||
other false (MDI):
|
||||
|
||||
<pre class="cli"><code>admin@example:/config/interface/eth3/ethernet/> <b>set mdi-x false</b>
|
||||
</code></pre>
|
||||
|
||||
Leaving `mdi-x` unset keeps Auto-MDIX in charge, which is correct whenever
|
||||
auto-negotiation is on.
|
||||
|
||||
> [!NOTE]
|
||||
> Whether `enable false` reaches the external PHY depends on the driver.
|
||||
> Direct-attach NICs handle it directly. Switch user ports go through the
|
||||
> switch driver, and some accept the request at the MAC but leave the PHY
|
||||
> auto-negotiating: the kernel reports the configured speed while the wire
|
||||
> runs at whatever was negotiated, and traffic stalls. If that happens,
|
||||
> read the PHY's BMCR register (e.g. with `mdio` from `mdiotools`) to see
|
||||
> what the PHY is actually doing.
|
||||
|
||||
The detail view exposes a `supported` block (operational state,
|
||||
backed by the `supported-pmd-types` leaf-list) listing the PMD types
|
||||
the kernel currently believes the interface can operate at. For
|
||||
SFP/SFP+ cages this set reflects the inserted module: plug in a 10G
|
||||
LR optic and `supported` will narrow to `10GbaseLR` only. Combined
|
||||
with the operational `link mode` row above it, this makes it trivial
|
||||
to confirm what an unknown transceiver actually is — no `ethtool -m`
|
||||
round-trip needed.
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface eth13</b>
|
||||
name : eth13
|
||||
type : ethernet
|
||||
operational status : up
|
||||
link mode : 10GbaseLR
|
||||
auto-negotiation : off
|
||||
supported : 10GbaseLR
|
||||
duplex : full
|
||||
speed : 10000
|
||||
...
|
||||
</code></pre>
|
||||
|
||||
### Ethernet statistics
|
||||
|
||||
Ethernet packet statistics[^1] can be listed as shown below.
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface eth1</b>
|
||||
name : eth1
|
||||
index : 2
|
||||
mtu : 1500
|
||||
operational status : up
|
||||
auto-negotiation : on
|
||||
duplex : full
|
||||
speed : 1000
|
||||
physical address : 00:53:00:06:11:0a
|
||||
ipv4 addresses :
|
||||
ipv6 addresses :
|
||||
in-octets : 75581
|
||||
out-octets : 43130
|
||||
|
||||
eth-in-frames : 434
|
||||
eth-in-multicast-frames : 296
|
||||
eth-in-broadcast-frames : 138
|
||||
eth-in-error-fcs-frames : 0
|
||||
eth-in-error-oversize-frames : 0
|
||||
eth-out-frames : 310
|
||||
eth-out-multicast-frames : 310
|
||||
eth-out-broadcast-frames : 0
|
||||
eth-out-good-octets : 76821
|
||||
eth-in-good-octets : 60598
|
||||
name : eth1
|
||||
index : 2
|
||||
mtu : 1500
|
||||
operational status : up
|
||||
link mode : 1000baseT
|
||||
auto-negotiation : on
|
||||
duplex : full
|
||||
speed : 1000
|
||||
physical address : 00:53:00:06:11:0a
|
||||
ipv4 addresses :
|
||||
ipv6 addresses :
|
||||
in-octets : 75581
|
||||
out-octets : 43130
|
||||
───────────────────
|
||||
<b>Ethernet Statistics</b>
|
||||
in-frames : 434
|
||||
in-multicast-frames : 296
|
||||
in-broadcast-frames : 138
|
||||
in-error-fcs-frames : 0
|
||||
in-error-oversize-frames : 0
|
||||
out-frames : 310
|
||||
out-multicast-frames : 310
|
||||
out-broadcast-frames : 0
|
||||
out-good-octets : 76821
|
||||
in-good-octets : 60598
|
||||
admin@example:/>
|
||||
</code></pre>
|
||||
|
||||
|
||||
@@ -1,3 +1,90 @@
|
||||
/* Chirpy-style typography (must precede all other rules).
|
||||
* Source Sans Pro was renamed "Source Sans 3" on Google Fonts; it is the
|
||||
* same typeface. Lato is used for headings, matching www.kernelkit.org. */
|
||||
@import url('https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&family=Source+Sans+3:ital,wght@0,400;0,600;0,700;1,400&display=swap');
|
||||
|
||||
/* ---- Fonts ---------------------------------------------------------------
|
||||
* theme.font is disabled in mkdocs.yml, so we set Material's font vars here.
|
||||
* Body: Source Sans 3, code: system monospace (same stack Chirpy uses). */
|
||||
:root {
|
||||
--md-text-font: "Source Sans 3";
|
||||
--md-code-font: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New";
|
||||
}
|
||||
|
||||
body {
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
/* Lato for all headings and the masthead site title. */
|
||||
.md-typeset h1,
|
||||
.md-typeset h2,
|
||||
.md-typeset h3,
|
||||
.md-typeset h4,
|
||||
.md-typeset h5,
|
||||
.md-typeset h6,
|
||||
.md-header__title,
|
||||
.md-nav__title {
|
||||
font-family: "Lato", "Microsoft Yahei", sans-serif;
|
||||
}
|
||||
|
||||
/* ---- Light mode (Chirpy "default" palette) ------------------------------- */
|
||||
[data-md-color-scheme="default"] {
|
||||
--md-typeset-color: #34343c;
|
||||
--md-typeset-a-color: #0056b2; /* Chirpy blue links */
|
||||
--md-accent-fg-color: #0056b2; /* link hover / active TOC */
|
||||
--md-code-bg-color: #f6f8fa;
|
||||
--md-code-fg-color: #3a3a3a;
|
||||
}
|
||||
|
||||
[data-md-color-scheme="default"] .md-typeset h1,
|
||||
[data-md-color-scheme="default"] .md-typeset h2,
|
||||
[data-md-color-scheme="default"] .md-typeset h3,
|
||||
[data-md-color-scheme="default"] .md-typeset h4,
|
||||
[data-md-color-scheme="default"] .md-typeset h5,
|
||||
[data-md-color-scheme="default"] .md-typeset h6 {
|
||||
color: #2a2a2a;
|
||||
}
|
||||
|
||||
/* Subtle tinted sidebars (left nav + right TOC), as on the blog. */
|
||||
[data-md-color-scheme="default"] .md-sidebar {
|
||||
background-color: #f6f8fa;
|
||||
}
|
||||
|
||||
/* ---- Dark mode (Chirpy "dark" palette over Material's slate) ------------- */
|
||||
[data-md-color-scheme="slate"] {
|
||||
--md-default-bg-color: rgb(27 27 30); /* neutral near-black */
|
||||
--md-default-fg-color: rgb(207 208 209); /* UI text */
|
||||
--md-default-fg-color--light: rgb(175 176 177);
|
||||
--md-default-fg-color--lighter: rgb(175 176 177 / 45%);
|
||||
--md-default-fg-color--lightest: rgb(175 176 177 / 18%);
|
||||
--md-typeset-color: rgb(175 176 177); /* body text */
|
||||
--md-code-bg-color: #151515;
|
||||
--md-code-fg-color: #b0b0b0;
|
||||
--md-typeset-a-color: rgb(138 180 248); /* Chirpy blue links */
|
||||
--md-accent-fg-color: rgb(168 199 250); /* brighter blue on hover */
|
||||
}
|
||||
|
||||
[data-md-color-scheme="slate"] .md-typeset h1,
|
||||
[data-md-color-scheme="slate"] .md-typeset h2,
|
||||
[data-md-color-scheme="slate"] .md-typeset h3,
|
||||
[data-md-color-scheme="slate"] .md-typeset h4,
|
||||
[data-md-color-scheme="slate"] .md-typeset h5,
|
||||
[data-md-color-scheme="slate"] .md-typeset h6 {
|
||||
color: #cccccc;
|
||||
}
|
||||
|
||||
/* Sidebars slightly lighter than the main background, as on the blog. */
|
||||
[data-md-color-scheme="slate"] .md-sidebar {
|
||||
background-color: #1e1e1e;
|
||||
}
|
||||
|
||||
/* Inline code reads as a faint highlight rather than a dark block. */
|
||||
[data-md-color-scheme="slate"] .md-typeset :not(pre) > code {
|
||||
background-color: rgb(255 255 255 / 6%);
|
||||
}
|
||||
|
||||
/* ---- Existing project styling -------------------------------------------- */
|
||||
.md-header__title {
|
||||
font-size: 1.1rem;
|
||||
line-height: 2.6rem;
|
||||
|
||||
+13
-7
@@ -61,13 +61,19 @@ admin@example:/config/interface/eth0/> <b>leave</b>
|
||||
The operational status can be inspected to see both administrative and
|
||||
actual link state:
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interfaces</b>
|
||||
INTERFACE PROTOCOL STATE DATA
|
||||
eth0 ethernet <b>DISABLED</b> 02:00:00:00:00:00
|
||||
eth1 ethernet UP 02:00:00:00:00:01
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet <b>DISABLED</b> 02:00:00:00:00:00
|
||||
eth1 1000baseT UP duplex: full
|
||||
ethernet 02:00:00:00:00:01
|
||||
...
|
||||
</code></pre>
|
||||
|
||||
The rows are layered bottom-up by protocol: a physical-medium row (only
|
||||
emitted when the link is up) on top, then the ethernet row carrying the
|
||||
bare MAC, then any ipv4/ipv6 sub-rows. See [Ethernet](ethernet.md) for the
|
||||
full set of summary fields.
|
||||
|
||||
|
||||
## Description
|
||||
|
||||
@@ -84,9 +90,9 @@ The description is visible in the operational datastore and in `show`
|
||||
commands:
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface eth0</b>
|
||||
name : eth0
|
||||
description : Uplink to core switch
|
||||
index : 2
|
||||
name : eth0
|
||||
description : Uplink to core switch
|
||||
index : 2
|
||||
...
|
||||
</code></pre>
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
@@ -117,11 +117,11 @@ will be ignored. For details on how to enable the NTP client, see the
|
||||
|
||||

|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interfaces</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
admin@example:/>
|
||||
@@ -153,13 +153,13 @@ admin@example:/config/interface/eth0/ipv4/> <b>diff</b>
|
||||
+ }
|
||||
+}
|
||||
admin@example:/config/interface/eth0/ipv4/> <b>leave</b>
|
||||
admin@example:/> <b>show interfaces</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
ipv4 169.254.1.3/16 (random)
|
||||
ipv4 10.0.1.1/24 (static)
|
||||
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
admin@example:/>
|
||||
@@ -188,12 +188,12 @@ admin@example:/config/interface/eth0/ipv4/autoconf/> <b>leave</b>
|
||||
admin@example:/config/> <b>edit interface eth0 ipv4</b>
|
||||
admin@example:/config/interface/eth0/ipv4/> <b>set dhcp</b>
|
||||
admin@example:/config/interface/eth0/ipv4/> <b>leave</b>
|
||||
admin@example:/> <b>show interfaces</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
ipv4 10.1.2.100/24 (dhcp)
|
||||
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
admin@example:/>
|
||||
@@ -235,11 +235,11 @@ admin@example:/config/> <b>edit interface eth0 ipv6</b>
|
||||
admin@example:/config/interface/eth0/ipv6/> <b>set dhcp</b>
|
||||
admin@example:/config/interface/eth0/ipv6/> <b>leave</b>
|
||||
admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
ipv6 2001:db8::42/128 (dhcp)
|
||||
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
admin@example:/>
|
||||
@@ -291,10 +291,10 @@ on the interface.
|
||||
admin@example:/config/> <b>edit interface eth0 ipv6</b>
|
||||
admin@example:/config/interface/eth0/ipv6/> <b>set enabled false</b>
|
||||
admin@example:/config/interface/eth0/ipv6/> <b>leave</b>
|
||||
admin@example:/> <b>show interfaces</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
admin@example:/>
|
||||
@@ -308,12 +308,12 @@ admin@example:/>
|
||||
admin@example:/config/> <b>edit interface eth0 ipv6</b>
|
||||
admin@example:/config/interface/eth0/ipv6/> <b>set address 2001:db8::1 prefix-length 64</b>
|
||||
admin@example:/config/interface/eth0/ipv6/> <b>leave</b>
|
||||
admin@example:/> <b>show interfaces</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
ipv6 2001:db8::1/64 (static)
|
||||
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
admin@example:/>
|
||||
@@ -330,12 +330,12 @@ advertised by the router (here 2001:db8:0:1::0/64) and the interface
|
||||
identifier. The resulting address is of type *link-layer*, as it is
|
||||
formed based on the interface identifier ([ietf-ip.yang][2]).
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interfaces</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
ipv6 2001:db8:0:1:0:ff:fe00:0/64 (link-layer)
|
||||
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
admin@example:/>
|
||||
@@ -348,11 +348,11 @@ below.
|
||||
admin@example:/config/> <b>edit interface eth0 ipv6</b>
|
||||
admin@example:/config/interface/eth0/ipv6/> <b>set autoconf create-global-addresses false</b>
|
||||
admin@example:/config/interface/eth0/ipv6/> <b>leave</b>
|
||||
admin@example:/> <b>show interfaces</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
admin@example:/>
|
||||
@@ -366,12 +366,12 @@ admin@example:/>
|
||||
By default, the auto-configured link-local and global IPv6 addresses
|
||||
are formed from a link-identifier based on the MAC address.
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interfaces</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
ipv6 2001:db8:0:1:0:ff:fe00:0/64 (link-layer)
|
||||
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
admin@example:/>
|
||||
@@ -385,12 +385,12 @@ possible to specify use of a random identifier ([ietf-ip.yang][2] and
|
||||
admin@example:/config/> <b>edit interface eth0 ipv6</b>
|
||||
admin@example:/config/interface/eth0/ipv6/> <b>set autoconf create-temporary-addresses true</b>
|
||||
admin@example:/config/interface/eth0/ipv6/> <b>leave</b>
|
||||
admin@example:/> <b>show interfaces</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0 ethernet UP 02:00:00:00:00:00
|
||||
ipv6 2001:db8:0:1:b705:8374:638e:74a8/64 (random)
|
||||
ipv6 fe80::ad3d:b274:885a:9ffb/64 (random)
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
admin@example:/>
|
||||
|
||||
+66
-66
@@ -87,34 +87,34 @@ Like other interfaces, link aggregates are also available in the general
|
||||
interfaces overview in the CLI admin-exec context. Here is the above
|
||||
static mode aggregate:
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interfaces</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
.
|
||||
.
|
||||
.
|
||||
lag0 lag UP static: balance-xor, hash: layer2
|
||||
│ ethernet UP 00:a0:85:00:02:00
|
||||
├ eth7 lag ACTIVE
|
||||
└ eth8 lag ACTIVE
|
||||
lag0 lag UP static: balance-xor, hash: layer2
|
||||
│ ethernet UP 00:a0:85:00:02:00
|
||||
├ eth7 lag ACTIVE
|
||||
└ eth8 lag ACTIVE
|
||||
</code></pre>
|
||||
|
||||
Same aggregate, but in LACP mode:
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interfaces</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
.
|
||||
.
|
||||
.
|
||||
lag0 lag UP lacp: active, rate: fast (1s), hash: layer2
|
||||
│ ethernet UP 00:a0:85:00:02:00
|
||||
├ eth7 lag ACTIVE active, short_timeout, aggregating, in_sync, collecting, distributing
|
||||
└ eth8 lag ACTIVE active, short_timeout, aggregating, in_sync, collecting, distributing
|
||||
lag0 lag UP lacp: active, rate: fast (1s), hash: layer2
|
||||
│ ethernet UP 00:a0:85:00:02:00
|
||||
├ eth7 lag ACTIVE active, short_timeout, aggregating, in_sync, collecting, distributing
|
||||
└ eth8 lag ACTIVE active, short_timeout, aggregating, in_sync, collecting, distributing
|
||||
</code></pre>
|
||||
|
||||
|
||||
@@ -124,45 +124,45 @@ In addition to basic status shown in the interface overview, detailed
|
||||
LAG status can be inspected:
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface lag0</b>
|
||||
name : lag0
|
||||
index : 25
|
||||
mtu : 1500
|
||||
operational status : up
|
||||
physical address : 00:a0:85:00:02:00
|
||||
lag mode : static
|
||||
lag type : balance-xor
|
||||
lag hash : layer2
|
||||
link debounce up : 0 msec
|
||||
link debounce down : 0 msec
|
||||
ipv4 addresses :
|
||||
ipv6 addresses :
|
||||
in-octets : 0
|
||||
out-octets : 2142
|
||||
name : lag0
|
||||
index : 25
|
||||
mtu : 1500
|
||||
operational status : up
|
||||
physical address : 00:a0:85:00:02:00
|
||||
lag mode : static
|
||||
lag type : balance-xor
|
||||
lag hash : layer2
|
||||
link debounce up : 0 msec
|
||||
link debounce down : 0 msec
|
||||
ipv4 addresses :
|
||||
ipv6 addresses :
|
||||
in-octets : 0
|
||||
out-octets : 2142
|
||||
</code></pre>
|
||||
|
||||
Same aggregate, but in LACP mode:
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface lag0</b>
|
||||
name : lag0
|
||||
index : 24
|
||||
mtu : 1500
|
||||
operational status : up
|
||||
physical address : 00:a0:85:00:02:00
|
||||
lag mode : lacp
|
||||
lag hash : layer2
|
||||
lacp mode : active
|
||||
lacp rate : fast (1s)
|
||||
lacp aggregate id : 1
|
||||
name : lag0
|
||||
index : 24
|
||||
mtu : 1500
|
||||
operational status : up
|
||||
physical address : 00:a0:85:00:02:00
|
||||
lag mode : lacp
|
||||
lag hash : layer2
|
||||
lacp mode : active
|
||||
lacp rate : fast (1s)
|
||||
lacp aggregate id : 1
|
||||
lacp system priority: 65535
|
||||
lacp actor key : 9
|
||||
lacp partner key : 9
|
||||
lacp partner mac : 00:a0:85:00:03:00
|
||||
link debounce up : 0 msec
|
||||
link debounce down : 0 msec
|
||||
ipv4 addresses :
|
||||
ipv6 addresses :
|
||||
in-octets : 100892
|
||||
out-octets : 111776
|
||||
lacp actor key : 9
|
||||
lacp partner key : 9
|
||||
lacp partner mac : 00:a0:85:00:03:00
|
||||
link debounce up : 0 msec
|
||||
link debounce down : 0 msec
|
||||
ipv4 addresses :
|
||||
ipv6 addresses :
|
||||
in-octets : 100892
|
||||
out-octets : 111776
|
||||
</code></pre>
|
||||
|
||||
Member ports provide additional status information:
|
||||
@@ -184,21 +184,21 @@ Member ports provide additional status information:
|
||||
Example member port status:
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface eth7</b>
|
||||
name : eth7
|
||||
index : 8
|
||||
mtu : 1500
|
||||
operational status : up
|
||||
physical address : 00:a0:85:00:02:00
|
||||
lag member : lag0
|
||||
lag member state : active
|
||||
lacp aggregate id : 1
|
||||
lacp actor state : active, short_timeout, aggregating, in_sync, collecting, distributing
|
||||
lacp partner state : active, short_timeout, aggregating, in_sync, collecting, distributing
|
||||
link failure count : 0
|
||||
ipv4 addresses :
|
||||
ipv6 addresses :
|
||||
in-octets : 473244
|
||||
out-octets : 499037
|
||||
name : eth7
|
||||
index : 8
|
||||
mtu : 1500
|
||||
operational status : up
|
||||
physical address : 00:a0:85:00:02:00
|
||||
lag member : lag0
|
||||
lag member state : active
|
||||
lacp aggregate id : 1
|
||||
lacp actor state : active, short_timeout, aggregating, in_sync, collecting, distributing
|
||||
lacp partner state : active, short_timeout, aggregating, in_sync, collecting, distributing
|
||||
link failure count : 0
|
||||
ipv4 addresses :
|
||||
ipv6 addresses :
|
||||
in-octets : 473244
|
||||
out-octets : 499037
|
||||
</code></pre>
|
||||
|
||||
|
||||
|
||||
+5
-5
@@ -109,13 +109,13 @@ CLI can be entered from shell in the same way as for SSH.
|
||||
|
||||
See the 'help' command for an introduction to the system
|
||||
|
||||
admin@example:/> <b>show interfaces</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
e1 ethernet LOWER-DOWN 00:53:00:06:03:01
|
||||
e2 ethernet LOWER-DOWN 00:53:00:06:03:02
|
||||
e1 ethernet LOWER-DOWN 00:53:00:06:03:01
|
||||
e2 ethernet LOWER-DOWN 00:53:00:06:03:02
|
||||
...
|
||||
admin@example:/>
|
||||
</code></pre>
|
||||
|
||||
+1
-1
@@ -47,7 +47,7 @@ other traffic would be bridged as usual.
|
||||
|----------|----------------------------|--------------------------------------------------------------|
|
||||
| [bridge](bridging.md) | infix-if-bridge | SW implementation of an IEEE 802.1Q bridge |
|
||||
| [ip](ip.md) | ietf-ip, infix-ip | IP address to the subordinate interface |
|
||||
| [vlan](ethernet.md#vlan-interfaces) | infix-if-vlan | Capture all traffic belonging to a specific 802.1Q VID |
|
||||
| [vlan](vlan.md) | infix-if-vlan | Capture all traffic belonging to a specific 802.1Q VID |
|
||||
| [lag](lag.md) | infix-if-lag | Link aggregation, static and IEEE 802.3ad (LACP) |
|
||||
| lo | ietf-interfaces | Software loopback interface |
|
||||
| [eth](ethernet.md#physical-ethernet-interfaces) | ieee802-ethernet-interface | Physical Ethernet device/port |
|
||||
|
||||
+61
-61
@@ -39,20 +39,20 @@ Starting out, we assume a configuration where all ports are network
|
||||
interfaces (possibly with IPv6 enabled).
|
||||
|
||||
```
|
||||
admin@example:/> show interfaces
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
admin@example:/> show interface
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
e1 ethernet LOWER-DOWN 00:53:00:06:11:01
|
||||
e2 ethernet LOWER-DOWN 00:53:00:06:11:02
|
||||
e3 ethernet LOWER-DOWN 00:53:00:06:11:03
|
||||
e4 ethernet LOWER-DOWN 00:53:00:06:11:04
|
||||
e5 ethernet LOWER-DOWN 00:53:00:06:11:05
|
||||
e6 ethernet LOWER-DOWN 00:53:00:06:11:06
|
||||
e7 ethernet LOWER-DOWN 00:53:00:06:11:07
|
||||
e8 ethernet LOWER-DOWN 00:53:00:06:11:08
|
||||
e9 ethernet LOWER-DOWN 00:53:00:06:11:09
|
||||
e10 ethernet UP 00:53:00:06:11:0a
|
||||
e1 ethernet LOWER-DOWN 00:53:00:06:11:01
|
||||
e2 ethernet LOWER-DOWN 00:53:00:06:11:02
|
||||
e3 ethernet LOWER-DOWN 00:53:00:06:11:03
|
||||
e4 ethernet LOWER-DOWN 00:53:00:06:11:04
|
||||
e5 ethernet LOWER-DOWN 00:53:00:06:11:05
|
||||
e6 ethernet LOWER-DOWN 00:53:00:06:11:06
|
||||
e7 ethernet LOWER-DOWN 00:53:00:06:11:07
|
||||
e8 ethernet LOWER-DOWN 00:53:00:06:11:08
|
||||
e9 ethernet LOWER-DOWN 00:53:00:06:11:09
|
||||
e10 ethernet UP 00:53:00:06:11:0a
|
||||
ipv6 fe80::0053:00ff:fe06:110a/64 (link-layer)
|
||||
admin@example:/>
|
||||
```
|
||||
@@ -80,7 +80,7 @@ admin@example:/config/> set interface e10 bridge-port bridge br0
|
||||
admin@example:/config/>
|
||||
```
|
||||
|
||||
The interface status can be viewed using `show interfaces` after leaving
|
||||
The interface status can be viewed using `show interface` after leaving
|
||||
configuration context. When configuring via SSH, first assign an IP
|
||||
address to `br0` *before leaving* configuration context, e.g.
|
||||
|
||||
@@ -95,10 +95,10 @@ setup, including [setting IP address](#set-ip-address).
|
||||
```
|
||||
admin@example:/config/> leave
|
||||
admin@example:/>
|
||||
admin@example:/> show interfaces
|
||||
INTERFACE PROTOCOL STATE DATA
|
||||
admin@example:/> show interface
|
||||
INTERFACE PROTOCOL STATE DATA
|
||||
br0 bridge
|
||||
│ ethernet UP 00:53:00:06:11:01
|
||||
│ ethernet UP 00:53:00:06:11:01
|
||||
├ e1 bridge LOWER-DOWN
|
||||
├ e2 bridge LOWER-DOWN
|
||||
├ e3 bridge LOWER-DOWN
|
||||
@@ -109,7 +109,7 @@ br0 bridge
|
||||
├ e8 bridge LOWER-DOWN
|
||||
├ e9 bridge LOWER-DOWN
|
||||
└ e10 bridge FORWARDING
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
admin@example:/>
|
||||
@@ -154,21 +154,21 @@ admin@example:/>
|
||||
Interface status would now should something like the following
|
||||
|
||||
```
|
||||
admin@example:/> show interfaces
|
||||
INTERFACE PROTOCOL STATE DATA
|
||||
admin@example:/> show interface
|
||||
INTERFACE PROTOCOL STATE DATA
|
||||
br0 bridge
|
||||
│ ethernet UP 00:53:00:06:11:01
|
||||
├ e1 bridge LOWER-DOWN vlan:10u pvid:10
|
||||
├ e2 bridge LOWER-DOWN vlan:10u pvid:10
|
||||
├ e3 bridge LOWER-DOWN vlan:20u pvid:20
|
||||
├ e4 bridge LOWER-DOWN vlan:20u pvid:20
|
||||
├ e5 bridge LOWER-DOWN vlan:30u pvid:30
|
||||
├ e6 bridge LOWER-DOWN vlan:30u pvid:30
|
||||
├ e7 bridge LOWER-DOWN vlan:40u pvid:40
|
||||
├ e8 bridge LOWER-DOWN vlan:40u pvid:40
|
||||
├ e9 bridge LOWER-DOWN vlan:50u pvid:50
|
||||
└ e10 bridge FORWARDING vlan:50u pvid:50
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
│ ethernet UP 00:53:00:06:11:01
|
||||
├ e1 bridge LOWER-DOWN vlan:10u pvid: 10
|
||||
├ e2 bridge LOWER-DOWN vlan:10u pvid: 10
|
||||
├ e3 bridge LOWER-DOWN vlan:20u pvid: 20
|
||||
├ e4 bridge LOWER-DOWN vlan:20u pvid: 20
|
||||
├ e5 bridge LOWER-DOWN vlan:30u pvid: 30
|
||||
├ e6 bridge LOWER-DOWN vlan:30u pvid: 30
|
||||
├ e7 bridge LOWER-DOWN vlan:40u pvid: 40
|
||||
├ e8 bridge LOWER-DOWN vlan:40u pvid: 40
|
||||
├ e9 bridge LOWER-DOWN vlan:50u pvid: 50
|
||||
└ e10 bridge FORWARDING vlan:50u pvid: 50
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
admin@example:/>
|
||||
@@ -181,21 +181,21 @@ patched according to [above](#vlan-snake). We should see link up and
|
||||
*FORWARDING* on all ports in the bridge.
|
||||
|
||||
```
|
||||
admin@example:/> show interfaces
|
||||
INTERFACE PROTOCOL STATE DATA
|
||||
admin@example:/> show interface
|
||||
INTERFACE PROTOCOL STATE DATA
|
||||
br0 bridge
|
||||
│ ethernet UP 00:53:00:06:11:01
|
||||
├ e1 bridge FORWARDING vlan:10u pvid:10
|
||||
├ e2 bridge FORWARDING vlan:10u pvid:10
|
||||
├ e3 bridge FORWARDING vlan:20u pvid:20
|
||||
├ e4 bridge FORWARDING vlan:20u pvid:20
|
||||
├ e5 bridge FORWARDING vlan:30u pvid:30
|
||||
├ e6 bridge FORWARDING vlan:30u pvid:30
|
||||
├ e7 bridge FORWARDING vlan:40u pvid:40
|
||||
├ e8 bridge FORWARDING vlan:40u pvid:40
|
||||
├ e9 bridge FORWARDING vlan:50u pvid:50
|
||||
└ e10 bridge FORWARDING vlan:50u pvid:50
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
│ ethernet UP 00:53:00:06:11:01
|
||||
├ e1 bridge FORWARDING vlan:10u pvid: 10
|
||||
├ e2 bridge FORWARDING vlan:10u pvid: 10
|
||||
├ e3 bridge FORWARDING vlan:20u pvid: 20
|
||||
├ e4 bridge FORWARDING vlan:20u pvid: 20
|
||||
├ e5 bridge FORWARDING vlan:30u pvid: 30
|
||||
├ e6 bridge FORWARDING vlan:30u pvid: 30
|
||||
├ e7 bridge FORWARDING vlan:40u pvid: 40
|
||||
├ e8 bridge FORWARDING vlan:40u pvid: 40
|
||||
├ e9 bridge FORWARDING vlan:50u pvid: 50
|
||||
└ e10 bridge FORWARDING vlan:50u pvid: 50
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
admin@example:/>
|
||||
@@ -284,26 +284,26 @@ admin@example:/>
|
||||
Interface *vlan10* with an auto-configured IPv6 address should appear.
|
||||
|
||||
```
|
||||
admin@example:/> show interfaces
|
||||
INTERFACE PROTOCOL STATE DATA
|
||||
admin@example:/> show interface
|
||||
INTERFACE PROTOCOL STATE DATA
|
||||
br0 bridge vlan:10t
|
||||
│ ethernet UP 00:53:00:06:11:01
|
||||
├ e1 bridge FORWARDING vlan:10u pvid:10
|
||||
├ e2 bridge FORWARDING vlan:10u pvid:10
|
||||
├ e3 bridge FORWARDING vlan:20u pvid:20
|
||||
├ e4 bridge FORWARDING vlan:20u pvid:20
|
||||
├ e5 bridge FORWARDING vlan:30u pvid:30
|
||||
├ e6 bridge FORWARDING vlan:30u pvid:30
|
||||
├ e7 bridge FORWARDING vlan:40u pvid:40
|
||||
├ e8 bridge FORWARDING vlan:40u pvid:40
|
||||
├ e9 bridge FORWARDING vlan:50u pvid:50
|
||||
└ e10 bridge FORWARDING vlan:50u pvid:50
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
│ ethernet UP 00:53:00:06:11:01
|
||||
├ e1 bridge FORWARDING vlan:10u pvid: 10
|
||||
├ e2 bridge FORWARDING vlan:10u pvid: 10
|
||||
├ e3 bridge FORWARDING vlan:20u pvid: 20
|
||||
├ e4 bridge FORWARDING vlan:20u pvid: 20
|
||||
├ e5 bridge FORWARDING vlan:30u pvid: 30
|
||||
├ e6 bridge FORWARDING vlan:30u pvid: 30
|
||||
├ e7 bridge FORWARDING vlan:40u pvid: 40
|
||||
├ e8 bridge FORWARDING vlan:40u pvid: 40
|
||||
├ e9 bridge FORWARDING vlan:50u pvid: 50
|
||||
└ e10 bridge FORWARDING vlan:50u pvid: 50
|
||||
lo ethernet UP 00:00:00:00:00:00
|
||||
ipv4 127.0.0.1/8 (static)
|
||||
ipv6 ::1/128 (static)
|
||||
vlan10 ethernet UP 00:53:00:06:11:01
|
||||
vlan10 ethernet UP 00:53:00:06:11:01
|
||||
│ ipv6 fe80::0053:00ff:fe06:1101/64 (link-layer)
|
||||
└ br0 ethernet UP 00:53:00:06:11:01
|
||||
└ br0 ethernet UP 00:53:00:06:11:01
|
||||
admin@example:/>
|
||||
```
|
||||
|
||||
|
||||
+2
-2
@@ -108,7 +108,7 @@ DHCP server, and the other two as DHCP clients - with all three having
|
||||
a management connection to the host PC running the test. In other
|
||||
words, the test requires a _logical_ topology like the one below.
|
||||
|
||||
<img align="right" src="img/testing-log.dot.svg" alt="Example Logical Topology">
|
||||
{ align=right width="360" }
|
||||
|
||||
```dot
|
||||
graph "dhcp-client-server" {
|
||||
@@ -155,7 +155,7 @@ degrees), we can deploy well-known algorithms to find such subgraphs.
|
||||
Continuing our example, let's say we want to run our DHCP test on the
|
||||
_physical_ topology below.
|
||||
|
||||
<img align="right" src="img/testing-phy.dot.svg" alt="Example Physical Topology">
|
||||
{ align=right width="360" }
|
||||
|
||||
```dot
|
||||
graph "quad-ring" {
|
||||
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
# VLAN Interfaces
|
||||
|
||||
A VLAN interface is an interface stacked on top of another Linux interface
|
||||
that filters traffic for a single 802.1Q VID. `tcpdump` on a VLAN interface
|
||||
shows only frames matching that VID, compared to *all* VIDs when listening
|
||||
on the lower-layer interface.
|
||||
|
||||

|
||||
|
||||
This page covers VLAN interfaces stacked on Ethernet, on a VLAN-filtering
|
||||
bridge, and on other VLAN interfaces. For VLAN handling *inside* a bridge
|
||||
(port VIDs, tagged/untagged membership, pvid), see [VLAN Filtering
|
||||
Bridge](bridging.md#vlan-filtering-bridge).
|
||||
|
||||
## On Top of an Ethernet Interface
|
||||
|
||||
A VLAN interface for VID 20 on top of an Ethernet interface `eth0` is by
|
||||
convention named `eth0.20`.
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
||||
admin@example:/config/> <b>edit interface eth0.20</b>
|
||||
admin@example:/config/interface/eth0.20/> <b>show</b>
|
||||
type vlan;
|
||||
vlan {
|
||||
tag-type c-vlan;
|
||||
id 20;
|
||||
lower-layer-if eth0;
|
||||
}
|
||||
admin@example:/config/interface/eth0.20/> <b>leave</b>
|
||||
</code></pre>
|
||||
|
||||
The `tag-type` defaults to `c-vlan` (802.1Q customer VLAN, EtherType 0x8100).
|
||||
Set to `s-vlan` (802.1ad service VLAN, EtherType 0x88A8) to terminate an outer
|
||||
S-Tag.
|
||||
|
||||
> [!TIP]
|
||||
> If you name your VLAN interface `foo0.N` or `vlanN`, where `N` is a
|
||||
> number, the CLI infers the interface type automatically. Otherwise
|
||||
> the type must be set explicitly.
|
||||
|
||||
## On Top of a Bridge
|
||||
|
||||
When the lower-layer interface is a VLAN-filtering bridge, the VLAN interface
|
||||
gives the CPU an IP-addressable endpoint inside the bridged broadcast domain
|
||||
for that VID. This pattern is named `vlanN` by convention.
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
||||
admin@example:/config/> <b>edit interface vlan10</b>
|
||||
admin@example:/config/interface/vlan10/> <b>set vlan id 10</b>
|
||||
admin@example:/config/interface/vlan10/> <b>set vlan lower-layer-if br0</b>
|
||||
admin@example:/config/interface/vlan10/> <b>leave</b>
|
||||
</code></pre>
|
||||
|
||||
The bridge `br0` must have VLAN 10 configured with the bridge itself as a
|
||||
tagged member. See [VLAN Filtering Bridge](bridging.md#vlan-filtering-bridge)
|
||||
for the bridge-side configuration.
|
||||
|
||||
## Stacked (Q-in-Q)
|
||||
|
||||
VLAN interfaces can be stacked. A VLAN interface whose lower-layer is itself
|
||||
a VLAN interface terminates the inner tag, leaving the outer tag for the
|
||||
parent to handle.
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
||||
admin@example:/config/> <b>edit interface eth0.10</b>
|
||||
admin@example:/config/interface/eth0.10/> <b>set vlan tag-type s-vlan</b>
|
||||
admin@example:/config/interface/eth0.10/> <b>leave</b>
|
||||
admin@example:/config/> <b>edit interface eth0.10.20</b>
|
||||
admin@example:/config/interface/eth0.10.20/> <b>show</b>
|
||||
type vlan;
|
||||
vlan {
|
||||
tag-type c-vlan;
|
||||
id 20;
|
||||
lower-layer-if eth0.10;
|
||||
}
|
||||
admin@example:/config/interface/eth0.10.20/> <b>leave</b>
|
||||
</code></pre>
|
||||
|
||||
The summary view shows each VLAN row pointing at its immediate parent:
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface</b>
|
||||
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
|
||||
eth0.10 vlan UP vid: 10
|
||||
│ ipv4 10.0.10.1/24 (static)
|
||||
└ eth0
|
||||
eth0.10.20 vlan UP vid: 20
|
||||
│ ipv4 10.0.10.20/28 (static)
|
||||
└ eth0.10
|
||||
</code></pre>
|
||||
@@ -345,17 +345,17 @@ tunnel endpoints use IPv4 or IPv6.
|
||||
|
||||
Check WireGuard interface status and peer connections:
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interfaces</b>
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface</b>
|
||||
wg0 wireguard UP 2 peers (1 up)
|
||||
ipv4 10.0.0.1/24 (static)
|
||||
ipv6 fd00::1/64 (static)
|
||||
|
||||
admin@example:/> <b>show interfaces wg0</b>
|
||||
name : wg0
|
||||
type : wireguard
|
||||
index : 12
|
||||
operational status : up
|
||||
peers : 2
|
||||
admin@example:/> <b>show interface wg0</b>
|
||||
name : wg0
|
||||
type : wireguard
|
||||
index : 12
|
||||
operational status : up
|
||||
peers : 2
|
||||
|
||||
Peer 1:
|
||||
status : UP
|
||||
|
||||
+39
-29
@@ -137,6 +137,7 @@ admin@example:/config/> <b>edit hardware component radio0 wifi-radio</b>
|
||||
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>set country-code DE</b>
|
||||
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>set band 5GHz</b>
|
||||
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>set channel 36</b>
|
||||
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>set channel-width 80MHz</b>
|
||||
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>leave</b>
|
||||
</code></pre>
|
||||
|
||||
@@ -150,22 +151,26 @@ admin@example:/config/hardware/component/radio0/wifi-radio/> <b>leave</b>
|
||||
- 2.4GHz: 802.11n/ax
|
||||
- 5GHz: 802.11n/ac/ax
|
||||
- 6GHz: 802.11ax
|
||||
- `channel`: Channel number (1-196) or "auto". When set to "auto", defaults to
|
||||
channel 6 for 2.4GHz, channel 36 for 5GHz, or channel 109 for 6GHz
|
||||
- `channel`: Channel number (1-233) or "auto". When set to "auto", defaults to
|
||||
channel 6 for 2.4GHz, channel 36 for 5GHz, or channel 37 for 6GHz
|
||||
- `channel-width`: AP channel bandwidth. Supported values are `auto`, `20MHz`,
|
||||
`40MHz`, `80MHz`, and `160MHz`. Wider channels require matching hardware,
|
||||
regulatory approval, and are only available on 5GHz/6GHz where supported.
|
||||
- `probe-timeout`: Seconds to wait for PHY detection at boot (default: 0). Set
|
||||
to a non-zero value (e.g., 30) for USB WiFi dongles that are slow to
|
||||
initialize due to firmware loading
|
||||
|
||||
> [!NOTE]
|
||||
> TX power and channel width are automatically determined by the driver
|
||||
> based on regulatory constraints, PHY mode, and hardware capabilities.
|
||||
> TX power is still determined by the driver based on regulatory
|
||||
> constraints and hardware capabilities. Channel width can now be set
|
||||
> explicitly for AP mode, or left at `auto` to let the driver choose.
|
||||
|
||||
### WiFi 6 Support
|
||||
|
||||
WiFi 6 (802.11ax) is always enabled in AP mode on all bands, providing improved
|
||||
performance through features like OFDMA, BSS Coloring, and beamforming.
|
||||
|
||||
**WiFi 6 Features (always enabled):**
|
||||
**WiFi 6 Features (always enabled in AP mode on supported radios):**
|
||||
|
||||
- **OFDMA**: Better multi-user efficiency in dense environments
|
||||
- **BSS Coloring**: Reduced interference from neighboring networks
|
||||
@@ -177,6 +182,11 @@ performance through features like OFDMA, BSS Coloring, and beamforming.
|
||||
- Client devices must support WiFi 6 for full benefits
|
||||
- Older WiFi 5/4 clients can still connect but won't use WiFi 6 features
|
||||
|
||||
> [!IMPORTANT]
|
||||
> 6 GHz AP operation requires WPA3-Personal (SAE) with mandatory
|
||||
> management frame protection. Open networks and WPA2-only AP
|
||||
> configurations are not valid on 6 GHz.
|
||||
|
||||
## Discovering Available Networks
|
||||
|
||||
Before connecting to a WiFi network, you need to discover which networks
|
||||
@@ -213,22 +223,22 @@ access-point).
|
||||
Use `show interface` to see discovered networks and their signal strength:
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface wifi0</b>
|
||||
name : wifi0
|
||||
type : wifi
|
||||
index : 3
|
||||
mtu : 1500
|
||||
operational status : up
|
||||
ip forwarding : enabled
|
||||
physical address : f0:09:0d:36:5f:86
|
||||
ipv4 addresses : 192.168.1.100/24 (dhcp)
|
||||
ipv6 addresses :
|
||||
in-octets : 148388
|
||||
out-octets : 24555
|
||||
mode : station
|
||||
ssid : MyNetwork
|
||||
signal : -45 dBm (good)
|
||||
rx bitrate : 72.2 Mbps
|
||||
tx bitrate : 86.6 Mbps
|
||||
name : wifi0
|
||||
type : wifi
|
||||
index : 3
|
||||
mtu : 1500
|
||||
operational status : up
|
||||
ip forwarding : enabled
|
||||
physical address : f0:09:0d:36:5f:86
|
||||
ipv4 addresses : 192.168.1.100/24 (dhcp)
|
||||
ipv6 addresses :
|
||||
in-octets : 148388
|
||||
out-octets : 24555
|
||||
mode : station
|
||||
ssid : MyNetwork
|
||||
signal : -45 dBm (good)
|
||||
rx bitrate : 72.2 Mbps
|
||||
tx bitrate : 86.6 Mbps
|
||||
──────────────────────────────────────────────────────────────────────
|
||||
<span class="title">Available Networks</span>
|
||||
<span class="header">SSID BSSID SECURITY SIGNAL CHANNEL</span>
|
||||
@@ -294,13 +304,13 @@ admin@example:/config/interface/wifi0/> <b>leave</b>
|
||||
The connection attempt will start immediately. You can verify the connection status:
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show interface wifi0</b>
|
||||
name : wifi0
|
||||
type : wifi
|
||||
operational status : up
|
||||
physical address : f0:09:0d:36:5f:86
|
||||
mode : station
|
||||
ssid : MyHomeNetwork
|
||||
signal : -52 dBm (good)
|
||||
name : wifi0
|
||||
type : wifi
|
||||
operational status : up
|
||||
physical address : f0:09:0d:36:5f:86
|
||||
mode : station
|
||||
ssid : MyHomeNetwork
|
||||
signal : -52 dBm (good)
|
||||
</code></pre>
|
||||
|
||||
**Station configuration parameters:**
|
||||
@@ -345,7 +355,6 @@ admin@example:/config/keystore/…/my-wifi-secret/> <b>end</b>
|
||||
<pre class="cli"><code>admin@example:/config/> <b>edit interface wifi0</b>
|
||||
admin@example:/config/interface/wifi0/> <b>set wifi radio radio0</b>
|
||||
admin@example:/config/interface/wifi0/> <b>set wifi access-point ssid MyNetwork</b>
|
||||
admin@example:/config/interface/wifi0/> <b>set wifi access-point security mode wpa2-personal</b>
|
||||
admin@example:/config/interface/wifi0/> <b>set wifi access-point security secret my-wifi-secret</b>
|
||||
admin@example:/config/interface/wifi0/> <b>leave</b>
|
||||
</code></pre>
|
||||
@@ -365,6 +374,7 @@ admin@example:/config/interface/wifi0/> <b>leave</b>
|
||||
**Security modes:**
|
||||
|
||||
- `open`: No encryption (not recommended)
|
||||
- `auto`: WPA2/WPA3 transitional mode on 2.4/5 GHz, WPA3-only on 6 GHz
|
||||
- `wpa2-personal`: WPA2-PSK (most compatible)
|
||||
- `wpa3-personal`: WPA3-SAE (more secure, requires WPA3-capable clients)
|
||||
- `wpa2-wpa3-personal`: Mixed mode (maximum compatibility)
|
||||
|
||||
+6
-1
@@ -3,7 +3,7 @@ site_description: Infix Documentation
|
||||
site_url: https://kernelkit.github.io/infix/
|
||||
repo_url: https://github.com/kernelkit/infix/
|
||||
repo_name: kernelkit/infix
|
||||
copyright: Copyright © 2022-2025 The KernelKit Team
|
||||
copyright: Copyright © 2022-2026 The KernelKit Team
|
||||
docs_dir: doc/
|
||||
edit_uri: edit/master/doc/
|
||||
extra_css:
|
||||
@@ -33,6 +33,7 @@ nav:
|
||||
- Bridging: bridging.md
|
||||
- Link Aggregation: lag.md
|
||||
- Ethernet Interfaces: ethernet.md
|
||||
- VLAN Interfaces: vlan.md
|
||||
- IP Addressing: ip.md
|
||||
- Routing: routing.md
|
||||
- Firewall Configuration: firewall.md
|
||||
@@ -78,6 +79,10 @@ nav:
|
||||
theme:
|
||||
logo: logo-plain.png
|
||||
name: material
|
||||
# Fonts are loaded by doc/extra.css (Lato headings + Source Sans body +
|
||||
# system monospace, matching the Chirpy blog) instead of Material's
|
||||
# auto-loaded Roboto. Keep this false so Material does not also fetch Roboto.
|
||||
font: false
|
||||
features:
|
||||
- toc.follow
|
||||
# - toc.integrate
|
||||
|
||||
@@ -68,4 +68,13 @@ define FEATURE_WIFI_LINUX_CONFIG_FIXUPS
|
||||
)
|
||||
endef
|
||||
|
||||
define FEATURE_WIFI_INSTALL_IN_ROMFS
|
||||
mkdir -p $(TARGET_DIR)/etc/modprobe.d $(TARGET_DIR)/etc/udev/rules.d
|
||||
cp $(FEATURE_WIFI_PKGDIR)/mt7915e.conf $(TARGET_DIR)/etc/modprobe.d/mt7915e.conf
|
||||
cp $(FEATURE_WIFI_PKGDIR)/60-rename-wifi-phy.rules $(TARGET_DIR)/etc/udev/rules.d/60-rename-wifi-phy.rules
|
||||
cp $(FEATURE_WIFI_PKGDIR)/70-remove-virtual-wifi-interfaces.rules $(TARGET_DIR)/etc/udev/rules.d/70-remove-virtual-wifi-interfaces.rules
|
||||
endef
|
||||
FEATURE_WIFI_POST_INSTALL_TARGET_HOOKS += FEATURE_WIFI_INSTALL_IN_ROMFS
|
||||
|
||||
|
||||
$(eval $(generic-package))
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
options mt7915e enable_6ghz=1
|
||||
@@ -0,0 +1,86 @@
|
||||
From 4a53f610cd05c2aba3da770384460f7e66488ff5 Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
Date: Mon, 11 May 2026 13:55:11 +0200
|
||||
Subject: [PATCH 1/2] service: clean stale pidfile after unclean daemon exit
|
||||
Organization: Wires
|
||||
|
||||
With `pid:!/path` Finit does not manage the file -- the daemon
|
||||
creates it on start and removes it on graceful exit. If the daemon
|
||||
dies before cleanup (SIGKILL, OOM, segfault, exit during startup)
|
||||
the file lingers and can block the next instance from starting,
|
||||
e.g. dbus-daemon refuses with EEXIST and the restart loop fails.
|
||||
|
||||
Remove the file when it still names the just-reaped PID and that
|
||||
PID is no longer alive (the liveness check guards against reuse).
|
||||
Called from service_cleanup(), and from service_monitor()'s
|
||||
forking+starting branch where cleanup was previously skipped.
|
||||
|
||||
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
||||
---
|
||||
src/service.c | 36 +++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 35 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/service.c b/src/service.c
|
||||
index 7ed4fceb..e930c4fd 100644
|
||||
--- a/src/service.c
|
||||
+++ b/src/service.c
|
||||
@@ -1120,6 +1120,35 @@ static void service_notify_stop(svc_t *svc)
|
||||
}
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Drop a daemon-owned (pid:!) pidfile if it still names the just-reaped
|
||||
+ * PID and that PID is gone. The liveness check guards against reuse.
|
||||
+ */
|
||||
+static void service_clean_pidfile(svc_t *svc, pid_t reaped)
|
||||
+{
|
||||
+ pid_t pid;
|
||||
+ char *fn;
|
||||
+
|
||||
+ if (reaped <= 1)
|
||||
+ return;
|
||||
+
|
||||
+ fn = pid_file(svc);
|
||||
+ if (!fn)
|
||||
+ return;
|
||||
+
|
||||
+ pid = pid_file_read(fn);
|
||||
+ if (pid != reaped || pid_alive(pid))
|
||||
+ return;
|
||||
+
|
||||
+ if (remove(fn) && errno != ENOENT) {
|
||||
+ logit(LOG_CRIT, "Failed removing stale service %s pidfile %s",
|
||||
+ svc_ident(svc, NULL, 0), fn);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ dbg("Removed stale service %s pidfile %s", svc_ident(svc, NULL, 0), fn);
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Clean up any lingering state from dead/killed services
|
||||
*/
|
||||
@@ -1137,6 +1166,8 @@ static void service_cleanup(svc_t *svc)
|
||||
if (remove(fn) && errno != ENOENT)
|
||||
logit(LOG_CRIT, "Failed removing service %s pidfile %s",
|
||||
svc_ident(svc, NULL, 0), fn);
|
||||
+ } else if (svc->pidfile[0] == '!') {
|
||||
+ service_clean_pidfile(svc, svc->pid);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2405,7 +2436,10 @@ void service_monitor(pid_t lost, int status)
|
||||
if (svc_is_forking(svc)) {
|
||||
/* Likely start script exiting */
|
||||
if (svc_is_starting(svc)) {
|
||||
- svc->pid = 0; /* Expect no more activity from this one */
|
||||
+ /* Daemon died before clearing 'starting'; drop any stale pidfile. */
|
||||
+ service_clean_pidfile(svc, lost);
|
||||
+ svc->oldpid = lost; /* So service_retry() logs the real PID */
|
||||
+ svc->pid = 0; /* Expect no more activity from this one */
|
||||
goto cont;
|
||||
}
|
||||
|
||||
--
|
||||
2.43.0
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
From 30f2ca3b2e64bce7db1e2d9dcb37a06d53e0b6bf Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
Date: Mon, 11 May 2026 17:08:25 +0200
|
||||
Subject: [PATCH 2/2] service: log signal name and core dumps in death message
|
||||
Organization: Wires
|
||||
|
||||
Replace the bare signal number ("by signal: 9") with the symbolic
|
||||
name ("killed by SIGKILL") and annotate when the kernel wrote a
|
||||
core:("killed by SIGSEGV, core dumped"). Makes the restart line
|
||||
self-explanatory and gives operators a strong breadcrumb when a
|
||||
daemon dies unexpectedly.
|
||||
|
||||
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
||||
---
|
||||
src/service.c | 19 ++++++++++++-------
|
||||
1 file changed, 12 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/service.c b/src/service.c
|
||||
index e930c4fd..127e0099 100644
|
||||
--- a/src/service.c
|
||||
+++ b/src/service.c
|
||||
@@ -2828,13 +2828,18 @@ static void service_retry(svc_t *svc)
|
||||
timeout = ((*restart_cnt) <= (svc->restart_max / 2)) ? 2000 : 5000;
|
||||
/* If a longer timeout was specified in the conf, use that instead. */
|
||||
svc->restart_tmo = max(svc->restart_tmo, timeout);
|
||||
- logit(LOG_CONSOLE|LOG_WARNING, "Service %s[%d] died (%s%d), restarting (retry in %d msec) (attempt: %d/%d)",
|
||||
- svc_ident(svc, NULL, 0), svc->oldpid,
|
||||
- WIFEXITED(svc->status) ? "with exit status: " : "by signal: ",
|
||||
- WIFEXITED(svc->status) ? WEXITSTATUS(svc->status) : WTERMSIG(svc->status),
|
||||
- svc->restart_tmo,
|
||||
- *restart_cnt,
|
||||
- svc->restart_max);
|
||||
+ if (WIFEXITED(svc->status))
|
||||
+ logit(LOG_CONSOLE|LOG_WARNING,
|
||||
+ "Service %s[%d] died (exit status: %d), restarting (retry in %d msec) (attempt: %d/%d)",
|
||||
+ svc_ident(svc, NULL, 0), svc->oldpid, WEXITSTATUS(svc->status),
|
||||
+ svc->restart_tmo, *restart_cnt, svc->restart_max);
|
||||
+ else
|
||||
+ logit(LOG_CONSOLE|LOG_WARNING,
|
||||
+ "Service %s[%d] died (killed by %s%s), restarting (retry in %d msec) (attempt: %d/%d)",
|
||||
+ svc_ident(svc, NULL, 0), svc->oldpid,
|
||||
+ sig_name(WTERMSIG(svc->status)),
|
||||
+ WCOREDUMP(svc->status) ? ", core dumped" : "",
|
||||
+ svc->restart_tmo, *restart_cnt, svc->restart_max);
|
||||
|
||||
svc_unblock(svc);
|
||||
service_step(svc);
|
||||
--
|
||||
2.43.0
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
From 39ebf709e91a89f59e14ac1d1179df170448d09a Mon Sep 17 00:00:00 2001
|
||||
From 72ad44e1e215cded7c8bf3209203b5d1b32e179d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= <lazzer@gmail.com>
|
||||
Date: Tue, 27 Jan 2026 22:54:59 +0100
|
||||
Subject: [PATCH 1/3] Libyang4 compat
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
From 6f7ff746c4016ea6e6d81c7abad088f5a86f8fbf Mon Sep 17 00:00:00 2001
|
||||
From 80634c421c695b191c54d94feda6fb6c32c17eb4 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= <lazzer@gmail.com>
|
||||
Date: Fri, 30 Jan 2026 13:00:12 +0100
|
||||
Subject: [PATCH 2/3] Failed without c++ 23, this adds compatibility layer
|
||||
@@ -67,10 +67,10 @@ index 97c7460079..8fe8b10c05 100644
|
||||
#define zassert assert
|
||||
|
||||
diff --git a/lib/zlog.c b/lib/zlog.c
|
||||
index 157f3323cb..7e7b6f0c25 100644
|
||||
index eb9b1c236b..b1d23a08d9 100644
|
||||
--- a/lib/zlog.c
|
||||
+++ b/lib/zlog.c
|
||||
@@ -789,6 +789,51 @@ void _zlog_assert_failed(const struct xref_assert *xref, const char *extra, ...)
|
||||
@@ -792,6 +792,51 @@ void _zlog_assert_failed(const struct xref_assert *xref, const char *extra, ...)
|
||||
abort();
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
From 868d13c0982a0633e4144d03776358837d92cd8b Mon Sep 17 00:00:00 2001
|
||||
From 939a6bd1c38f8fe37236696a862c659b8fa96b07 Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
Date: Sun, 22 Feb 2026 10:22:06 +0100
|
||||
Subject: [PATCH 3/3] zebra: don't resolve nexthop via inactive connected route
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 1a58edf0d4db2f4b0b894e1b98009380634bc7e1 Mon Sep 17 00:00:00 2001
|
||||
From 2fe4584b70875e1624053f90cecfff25d55925ea Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Tue, 19 Sep 2023 18:38:10 +0200
|
||||
Subject: [PATCH 01/48] net: phy: marvell10g: Support firmware loading on
|
||||
Subject: [PATCH 01/50] net: phy: marvell10g: Support firmware loading on
|
||||
88X3310
|
||||
|
||||
When probing, if a device is waiting for firmware to be loaded into
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 88958b4437b9b6c51a24dbd24692e0e0b27f1438 Mon Sep 17 00:00:00 2001
|
||||
From 7a8bc364e2a1fe55aef7eb189405a799f69bc848 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Tue, 21 Nov 2023 20:15:24 +0100
|
||||
Subject: [PATCH 02/48] net: phy: marvell10g: Fix power-up when strapped to
|
||||
Subject: [PATCH 02/50] net: phy: marvell10g: Fix power-up when strapped to
|
||||
start powered down
|
||||
|
||||
On devices which are hardware strapped to start powered down (PDSTATE
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From ee98438d1e702735344ce470be5b55d2e9abc398 Mon Sep 17 00:00:00 2001
|
||||
From 6d4aa58ed9394b0b842e89fb4f7e080491e75bed Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Wed, 15 Nov 2023 20:58:42 +0100
|
||||
Subject: [PATCH 03/48] net: phy: marvell10g: Add LED support for 88X3310
|
||||
Subject: [PATCH 03/50] net: phy: marvell10g: Add LED support for 88X3310
|
||||
|
||||
Pickup the LEDs from the state in which the hardware reset or
|
||||
bootloader left them, but also support further configuration via
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 9bde8e2bd4dce93ad5e80f5c9f8fc0e1f9a7d1ca Mon Sep 17 00:00:00 2001
|
||||
From deb7af02b1600f51052bca3d7f566019966062aa Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Tue, 12 Dec 2023 09:51:05 +0100
|
||||
Subject: [PATCH 04/48] net: phy: marvell10g: Support LEDs tied to a single
|
||||
Subject: [PATCH 04/50] net: phy: marvell10g: Support LEDs tied to a single
|
||||
media side
|
||||
|
||||
In a combo-port setup, i.e. where both the copper and fiber interface
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From f2e1903dbc979b5da26d94eac73db97bde9f495a Mon Sep 17 00:00:00 2001
|
||||
From 0777c7502a8c98c1f0987a58019ec43d230768eb Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Wed, 27 Mar 2024 10:10:19 +0100
|
||||
Subject: [PATCH 05/48] net: phy: Do not resume PHY when attaching
|
||||
Subject: [PATCH 05/50] net: phy: Do not resume PHY when attaching
|
||||
|
||||
The PHY should not start negotiating with its link-partner until
|
||||
explicitly instructed to do so.
|
||||
@@ -19,7 +19,7 @@ administratively down.
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
|
||||
index 2353d6eced68..9b0983453393 100644
|
||||
index dea8b94286d1..f8c376c26fac 100644
|
||||
--- a/drivers/net/phy/phy_device.c
|
||||
+++ b/drivers/net/phy/phy_device.c
|
||||
@@ -1750,7 +1750,6 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 4a3e8b33268460d283b48214ca158ebd93e96ead Mon Sep 17 00:00:00 2001
|
||||
From 7e47e0fdb4b1d95f58e75d3ee1fd52d2d64866c9 Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
Date: Mon, 4 Mar 2024 16:47:28 +0100
|
||||
Subject: [PATCH 06/48] net: bridge: avoid classifying unknown multicast as
|
||||
Subject: [PATCH 06/50] net: bridge: avoid classifying unknown multicast as
|
||||
mrouters_only
|
||||
|
||||
Unknown multicast, MAC/IPv4/IPv6, should always be flooded according to
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From ef1f7e05f43a38dd81bbbc4bbb8f1e70ad8b4180 Mon Sep 17 00:00:00 2001
|
||||
From 099962fe582c35da76fee0b88ac0051050270e66 Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
Date: Tue, 5 Mar 2024 06:44:41 +0100
|
||||
Subject: [PATCH 07/48] net: bridge: Ignore router ports when forwarding L2
|
||||
Subject: [PATCH 07/50] net: bridge: Ignore router ports when forwarding L2
|
||||
multicast
|
||||
|
||||
Multicast router ports are either statically configured or learned from
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 1b6e4e22f39f95684d91d43c4e4a48c997bc54a9 Mon Sep 17 00:00:00 2001
|
||||
From 003a394f39682faabb14d968a32504306a5a97b5 Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
Date: Thu, 4 Apr 2024 16:36:30 +0200
|
||||
Subject: [PATCH 08/48] net: bridge: drop delay for applying strict multicast
|
||||
Subject: [PATCH 08/50] net: bridge: drop delay for applying strict multicast
|
||||
filtering
|
||||
|
||||
This *local* patch drops the initial delay before applying strict multicast
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 5aa81b3d419d971e9ed6e1d61314075414a584b8 Mon Sep 17 00:00:00 2001
|
||||
From 2d870ee42b147399d95dee79144195919dabb2fe Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Thu, 16 May 2024 14:51:54 +0200
|
||||
Subject: [PATCH 09/48] net: bridge: Differentiate MDB additions from
|
||||
Subject: [PATCH 09/50] net: bridge: Differentiate MDB additions from
|
||||
modifications
|
||||
|
||||
Before this change, the reception of an IGMPv3 report (and analogously
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 7f2bc7bff72bcdbf46a7c40ab19790ccd9a6fca2 Mon Sep 17 00:00:00 2001
|
||||
From 763289c999ed2b0a9ecdb417b32c9d5a2f6b104a Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Fri, 24 Nov 2023 23:29:55 +0100
|
||||
Subject: [PATCH 10/48] nvmem: layouts: onie-tlv: Let device probe even when
|
||||
Subject: [PATCH 10/50] nvmem: layouts: onie-tlv: Let device probe even when
|
||||
TLV is invalid
|
||||
|
||||
Before this change, probing an NVMEM device, expected to contain a
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From 7df1f07e90e3c4846a5770bf9e5d6723d180f61f Mon Sep 17 00:00:00 2001
|
||||
From 7e779610739e75b5d1e3b66bc8b0aa0c8ad68c9f Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
Date: Sun, 11 Aug 2024 11:27:35 +0200
|
||||
Subject: [PATCH 11/48] net: usb: r8152: add r8153b support for link/activity
|
||||
Subject: [PATCH 11/50] net: usb: r8152: add r8153b support for link/activity
|
||||
LEDs
|
||||
|
||||
This patch adds support for the link/activity LEDs on the NanoPi R2S
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
|
||||
index 357f5c733d0b..e7aa0cffadc5 100644
|
||||
index d61074178279..701cc975cf11 100644
|
||||
--- a/drivers/net/usb/r8152.c
|
||||
+++ b/drivers/net/usb/r8152.c
|
||||
@@ -41,6 +41,11 @@
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From e716d8e693ba5e553d79f659f154e120d7799703 Mon Sep 17 00:00:00 2001
|
||||
From fe101bb64d6f6c558c679630733d76bdf4ab3b5f Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
Date: Sun, 10 Aug 2025 18:52:54 +0200
|
||||
Subject: [PATCH 12/48] arm64: dts: mediatek: mt7986a: rename BPi R3 ports to
|
||||
Subject: [PATCH 12/50] arm64: dts: mediatek: mt7986a: rename BPi R3 ports to
|
||||
match case
|
||||
|
||||
For ref. see: https://wiki.banana-pi.org/File:Bpi-r3_Metal_case.jpg
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From 907a2d33e007604e37eaacbc12a82fc930f60c4f Mon Sep 17 00:00:00 2001
|
||||
From 672339f6b4a1b8849cf96fe9b6150bd6a49b15b4 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
Date: Wed, 20 Aug 2025 21:38:24 +0200
|
||||
Subject: [PATCH 13/48] drm/panel-simple: Add a timing for the Raspberry Pi 7"
|
||||
Subject: [PATCH 13/50] drm/panel-simple: Add a timing for the Raspberry Pi 7"
|
||||
panel
|
||||
|
||||
The Raspberry Pi 7" 800x480 panel uses a Toshiba TC358762 DSI
|
||||
@@ -46,7 +46,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
1 file changed, 30 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
|
||||
index 271f93399193..75dbc3cb8135 100644
|
||||
index ef1c4b9299ee..c3512eb819e1 100644
|
||||
--- a/drivers/gpu/drm/panel/panel-simple.c
|
||||
+++ b/drivers/gpu/drm/panel/panel-simple.c
|
||||
@@ -400,7 +400,8 @@ static int panel_simple_get_modes(struct drm_panel *panel,
|
||||
+6
-6
@@ -1,7 +1,7 @@
|
||||
From 02efd1af3a3688da535b7ccfb131acca099b16ed Mon Sep 17 00:00:00 2001
|
||||
From 9ece9e9fc5269cfadeb53d6e8cafc124217f606f Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
Date: Thu, 21 Aug 2025 11:20:23 +0200
|
||||
Subject: [PATCH 14/48] input:touchscreen:edt-ft5x06: Add polled mode
|
||||
Subject: [PATCH 14/50] input:touchscreen:edt-ft5x06: Add polled mode
|
||||
|
||||
Not all hardware has interrupts therefore we need
|
||||
to poll the touchscreen.
|
||||
@@ -10,7 +10,7 @@ to poll the touchscreen.
|
||||
1 file changed, 58 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
|
||||
index bf498bd4dea9..30308d840935 100644
|
||||
index 4efdb467b6c6..6ec1078081d5 100644
|
||||
--- a/drivers/input/touchscreen/edt-ft5x06.c
|
||||
+++ b/drivers/input/touchscreen/edt-ft5x06.c
|
||||
@@ -77,6 +77,9 @@
|
||||
@@ -95,7 +95,7 @@ index bf498bd4dea9..30308d840935 100644
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1327,18 +1354,27 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client)
|
||||
@@ -1330,18 +1357,27 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client)
|
||||
dev_err(&client->dev, "Unable to init MT slots.\n");
|
||||
return error;
|
||||
}
|
||||
@@ -135,7 +135,7 @@ index bf498bd4dea9..30308d840935 100644
|
||||
}
|
||||
|
||||
error = input_register_device(input);
|
||||
@@ -1360,6 +1396,11 @@ static void edt_ft5x06_ts_remove(struct i2c_client *client)
|
||||
@@ -1363,6 +1399,11 @@ static void edt_ft5x06_ts_remove(struct i2c_client *client)
|
||||
{
|
||||
struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client);
|
||||
|
||||
@@ -147,7 +147,7 @@ index bf498bd4dea9..30308d840935 100644
|
||||
edt_ft5x06_ts_teardown_debugfs(tsdata);
|
||||
}
|
||||
|
||||
@@ -1391,7 +1432,8 @@ static int edt_ft5x06_ts_suspend(struct device *dev)
|
||||
@@ -1394,7 +1435,8 @@ static int edt_ft5x06_ts_suspend(struct device *dev)
|
||||
* settings. Disable the irq to avoid adjusting each host till the
|
||||
* device is back in a full functional state.
|
||||
*/
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From bdd547ca4fe915df479094bd4184d0870bfb20fc Mon Sep 17 00:00:00 2001
|
||||
From 3eecd843969fec2c1532c32b39f5e81bb51425b3 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Tue, 12 Mar 2024 10:27:24 +0100
|
||||
Subject: [PATCH 15/48] [FIX] net: dsa: mv88e6xxx: Fix timeout on waiting for
|
||||
Subject: [PATCH 15/50] [FIX] net: dsa: mv88e6xxx: Fix timeout on waiting for
|
||||
PPU on 6393X
|
||||
|
||||
In a multi-chip setup, delays of up to 750ms are observed before the
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From bf7ea26e4ab01fd94b6e43507c9cbb47fca4fc6f Mon Sep 17 00:00:00 2001
|
||||
From 861654c5d7ce2180cc633517221eac516988c813 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Wed, 27 Mar 2024 15:52:43 +0100
|
||||
Subject: [PATCH 16/48] net: dsa: mv88e6xxx: Improve indirect register access
|
||||
Subject: [PATCH 16/50] net: dsa: mv88e6xxx: Improve indirect register access
|
||||
perf on 6393
|
||||
|
||||
When operating in multi-chip mode, the 6393 family maps a subset of
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From cd5282da53b15d91b18b9f365ee4ecc453c69260 Mon Sep 17 00:00:00 2001
|
||||
From 6b84a1215d87bd03432ed6b79bd55e08d84e5125 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Mon, 22 Apr 2024 23:18:01 +0200
|
||||
Subject: [PATCH 17/48] net: dsa: mv88e6xxx: Honor ports being managed via
|
||||
Subject: [PATCH 17/50] net: dsa: mv88e6xxx: Honor ports being managed via
|
||||
in-band-status
|
||||
|
||||
Keep all link parameters in their unforced states when the port is
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 01b7489743f6d4a385e4e2e25fc1988235aa9e0b Mon Sep 17 00:00:00 2001
|
||||
From aaa6dce534b6c509f8e36055660bd670d2bc2758 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Wed, 24 Apr 2024 22:41:04 +0200
|
||||
Subject: [PATCH 18/48] net: dsa: mv88e6xxx: Limit rsvd2cpu policy to user
|
||||
Subject: [PATCH 18/50] net: dsa: mv88e6xxx: Limit rsvd2cpu policy to user
|
||||
ports on 6393X
|
||||
|
||||
For packets with a DA in the IEEE reserved L2 group range, originating
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 1c8c377c0d8638ed2d1d43414ea9bcb7522788f0 Mon Sep 17 00:00:00 2001
|
||||
From f00c52f509a093dc503d14854cc8ae4ae2b5be11 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Tue, 28 May 2024 10:38:42 +0200
|
||||
Subject: [PATCH 19/48] net: dsa: tag_dsa: Use tag priority as initial
|
||||
Subject: [PATCH 19/50] net: dsa: tag_dsa: Use tag priority as initial
|
||||
skb->priority
|
||||
|
||||
Use the 3-bit priority field from the DSA tag as the initial packet
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 177bb276b21b8d2ddc8f0c142155e56aa5a0d021 Mon Sep 17 00:00:00 2001
|
||||
From 64c5a7544da9777934ff971ec4b3c46e97e653ae Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Tue, 16 Jan 2024 16:00:55 +0100
|
||||
Subject: [PATCH 20/48] net: dsa: Support MDB memberships whose L2 addresses
|
||||
Subject: [PATCH 20/50] net: dsa: Support MDB memberships whose L2 addresses
|
||||
overlap
|
||||
|
||||
Multiple IP multicast groups (32 for v4, 2^80 for v6) map to the same
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 894c8e45709a629c4b10d079b31f1f4800a43677 Mon Sep 17 00:00:00 2001
|
||||
From 6d9c872aafa7ec5a330778c82af2dde46e0959b1 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Thu, 21 Mar 2024 19:12:15 +0100
|
||||
Subject: [PATCH 21/48] net: dsa: Support EtherType based priority overrides
|
||||
Subject: [PATCH 21/50] net: dsa: Support EtherType based priority overrides
|
||||
|
||||
---
|
||||
include/net/dsa.h | 4 ++++
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 5004969cb16e3c23e517105ff2030a76a21df966 Mon Sep 17 00:00:00 2001
|
||||
From ff0b28ef9545851cf670d2786e71db7868fb310f Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Fri, 22 Mar 2024 16:15:43 +0100
|
||||
Subject: [PATCH 22/48] net: dsa: mv88e6xxx: Support EtherType based priority
|
||||
Subject: [PATCH 22/50] net: dsa: mv88e6xxx: Support EtherType based priority
|
||||
overrides
|
||||
|
||||
---
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 9784e108d7e23741bfe5f2793faec26ff213ca86 Mon Sep 17 00:00:00 2001
|
||||
From d92fe419bd632fcd07254b95a11f5a2ada340555 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Tue, 28 May 2024 11:04:22 +0200
|
||||
Subject: [PATCH 23/48] net: dsa: mv88e6xxx: Add mqprio qdisc support
|
||||
Subject: [PATCH 23/50] net: dsa: mv88e6xxx: Add mqprio qdisc support
|
||||
|
||||
Add support for attaching mqprio qdisc's to mv88e6xxx ports and use
|
||||
the packet's traffic class as the outgoing priority when no PCP bits
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 7a5d8a80b8c5df68956486da53b06548b7d3e196 Mon Sep 17 00:00:00 2001
|
||||
From 71ad38fb7f6bde1dedc16f1939ce2d224feb7e60 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Wed, 29 May 2024 13:20:41 +0200
|
||||
Subject: [PATCH 24/48] net: dsa: mv88e6xxx: Use VLAN prio over IP when both
|
||||
Subject: [PATCH 24/50] net: dsa: mv88e6xxx: Use VLAN prio over IP when both
|
||||
are available
|
||||
|
||||
Switch the priority sourcing precdence to prefer VLAN PCP over IP
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 43effaa176813e0e770c224582dd99c0e139979c Mon Sep 17 00:00:00 2001
|
||||
From dd65f95bbbe1897452ddb520699a0c758f0a495c Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Tue, 26 Nov 2024 19:45:59 +0100
|
||||
Subject: [PATCH 25/48] [FIX] net: dsa: mv88e6xxx: Trap locally terminated
|
||||
Subject: [PATCH 25/50] [FIX] net: dsa: mv88e6xxx: Trap locally terminated
|
||||
VLANs
|
||||
|
||||
Before this change, in a setup like the following, packets assigned to
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From c51a3e7a888b1ad8606e1b25cd7c96e65f93b15a Mon Sep 17 00:00:00 2001
|
||||
From 79f68061eb996858459b131ffed45e3abeaf37df Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
Date: Thu, 16 Jan 2025 12:35:12 +0100
|
||||
Subject: [PATCH 26/48] net: dsa: mv88e6xxx: collapse disabled state into
|
||||
Subject: [PATCH 26/50] net: dsa: mv88e6xxx: collapse disabled state into
|
||||
blocking
|
||||
|
||||
This patch changes the behavior of switchcore ports wrt. the port state.
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 944eb4b7e5511cfd115124fd54a79cd9d827cc1c Mon Sep 17 00:00:00 2001
|
||||
From baeccc8d6402fca534a9706e1343e35bd04eb505 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
Date: Wed, 12 Feb 2025 22:03:14 +0100
|
||||
Subject: [PATCH 27/48] net: dsa: mv88e6xxx: Only activate LAG offloading when
|
||||
Subject: [PATCH 27/50] net: dsa: mv88e6xxx: Only activate LAG offloading when
|
||||
bridged
|
||||
|
||||
The current port isolation scheme for mv88e6xxx is detailed here:
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From b6e365e47484728bfc50b52ee066f8fb2763bec7 Mon Sep 17 00:00:00 2001
|
||||
From e1f1e6e36c398652f5bf121f4ae4c5b0c5af3e8a Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
Date: Wed, 14 Jan 2026 18:22:41 +0100
|
||||
Subject: [PATCH 28/48] net: dsa: mv88e6xxx: Add LED support for 6393X
|
||||
Subject: [PATCH 28/50] net: dsa: mv88e6xxx: Add LED support for 6393X
|
||||
|
||||
Original commit:
|
||||
commit 462277b926140ee2d231317e92afb6cabf640268
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 756f5d27cfcb0ae6f5b22aa481c002b89f50bb66 Mon Sep 17 00:00:00 2001
|
||||
From 787b93706592b82184bb5d2cf38ebd6ebc33068c Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
Date: Thu, 15 Jan 2026 22:47:37 +0100
|
||||
Subject: [PATCH 29/48] wifi: brcmfmac: support deletion and recreation of
|
||||
Subject: [PATCH 29/50] wifi: brcmfmac: support deletion and recreation of
|
||||
primary interface
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From a1a034f88eebe3ac427ee3eded3d701df373ee24 Mon Sep 17 00:00:00 2001
|
||||
From 362d691d8554b1deb7973d622cb5e264422c71d0 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
Date: Mon, 19 Jan 2026 13:06:53 +0100
|
||||
Subject: [PATCH 30/48] wifi: brcmfmac: check connection state before querying
|
||||
Subject: [PATCH 30/50] wifi: brcmfmac: check connection state before querying
|
||||
station info
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From bcfe1fc5235c276c41b46bf3281a6ed1263999f8 Mon Sep 17 00:00:00 2001
|
||||
From 68421f2b9eb236a92faf983869513384c2f710d2 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
Date: Tue, 20 Jan 2026 20:12:10 +0100
|
||||
Subject: [PATCH 31/48] wifi: brcmfmac: suppress log spam for
|
||||
Subject: [PATCH 31/50] wifi: brcmfmac: suppress log spam for
|
||||
regulatory-restricted channels
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 54eaebf53119b5f64155739e1decf9d290f2a843 Mon Sep 17 00:00:00 2001
|
||||
From d56be4ebfa036e2947c83b72a409deaa6cc19cf6 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
Date: Tue, 20 Jan 2026 20:18:45 +0100
|
||||
Subject: [PATCH 32/48] wifi: brcmfmac: reduce log noise during AP to station
|
||||
Subject: [PATCH 32/50] wifi: brcmfmac: reduce log noise during AP to station
|
||||
transition
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 97379c6ac8d1a770a648c4efa9b0e1e8149abefe Mon Sep 17 00:00:00 2001
|
||||
From 7748aa9623b1118451faa821a7e10fedda62d1a0 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
Date: Tue, 17 Feb 2026 21:59:59 +0100
|
||||
Subject: [PATCH 33/48] net: phy: air_en8811h: add OF device table for
|
||||
Subject: [PATCH 33/50] net: phy: air_en8811h: add OF device table for
|
||||
auto-loading
|
||||
|
||||
mdio_uevent() only emits an OF-style MODALIAS via
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From f2048d36925ccbd8717bb0ecc813d3579d868c87 Mon Sep 17 00:00:00 2001
|
||||
From 90cf1591f68e8008679418a20605a784d90f1d8a Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
Date: Fri, 20 Sep 2024 12:05:18 +0100
|
||||
Subject: [PATCH 34/48] drm: vc4: dsi: enable video and then retry failed
|
||||
Subject: [PATCH 34/50] drm: vc4: dsi: enable video and then retry failed
|
||||
transfers
|
||||
|
||||
The DSI block appears to be able to come up stuck in a condition where
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 9216d1b629afdcff20cfcd196a8c89c07be83820 Mon Sep 17 00:00:00 2001
|
||||
From 2d326923d4009abd4966ca037f471b223ff7e415 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
Date: Wed, 8 Jun 2022 17:23:47 +0100
|
||||
Subject: [PATCH 35/48] drm: vc4: dsi: Clocks should be running before reset
|
||||
Subject: [PATCH 35/50] drm: vc4: dsi: Clocks should be running before reset
|
||||
|
||||
The initialisation sequence differs slightly from the documentation
|
||||
in that the clocks are meant to be running before resets and
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 3d24f34e92e4ed3da2b945b8ca7884a0a05f4cff Mon Sep 17 00:00:00 2001
|
||||
From 9d757c815316dd31c4e1507907d0d455e0681a94 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
Date: Fri, 5 Apr 2024 17:51:55 +0100
|
||||
Subject: [PATCH 36/48] drm/vc4: Ensure DSI is enabled for FIFO resets
|
||||
Subject: [PATCH 36/50] drm/vc4: Ensure DSI is enabled for FIFO resets
|
||||
|
||||
The block must be enabled for the FIFO resets to be actioned,
|
||||
so ensure this is the case.
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 62c6ef5d223b714484400aac1fbcddcacb46326d Mon Sep 17 00:00:00 2001
|
||||
From e080c511038635989631ac5cdb17ec279d622560 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
Date: Thu, 26 May 2022 18:56:19 +0100
|
||||
Subject: [PATCH 37/48] drm: vc4: Reset DSI AFE on disable
|
||||
Subject: [PATCH 37/50] drm: vc4: Reset DSI AFE on disable
|
||||
|
||||
vc4_dsi_bridge_disable wasn't resetting things during shutdown,
|
||||
so add that in.
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 403bf67e49eb5d3063346338570e5fceadc2027b Mon Sep 17 00:00:00 2001
|
||||
From 5f90b134d655db7ba304f474c0bea07f0d70b210 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
Date: Wed, 20 Nov 2024 13:58:08 +0000
|
||||
Subject: [PATCH 38/48] drm: vc4: dsi: Handle the different command FIFO widths
|
||||
Subject: [PATCH 38/50] drm: vc4: dsi: Handle the different command FIFO widths
|
||||
|
||||
DSI0 and DSI1 have different widths for the command FIFO (24bit
|
||||
vs 32bit), but the driver was assuming the 32bit width of DSI1
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 1b4f1b6cce1e547900f72567cde80333cdad0f76 Mon Sep 17 00:00:00 2001
|
||||
From 4b540455f16b7534ba4315e7ed0f24ef28c54a12 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
Date: Tue, 9 Jan 2024 17:37:00 +0000
|
||||
Subject: [PATCH 39/48] drm/bridge: tc358762: Program the DPI mode into the
|
||||
Subject: [PATCH 39/50] drm/bridge: tc358762: Program the DPI mode into the
|
||||
chip
|
||||
|
||||
The autodetection of resolution/timing by the TC358762 can lead
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 76194b41b768ac593fe65e148b678518c415707c Mon Sep 17 00:00:00 2001
|
||||
From 43486d84870b3c17e7cbfcc657d4f1c212b965df Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
Date: Tue, 9 Jan 2024 18:44:49 +0000
|
||||
Subject: [PATCH 40/48] drm/bridge: tc358762: revert move ops to enable
|
||||
Subject: [PATCH 40/50] drm/bridge: tc358762: revert move ops to enable
|
||||
|
||||
Reverts 8a4b2fc9c91a ("drm/bridge: tc358762: Split register programming from pre-enable to enable")
|
||||
as we want the config commands sent before video starts.
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From b6982edd767b28e98243bc82916f9668bf0061f3 Mon Sep 17 00:00:00 2001
|
||||
From d884542501e5aca327dd899aa07ee4a8db671378 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
Date: Sat, 4 Apr 2026 18:04:19 +0200
|
||||
Subject: [PATCH 41/48] drm/bridge: tc358762: Set pre_enabled on pre_enable to
|
||||
Subject: [PATCH 41/50] drm/bridge: tc358762: Set pre_enabled on pre_enable to
|
||||
prevent regulator imbalance
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 2f40a2b7a09b4f608ebb97a0e80510ddf2612830 Mon Sep 17 00:00:00 2001
|
||||
From 65babbd17fdf8a4f9a39dee4495e47e8d99b4fb3 Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
Date: Sun, 5 Apr 2026 11:33:00 +0200
|
||||
Subject: [PATCH 42/48] net/pcs: add standalone PCS registration infrastructure
|
||||
Subject: [PATCH 42/50] net/pcs: add standalone PCS registration infrastructure
|
||||
|
||||
Add a simple registration mechanism that allows platform PCS drivers to
|
||||
register their phylink_pcs instances, and consumers (e.g. Ethernet MAC
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 2e49d3e1bd7afc5ba4519c49bf87bcbe208d2581 Mon Sep 17 00:00:00 2001
|
||||
From 6b81b7a7a5a88a6cb59bb1f1864c3301e6d7328e Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
Date: Mon, 6 Apr 2026 14:14:23 +0200
|
||||
Subject: [PATCH 43/48] net/pcs: add MediaTek MT7988 USXGMII PCS driver
|
||||
Subject: [PATCH 43/50] net/pcs: add MediaTek MT7988 USXGMII PCS driver
|
||||
|
||||
Add a PCS driver for the USXGMII subsystem found in the MediaTek MT7988
|
||||
SoC (usxgmiisys0 at 0x10080000, usxgmiisys1 at 0x10081000). The hardware
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user