Home Assistant Voice Preview Edition with Self Signed Certificate

Hello everyone,

I’m having persistent issues with Home Assistant Voice (ESPHome Assist Satellite) and audio playback (TTS / responses).

During the setup process I always end up with the following error screen:

“The voice assistant is unable to connect to Home Assistant.
To play audio, the voice assistant device has to connect to Home Assistant to fetch the files. Our test shows that the device is unable to reach the Home Assistant server.”

I’d like to describe the setup and the exact errors in detail to rule out common causes.


Environment

  • Home Assistant OS (full version) running on Proxmox
  • ESPHome, Assist, and all required add-ons installed inside HA
  • Home Assistant Voice Preview Edition
  • HA and the Voice device are in the same VLAN
  • Network connectivity is confirmed and stable (no routing or firewall issues between them)
  • No NAT, no WAN involvement

Versions

  • Home Assistant Core: 2025.12.5
  • Supervisor: 2025.12.3
  • Operating System: 16.3
  • Frontend: 20251203.3
  • Home Assistant Voice PE firmware: 25.12.1 (ESPHome 2025.12.1)

URL / TLS setup

  • Home Assistant is accessed only via HTTPS

  • HTTP is explicitly not allowed

  • Internal URL is correctly set to (intern.domain is written here to not expose my real internal domain):
    https://ha.intern.domain:8123

  • TLS setup:

  • Self-signed certificate chain

  • Own Root CA + Intermediate CA

  • Proper full chain configuration

  • Using Let’s Encrypt is not an option

  • Using plain HTTP is not an option


Observed behavior

  • Voice device connects and is visible in Home Assistant
  • Wake word detection works
  • Assist pipeline starts (light on / off etc works fine)
  • When HA tries to send audio back (TTS / response), playback fails
  • After failure, the pipeline sometimes stays busy and does not recover cleanly

I found following logs.


Logs

Playback / ffmpeg_proxy errors

Logger: homeassistant.components.esphome.manager
Source: components/esphome/manager.py:514
integration: ESPHome (documentation, issues)
First occurred: 21:00:53 (17 occurrences)
Last logged: 21:35:40

Home Assistant Voice 0a5988: [E][component:362][HTTPRead_0]: http_request set Error flag: unspecified
Home Assistant Voice 0a5988: [E][http_request.idf:128][HTTPRead_0]: HTTP Request failed: ESP_ERR_HTTP_CONNECT
Home Assistant Voice 0a5988: [E][component:379]: http_request cleared Error flag
Home Assistant Voice 0a5988: [E][http_media_source:111]: Cannot play 'https://ha.intern.domain:8123/api/esphome/ffmpeg_proxy/6e5688c690fb55afd85934bf0ff86ad0/tMEc6uiaZLkgD020lyfPvg.flac' on pipeline 0: pipeline is busy
Home Assistant Voice 0a5988: [E][speaker_source_media_player:437]: Pipeline 0: Failed to play URI: https://ha.intern.domain:8123/api/esphome/ffmpeg_proxy/6e5688c690fb55afd85934bf0ff86ad0/tMEc6uiaZLkgD020lyfPvg.flac

Assist Satellite unload error (seen when reloading/restarting)

Logger: homeassistant.config_entries
Source: config_entries.py:975
First occurred: 21:34:16 (1 occurrence)
Last logged: 21:34:16

Error unloading entry Home Assistant Voice 0a5988 for assist_satellite
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 975, in async_unload
    result = await component.async_unload_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/assist_satellite/__init__.py", line 181, in async_unload_entry
    return await hass.data[DATA_COMPONENT].async_unload_entry(entry)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 228, in async_unload_entry
    raise ValueError("Config entry was never loaded!")
ValueError: Config entry was never loaded!

ESPHome API encryption error

Logger: aioesphomeapi.connection
Source: runner.py:289
First occurred: 22:16:45 (1 occurrence)
Last logged: 22:16:45

10.30.0.241: Connection error occurred: 10.30.0.241: Connection requires encryption

ESPHome dashboard connection error (possibly unrelated, but seen)

Logger: homeassistant.components.esphome.coordinator
Source: helpers/update_coordinator.py:432
integration: ESPHome (documentation, issues)
First occurred: 22:15:51 (1 occurrence)
Last logged: 22:15:51

Error requesting ESPHome Dashboard data: Cannot connect to host 127.0.0.1:64344 ssl:default [Connect call failed ('127.0.0.1', 64344)]

Is there a way to fix my problem? I want to have it secure with ssl but I want to use my own ssl chain.

I also tried to add

http_request:
  verify_ssl: false

but I cannot see any yaml file for the Voice PE and I want ssl to work to have a secure configuration.

Any guidance or confirmation would be appreciated.

Br.

You’re on the right track, it’s surprising you haven’t run into this with other clients, or perhaps you have.

Your Voice PE will either have to have your personal CA installed or ignore TLS issues. Either way you have to take control of the device with ESPHome so you can edit it’s YAML. Given your constraints there are no other options.

Hi, I am having the exact same issue.

My device arrived today, and it shows on my HA as an integrated device, I am able to play songs on it, it recognizes the clicking but when I say “Okay Nabu” it makes a buzzing sound and nothing more.

The logs shows exact message:

Error unloading entry Home Assistant Voice 09105b for assist_satellite
...
    raise ValueError("Config entry was never loaded!")
ValueError: Config entry was never loaded!

I don’t even know where/how to looks to that YAML config, is there anything I can do?

Thanks.

Ok, My issue is now resolved.

I went to device config, selected Beta Firmware

Updated the device to the latest beta firmware (25.12.4)

Then the device restarted and is now working!

If you can find the device on home assistante ESP Home, go to Home Assistant Voice PE using chrome. and plug your device via usb, choose latest firmware.

Thanks a lot for your reply.

I would be willing to install my own CA or flash custom ESPHome firmware if needed.
However, from what I understand, once the Home Assistant Voice device is flashed and managed directly via ESPHome, it no longer receives the official Home Assistant Voice OTA updates.

Is that correct, or is there a supported way to:

  • keep receiving official OTA updates for the Voice Preview Edition, and
  • configure trust for a custom Root / Intermediate CA?

I’d like to keep the device secure and up to date, but avoid breaking the official update path if possible.

I cannot even play music on it. So you seem to have a different issue. I can talk to the VPE and it turns on light etc but it never talks or anything.
Do you have the device via ESPHome?

When you adopt the HAVPE [Home Assistant Voice Preview Edition] in ESPHome it will create a YAML configuration file that pulls the YAML from github. So you will still get updates but you will have to manually trigger the update, by clicking “install”, and it will build the latest firmware for you and install it.

I am using a self signed cert and have not figured out how to install it on the ESP32 device. I don’t think it can be done right now. To work around this I have added the follwing to the HAVPE YAML which stops SSL verification.

substitutions:
  name: home-assistant-voice-<<REDACTED>>
  friendly_name: Home Assistant Voice <<REDACTED>>
packages:
  Nabu Casa.Home Assistant Voice PE: github://esphome/home-assistant-voice-pe/home-assistant-voice.yaml
esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}
api:
  encryption:
    key: <<REDACTED>>

# Bypass SSL requests reducing security
# Required to make Media Player work with unsigned certification
http_request:
  verify_ssl: false