Nabu Casa initiatives: EN 18031-compliant firmware
- Dominant language
- No language data
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
Collecting the ESPHome PRs that gate EN 18031-compliant firmware for our hardware, so they are visible together rather than reading as unrelated component work in the review queue.
Nothing here needs picking up — just review attention, since a stalled PR here stalls a shipping firmware.
## Summary
- esphome/esphome#11689 — `bridge` component and `cdc_acm_uart` platform — ESPHome firmware for ZWA-2 and ZBT-2 — **done**
- esphome/esphome#18955 — `serial_proxy` tap interface and port mode — ZBT-2 Zigbee proxy — **done**
- esphome/esphome#18969 — `usb_uart` `claim_comm_interface` option — AUX-2 multi-device USB hub support
- esphome/esphome#19067 — `tinyusb` mount triggers and `is_mounted` condition — prerequisite for the mux below
- esphome/esphome#19066 — `uart_mux` component — ZWA-2 switching between USB stick and `zwave_proxy`
Related docs:
- esphome/esphome.io#5556 — `bridge` and `cdc_acm_uart`
- esphome/esphome.io#7318 — `serial_proxy` port mode
- esphome/esphome.io#7323 — `usb_uart` `claim_comm_interface`
- esphome/esphome.io#7356 — `tinyusb` mount triggers
- esphome/esphome.io#7368 — `uart_mux`
## Devices in scope
- Home Assistant Voice Preview Edition
- Home Assistant Connect ZWA-2
- Home Assistant Connect ZBT-2
- Home Assistant Connect AUX-2
## Detail
### `[bridge]` new component and `cdc_acm_uart` platform — complete
- esphome/esphome#11689
Merged 12 Sep 2026. Note the platform was renamed from `usb_uart` to `cdc_acm_uart` during review, so anything referring to the old name is out of date.
Needed to ship ESPHome-based firmware for **ZWA-2** and **ZBT-2**. Both devices present themselves to the host as a USB serial adapter in front of their radio, which is how Z-Wave JS and the Zigbee stack talk to them today. Without a USB-to-UART bridge in ESPHome, that behaviour could not be reproduced in an ESPHome build at all, and those two products would have stayed on separate non-ESPHome firmware.
Docs: esphome/esphome.io#5556
### `[serial_proxy]` tap interface and port mode — complete
- esphome/esphome#18955
Merged 10 Sep 2026.
Needed for **ZBT-2** Zigbee proxy functionality. Adds a protocol-agnostic observer seam to `serial_proxy` so a companion component can watch the bytes on a proxied port and inject its own, without owning the port. The first consumer is the upcoming `zigbee_proxy` component; splitting it this way keeps that component reviewable on its own.
Docs: esphome/esphome.io#7318
### `[usb_uart]` add `claim_comm_interface` option
- esphome/esphome#18969
Needed for **AUX-2** to support multiple USB devices behind a hub.
Every claimed interface pins a USB host hardware channel, and the ESP32-S3 only has eight. A hub plus two CDC-ACM devices needs nine and fails outright. Skipping the claim on the CDC comm interface — whose notification endpoint this component never reads — recovers one channel per device with no functional loss.
Docs: esphome/esphome.io#7323
### `[tinyusb]` add `on_mount`/`on_unmount` triggers and `is_mounted` condition
- esphome/esphome#19067
Prerequisite for esphome/esphome#19066, and useful on its own to anyone who wants a device to react to a USB host attaching or detaching.
Exposes USB mount state as ordinary ESPHome automations, so a component can respond to a host appearing without knowing anything about TinyUSB itself. Also adds `vbus_monitor_pin`, which is not optional for detach detection on a self-powered device: without it a cable pull reads as a bus suspend and neither trigger fires.
Docs: esphome/esphome.io#7356
### `[uart_mux]` share a UART between a CDC-ACM bridge and local consumers
- esphome/esphome#19066
Needed for **ZWA-2** to be one firmware instead of two.
Shares a single hardware UART between the `cdc_acm_uart` bridge and a local consumer such as `zwave_proxy`, so the Z-Wave module is reachable as a USB serial device while a computer is attached and driven on-device otherwise. The mux is itself a `uart::UARTComponent`, so the local consumer binds to it normally and needs no changes.
Stacked on #19067 — its diff carries that commit until it merges.
Docs: esphome/esphome.io#7368
I will keep this issue updated as these land and as further work becomes necessary.
Contributor guide
No contributing guide indexed for this repository
Research direction
This is a review-tracking issue, not an implementation task: it explicitly says nothing here needs picking up. Start by reviewing the linked ESPHome PRs and related documentation issues; the tracking work is done when the listed firmware and documentation changes have landed or the issue is updated with any further required work.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- embedded-iot
- Domain
- embedded-iot, release
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 15/100