Skip to content

fix: declare silabs-ble-ota explicitly in the manifest - #120

Merged
g4bri3lDev merged 1 commit into
mainfrom
fix/declare-silabs-ble-ota-explicitly
Aug 26, 2026
Merged

fix: declare silabs-ble-ota explicitly in the manifest#120
g4bri3lDev merged 1 commit into
mainfrom
fix/declare-silabs-ble-ota-explicitly

Conversation

@g4bri3lDev

@g4bri3lDev g4bri3lDev commented Aug 26, 2026

Copy link
Copy Markdown
Member

Silabs OTA can fail on an otherwise healthy install with:

Firmware update failed: silabs-ble-ota is required for Silabs firmware updates; install it with: pip install silabs-ble-ota

even though the manifest asks for py-opendisplay[silabs-ota].

Cause

homeassistant/util/package.py:is_installed() parses each requirement string and returns req.specifier.contains(installed_version). It looks at the distribution name and the version specifier only, and never at req.extras. So once py-opendisplay is installed at a matching version, HA considers the requirement satisfied and skips the install entirely, and the extra never gets resolved. Any environment where the base package arrived without the extra stays broken across restarts and upgrades.

Fix

List silabs-ble-ota as a requirement of its own so HA checks and installs it independently. The version matches what uv.lock resolves for the extra.

The [silabs-ota] extra stays declared on purpose, so upstream keeps owning the full dependency set for the OTA path and anything it gains later still comes along.

fixes #121

Home Assistant's installed-requirement check parses each requirement and
compares only the distribution name and version specifier. Extras are
never inspected, so once py-opendisplay is present at a matching version
the requirement counts as satisfied and the [silabs-ota] extra is never
resolved. Silabs OTA then fails at install time with "silabs-ble-ota is
required for Silabs firmware updates".

Listing silabs-ble-ota as its own requirement makes HA check and install
it independently. The extra stays declared so upstream keeps owning what
the OTA path needs.
@g4bri3lDev
g4bri3lDev merged commit 64fc90d into main Aug 26, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Solum 1.6WT (M3 Silabs Pro) firmware update fails: silabs-ble-ota is required for Silabs firmware updates...

1 participant