Skip to content

Install or Update Firmware 2025.10.0-dev.310000

On this page, you'll find all available methods to install or update the Doorman firmware. Whether you're flashing the firmware for the first time or applying the latest update, the instructions here will guide you step-by-step — including direct installation via Web Serial, updates through the firmware web interface, and integration with Home Assistant's update system.

IMPORTANT

Be aware that some updates may introduce breaking changes — always review the changelogs carefully to ensure your system functions reliably in critical situations.

Web Serial Latest release build, no customization

Connect your Doorman-S3 via USB-C and use the configuration assistant below to install the latest firmware directly via Web Serial — perfect for first-time setup.

This guided process ensures seamless integration with the Home Assistant API and makes future community-driven updates easy to apply.

BROWSER INCOMPATIBLE

Since your browser doesn't support Web Serial, the configuration assistant isn't available. Please use a Chromium-based browser instead.

Integrated OTA Updates Latest release build, no customization

The firmware supports OTA updates right out of the box, so you can install the latest version with a single click — quick, easy, and hassle-free.

When integrated with Home Assistant, Doorman updates will even show up directly in your Updates list, making it even more convenient to stay up to date.

To update, simply click the Install Update button in the firmware's web interface or use the Update list in Home Assistant.

ESPHome CLI / Dashboard Full customization

If you want full customization and the ability to add your own sensors, automations, or features, this is your way to go — ideal for power users who prefer complete control over their setup.

ESPHome Dashboard

You can adopt Doorman to your ESPHome Dashboard and flash a customized firmware variant.

The adopted configuration could look like this:

yaml
# Doorman S3 Firmware
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"

# Import Doorman Stock Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.ha.stock.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

ESPHome CLI

If you choose this option, you likely know what you're doing — just run the following telegram with your YAML configuration file.

If you prefer using the MQTT-only firmware, simply apply the provided MQTT example YAML tailored for your board below.

sh
esphome run <yamlfile.yaml>

Board Configuration Files

Default GPIO configuration

ComponentESP32-S3ESP32
TC:BUS RXGPIO 9GPIO 22
TC:BUS TXGPIO 8GPIO 23
Status LEDGPIO 1GPIO 2
RGB Status LEDGPIO 2GPIO 4
RelayGPIO 42GPIO 21
External ButtonGPIO 41GPIO 20
ADC InputGPIO 10GPIO 36

Stock Firmware

ESP32-S3 (Octal PSRAM) / Doorman-S3 (1.5)
yaml
# Doorman Stock Firmware (Home Assistant)
# Base Board ESP32-S3

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.ha.stock.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Stock Firmware (MQTT)
# Base Board ESP32-S3

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.mqtt.stock.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Stock Firmware (HomeKit)
# Base Board ESP32-S3

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.homekit.stock.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Stock Firmware (Custom)
# Base Board ESP32-S3

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.custom.stock.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
ESP32-S3 (Quad PSRAM) / Doorman-S3 (1.4)
yaml
# Doorman Stock Firmware (Home Assistant)
# Base Board ESP32-S3-QUAD

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3-quad.ha.stock.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Stock Firmware (MQTT)
# Base Board ESP32-S3-QUAD

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3-quad.mqtt.stock.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Stock Firmware (HomeKit)
# Base Board ESP32-S3-QUAD

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3-quad.homekit.stock.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Stock Firmware (Custom)
# Base Board ESP32-S3-QUAD

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3-quad.custom.stock.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
Generic ESP32
yaml
# Doorman Stock Firmware (Home Assistant)
# Base Board ESP32

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32.ha.stock.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Stock Firmware (MQTT)
# Base Board ESP32

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32.mqtt.stock.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Stock Firmware (HomeKit)
# Base Board ESP32

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32.homekit.stock.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Stock Firmware (Custom)
# Base Board ESP32

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32.custom.stock.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

Nuki Bridge Firmware

ESP32-S3 (Octal PSRAM) / Doorman-S3 (1.5)
yaml
# Doorman Nuki Bridge Firmware (Home Assistant)
# Base Board ESP32-S3

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman-Nuki-Bridge: github://azoninc/doorman/firmware/configurations/esp32-s3.ha.nuki-bridge.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Nuki Bridge Firmware (Custom)
# Base Board ESP32-S3

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman-Nuki-Bridge: github://azoninc/doorman/firmware/configurations/esp32-s3.custom.nuki-bridge.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
ESP32-S3 (Quad PSRAM) / Doorman-S3 (1.4)
yaml
# Doorman Nuki Bridge Firmware (Home Assistant)
# Base Board ESP32-S3-QUAD

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman-Nuki-Bridge: github://azoninc/doorman/firmware/configurations/esp32-s3-quad.ha.nuki-bridge.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Nuki Bridge Firmware (Custom)
# Base Board ESP32-S3-QUAD

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman-Nuki-Bridge: github://azoninc/doorman/firmware/configurations/esp32-s3-quad.custom.nuki-bridge.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
Generic ESP32
yaml
# Doorman Nuki Bridge Firmware (Home Assistant)
# Base Board ESP32

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman-Nuki-Bridge: github://azoninc/doorman/firmware/configurations/esp32.ha.nuki-bridge.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Nuki Bridge Firmware (Custom)
# Base Board ESP32

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman-Nuki-Bridge: github://azoninc/doorman/firmware/configurations/esp32.custom.nuki-bridge.dev.yaml@dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

Firmware Alternatives

Doorman Arduino Framework

If you're looking for a firmware that's more customizable through code, there's a great alternative developed by @peteh. Check it out on GitHub.

TIP

This version is ideal for developers or advanced users who want full control over the logic and behavior of their Doorman setup.

Released under the GPL 3.0 License.