Skip to content

Conversation

@puddly
Copy link
Collaborator

@puddly puddly commented Jun 30, 2025

Home Assistant Core 2025.7.0 will install the correct firmware before installing this addon, removing the need for autoflash_firmware. This will allow us to release OpenThread RCP firmware updates independently from the addon.

Summary by CodeRabbit

  • Documentation

    • Clarified firmware requirements for 802.15.4 radios and removed the configurable "autoflash_firmware" option.
    • Added changelog entry for version 2.14.0 noting removal of onboard firmware flashing.
  • Chores

    • Removed built-in firmware flashing tooling and related service setup.
    • Updated configuration to require Home Assistant Core 2025.7.0.
    • Added startup handling for any legacy autoflash setting.

@puddly puddly requested a review from agners June 30, 2025 17:50
@puddly puddly marked this pull request as ready for review June 30, 2025 18:47
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jun 30, 2025

📝 Walkthrough

Walkthrough

Firmware flashing and related autoflash configuration were removed from the OpenThread Border Router add-on; responsibility for flashing supported 802.15.4 radios was moved to Home Assistant Core (minimum Core 2025.7.0). Build, service, script, docs, config and translation references to autoflash/universal-silabs-flasher were removed or updated; an early compatibility read was added to the otbr-agent runtime script.

Changes

Cohort / File(s) Change Summary
Changelog
openthread_border_router/CHANGELOG.md
Added new entry for version 2.14.0 documenting removal of firmware flashing from the add-on and handoff to Home Assistant Core 2025.7.0.
Documentation
openthread_border_router/DOCS.md
Clarified radio firmware requirement: radios must be flashed with OpenThread RCP firmware; removed addon-level autoflash_firmware option (flashing handled by Core).
Build files
openthread_border_router/Dockerfile, openthread_border_router/build.yaml
Removed UNIVERSAL_SILABS_FLASHER build argument and removed installation of the universal-silabs-flasher Python package.
Configuration
openthread_border_router/config.yaml
Bumped add-on version to 2.14.0, raised minimum Home Assistant to 2025.7.0, removed autoflash_firmware option and its schema.
Removed s6 service metadata
openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/universal-silabs-flasher/notification-fd, .../type, .../up
Deleted s6 service files for the universal-silabs-flasher oneshot service (notification fd, type declaration, run/up metadata).
Removed flashing script
openthread_border_router/rootfs/etc/s6-overlay/scripts/universal-silabs-flasher-up
Deleted full script that detected device types and invoked universal-silabs-flasher to perform firmware flashing.
Translations
openthread_border_router/translations/en.yaml
Removed autoflash_firmware translation strings (title and description).
Runtime change (otbr-agent)
openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent/run
Added an early block that checks for an autoflash_firmware option via bashio and applies it if present (compatibility read), executed before existing network/interface initialization.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant OTBR_Addon as "OTBR Add-on"
    participant HA_Core as "Home Assistant Core"

    User->>OTBR_Addon: Install/configure add-on
    Note right of OTBR_Addon: Add-on no longer contains flasher service or script
    OTBR_Addon--xHA_Core: (does not perform flashing)
    HA_Core->>User: Detect supported radio and flash OpenThread RCP firmware
    Note over HA_Core: Flashing handled by Core (min 2025.7.0)
    OTBR_Addon->>OTBR_Addon: Read compatibility `autoflash_firmware` option early (if present)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title clearly states the key change in the pull request, which is the removal of firmware flashing functionality from the OpenThread Border Router add-on, and uses the conventional component prefix for clarity. It succinctly reflects the primary intent without unnecessary detail or vague terminology and aligns with the modifications described in documentation, configuration, and service scripts.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 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 5331171 and b04d2d9.

📒 Files selected for processing (2)
  • openthread_border_router/CHANGELOG.md (1 hunks)
  • openthread_border_router/config.yaml (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • openthread_border_router/CHANGELOG.md
🧰 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:

  • openthread_border_router/config.yaml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Build amd64 openthread_border_router add-on
  • GitHub Check: Build aarch64 openthread_border_router add-on

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.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
openthread_border_router/DOCS.md (1)

15-18: Use the correct indefinite article before “802.15.4”

-You will need a 802.15.4 capable radio supported by OpenThread
+You will need an 802.15.4-capable radio supported by OpenThread

This fixes the a/an rule flagged by LanguageTool and adds a hyphen to compound-modify “radio”.

📜 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 81aaeaa and 689a0d9.

📒 Files selected for processing (10)
  • openthread_border_router/CHANGELOG.md (1 hunks)
  • openthread_border_router/DOCS.md (1 hunks)
  • openthread_border_router/Dockerfile (0 hunks)
  • openthread_border_router/build.yaml (0 hunks)
  • openthread_border_router/config.yaml (2 hunks)
  • openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/universal-silabs-flasher/notification-fd (0 hunks)
  • openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/universal-silabs-flasher/type (0 hunks)
  • openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/universal-silabs-flasher/up (0 hunks)
  • openthread_border_router/rootfs/etc/s6-overlay/scripts/universal-silabs-flasher-up (0 hunks)
  • openthread_border_router/translations/en.yaml (0 hunks)
💤 Files with no reviewable changes (7)
  • openthread_border_router/translations/en.yaml
  • openthread_border_router/Dockerfile
  • openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/universal-silabs-flasher/type
  • openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/universal-silabs-flasher/up
  • openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/universal-silabs-flasher/notification-fd
  • openthread_border_router/build.yaml
  • openthread_border_router/rootfs/etc/s6-overlay/scripts/universal-silabs-flasher-up
🧰 Additional context used
📓 Path-based instructions (6)
`*/**(html|markdown|md)`: - For instructional content in documentation, use a di...

*/**(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'

⚙️ Source: CodeRabbit Configuration File

List of files the instruction was applied to:

  • openthread_border_router/CHANGELOG.md
  • openthread_border_router/config.yaml
  • openthread_border_router/DOCS.md
`*/**(html|markdown|md)`: - Use bold to mark UI strings. - If "" are used to mark UI strings, replace them by bold.

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

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

⚙️ Source: CodeRabbit Configuration File

List of files the instruction was applied to:

  • openthread_border_router/CHANGELOG.md
  • openthread_border_router/config.yaml
  • openthread_border_router/DOCS.md
`*/**(html|markdown|md)`: - Be brief in your replies and don't add fluff like "thank you for..." and "Please let me know if"

*/**(html|markdown|md): - Be brief in your replies and don't add fluff like "thank you for..." and "Please let me know if"

⚙️ Source: CodeRabbit Configuration File

List of files the instruction was applied to:

  • openthread_border_router/CHANGELOG.md
  • openthread_border_router/config.yaml
  • openthread_border_router/DOCS.md
`*/**(html|markdown|md)`: - Use sentence-style capitalization also in headings.

*/**(html|markdown|md): - Use sentence-style capitalization also in headings.

⚙️ Source: CodeRabbit Configuration File

List of files the instruction was applied to:

  • openthread_border_router/CHANGELOG.md
  • openthread_border_router/config.yaml
  • openthread_border_router/DOCS.md
`*/**(html|markdown|md)`: do not comment on HTML used for icons

*/**(html|markdown|md): do not comment on HTML used for icons

⚙️ Source: CodeRabbit Configuration File

List of files the instruction was applied to:

  • openthread_border_router/CHANGELOG.md
  • openthread_border_router/config.yaml
  • openthread_border_router/DOCS.md
`*/**(html|markdown|md)`: Avoid flagging inline HTML for embedding videos in future reviews for this repository.

*/**(html|markdown|md): Avoid flagging inline HTML for embedding videos in future reviews for this repository.

⚙️ Source: CodeRabbit Configuration File

List of files the instruction was applied to:

  • openthread_border_router/CHANGELOG.md
  • openthread_border_router/config.yaml
  • openthread_border_router/DOCS.md
🪛 LanguageTool
openthread_border_router/DOCS.md

[uncategorized] ~15-~15: Use the indefinite article “an” before nouns that start with a vowel sound.
Context: ..." button. ## How to use You will need a 802.15.4 capable radio supported by Ope...

(AI_EN_LECTOR_REPLACEMENT_DETERMINER_A_AN)

🔇 Additional comments (3)
openthread_border_router/CHANGELOG.md (1)

3-5: Changelog entry looks good and is consistent with the code changes

Version bump and summary line read well, nothing else to flag.

openthread_border_router/config.yaml (2)

2-2: Confirm version alignment across release artefacts

version: 2.13.1 is correct here, but double-check that the same number is reflected in build.yaml, the Docker tag, and the GitHub release you will cut – mismatches silently break the supervisor’s update detection.


11-11: Raising homeassistant min version to 2025.7.0 – ensure upgrade path

Blocking older cores is fine given the firmware-flash removal, but it’s a big jump (from 2023.9.0).
• Verify that users already running this add-on on ≤ 2025.6 still get a helpful supervisor warning instead of a hard failure.
• Mention this requirement prominently in the release notes (the changelog line does not state it).

@frenck frenck marked this pull request as draft June 30, 2025 18:55
@frenck
Copy link
Member

frenck commented Jun 30, 2025

Marking this PR as a draft, as it requires Home Assistant 2025.7, which is not available yet. Releasing this now, means nobody can install it.

../Frenck

@puddly
Copy link
Collaborator Author

puddly commented Jun 30, 2025

Oh no, that means that we can't release this PR at all for at least a few months 🤔.

It seems like addons don't actually have any concept of releases, right? If the latest/only version is not compatible, the addon can't be installed?

@agners
Copy link
Member

agners commented Jul 1, 2025

Oh no, that means that we can't release this PR at all for at least a few months 🤔.

We've required add-on to use a just released Core version already in the past. Usually when folks install new add-ons they most likely work on their HA installation anyways, and it is not all that big of a deal to also update Home Assistant Core. So no, I wouldn't hold off with this PR. Just wait until 2025.7.0 is officially available.

It seems like addons don't actually have any concept of releases, right? If the latest/only version is not compatible, the addon can't be installed?

Yes, we only ever have the latest version available. Unless you restore a backup, then you'll get whatever version that backup has.

@puddly
Copy link
Collaborator Author

puddly commented Jul 1, 2025

This would prevent anyone using 2025.6.x or below from setting up a ZBT-1 or Yellow as a Thread border router from Core, no? They'd click on the "Thread" option in the config flow and the addon would fail to install?

@agners
Copy link
Member

agners commented Jul 1, 2025

This would prevent anyone using 2025.6.x or below from setting up a ZBT-1 or Yellow as a Thread border router from Core, no? They'd click on the "Thread" option in the config flow and the addon would fail to install?

Yeah. But at that point you are trying to setup a new communication protocol on your Home Assistant installation, which is a major operation on its own. IMHO, it is fine to require the user to update to the latest Core version. You also get the best experience with that...

@agners
Copy link
Member

agners commented Jul 10, 2025

I just realized that with HAOS 16.0 the serial port paths changed (again), rendering the Yellow detection non-functional with the current OpenThread Border Router 🙈

-----------------------------------------------------------
 Add-on: OpenThread Border Router
 OpenThread Border Router add-on
-----------------------------------------------------------
 Add-on version: 2.13.0
 You are running the latest version of this add-on.
 System: Home Assistant OS 16.0  (aarch64 / yellow)
 Home Assistant Core: 2025.1.0.dev202412160236
 Home Assistant Supervisor: 2025.07.2.dev0901
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service banner successfully started
s6-rc: info: service universal-silabs-flasher: starting
[10:32:09] INFO: The selected serial port is not a USB device.
[10:32:09] WARNING: No firmware found for the selected device, assuming firmware is installed.

The correct path now would be:

/sys/devices/platform/soc/fe201800.serial/fe201800.serial:0/fe201800.serial:0.0/tty/ttyAMA1

However, I don't think we should bother at this point. Let's get this PR merged, and advice people to upgrade to latest Core 2025.7.x to get the new built-in firmware management experience 😎

/cc @sairon

@agners
Copy link
Member

agners commented Aug 18, 2025

Marking this as ready for review as Core 2025.7 is out since a while, 2025.7 and 2025.8 make up 60% of the user base, and also most new users of the OTBR add-on will have most likely a new version. So very few users get forced to upgrade if they want to start using the OTBR at this point.

@agners agners marked this pull request as ready for review August 18, 2025 10:57
@home-assistant home-assistant bot marked this pull request as draft August 18, 2025 10:59
@home-assistant
Copy link

Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍

Learn more about our pull request process.

@agners agners marked this pull request as ready for review October 2, 2025 14:55
@home-assistant home-assistant bot requested a review from agners October 2, 2025 14:55
@agners agners requested a review from sairon October 2, 2025 15:48
Copy link
Member

@sairon sairon left a comment

Choose a reason for hiding this comment

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

LGTM, just one comment.

@agners agners merged commit 6f606ed into home-assistant:master Oct 7, 2025
11 checks passed
Auroric added a commit to Auroric/addons that referenced this pull request Oct 31, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants