home-assistant/core · error · AbortFlow

outdated_version

outdated_version

Error message

This device is using outdated firmware. Please update it to at least v1.2.0 and try again.

What it means

AbortFlow with reason 'outdated_version' in the Aranet config flow. It fires during Bluetooth discovery when the advertised manufacturer data is missing or reports a firmware version below MIN_VERSION (v1.2.0), because old Aranet4 firmware does not expose sensor data in advertisements and cannot be set up passively.

Source

Thrown at homeassistant/components/aranet/config_flow.py:43

    )


class AranetConfigFlow(ConfigFlow, domain=DOMAIN):
    """Handle a config flow for Aranet."""

    VERSION = 1

    def __init__(self) -> None:
        """Set up a new config flow for Aranet."""
        self._discovery_info: BluetoothServiceInfoBleak | None = None
        self._discovered_device: Aranet4Advertisement | None = None
        self._discovered_devices: dict[str, tuple[str, Aranet4Advertisement]] = {}

    def _raise_for_advertisement_errors(self, adv: Aranet4Advertisement) -> None:
        """Raise any configuration errors that apply to an advertisement."""
        # Old versions of firmware don't expose sensor data in advertisements.
        if not adv.manufacturer_data or adv.manufacturer_data.version < MIN_VERSION:
            raise AbortFlow("outdated_version")

        # If integrations are disabled, we get no sensor data.
        if not adv.manufacturer_data.integrations:
            raise AbortFlow("integrations_disabled")

    @override
    async def async_step_bluetooth(
        self, discovery_info: BluetoothServiceInfoBleak
    ) -> ConfigFlowResult:
        """Handle the Bluetooth discovery step."""
        await self.async_set_unique_id(discovery_info.address)
        self._abort_if_unique_id_configured()
        adv = Aranet4Advertisement(discovery_info.device, discovery_info.advertisement)
        self._raise_for_advertisement_errors(adv)

        self._discovery_info = discovery_info
        self._discovered_device = adv
        return await self.async_step_bluetooth_confirm()

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Update the Aranet4 firmware to at least v1.2.0 using the official Aranet app.
  2. Re-pair/re-discover the device in Home Assistant after the update (force a Bluetooth re-scan or restart discovery).
  3. If the device is already updated, move it closer to the Bluetooth adapter so complete manufacturer data is received.
Defensive patterns

Strategy: validation

Validate before calling

from aranet4 import Aranet4Advertisement

def is_setup_capable(adv: Aranet4Advertisement, min_version: int) -> bool:
    md = adv.manufacturer_data
    return md is not None and md.version >= min_version

Try / catch

Wrap flow steps in try/except AbortFlow and inspect flow.reason == 'outdated_version' to show a firmware-update hint to the user.

Prevention

When it happens

Trigger: async_step_bluetooth (or the manual user step) processes an Aranet4Advertisement where adv.manufacturer_data is None or adv.manufacturer_data.version < MIN_VERSION; _raise_for_advertisement_errors raises AbortFlow('outdated_version') and the flow aborts with the localized message.

Common situations: A newly bought or long-unused Aranet4 running factory firmware; a device that was reset to an old firmware; orphan devices discovered via BLE that never received OTA updates.

Related errors


AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14). Data as JSON: /api/errors/5dc4c29089fa8f88. Report an issue: GitHub.