Skip to content

Conversation

@sairon
Copy link
Member

@sairon sairon commented Oct 30, 2025

Following the deprecation announced in May 2025, HA Core 2025.12.x won't support 32-bit architectures anymore. This affects the following boards:

  • ASUS Tinker
  • ODROID XU4
  • Raspberry Pi 2
  • Raspberry Pi 3 (32-bit only, rpi3-64 is still available)
  • Raspberry Pi 4 (32-bit only, rpi4-64 is still available)

HAOS 17.0 will be released after the December release of Core, so it's not desirable to include outdated components that are no longer supported in the OS builds.

Closes #4372

Summary by CodeRabbit

  • Documentation

    • Updated supported hardware list (removed several board entries)
  • Chores

    • Removed support and board-specific build/boot configurations for Raspberry Pi (multiple models), ASUS Tinker Board, and ODROID‑XU4
    • Cleaned up associated device-tree patches, boot scripts, kernel presets, and package selections

@sairon sairon added board/raspberrypi Raspberry Pi Boards board/odroid Hardkernel's ODROID Boards os board/tinker ASUS' Tinker Boards labels Oct 30, 2025
@coderabbitai
Copy link

coderabbitai bot commented Oct 30, 2025

📝 Walkthrough

Walkthrough

The diff removes build support and board-specific artifacts for several 32‑bit targets (ASUS Tinkerboard, ODROID‑XU4, Raspberry Pi 2/3/4 and related RPi entries). Deletions include board metadata, defconfigs, kernel/u‑boot configs and scripts, device‑tree patches, partition/image descriptors, and associated packaging/build conditionals.

Changes

Cohort / File(s) Change Summary
Documentation
Documentation/kernel.md
Removed rows for Raspberry Pi and Tinker Board from the kernel version table.
ASUS Tinkerboard board files
buildroot-external/board/asus/tinker/*
Deleted board directory files: build hooks (hassos-hook.sh), boot scripts (uboot-boot.ush), u-boot config (uboot.config), kernel.config, meta, partition/image cfgs (image-spl-spl.cfg, partition-spl-spl.cfg), and patches under patches/ (DTS/U-Boot/kernel/audio/driver changes).
Hardkernel ODROID‑XU4 board files
buildroot-external/board/hardkernel/odroid-xu4/*
Deleted board directory files: build hooks, boot scripts (uboot-boot.ush), u-boot config, kernel.config, meta, partition/image cfgs, and kernel/regulator patch under patches/.
Raspberry Pi board metadata
buildroot-external/board/raspberrypi/rpi2/meta, .../rpi3/meta, .../rpi4/meta
Removed board-specific exported variables (BOARD_ID, BOARD_NAME, CHASSIS, BOOTLOADER, KERNEL_FILE, PARTITION_TABLE_TYPE, BOOT_SIZE, BOOT_SPL, BOOT_ENV_SIZE, SUPERVISOR_MACHINE, SUPERVISOR_ARCH).
Buildroot kernel/U-Boot fragments
buildroot-external/board/raspberrypi/kernel-armv7.config, buildroot-external/board/raspberrypi/rpi4/uboot.config
Removed ARM32 kernel config lines and NVMe-related U-Boot config symbols.
Buildroot defconfigs
buildroot-external/configs/*_defconfig
rpi2_defconfig, rpi3_defconfig, rpi4_defconfig, tinker_defconfig, odroid_xu4_defconfig
Removed entire defconfig contents (BR2_* settings for toolchain, kernel, packages, overlays, bootloader, services).
Packages / packaging logic
buildroot-external/package/hardkernel-boot/Config.in, .../hardkernel-boot/hardkernel-boot.mk, buildroot-external/package/rpi-rf-mod/Config.in, .../rpi-rf-mod/rpi-rf-mod.mk
Removed ODROID‑XU4 and Tinkerboard package config/options and conditional branches.
OTA/build hooks & scripts
buildroot-external/ota/rauc-hook, scripts/update-kernel-upstream.sh
Removed ODROID‑XU4-specific boot0 flashing in rauc hook and removed tinker from defconfigs list / Documentation/kernel.md patching in update script.
Misc board files
assorted buildroot-external/.../cmdline.txt, image-spl-spl.cfg, partition-spl-spl.cfg, patches/...
Removed kernel cmdline entries (console params), SPL image/partition blocks, and multiple device-tree/driver/U-Boot patches related to the removed boards.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  rect rgb(240,248,255)
    note right of UBoot: (Previously present U-Boot boot script flow)
  end
  participant UBoot as U-Boot environment
  participant BootScript as board uboot-boot.ush
  participant MMC as MMC/device
  participant Kernel as Kernel + DTB
  UBoot->>BootScript: load env & boot state
  BootScript->>MMC: read haos-config.txt / cmdline / overlays
  BootScript->>BootScript: select DTB (slot / fallback)
  BootScript->>BootScript: apply overlays (if any)
  BootScript->>MMC: load zImage (selected slot)
  BootScript->>Kernel: boot with composed bootargs and DTB
  Kernel-->>BootScript: (boot result)
  BootScript->>UBoot: update/persist BOOT_* state or reset on failure
Loading

Note: the above flow represents the removed boot-script control path (deleted from repository).

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Files are numerous and heterogeneous (configs, scripts, patches, packaging), requiring cross-checks.
  • Pay special attention to:
    • Any remaining references to removed BOARD_ID / defconfigs across build scripts and CI.
    • Device-tree/patch removals that might affect shared DTS or drivers used by other boards.
    • U-Boot boot-script deletions — ensure no alternate boot logic depends on them.
    • update-kernel-upstream.sh changes (regex/defconfig list) to avoid unintended exclusions.

Pre-merge checks and finishing touches

✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'Remove support of armv7 targets' directly and clearly summarizes the main change: removing build support for 32-bit ARM architecture boards.
Linked Issues check ✅ Passed All code changes align with the linked issue #4372 objective to stop building 32-bit (armv7) boards: Tinker, ODROID-XU4, RPI2, RPI3, and RPI4 32-bit support removed from defconfigs, board configs, patches, and build scripts.
Out of Scope Changes check ✅ Passed All changes are in-scope: documentation updates to kernel.md, removal of board-specific configurations, kernel configs, patches, U-Boot settings, defconfigs, and build tooling—all directly supporting 32-bit target removal.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch remove-deprecated-archs

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between 3e40276 and e40c9cb.

📒 Files selected for processing (45)
  • Documentation/kernel.md (0 hunks)
  • buildroot-external/board/asus/hassos-hook.sh (0 hunks)
  • buildroot-external/board/asus/tinker/boot-env.txt (0 hunks)
  • buildroot-external/board/asus/tinker/cmdline.txt (0 hunks)
  • buildroot-external/board/asus/tinker/image-spl-spl.cfg (0 hunks)
  • buildroot-external/board/asus/tinker/kernel.config (0 hunks)
  • buildroot-external/board/asus/tinker/meta (0 hunks)
  • buildroot-external/board/asus/tinker/partition-spl-spl.cfg (0 hunks)
  • buildroot-external/board/asus/tinker/patches/README.md (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0001-Revert-ARM-dts-rockchip-use-DMA-channels-for-UARTs-f.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0002-ARM-DTS-rk3288-tinker-Defining-the-SPI-interface.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0003-ARM-dts-rockchip-enable-I2C1-4-on-rk3288-tinker.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0004-RK3288-DTSI-rk3288.dtsi-Add-missing-SPI2-pinctrl.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0005-ARM-DTSI-rk3288-tinker-Improving-the-CPU-max-voltage.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0006-drivers-mmc-dw-mci-rockchip-Handle-ASUS-Tinkerboard-.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0007-ARM-dts-rockchip-Add-Bluetooth-to-rk3288-tinker.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0008-usb-audio-add-ASUS-TinkerBoard-s-ALC4040.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/uboot/0001-pmic-enable-LDO2-vcc33_mipi-at-bootup.patch (0 hunks)
  • buildroot-external/board/asus/tinker/uboot-boot.ush (0 hunks)
  • buildroot-external/board/asus/tinker/uboot.config (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/cmdline.txt (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/hassos-hook.sh (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/image-spl-spl.cfg (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/kernel.config (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/meta (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/partition-spl-spl.cfg (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/patches/linux/0001-ODROID-XU4-regulator-s2mps11-add-ethernet-power-rese.patch (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/uboot-boot.ush (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/uboot.config (0 hunks)
  • buildroot-external/board/raspberrypi/kernel-armv7.config (0 hunks)
  • buildroot-external/board/raspberrypi/rpi2/meta (0 hunks)
  • buildroot-external/board/raspberrypi/rpi3/meta (0 hunks)
  • buildroot-external/board/raspberrypi/rpi4/meta (0 hunks)
  • buildroot-external/board/raspberrypi/rpi4/uboot.config (0 hunks)
  • buildroot-external/configs/odroid_xu4_defconfig (0 hunks)
  • buildroot-external/configs/rpi2_defconfig (0 hunks)
  • buildroot-external/configs/rpi3_defconfig (0 hunks)
  • buildroot-external/configs/rpi4_defconfig (0 hunks)
  • buildroot-external/configs/tinker_defconfig (0 hunks)
  • buildroot-external/ota/rauc-hook (0 hunks)
  • buildroot-external/package/hardkernel-boot/Config.in (0 hunks)
  • buildroot-external/package/hardkernel-boot/hardkernel-boot.mk (0 hunks)
  • buildroot-external/package/rpi-rf-mod/Config.in (0 hunks)
  • buildroot-external/package/rpi-rf-mod/rpi-rf-mod.mk (0 hunks)
  • scripts/update-kernel-upstream.sh (1 hunks)
💤 Files with no reviewable changes (44)
  • buildroot-external/package/hardkernel-boot/hardkernel-boot.mk
  • buildroot-external/board/asus/tinker/image-spl-spl.cfg
  • buildroot-external/board/raspberrypi/rpi4/uboot.config
  • buildroot-external/package/rpi-rf-mod/Config.in
  • buildroot-external/board/asus/tinker/patches/linux/0001-Revert-ARM-dts-rockchip-use-DMA-channels-for-UARTs-f.patch
  • buildroot-external/board/hardkernel/odroid-xu4/kernel.config
  • buildroot-external/board/asus/hassos-hook.sh
  • buildroot-external/configs/rpi2_defconfig
  • buildroot-external/configs/odroid_xu4_defconfig
  • buildroot-external/board/asus/tinker/meta
  • buildroot-external/configs/rpi4_defconfig
  • buildroot-external/board/asus/tinker/patches/linux/0002-ARM-DTS-rk3288-tinker-Defining-the-SPI-interface.patch
  • buildroot-external/ota/rauc-hook
  • buildroot-external/board/hardkernel/odroid-xu4/cmdline.txt
  • buildroot-external/board/raspberrypi/kernel-armv7.config
  • buildroot-external/board/hardkernel/odroid-xu4/uboot-boot.ush
  • buildroot-external/board/hardkernel/odroid-xu4/image-spl-spl.cfg
  • buildroot-external/board/asus/tinker/cmdline.txt
  • buildroot-external/board/asus/tinker/patches/linux/0006-drivers-mmc-dw-mci-rockchip-Handle-ASUS-Tinkerboard-.patch
  • buildroot-external/board/asus/tinker/boot-env.txt
  • buildroot-external/board/hardkernel/odroid-xu4/hassos-hook.sh
  • buildroot-external/board/raspberrypi/rpi4/meta
  • buildroot-external/board/asus/tinker/patches/linux/0004-RK3288-DTSI-rk3288.dtsi-Add-missing-SPI2-pinctrl.patch
  • buildroot-external/configs/tinker_defconfig
  • buildroot-external/board/asus/tinker/uboot-boot.ush
  • buildroot-external/board/asus/tinker/uboot.config
  • buildroot-external/board/asus/tinker/partition-spl-spl.cfg
  • buildroot-external/board/asus/tinker/patches/README.md
  • buildroot-external/configs/rpi3_defconfig
  • buildroot-external/board/asus/tinker/kernel.config
  • buildroot-external/board/raspberrypi/rpi2/meta
  • buildroot-external/board/hardkernel/odroid-xu4/uboot.config
  • buildroot-external/board/hardkernel/odroid-xu4/meta
  • buildroot-external/package/hardkernel-boot/Config.in
  • buildroot-external/board/asus/tinker/patches/linux/0003-ARM-dts-rockchip-enable-I2C1-4-on-rk3288-tinker.patch
  • buildroot-external/package/rpi-rf-mod/rpi-rf-mod.mk
  • Documentation/kernel.md
  • buildroot-external/board/asus/tinker/patches/linux/0007-ARM-dts-rockchip-Add-Bluetooth-to-rk3288-tinker.patch
  • buildroot-external/board/raspberrypi/rpi3/meta
  • buildroot-external/board/asus/tinker/patches/linux/0008-usb-audio-add-ASUS-TinkerBoard-s-ALC4040.patch
  • buildroot-external/board/hardkernel/odroid-xu4/partition-spl-spl.cfg
  • buildroot-external/board/asus/tinker/patches/uboot/0001-pmic-enable-LDO2-vcc33_mipi-at-bootup.patch
  • buildroot-external/board/asus/tinker/patches/linux/0005-ARM-DTSI-rk3288-tinker-Improving-the-CPU-max-voltage.patch
  • buildroot-external/board/hardkernel/odroid-xu4/patches/linux/0001-ODROID-XU4-regulator-s2mps11-add-ethernet-power-rese.patch
🧰 Additional context used
📓 Path-based instructions (1)
*/**(html|markdown|md)

⚙️ CodeRabbit configuration file

*/**(html|markdown|md): - For instructional content in documentation, use a direct and authoritative tone. Avoid expressions of politeness such as 'may' or 'please', and ensure the goal of the instruction is fronted.

  • Apply the Microsoft Style Guide to ensure documentation maintains clarity and conciseness.
  • In step-by-step instructions, front the location phrase in the instructional sentence.
  • In step-by-step instructions, front the 'goal' in the instructional sentence.
  • In step-by-step instructions, if in doubt what to front, front the 'goal' before the location phrase in the instructional sentence.
  • do not hyphenate terms like 'top-right' or 'bottom-left' with 'corner'

*/**(html|markdown|md): - Use bold to mark UI strings.

  • If "" are used to mark UI strings, replace them by bold.

  • Be brief in your replies and don't add fluff like "thank you for..." and "Please let me know if"

  • Use sentence-style capitalization also in headings.

do not comment on HTML used for icons

Avoid flagging inline HTML for embedding videos in future reviews for this repository.

Files:

  • scripts/update-kernel-upstream.sh
🔇 Additional comments (1)
scripts/update-kernel-upstream.sh (1)

17-19: No changes needed.

The script update correctly removes all ODROID-C2, C4, M1, M1S and N2 boards are 64-bit ARMv8 processors, so the odroid_* wildcard pattern is appropriate. Verification confirms:

  • tinker_defconfig removed ✓
  • odroid_xu4_defconfig removed ✓
  • Remaining ODROID defconfigs (c2, c4, m1, m1s, n2) are all 64-bit boards ✓

Lines 17 and 19 correctly implement the PR objective to remove 32-bit (armv7) board support.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@jens-maus
Copy link
Member

  • Raspberry Pi 3 (32-bit only, rpi3-64 is still available)
  • Raspberry Pi 4 (32-bit only, rpi4-64 is still available)

What about renaming the rpi3-64 and rpi4-64 to simply rpi3 and rpi4 after the 32bit deprecation? And probably also the rpi5-64 for which anyway there is and was no 32bit at all. I think it would make sense to get rid of the -64 addition, or is there something that would hinder such a rename?

@agners
Copy link
Member

agners commented Nov 3, 2025

How will this affect version json updates? Ideally we should stop updating the version number for the ones no longer supported here, but from what I remember we simply update all boards always no? 🤔

@sairon
Copy link
Member Author

sairon commented Nov 4, 2025

@jens-maus

What about renaming the rpi3-64 and rpi4-64 to simply rpi3 and rpi4 after the 32bit deprecation? And probably also the rpi5-64 for which anyway there is and was no 32bit at all. I think it would make sense to get rid of the -64 addition, or is there something that would hinder such a rename?

Discussed it shortly with @agners and we kind of agreed that this would cause more trouble to make it worth. We will need to handle these changes both in the RAUC hooks and on Supervisor side, to make sure that the old -64 boards migrate correctly to the unsuffixed ones and that the updater knows about this change too. Similarly, the change will also prevent from downgrades (which we don't have a reason to block) as there's currently no migration path that allows for installing e.g. rpi3-64 compatible bundle on rpi3 system.


@agners

How will this affect version json updates? Ideally we should stop updating the version number for the ones no longer supported here, but from what I remember we simply update all boards always no? 🤔

Supervisor handles missing board gracefully, so all that should be needed is to remove those entries, ideally before we run the build (i.e. after merging this PR in dev.json and then before the releases of beta and stable in other JSONs).

@sairon sairon force-pushed the remove-deprecated-archs branch from 3e40276 to e40c9cb Compare November 4, 2025 10:12
sairon added a commit to home-assistant/version that referenced this pull request Nov 4, 2025
@sairon sairon requested a review from agners November 4, 2025 10:16
Copy link
Member

@agners agners left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With that in mind, LGTM!

@sairon sairon merged commit ba6876d into dev Nov 4, 2025
3 checks passed
@sairon sairon deleted the remove-deprecated-archs branch November 4, 2025 12:22
sairon added a commit to home-assistant/version that referenced this pull request Nov 4, 2025
@github-actions github-actions bot locked and limited conversation to collaborators Nov 12, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

board/odroid Hardkernel's ODROID Boards board/raspberrypi Raspberry Pi Boards board/tinker ASUS' Tinker Boards cla-signed hacktoberfest os

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove build of boards with deprecated architectures

4 participants