The usual way to get a Zigbee adapter away from a metal server cupboard is a USB extension cable or a network coordinator. Home Assistant has been building a third option: plug the USB adapter into an ESP32 running ESPHome and let Home Assistant talk to it over the network. On 26 October 2026 that work gained a piece that makes moving an adapter painless. A pull request by puddly, reviewed by Paulus Schoutsen, lets ZHA notice when its adapter has moved between a local USB port and an ESPHome proxy, and update its settings by itself. It is in the development branch and set for Home Assistant 2026.11.
How the pieces fit
ESPHome 2026.10.0, released on 21 October, includes a new USB_SERIAL port type for the serial_proxy component. An ESP32 with USB host support can act as a host for a USB serial device and forward the port to Home Assistant. For each port the proxy sends an identity message, and it sends it again whenever a device is plugged in or removed. The identity mirrors what Linux shows under /dev/serial/by-id, such as usb-Nabu_Casa_ZBT-2_abcd1234-if00.
The ESPHome configuration from the pull request looks like this:
usb_host:
usb_uart:
- type: CDC_ACM
vid: 0x303A
pid: 0x831A
channels:
- id: usb_serial_channel
baud_rate: 460800
serial_proxy:
- id: serial_proxy_usb
uart_id: usb_serial_channel
name: USB Serial Port
port_type: USB_SERIAL
On the Home Assistant side, a change merged on 20 October adds these proxied ports to the list of serial ports that integrations can choose from. They appear with an address of the form esphome-hass://<config entry>?udev_id=..., where the udev_id is the same name the adapter would have under /dev/serial/by-id.
What roaming changes
Because the identity is the same whether the adapter sits in the Home Assistant machine or in the ESP32, ZHA can match the two. If you unplug the adapter from a local port and plug it into the proxy, or the other way round, ZHA updates its configured path and carries on. You do not have to remove and set up the integration again.
There are conditions. ZHA must already be set up with a /dev/serial/by-id path or a serial proxy address, not a name like /dev/ttyUSB0. The adapter needs a unique serial number, and exactly one matching candidate must be found. If you have two identical adapters that report no unique serial, ZHA will not guess which one is yours.
Who it is for
This is mostly for people whose Home Assistant box sits in a place with poor radio coverage, or who want to swap the host computer without touching the Zigbee network. The pull request is part of the Open Home Foundation roadmap item on serial proxies. Keep in mind that a Zigbee coordinator behind a proxy depends on a stable Wi-Fi or Ethernet link to the ESP32.