Flashing the Firmware
A brand-new device gets the firmware exactly once over USB — every update afterwards happens over the air. Flashing takes about five minutes.
What You Need
- Your display and a USB data cable
- The factory image for your device (next section)
- Espressif's free Flash Download Tool (Windows):
download from Espressif —
or
esptoolon Linux/macOS
Step 1: Download The Factory Image
Grab the file matching your device from the latest release:
| Device | File |
|---|---|
| M5Stack Tab5 | hometiles_<version>_m5stacks_tab5_factory.bin |
| Waveshare ESP32-P4-WIFI6-Touch-LCD-4B | hometiles_<version>_waveshare_4b_factory.bin |
| Waveshare ESP32-P4-86-Panel-ETH-2RO | hometiles_<version>_waveshare_4b_factory.bin |
| Waveshare ESP32-P4-WIFI6-Touch-LCD-7 | hometiles_<version>_waveshare_touch_lcd_7_factory.bin |
| Waveshare ESP32-P4-WIFI6-Touch-LCD-8 | hometiles_<version>_waveshare_touch_lcd_8_factory.bin |
| Waveshare ESP32-P4-WIFI6-Touch-LCD-10.1 | hometiles_<version>_waveshare_touch_lcd_10_1_factory.bin |
| Guition JC8012P4A1C_I_W_Y | hometiles_<version>_guition_jc8012p4a1_factory.bin |
factory.bin vs. plain .bin
The factory image is a complete flash image — bootloader, firmware, and empty
configuration in one file. It is only for the first flash (or a full reset).
The plain .bin of the same name is the small OTA update file used later by the
on-device updater and the web admin — never flash that one over USB.
Step 2: Flash
Connect the device to your PC via USB, then in the Flash Download Tool:
- ChipType ESP32-P4, WorkMode Develop, LoadMode UART → OK.
- In the first file row: select the
factory.bin, set the address to0x0, and tick the row's checkbox. - COM: pick the device's serial port (if none appears, try another cable/port).
Leave BAUD at
115200. - Click START and wait for FINISH.
- Unplug/replug or press the reset button — some boards don't restart on their own.
Linux / macOS: esptool instead
esptool --chip esp32p4 --port <PORT> write_flash 0x0 hometiles_<version>_<device>_factory.bin
<PORT> with the serial port (for example /dev/ttyACM0).
Step 3: First Boot
The device shows the boot splash (logo + firmware version) and starts with an empty dashboard. It is not on your network yet — open Settings → WiFi on the device and continue with the Home Assistant Setup, which walks through WiFi, MQTT, and pairing.
Resetting An Existing Device
Flashing the factory image again wipes everything: WiFi, MQTT, and all tiles — back up first via Import/Export if you want to keep the layout.
Re-pairing after a reset
Delete the device's old entry in Home Assistant before expecting a new "discovered device" card. The device ID is derived from the MAC address, which survives the flash — Home Assistant won't re-discover an ID it already knows.