Repository navigation
Releases: zhac-project/zhac-wired-core
Release list
v2026100601-rc2
Test build, not a release. It is published for testing a fix on real hubs and will be deleted once a release includes it. Keep to the latest release unless you were asked to try this one.
The ready-made hub: Espressif ESP32-S31 Function-CoreBoard
One board, nothing to wire. From Chrome or Edge, no toolchain:
https://zhac.org/flash/ -- it writes the four parts below and keeps
your devices, rules and settings (tick "erase" on the page for a clean start).
With esptool, the same four parts:
esptool --chip esp32s31 --port /dev/ttyUSB0 write-flash \
0x2000 zhac-wired-s31-v2026100601-rc2-bootloader.bin \
0xC000 zhac-wired-s31-v2026100601-rc2-partition-table.bin \
0x1D000 zhac-wired-s31-v2026100601-rc2-otadata.bin \
0x20000 zhac-wired-s31-v2026100601-rc2-ota.binzhac-wired-s31-v2026100601-rc2.bin is the same image merged into one file for offset 0 -- it also erases
devices, rules and settings (it covers the NVS area). Updates from the web UI use
zhac-wired-s31-v2026100601-rc2-ota.bin and keep everything.
ESP32-P4 boards (Guition JC-ESP32P4-M3-DEV)
ZHAC on one ESP32-P4 board with Ethernet. Status per board, and what is still
open: https://github.com/zhac-project/zhac-wired-core#status
Flash it
From Chrome or Edge, no toolchain: https://zhac.org/flash/
Or with esptool — one file, written at offset 0:
esptool --chip esp32p4 --port /dev/ttyACM0 write-flash 0x0 zhac-wired-p4-rev1x-v2026100601-rc2.binThis image targets ESP32-P4 silicon v0.x–v1.x. Check yours first with
esptool --port <PORT> flash-id; a v3.x chip will not boot it.
Then plug in Ethernet and open http://zhac.local.
The ESP32-C6 on the module is the Zigbee radio. On a fresh board it needs
ot_rcp installed once first: flash
zhac-c6-rcp-installer-p4-rev1x-v2026100601-rc2.bin at offset 0 (or the
browser flasher's "1. Install the Zigbee radio" button), wait ~30 s, then flash
the hub image above. Detail, and the JP1-wire fallback:
https://github.com/zhac-project/zhac-wired-core#zigbee-radio-esp32-c6
Updating a board that already runs ZHAC: the web UI's OTA page lists this
release and installs it (the -ota.bin file; keep the file name as published,
the page matches on it). It replaces the firmware and keeps devices, rules and
scripts.
What changed
See CHANGELOG.md.
Built from
sources-v2026100601-rc2.txt names the commit of this repo and of every sibling
repository the image was built against; SHA256SUMS covers every file above.
v2026100601-rc1
Test build, not a release. It is published for testing a fix on real hubs and will be deleted once a release includes it. Keep to the latest release unless you were asked to try this one.
The ready-made hub: Espressif ESP32-S31 Function-CoreBoard
One board, nothing to wire. From Chrome or Edge, no toolchain:
https://zhac.org/flash/ -- it writes the four parts below and keeps
your devices, rules and settings (tick "erase" on the page for a clean start).
With esptool, the same four parts:
esptool --chip esp32s31 --port /dev/ttyUSB0 write-flash \
0x2000 zhac-wired-s31-v2026100601-rc1-bootloader.bin \
0xC000 zhac-wired-s31-v2026100601-rc1-partition-table.bin \
0x1D000 zhac-wired-s31-v2026100601-rc1-otadata.bin \
0x20000 zhac-wired-s31-v2026100601-rc1-ota.binzhac-wired-s31-v2026100601-rc1.bin is the same image merged into one file for offset 0 -- it also erases
devices, rules and settings (it covers the NVS area). Updates from the web UI use
zhac-wired-s31-v2026100601-rc1-ota.bin and keep everything.
ESP32-P4 boards (Guition JC-ESP32P4-M3-DEV)
ZHAC on one ESP32-P4 board with Ethernet. Status per board, and what is still
open: https://github.com/zhac-project/zhac-wired-core#status
Flash it
From Chrome or Edge, no toolchain: https://zhac.org/flash/
Or with esptool — one file, written at offset 0:
esptool --chip esp32p4 --port /dev/ttyACM0 write-flash 0x0 zhac-wired-p4-rev1x-v2026100601-rc1.binThis image targets ESP32-P4 silicon v0.x–v1.x. Check yours first with
esptool --port <PORT> flash-id; a v3.x chip will not boot it.
Then plug in Ethernet and open http://zhac.local.
The ESP32-C6 on the module is the Zigbee radio. On a fresh board it needs
ot_rcp installed once first: flash
zhac-c6-rcp-installer-p4-rev1x-v2026100601-rc1.bin at offset 0 (or the
browser flasher's "1. Install the Zigbee radio" button), wait ~30 s, then flash
the hub image above. Detail, and the JP1-wire fallback:
https://github.com/zhac-project/zhac-wired-core#zigbee-radio-esp32-c6
Updating a board that already runs ZHAC: the web UI's OTA page lists this
release and installs it (the -ota.bin file; keep the file name as published,
the page matches on it). It replaces the firmware and keeps devices, rules and
scripts.
What changed
See CHANGELOG.md.
Built from
sources-v2026100601-rc1.txt names the commit of this repo and of every sibling
repository the image was built against; SHA256SUMS covers every file above.
v2026100302
The ready-made hub: Espressif ESP32-S31 Function-CoreBoard
One board, nothing to wire. From Chrome or Edge, no toolchain:
https://zhac.org/flash/ -- it writes the four parts below and keeps
your devices, rules and settings (tick "erase" on the page for a clean start).
With esptool, the same four parts:
esptool --chip esp32s31 --port /dev/ttyUSB0 write-flash \
0x2000 zhac-wired-s31-v2026100302-bootloader.bin \
0xC000 zhac-wired-s31-v2026100302-partition-table.bin \
0x1D000 zhac-wired-s31-v2026100302-otadata.bin \
0x20000 zhac-wired-s31-v2026100302-ota.binzhac-wired-s31-v2026100302.bin is the same image merged into one file for offset 0 -- it also erases
devices, rules and settings (it covers the NVS area). Updates from the web UI use
zhac-wired-s31-v2026100302-ota.bin and keep everything.
ESP32-P4 boards (Guition JC-ESP32P4-M3-DEV)
ZHAC on one ESP32-P4 board with Ethernet. Status per board, and what is still
open: https://github.com/zhac-project/zhac-wired-core#status
Flash it
From Chrome or Edge, no toolchain: https://zhac.org/flash/
Or with esptool — one file, written at offset 0:
esptool --chip esp32p4 --port /dev/ttyACM0 write-flash 0x0 zhac-wired-p4-rev1x-v2026100302.binThis image targets ESP32-P4 silicon v0.x–v1.x. Check yours first with
esptool --port <PORT> flash-id; a v3.x chip will not boot it.
Then plug in Ethernet and open http://zhac.local.
The ESP32-C6 on the module is the Zigbee radio. On a fresh board it needs
ot_rcp installed once first: flash
zhac-c6-rcp-installer-p4-rev1x-v2026100302.bin at offset 0 (or the
browser flasher's "1. Install the Zigbee radio" button), wait ~30 s, then flash
the hub image above. Detail, and the JP1-wire fallback:
https://github.com/zhac-project/zhac-wired-core#zigbee-radio-esp32-c6
Updating a board that already runs ZHAC: the web UI's OTA page lists this
release and installs it (the -ota.bin file; keep the file name as published,
the page matches on it). It replaces the firmware and keeps devices, rules and
scripts.
What changed
See CHANGELOG.md.
Built from
sources-v2026100302.txt names the commit of this repo and of every sibling
repository the image was built against; SHA256SUMS covers every file above.
v2026100301
The ready-made hub: Espressif ESP32-S31 Function-CoreBoard
One board, nothing to wire. From Chrome or Edge, no toolchain:
https://zhac.org/flash/ -- it writes the four parts below and keeps
your devices, rules and settings (tick "erase" on the page for a clean start).
With esptool, the same four parts:
esptool --chip esp32s31 --port /dev/ttyUSB0 write-flash \
0x2000 zhac-wired-s31-v2026100301-bootloader.bin \
0xC000 zhac-wired-s31-v2026100301-partition-table.bin \
0x1D000 zhac-wired-s31-v2026100301-otadata.bin \
0x20000 zhac-wired-s31-v2026100301-ota.binzhac-wired-s31-v2026100301.bin is the same image merged into one file for offset 0 -- it also erases
devices, rules and settings (it covers the NVS area). Updates from the web UI use
zhac-wired-s31-v2026100301-ota.bin and keep everything.
ESP32-P4 boards (Guition JC-ESP32P4-M3-DEV)
ZHAC on one ESP32-P4 board with Ethernet. Status per board, and what is still
open: https://github.com/zhac-project/zhac-wired-core#status
Flash it
From Chrome or Edge, no toolchain: https://zhac.org/flash/
Or with esptool — one file, written at offset 0:
esptool --chip esp32p4 --port /dev/ttyACM0 write-flash 0x0 zhac-wired-p4-rev1x-v2026100301.binThis image targets ESP32-P4 silicon v0.x–v1.x. Check yours first with
esptool --port <PORT> flash-id; a v3.x chip will not boot it.
Then plug in Ethernet and open http://zhac.local.
The ESP32-C6 on the module is the Zigbee radio. On a fresh board it needs
ot_rcp installed once first: flash
zhac-c6-rcp-installer-p4-rev1x-v2026100301.bin at offset 0 (or the
browser flasher's "1. Install the Zigbee radio" button), wait ~30 s, then flash
the hub image above. Detail, and the JP1-wire fallback:
https://github.com/zhac-project/zhac-wired-core#zigbee-radio-esp32-c6
Updating a board that already runs ZHAC: the web UI's OTA page lists this
release and installs it (the -ota.bin file; keep the file name as published,
the page matches on it). It replaces the firmware and keeps devices, rules and
scripts.
What changed
See CHANGELOG.md.
Built from
sources-v2026100301.txt names the commit of this repo and of every sibling
repository the image was built against; SHA256SUMS covers every file above.
v2026100201
The ready-made hub: Espressif ESP32-S31 Function-CoreBoard
One board, nothing to wire. From Chrome or Edge, no toolchain:
https://zhac.org/flash/ -- it writes the four parts below and keeps
your devices, rules and settings (tick "erase" on the page for a clean start).
With esptool, the same four parts:
esptool --chip esp32s31 --port /dev/ttyUSB0 write-flash \
0x2000 zhac-wired-s31-v2026100201-bootloader.bin \
0xC000 zhac-wired-s31-v2026100201-partition-table.bin \
0x1D000 zhac-wired-s31-v2026100201-otadata.bin \
0x20000 zhac-wired-s31-v2026100201-ota.binzhac-wired-s31-v2026100201.bin is the same image merged into one file for offset 0 -- it also erases
devices, rules and settings (it covers the NVS area). Updates from the web UI use
zhac-wired-s31-v2026100201-ota.bin and keep everything.
ESP32-P4 boards (Guition JC-ESP32P4-M3-DEV)
ZHAC on one ESP32-P4 board with Ethernet. Status per board, and what is still
open: https://github.com/zhac-project/zhac-wired-core#status
Flash it
From Chrome or Edge, no toolchain: https://zhac.org/flash/
Or with esptool — one file, written at offset 0:
esptool --chip esp32p4 --port /dev/ttyACM0 write-flash 0x0 zhac-wired-p4-rev1x-v2026100201.binThis image targets ESP32-P4 silicon v0.x–v1.x. Check yours first with
esptool --port <PORT> flash-id; a v3.x chip will not boot it.
Then plug in Ethernet and open http://zhac.local.
The ESP32-C6 on the module is the Zigbee radio. On a fresh board it needs
ot_rcp installed once first: flash
zhac-c6-rcp-installer-p4-rev1x-v2026100201.bin at offset 0 (or the
browser flasher's "1. Install the Zigbee radio" button), wait ~30 s, then flash
the hub image above. Detail, and the JP1-wire fallback:
https://github.com/zhac-project/zhac-wired-core#zigbee-radio-esp32-c6
Updating a board that already runs ZHAC: the web UI's OTA page lists this
release and installs it (the -ota.bin file; keep the file name as published,
the page matches on it). It replaces the firmware and keeps devices, rules and
scripts.
What changed
See CHANGELOG.md.
Built from
sources-v2026100201.txt names the commit of this repo and of every sibling
repository the image was built against; SHA256SUMS covers every file above.
v2026093001
The ready-made hub: Espressif ESP32-S31 Function-CoreBoard
One board, nothing to wire. From Chrome or Edge, no toolchain:
https://zhac.org/flash/ -- it writes the four parts below and keeps
your devices, rules and settings (tick "erase" on the page for a clean start).
With esptool, the same four parts:
esptool --chip esp32s31 --port /dev/ttyUSB0 write-flash \
0x2000 zhac-wired-s31-v2026093001-bootloader.bin \
0xC000 zhac-wired-s31-v2026093001-partition-table.bin \
0x1D000 zhac-wired-s31-v2026093001-otadata.bin \
0x20000 zhac-wired-s31-v2026093001-ota.binzhac-wired-s31-v2026093001.bin is the same image merged into one file for offset 0 -- it also erases
devices, rules and settings (it covers the NVS area). Updates from the web UI use
zhac-wired-s31-v2026093001-ota.bin and keep everything.
ESP32-P4 boards (Guition JC-ESP32P4-M3-DEV)
ZHAC on one ESP32-P4 board with Ethernet. Status per board, and what is still
open: https://github.com/zhac-project/zhac-wired-core#status
Flash it
From Chrome or Edge, no toolchain: https://zhac.org/flash/
Or with esptool — one file, written at offset 0:
esptool --chip esp32p4 --port /dev/ttyACM0 write-flash 0x0 zhac-wired-p4-rev1x-v2026093001.binThis image targets ESP32-P4 silicon v0.x–v1.x. Check yours first with
esptool --port <PORT> flash-id; a v3.x chip will not boot it.
Then plug in Ethernet and open http://zhac.local.
The ESP32-C6 on the module is the Zigbee radio. On a fresh board it needs
ot_rcp installed once first: flash
zhac-c6-rcp-installer-p4-rev1x-v2026093001.bin at offset 0 (or the
browser flasher's "1. Install the Zigbee radio" button), wait ~30 s, then flash
the hub image above. Detail, and the JP1-wire fallback:
https://github.com/zhac-project/zhac-wired-core#zigbee-radio-esp32-c6
Updating a board that already runs ZHAC: the web UI's OTA page lists this
release and installs it (the -ota.bin file; keep the file name as published,
the page matches on it). It replaces the firmware and keeps devices, rules and
scripts.
What changed
See CHANGELOG.md.
Built from
sources-v2026093001.txt names the commit of this repo and of every sibling
repository the image was built against; SHA256SUMS covers every file above.
v2026092905
The ready-made hub: Espressif ESP32-S31 Function-CoreBoard
One board, nothing to wire. From Chrome or Edge, no toolchain:
https://zhac-project.github.io/zhac-docs/flash/ -- it writes the four parts below and keeps
your devices, rules and settings (tick "erase" on the page for a clean start).
With esptool, the same four parts:
esptool --chip esp32s31 --port /dev/ttyUSB0 write-flash \
0x2000 zhac-wired-s31-v2026092905-bootloader.bin \
0xC000 zhac-wired-s31-v2026092905-partition-table.bin \
0x1D000 zhac-wired-s31-v2026092905-otadata.bin \
0x20000 zhac-wired-s31-v2026092905-ota.binzhac-wired-s31-v2026092905.bin is the same image merged into one file for offset 0 -- it also erases
devices, rules and settings (it covers the NVS area). Updates from the web UI use
zhac-wired-s31-v2026092905-ota.bin and keep everything.
ESP32-P4 boards (Guition JC-ESP32P4-M3-DEV)
ZHAC on one ESP32-P4 board with Ethernet. Status per board, and what is still
open: https://github.com/zhac-project/zhac-wired-core#status
Flash it
From Chrome or Edge, no toolchain: https://zhac-project.github.io/zhac-docs/flash/
Or with esptool — one file, written at offset 0:
esptool --chip esp32p4 --port /dev/ttyACM0 write-flash 0x0 zhac-wired-p4-rev1x-v2026092905.binThis image targets ESP32-P4 silicon v0.x–v1.x. Check yours first with
esptool --port <PORT> flash-id; a v3.x chip will not boot it.
Then plug in Ethernet and open http://zhac.local.
The ESP32-C6 on the module is the Zigbee radio. On a fresh board it needs
ot_rcp installed once first: flash
zhac-c6-rcp-installer-p4-rev1x-v2026092905.bin at offset 0 (or the
browser flasher's "1. Install the Zigbee radio" button), wait ~30 s, then flash
the hub image above. Detail, and the JP1-wire fallback:
https://github.com/zhac-project/zhac-wired-core#zigbee-radio-esp32-c6
Updating a board that already runs ZHAC: the web UI's OTA page lists this
release and installs it (the -ota.bin file; keep the file name as published,
the page matches on it). It replaces the firmware and keeps devices, rules and
scripts.
What changed
See CHANGELOG.md.
Built from
sources-v2026092905.txt names the commit of this repo and of every sibling
repository the image was built against; SHA256SUMS covers every file above.
v2026092904
The ready-made hub: Espressif ESP32-S31 Function-CoreBoard
One board, nothing to wire. From Chrome or Edge, no toolchain:
https://zhac-project.github.io/zhac-docs/flash/ -- it writes the four parts below and keeps
your devices, rules and settings (tick "erase" on the page for a clean start).
With esptool, the same four parts:
esptool --chip esp32s31 --port /dev/ttyUSB0 write-flash \
0x2000 zhac-wired-s31-v2026092904-bootloader.bin \
0xC000 zhac-wired-s31-v2026092904-partition-table.bin \
0x1D000 zhac-wired-s31-v2026092904-otadata.bin \
0x20000 zhac-wired-s31-v2026092904-ota.binzhac-wired-s31-v2026092904.bin is the same image merged into one file for offset 0 -- it also erases
devices, rules and settings (it covers the NVS area). Updates from the web UI use
zhac-wired-s31-v2026092904-ota.bin and keep everything.
ESP32-P4 boards (Guition JC-ESP32P4-M3-DEV)
ZHAC on one ESP32-P4 board with Ethernet. Status per board, and what is still
open: https://github.com/zhac-project/zhac-wired-core#status
Flash it
From Chrome or Edge, no toolchain: https://zhac-project.github.io/zhac-docs/flash/
Or with esptool — one file, written at offset 0:
esptool --chip esp32p4 --port /dev/ttyACM0 write-flash 0x0 zhac-wired-p4-rev1x-v2026092904.binThis image targets ESP32-P4 silicon v0.x–v1.x. Check yours first with
esptool --port <PORT> flash-id; a v3.x chip will not boot it.
Then plug in Ethernet and open http://zhac.local.
The ESP32-C6 on the module is the Zigbee radio. On a fresh board it needs
ot_rcp installed once first: flash
zhac-c6-rcp-installer-p4-rev1x-v2026092904.bin at offset 0 (or the
browser flasher's "1. Install the Zigbee radio" button), wait ~30 s, then flash
the hub image above. Detail, and the JP1-wire fallback:
https://github.com/zhac-project/zhac-wired-core#zigbee-radio-esp32-c6
Updating a board that already runs ZHAC: the web UI's OTA page lists this
release and installs it (the -ota.bin file; keep the file name as published,
the page matches on it). It replaces the firmware and keeps devices, rules and
scripts.
What changed
See CHANGELOG.md.
Built from
sources-v2026092904.txt names the commit of this repo and of every sibling
repository the image was built against; SHA256SUMS covers every file above.
v2026092903
The ready-made hub: Espressif ESP32-S31 Function-CoreBoard
One board, nothing to wire. From Chrome or Edge, no toolchain:
https://zhac-project.github.io/zhac-docs/flash/ -- it writes the four parts below and keeps
your devices, rules and settings (tick "erase" on the page for a clean start).
With esptool, the same four parts:
esptool --chip esp32s31 --port /dev/ttyUSB0 write-flash \
0x2000 zhac-wired-s31-v2026092903-bootloader.bin \
0xC000 zhac-wired-s31-v2026092903-partition-table.bin \
0x1D000 zhac-wired-s31-v2026092903-otadata.bin \
0x20000 zhac-wired-s31-v2026092903-ota.binzhac-wired-s31-v2026092903.bin is the same image merged into one file for offset 0 -- it also erases
devices, rules and settings (it covers the NVS area). Updates from the web UI use
zhac-wired-s31-v2026092903-ota.bin and keep everything.
ESP32-P4 boards (Guition JC-ESP32P4-M3-DEV)
ZHAC on one ESP32-P4 board with Ethernet. Status per board, and what is still
open: https://github.com/zhac-project/zhac-wired-core#status
Flash it
From Chrome or Edge, no toolchain: https://zhac-project.github.io/zhac-docs/flash/
Or with esptool — one file, written at offset 0:
esptool --chip esp32p4 --port /dev/ttyACM0 write-flash 0x0 zhac-wired-p4-rev1x-v2026092903.binThis image targets ESP32-P4 silicon v0.x–v1.x. Check yours first with
esptool --port <PORT> flash-id; a v3.x chip will not boot it.
Then plug in Ethernet and open http://zhac.local.
The ESP32-C6 on the module is the Zigbee radio. On a fresh board it needs
ot_rcp installed once first: flash
zhac-c6-rcp-installer-p4-rev1x-v2026092903.bin at offset 0 (or the
browser flasher's "1. Install the Zigbee radio" button), wait ~30 s, then flash
the hub image above. Detail, and the JP1-wire fallback:
https://github.com/zhac-project/zhac-wired-core#zigbee-radio-esp32-c6
Updating a board that already runs ZHAC: the web UI's OTA page lists this
release and installs it (the -ota.bin file; keep the file name as published,
the page matches on it). It replaces the firmware and keeps devices, rules and
scripts.
What changed
See CHANGELOG.md.
Built from
sources-v2026092903.txt names the commit of this repo and of every sibling
repository the image was built against; SHA256SUMS covers every file above.
v2026092902
The ready-made hub: Espressif ESP32-S31 Function-CoreBoard
One board, nothing to wire. From Chrome or Edge, no toolchain:
https://zhac-project.github.io/zhac-docs/flash/ -- it writes the four parts below and keeps
your devices, rules and settings (tick "erase" on the page for a clean start).
With esptool, the same four parts:
esptool --chip esp32s31 --port /dev/ttyUSB0 write-flash \
0x2000 zhac-wired-s31-v2026092902-bootloader.bin \
0xC000 zhac-wired-s31-v2026092902-partition-table.bin \
0x1D000 zhac-wired-s31-v2026092902-otadata.bin \
0x20000 zhac-wired-s31-v2026092902-ota.binzhac-wired-s31-v2026092902.bin is the same image merged into one file for offset 0 -- it also erases
devices, rules and settings (it covers the NVS area). Updates from the web UI use
zhac-wired-s31-v2026092902-ota.bin and keep everything.
ESP32-P4 boards (Guition JC-ESP32P4-M3-DEV)
ZHAC on one ESP32-P4 board with Ethernet. Status per board, and what is still
open: https://github.com/zhac-project/zhac-wired-core#status
Flash it
From Chrome or Edge, no toolchain: https://zhac-project.github.io/zhac-docs/flash/
Or with esptool — one file, written at offset 0:
esptool --chip esp32p4 --port /dev/ttyACM0 write-flash 0x0 zhac-wired-p4-rev1x-v2026092902.binThis image targets ESP32-P4 silicon v0.x–v1.x. Check yours first with
esptool --port <PORT> flash-id; a v3.x chip will not boot it.
Then plug in Ethernet and open http://zhac.local.
The ESP32-C6 on the module is the Zigbee radio. On a fresh board it needs
ot_rcp installed once first: flash
zhac-c6-rcp-installer-p4-rev1x-v2026092902.bin at offset 0 (or the
browser flasher's "1. Install the Zigbee radio" button), wait ~30 s, then flash
the hub image above. Detail, and the JP1-wire fallback:
https://github.com/zhac-project/zhac-wired-core#zigbee-radio-esp32-c6
Updating a board that already runs ZHAC: the web UI's OTA page lists this
release and installs it (the -ota.bin file; keep the file name as published,
the page matches on it). It replaces the firmware and keeps devices, rules and
scripts.
What changed
See CHANGELOG.md.
Built from
sources-v2026092902.txt names the commit of this repo and of every sibling
repository the image was built against; SHA256SUMS covers every file above.