Skip to content

[Bug] S1 Fire Safety Set missing: accessory firmware entities fail with deprecated via_device on HA 2026.9 #17

Description

@aderusha

Problem

On Home Assistant Core 2026.9.3 with ha-xtool v2.7.2, an attached Fire Safety Set v1.5 is detected by the S1 protocol but never appears as a Home Assistant device. Accessory firmware update entities fail during registration. The Smart Air Assist's other entities load, but its firmware entity also fails.

Hardware and versions

  • xTool S1, 40 W diode
  • S1 firmware: V40.32.015.2025.01 B10
  • Fire Safety Set v1.5 firmware: V40.203.002.3224.01B01
  • Smart Air Assist firmware: V40.208.002.3D28.01 B1
  • Home Assistant Core 2026.9.3 / HAOS
  • Integration v2.7.2

Reproduction

  1. Connect an S1 with the Fire Safety Set v1.5 attached.
  2. Add or load the xTool Laser integration.
  3. Observe that the S1 and Air Assist appear, but the extinguisher does not.
  4. Inspect the logs: accessory detection succeeds, while update entity registration fails.

Relevant detection output (no device identifiers included):

S1 M1098 accessories_raw=['', '', 'V40.208.002.3D28.01 B1', '', 'V40.203.002.3224.01B01', '', '', '', '', '']
S1 accessory detected (M1098 slot 4): FireExtinguisherV1_5 fields={'version': 'V40.203.002.3224.01B01'}

Registration error:

Error adding entity None for domain update with platform xtool
homeassistant.helpers.frame.MissingIntegrationFrame

The traceback runs through entity_platform._async_add_entity, device_registry.async_get_or_create, and report_usage for the deprecated via_device parameter.

Cause

Both _AccessoryEntity.device_info and _AccessoryUpdate.device_info return via_device=(DOMAIN, laser_sid). On this HA version, the deprecation reporting path can raise when the async update-entity registration stack no longer contains an integration frame. This matches home-assistant/core#180469.

The Fire Safety Set has only a firmware version available through the S1 slot data. build_accessory_entities suppresses the version sensor when it creates a firmware update entity. When that sole entity fails to register, the entire accessory device is absent.

Proposed fix

Register the laser device before forwarding platform setup, retain its registry ID, and use via_device_id for both accessory entity classes on HA versions supporting it. Retain the legacy tuple only for older supported HA versions.

Reference: https://developers.home-assistant.io/blog/2026/08/24/device-registry-follow-up-changes/

Local verification

The proposed fix was applied to the same HA installation. After restart, both the Fire Safety Set device and its firmware entity appeared, linked to the S1, with the expected installed firmware. The Air Assist firmware entity also loaded. Three regression tests and the HA configuration check passed; the accessory registration error did not recur.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions