Home Assistant only showing one switch for ESP32-C3 device

Hello everyone,

I’m having an issue after adding an ESP32-C3 Super Mini board using the ESPHome Builder. The board flashes without any issues and works, but for some reason, I cannot create more than one switch entity for it.

Here is my YAML configuration:

captive_portal:

switch:
  - platform: gpio
    name: "Relay 1"
    id: relay_ch1A
    pin:
      number: GPIO20
      inverted: true
    restore_mode: RESTORE_DEFAULT_OFF

  - platform: gpio
    name: "Relay 2"
    id: relay_ch2A
    pin:
      number: GPIO1
      inverted: true
    restore_mode: RESTORE_DEFAULT_OFF

In the logs, I can clearly see that both switches are detected and initialized:

[12:01:53.437][C][logger:223]: Logger:
[12:01:53.437][C][logger:223]: Max Level: DEBUG
[12:01:53.437][C][logger:223]: Initial Level: DEBUG
[12:01:53.438][C][logger:230]: Log Baud Rate: 115200
[12:01:53.438][C][logger:230]: Hardware UART: USB_SERIAL_JTAG
[12:01:53.438][C][logger:239]: Task Log Buffer Size: 768 bytes
[12:01:53.453][C][switch.gpio:088]: GPIO Switch ‘Relay 1’
[12:01:53.453][C][switch.gpio:088]: Restore Mode: restore defaults to OFF
[12:01:53.475][C][switch.gpio:131]: Pin: GPIO20
[12:01:53.475][C][switch.gpio:088]: GPIO Switch ‘Relay 2’
[12:01:53.475][C][switch.gpio:088]: Restore Mode: restore defaults to OFF
[12:01:53.476][C][switch.gpio:131]: Pin: GPIO1
[12:01:53.507][C][captive_portal:141]: Captive Portal:
[12:01:53.546][C][wifi:1556]: WiFi:

However, in Home Assistant, only one switch entity ever shows up for this device—specifically, whichever one is listed first in the YAML code.

I have already tried:

  • Checking the entities list (and disabling all filters).
  • Assigning different GPIO pins.
  • Re-flashing the board from scratch.
  • Removing the device from Home Assistant and re-adding it.
  • Renaming the switches and the device itself.

None of this helped; there is still only one switch visible.

That single switch works completely fine. Other sensors I’ve connected to this board (such as a temperature/humidity sensor and a water leak sensor) also work without any issues.

Why might this strange behavior be happening? Any suggestions on how to fix it?

My goto first in ESPHOME is to run Validate first, to check the rendered yaml file i correct.
There are so more options that renders before the compile and install.
There you can see if you missed a obvious one.

Yes, I can see that. I received the message “INFO Configuration is valid!”

Yes, that confirms that, but if you look at the rendred yaml file, you will se that the ESPHOME add more options in your yaml file. So studdy this yaml and see if you get some hints whats going on.

Here is my entire YAML file (except for the password and key). I don’t see anything here that would prevent the second switch from displaying.

esphome:
  name: esp32minfortestrel
  friendly_name: ESP32MinForTestREL

esp32:
  variant: esp32c3
  flash_size: 4MB
  framework:
    type: esp-idf

logger:

api:
  encryption:
    key: ""

ota:
  - platform: esphome

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap:
    ssid: ESP32MinForTest Fallback Hotspot
    password: ""

captive_portal:

switch:
  - platform: gpio
    name: "Relay 1"
    id: relay_ch1A
    pin:
      number: GPIO20
      inverted: true
    restore_mode: RESTORE_DEFAULT_OFF

  - platform: gpio
    name: "Relay 2"
    id: relay_ch2A
    pin:
      number: GPIO1
      inverted: true
    restore_mode: RESTORE_DEFAULT_OFF

Neither do I. This is either bug or not esphome issue. What version are you on?

  • Core 2025.12.5
  • Supervisor 2026.07.5
  • Operating System 16.3
  • Frontend 20251203.3

Sorry, my(yours) entire yaml file render to, with the “Validate” that’s also shows the ESPHOME Version, not the HA version.

INFO ESPHome 2026.7.4
INFO Reading configuration /root/config/test.yaml...
esphome:
  name: esp32minfortestrel
  friendly_name: ESP32MinForTestREL
  min_version: 2026.7.4
  build_path: build/esp32minfortestrel
  platformio_options: {}
  build_flags: []
  environment_variables: {}
  includes: []
  includes_c: []
  libraries: []
  name_add_mac_suffix: false
  merge_warnings: true
  debug_scheduler: false
  areas: []
  devices: []
esp32:
  variant: ESP32C3
  flash_size: 4MB
  framework:
    type: esp-idf
    version: 5.5.5
    sdkconfig_options: {}
    log_level: ERROR
    advanced:
      compiler_optimization: SIZE
      enable_idf_experimental_features: false
      enable_lwip_assert: true
      ignore_efuse_custom_mac: false
      ignore_efuse_mac_crc: false
      sram1_as_iram: false
      enable_lwip_mdns_queries: true
      enable_lwip_bridge_interface: false
      enable_lwip_tcpip_core_locking: true
      enable_lwip_check_thread_safety: true
      disable_libc_locks_in_iram: true
      disable_vfs_support_termios: true
      disable_vfs_support_select: true
      disable_vfs_support_dir: true
      freertos_in_iram: false
      ringbuf_in_iram: false
      heap_in_iram: false
      execute_from_psram: false
      loop_task_stack_size: 8192
      enable_ota_rollback: true
      enable_ota_downgrade_protection: false
      use_full_certificate_bundle: false
      include_builtin_idf_components: []
      enable_full_printf: false
      disable_debug_stubs: true
      disable_ocd_aware: true
      disable_usb_serial_jtag_secondary: true
      disable_dev_null_vfs: true
      disable_mbedtls_peer_cert: true
      disable_mbedtls_pkcs7: true
      disable_regi2c_in_iram: true
      adc_oneshot_in_iram: false
      disable_fatfs: true
    components: []
  watchdog_timeout: 5s
  board: esp32-c3
  cpu_frequency: 160MHZ
logger:
  baud_rate: 115200
  tx_buffer_size: 512
  deassert_rts_dtr: false
  task_log_buffer_size: 768
  hardware_uart: USB_SERIAL_JTAG
  level: DEBUG
  logs: {}
  runtime_tag_levels: false
api:
  port: 6053
  reboot_timeout: 15min
  batch_delay: 100ms
  custom_services: false
  homeassistant_services: false
  homeassistant_states: false
  listen_backlog: 4
  max_connections: 5
  max_send_queue: 8
ota:
  - platform: web_server
  - platform: esphome
    version: 2
    port: 3232
    allow_partition_access: false
wifi:
  ap:
    ssid: <removed>
    password: <removed>
    ap_timeout: 90s
  domain: .local
  reboot_timeout: 15min
  power_save_mode: LIGHT
  fast_connect:
    enabled: false
    storage: flash
  enable_btm: false
  enable_rrm: false
  passive_scan: false
  enable_on_boot: true
  post_connect_roaming: true
  min_auth_mode: WPA2
  networks:
    - ssid: !secret 'wifi_ssid'
      password: !secret 'wifi_password'
      priority: 0
  use_address: esp32minfortestrel.local
captive_portal:
  compression: gzip
switch:
  - platform: gpio
    name: Relay 1
    id: relay_ch1A
    pin:
      number: 20
      inverted: true
      mode:
        output: true
        input: false
        open_drain: false
        pullup: false
        pulldown: false
      ignore_pin_validation_error: false
      ignore_strapping_warning: false
      drive_strength: 20.0
    restore_mode: RESTORE_DEFAULT_OFF
    disabled_by_default: false
    interlock_wait_time: 0ms
  - platform: gpio
    name: Relay 2
    id: relay_ch2A
    pin:
      number: 1
      inverted: true
      mode:
        output: true
        input: false
        open_drain: false
        pullup: false
        pulldown: false
      ignore_pin_validation_error: false
      ignore_strapping_warning: false
      drive_strength: 20.0
    restore_mode: RESTORE_DEFAULT_OFF
    disabled_by_default: false
    interlock_wait_time: 0ms
INFO Configuration is valid!

Okay, here is my file in full.

INFO ESPHome 2026.7.4
INFO Reading configuration /config/esphome/esp32minfortestrel.yaml...
esphome:
  name: esp32minfortestrel
  friendly_name: ESP32MinForTestREL
  min_version: 2026.7.4
  build_path: build/esp32minfortestrel
  platformio_options: {}
  build_flags: []
  environment_variables: {}
  includes: []
  includes_c: []
  libraries: []
  name_add_mac_suffix: false
  merge_warnings: true
  debug_scheduler: false
  areas: []
  devices: []
esp32:
  variant: ESP32C3
  flash_size: 4MB
  framework:
    type: esp-idf
    version: 5.5.5
    sdkconfig_options: {}
    log_level: ERROR
    advanced:
      compiler_optimization: SIZE
      enable_idf_experimental_features: false
      enable_lwip_assert: true
      ignore_efuse_custom_mac: false
      ignore_efuse_mac_crc: false
      sram1_as_iram: false
      enable_lwip_mdns_queries: true
      enable_lwip_bridge_interface: false
      enable_lwip_tcpip_core_locking: true
      enable_lwip_check_thread_safety: true
      disable_libc_locks_in_iram: true
      disable_vfs_support_termios: true
      disable_vfs_support_select: true
      disable_vfs_support_dir: true
      freertos_in_iram: false
      ringbuf_in_iram: false
      heap_in_iram: false
      execute_from_psram: false
      loop_task_stack_size: 8192
      enable_ota_rollback: true
      enable_ota_downgrade_protection: false
      use_full_certificate_bundle: false
      include_builtin_idf_components: []
      enable_full_printf: false
      disable_debug_stubs: true
      disable_ocd_aware: true
      disable_usb_serial_jtag_secondary: true
      disable_dev_null_vfs: true
      disable_mbedtls_peer_cert: true
      disable_mbedtls_pkcs7: true
      disable_regi2c_in_iram: true
      adc_oneshot_in_iram: false
      disable_fatfs: true
    components: []
  watchdog_timeout: 5s
  board: esp32-c3
  cpu_frequency: 160MHZ
logger:
  baud_rate: 115200
  tx_buffer_size: 512
  deassert_rts_dtr: false
  task_log_buffer_size: 768
  hardware_uart: USB_SERIAL_JTAG
  level: DEBUG
  logs: {}
  runtime_tag_levels: false
api:
  encryption:
    key: <removed>
  port: 6053
  reboot_timeout: 15min
  batch_delay: 100ms
  custom_services: false
  homeassistant_services: false
  homeassistant_states: false
  listen_backlog: 4
  max_connections: 5
  max_send_queue: 8
ota:
  - platform: web_server
  - platform: esphome
    version: 2
    port: 3232
    allow_partition_access: false
wifi:
  ap:
    ssid: <removed>
    password: <removed>
    ap_timeout: 90s
  domain: .local
  reboot_timeout: 15min
  power_save_mode: LIGHT
  fast_connect:
    enabled: false
    storage: flash
  enable_btm: false
  enable_rrm: false
  passive_scan: false
  enable_on_boot: true
  post_connect_roaming: true
  min_auth_mode: WPA2
  networks:
    - ssid: !secret 'wifi_ssid'
      password: !secret 'wifi_password'
      priority: 0
  use_address: esp32minfortestrel.local
captive_portal:
  compression: gzip
switch:
  - platform: gpio
    name: Relay 1
    id: relay_ch1A
    pin:
      number: 20
      inverted: true
      mode:
        output: true
        input: false
        open_drain: false
        pullup: false
        pulldown: false
      ignore_pin_validation_error: false
      ignore_strapping_warning: false
      drive_strength: 20.0
    restore_mode: RESTORE_DEFAULT_OFF
    disabled_by_default: false
    interlock_wait_time: 0ms
  - platform: gpio
    name: Relay 2
    id: relay_ch2A
    pin:
      number: 1
      inverted: true
      mode:
        output: true
        input: false
        open_drain: false
        pullup: false
        pulldown: false
      ignore_pin_validation_error: false
      ignore_strapping_warning: false
      drive_strength: 20.0
    restore_mode: RESTORE_DEFAULT_OFF
    disabled_by_default: false
    interlock_wait_time: 0ms
INFO Configuration is valid!

Did you notice this topic?

Maybe .7.4 has some issues (I’m on older version)..

Ancient history versions are not supported. Update all of those and try again (including your ESPHome version).

Hi i’m the one of the other related topic.

As i’m on arm v7 i can not update my homeassistant higer than 2025.15.4
Does that mean i can not update esphome higher than 2026.6.x or 2027.7 before .4 ?

On what Device or SOC ?

Distributor ID: Debian
Description: Debian GNU/Linux 13 (trixie)
Release: 13
Codename: trixie

Linux ha 6.6.144 #0 SMP Tue Jul 28 23:14:47 2026 armv7l GNU/Linux
Inside lxc container over openwrt

Marvell Armada 385, dual-core 1.6 GHz

:auto reply: downgrading esphome to 2026.6.5 make sensors/actors discoverable by homeassistant.

i tryed 2026.7.0 and did not works, i don’t undestand why that kind of basic is not supported anymore. first homeassistant on 32bit system. now esphome with old esphome.

@which_want_to_read . Just when ram and planet are exausted. Sorry i know the volunteer work but make the planet a trash exausted me .

(pip install --upgrade ‘esphome==2026.6.5’; )