Skip to content

Deprecate multiprotocol - #3833

Merged
puddly merged 12 commits into
home-assistant:masterfrom
puddly:puddly/multiprotocol-deprecation
Jul 31, 2025
Merged

Deprecate multiprotocol#3833
puddly merged 12 commits into
home-assistant:masterfrom
puddly:puddly/multiprotocol-deprecation

Conversation

@puddly

@puddly puddly commented Nov 21, 2024

Copy link
Copy Markdown
Contributor

I've removed the ability of the addon to flash multiprotocol firmware and have updated the README to reflect the addon's formal deprecation. It hasn't received any updates in about a year now and will not receive any for the foreseeable future, as we are focusing on improving our individual Zigbee and Thread firmwares.

Summary by CodeRabbit

  • New Features

    • Updated the Java runtime environment and improved installation verification for required tools.
    • Changed the method of obtaining the Gecko SDK for better reliability.
  • Bug Fixes

    • Updated the version of a key flasher utility to ensure compatibility.
  • Documentation

    • Marked the Silicon Labs Multiprotocol add-on as deprecated in the documentation, with warnings and guidance for users.
  • Chores

    • Updated metadata to reflect the add-on's deprecated status.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot reviewed 8 out of 12 changed files in this pull request and generated no suggestions.

Files not reviewed (4)
  • silabs-multiprotocol/Dockerfile: Language not supported
  • silabs-multiprotocol/rootfs/etc/s6-overlay/s6-rc.d/universal-silabs-flasher/type: Language not supported
  • silabs-multiprotocol/rootfs/etc/s6-overlay/s6-rc.d/universal-silabs-flasher/up: Language not supported
  • silabs-multiprotocol/rootfs/etc/s6-overlay/scripts/universal-silabs-flasher-up: Language not supported

Comment thread silabs-multiprotocol/config.yaml Outdated
@github-actions github-actions Bot added the stale label Jan 26, 2025
@github-actions github-actions Bot closed this Feb 2, 2025
@puddly puddly reopened this Feb 19, 2025
@puddly
puddly force-pushed the puddly/multiprotocol-deprecation branch 2 times, most recently from 3956c20 to b6abdb1 Compare February 19, 2025 15:33
@puddly

puddly commented Feb 19, 2025

Copy link
Copy Markdown
Contributor Author

@agners Have you run into this before? This image no longer builds on armhf because of a SIGSEGV during bytecode compilation of python3-async-timeout. This exact image built a few months ago but I guess something changed 😅.

#32 100.3 Setting up python3-async-timeout (3.0.1-1.1) ...
#32 101.1 Traceback (most recent call last):
#32 101.1   File "/usr/bin/py3compile", line 319, in <module>
#32 101.1     main()
#32 101.1   File "/usr/bin/py3compile", line 298, in main
#32 101.1     compile(files, versions,
#32 101.1   File "/usr/bin/py3compile", line 185, in compile
#32 101.1     cfn = interpreter.cache_file(fn, version)
#32 101.1   File "/usr/share/python3/debpython/interpreter.py", line 212, in cache_file
#32 101.1     (fname[:-3], self.magic_tag(version), last_char))
#32 101.1   File "/usr/share/python3/debpython/interpreter.py", line 246, in magic_tag
#32 101.1     return self._execute('import imp; print(imp.get_tag())', version)
#32 101.1   File "/usr/share/python3/debpython/interpreter.py", line 359, in _execute
#32 101.1     raise Exception('{} failed with status code {}'.format(command, output['returncode']))
#32 101.1 Exception: python3.9 -c 'import imp; print(imp.get_tag())' failed with status code 139
#32 101.1 dpkg: error processing package python3-async-timeout (--configure):
#32 101.1  installed python3-async-timeout package post-installation script subprocess returned error exit status 1

@github-actions github-actions Bot removed the stale label Feb 19, 2025
@agners

agners commented Feb 20, 2025

Copy link
Copy Markdown
Member

@agners Have you run into this before? This image no longer builds on armhf because of a SIGSEGV during bytecode compilation of python3-async-timeout. This exact image built a few months ago but I guess something changed 😅.

Hm, yeah, lately the whole QEMU based builds started too be rather unreliable, especially for aarch64. We run into that problem also in the Docker base images (see home-assistant/docker-base#294). What did help so far is using the ubuntu-22.04 runners instead. This would affect all add-on, but that is fine from my point of view.

@puddly
puddly force-pushed the puddly/multiprotocol-deprecation branch from 7fc26c8 to bf08819 Compare February 20, 2025 18:09
@puddly
puddly marked this pull request as ready for review February 20, 2025 18:34
@coderabbitai

coderabbitai Bot commented Feb 20, 2025

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

The changes deprecate the Silicon Labs Multiprotocol add-on by updating documentation, configuration, and metadata to reflect its deprecated status. The Dockerfile is modified to update Java installation, improve SLC CLI installation and verification, and switch Gecko SDK retrieval to a release ZIP download. The build configuration updates the flasher version.

Changes

Cohort / File(s) Change Summary
Deprecation Documentation and Metadata
silabs-multiprotocol/README.md, silabs-multiprotocol/config.yaml
README and config updated to mark the add-on as deprecated, update title/name, add deprecation warning, and set stage to "deprecated".
Build and Dependency Updates
silabs-multiprotocol/Dockerfile, silabs-multiprotocol/build.yaml
Dockerfile replaces OpenJDK with Azul Zulu JRE, improves SLC CLI setup and verification, changes Gecko SDK retrieval to ZIP download; build.yaml updates flasher version.

Sequence Diagram(s)

sequenceDiagram
    participant Dockerfile
    participant AzulRepo
    participant SiliconLabs
    participant GitHub

    Dockerfile->>AzulRepo: Add GPG key & repo, install zulu21-jre
    Dockerfile->>SiliconLabs: Download SLC CLI ZIP
    Dockerfile->>Dockerfile: Unzip & verify SLC CLI
    Dockerfile->>GitHub: Download Gecko SDK ZIP
    Dockerfile->>Dockerfile: Unzip Gecko SDK, cleanup
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~7 minutes

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 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 bf0881928e1342d5942900c0c1a4266b8a77a644 and 61572fe.

📒 Files selected for processing (4)
  • silabs-multiprotocol/Dockerfile (1 hunks)
  • silabs-multiprotocol/README.md (1 hunks)
  • silabs-multiprotocol/build.yaml (1 hunks)
  • silabs-multiprotocol/config.yaml (2 hunks)
✅ Files skipped from review due to trivial changes (1)
  • silabs-multiprotocol/config.yaml
🚧 Files skipped from review as they are similar to previous changes (3)
  • silabs-multiprotocol/build.yaml
  • silabs-multiprotocol/README.md
  • silabs-multiprotocol/Dockerfile
✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai or @coderabbitai title anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

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 (2)
silabs-multiprotocol/README.md (1)

5-5: Review markdown header formatting.
The header currently escapes the square brackets (\[DEPRECATED\]). Consider removing the backslashes so that the text renders naturally as [DEPRECATED] for clarity and consistency with standard Markdown practices.

silabs-multiprotocol/CHANGELOG.md (1)

4-4: Enhance sentence clarity.
Insert a comma before but in the sentence “It will continue running as usual but you should…” to improve readability and adhere to proper punctuation rules.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~4-~4: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...addon. It will continue running as usual but you should find an alternative way to r...

(COMMA_COMPOUND_SENTENCE)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 13c92fd and bf0881928e1342d5942900c0c1a4266b8a77a644.

📒 Files selected for processing (8)
  • silabs-multiprotocol/CHANGELOG.md (1 hunks)
  • silabs-multiprotocol/Dockerfile (1 hunks)
  • silabs-multiprotocol/README.md (1 hunks)
  • silabs-multiprotocol/build.yaml (0 hunks)
  • silabs-multiprotocol/config.yaml (2 hunks)
  • silabs-multiprotocol/rootfs/etc/s6-overlay/s6-rc.d/universal-silabs-flasher/type (0 hunks)
  • silabs-multiprotocol/rootfs/etc/s6-overlay/s6-rc.d/universal-silabs-flasher/up (0 hunks)
  • silabs-multiprotocol/rootfs/etc/s6-overlay/scripts/universal-silabs-flasher-up (0 hunks)
💤 Files with no reviewable changes (4)
  • silabs-multiprotocol/build.yaml
  • silabs-multiprotocol/rootfs/etc/s6-overlay/s6-rc.d/universal-silabs-flasher/type
  • silabs-multiprotocol/rootfs/etc/s6-overlay/s6-rc.d/universal-silabs-flasher/up
  • silabs-multiprotocol/rootfs/etc/s6-overlay/scripts/universal-silabs-flasher-up
🧰 Additional context used
📓 Path-based instructions (6)
`*/**(html|markdown|md)`: - For instructional content in doc...

*/**(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'
  • silabs-multiprotocol/CHANGELOG.md
  • silabs-multiprotocol/README.md
  • silabs-multiprotocol/Dockerfile
  • silabs-multiprotocol/config.yaml
`*/**(html|markdown|md)`: - Use bold to mark UI strings. - I...

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

  • If "" are used to mark UI strings, replace them by bold.
  • silabs-multiprotocol/CHANGELOG.md
  • silabs-multiprotocol/README.md
  • silabs-multiprotocol/Dockerfile
  • silabs-multiprotocol/config.yaml
`*/**(html|markdown|md)`: - Be brief in your replies and don...

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

  • silabs-multiprotocol/CHANGELOG.md
  • silabs-multiprotocol/README.md
  • silabs-multiprotocol/Dockerfile
  • silabs-multiprotocol/config.yaml
`*/**(html|markdown|md)`: - Use sentence-style capitalizatio...

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

  • silabs-multiprotocol/CHANGELOG.md
  • silabs-multiprotocol/README.md
  • silabs-multiprotocol/Dockerfile
  • silabs-multiprotocol/config.yaml
`*/**(html|markdown|md)`: do not comment on HTML used for ic...

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

  • silabs-multiprotocol/CHANGELOG.md
  • silabs-multiprotocol/README.md
  • silabs-multiprotocol/Dockerfile
  • silabs-multiprotocol/config.yaml
`*/**(html|markdown|md)`: Avoid flagging inline HTML for emb...

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

  • silabs-multiprotocol/CHANGELOG.md
  • silabs-multiprotocol/README.md
  • silabs-multiprotocol/Dockerfile
  • silabs-multiprotocol/config.yaml
🪛 LanguageTool
silabs-multiprotocol/CHANGELOG.md

[uncategorized] ~4-~4: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...addon. It will continue running as usual but you should find an alternative way to r...

(COMMA_COMPOUND_SENTENCE)

🔇 Additional comments (7)
silabs-multiprotocol/README.md (1)

1-4: Deprecation notice is clear and actionable.
The caution block clearly informs users that multiprotocol support is discontinued and directs them to the appropriate migration instructions.

silabs-multiprotocol/config.yaml (3)

2-2: Version update verified.
The version is updated to 2.4.6, which aligns with the deprecation change.


4-4: Add-on naming correctly reflects deprecation.
The name "[Deprecated] Silicon Labs Multiprotocol" clearly communicates the add-on’s status.


53-53: Stage update confirms deprecation status.
Setting the stage to deprecated ensures that users are aware of the add-on’s status in the ecosystem.

silabs-multiprotocol/CHANGELOG.md (1)

3-6: Changelog entry documents deprecation and flashing changes.
The new 2.4.6 entry clearly explains that the add-on is deprecated and that automatic firmware flashing is disabled in favor of manual flashing options.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~4-~4: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...addon. It will continue running as usual but you should find an alternative way to r...

(COMMA_COMPOUND_SENTENCE)

silabs-multiprotocol/Dockerfile (2)

1-10: Verify removal of unused build argument.
The Dockerfile no longer references ARG UNIVERSAL_SILABS_FLASHER, which is consistent with the deprecation of multiprotocol functionality. Confirm that no lingering references to this argument exist in any associated build scripts.


110-112: Streamlined Gecko SDK retrieval is efficient.
Using curl to download the Gecko SDK ZIP and cleaning up afterward with rm helps to reduce unnecessary build image clutter.

Comment thread silabs-multiprotocol/CHANGELOG.md Outdated

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The changelog will be shown quite prominently for most users on upgrade. Ideally we use this to link to instructions how users can move their installation to Zigbee/Thread only.

Comment thread silabs-multiprotocol/config.yaml Outdated
@home-assistant
home-assistant Bot marked this pull request as draft April 17, 2025 11:03
@home-assistant

Copy link
Copy Markdown

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 force-pushed the puddly/multiprotocol-deprecation branch from bd396f4 to c9891a8 Compare July 31, 2025 09:44

@agners agners left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I've tested the new build on my end, and things seem to still work. LGTM.

@puddly
puddly marked this pull request as ready for review July 31, 2025 16:30
@home-assistant
home-assistant Bot requested a review from agners July 31, 2025 16:30
@puddly

puddly commented Jul 31, 2025

Copy link
Copy Markdown
Contributor Author

This PR won't cause any new version to be released and just update the addon store listing, right? I think it's good to merge in that case.

@agners

agners commented Jul 31, 2025

Copy link
Copy Markdown
Member

This PR won't cause any new version to be released and just update the addon store listing, right? I think it's good to merge in that case.

It will rebuild the image (and push it under the same tag), but it won't show up as a new version for users (only update the listing). So we had to make it build again, in case someone installs it (despite it being deprecated).

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