Logger: homeassistant.components.websocket_api.http.connection
Source: components/apple_tv/media_player.py:357
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 22:36:19 (2 occurrences)
Last logged: 22:46:35
[281472079975488] Error handling message: Unknown error (unknown_error) gdenas from 192.168.1.106 (Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Home Assistant/2026.4.1 (io.robbie.HomeAssistant; build:2026.1904; iOS 26.4.2) Mobile/HomeAssistant, like Safari)
[281471913219456] Error handling message: Unknown error (unknown_error) gdenas from 192.168.1.106 (Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Home Assistant/2026.4.1 (io.robbie.HomeAssistant; build:2026.1904; iOS 26.4.2) Mobile/HomeAssistant, like Safari)
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 28, in _handle_async_response
await func(hass, connection, msg)
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 1064, in handle_execute_script
script_result = await script_obj.async_run(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
msg.get("variables"), context=context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1891, in async_run
return await asyncio.shield(create_eager_task(run.async_run()))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 467, in async_run
await self._async_step(log_exceptions=False)
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 534, in _async_step
self._handle_exception(
~~~~~~~~~~~~~~~~~~~~~~^
trace_element,
^^^^^^^^^^^^^^
...<2 lines>...
self._log_exceptions or log_exceptions,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 594, in _handle_exception
raise exception
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 532, in _async_step
await getattr(self, handler)()
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1027, in _async_step_call_service
response_data = await self._async_run_long_action(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<9 lines>...
)
^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 642, in _async_run_long_action
return await long_task
^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2827, in async_call
response_data = await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2870, in _execute_service
return await target(service_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 733, in _service_handler
response = await self._async_start_run(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
variables=service.data, context=service.context, wait=True
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 689, in _async_start_run
script_result = await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 722, in _async_run
return await self.script.async_run(script_vars, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1891, in async_run
return await asyncio.shield(create_eager_task(run.async_run()))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 467, in async_run
await self._async_step(log_exceptions=False)
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 534, in _async_step
self._handle_exception(
~~~~~~~~~~~~~~~~~~~~~~^
trace_element,
^^^^^^^^^^^^^^
...<2 lines>...
self._log_exceptions or log_exceptions,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 571, in _handle_exception
raise exception
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 532, in _async_step
await getattr(self, handler)()
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1027, in _async_step_call_service
response_data = await self._async_run_long_action(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<9 lines>...
)
^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 642, in _async_run_long_action
return await long_task
^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2827, in async_call
response_data = await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2870, in _execute_service
return await target(service_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 951, in entity_service_call
response_data = await _async_handle_entity_calls(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
)
^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 830, in _async_handle_entity_calls
single_result = await entity.async_request_call(_with_context(entity, coro))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1696, in async_request_call
return await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 825, in _with_context
return await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 909, in _handle_single_entity_call
result = await task
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/tts/entity.py", line 136, in async_speak
await self.hass.services.async_call(
...<17 lines>...
)
File "/usr/src/homeassistant/homeassistant/core.py", line 2827, in async_call
response_data = await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2870, in _execute_service
return await target(service_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 951, in entity_service_call
response_data = await _async_handle_entity_calls(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
)
^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 830, in _async_handle_entity_calls
single_result = await entity.async_request_call(_with_context(entity, coro))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1696, in async_request_call
return await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 825, in _with_context
return await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 909, in _handle_single_entity_call
result = await task
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/apple_tv/media_player.py", line 357, in async_play_media
await self.atv.stream.stream_file(media_id)
File "/usr/local/lib/python3.14/site-packages/pyatv/core/facade.py", line 390, in stream_file
await self.relay("stream_file")(
...<4 lines>...
)
File "/usr/local/lib/python3.14/site-packages/pyatv/protocols/raop/__init__.py", line 363, in stream_file
audio_file = await open_source(
^^^^^^^^^^^^^^^^^^
...<4 lines>...
)
^
File "/usr/local/lib/python3.14/site-packages/pyatv/protocols/raop/audio_source.py", line 730, in open_source
return await InternetSource.open(source, sample_rate, channels, sample_size)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.14/site-packages/pyatv/protocols/raop/audio_source.py", line 598, in open
stream_generator = await loop.run_in_executor(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<9 lines>...
)
^
File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 86, in run
result = ctx.run(self.task)
File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 73, in run
return fn(*args, **kwargs)
File "/usr/local/lib/python3.14/site-packages/miniaudio.py", line 1658, in stream_any
raise DecodeError("failed to init decoder", result)
miniaudio.DecodeError: ('failed to init decoder', -1)
The problem
TTS via tts.home_assistant_cloud (Nabu Casa) to HomePod fails with
miniaudio.DecodeError: ('failed to init decoder', -1) after upgrading
to 2026.5. Was working flawlessly on 2026.4.1.
The issue appears to be caused by the Python 3.13 → 3.14 upgrade
bundled in 2026.5. The miniaudio C extension does not appear to
initialise correctly under Python 3.14, causing all TTS streams to
HomePod/AirPlay targets to fail.
What version of Home Assistant Core has the issue?
core-2026.5.1
What was the last working version of Home Assistant Core?
core-2026.4.1
What type of installation are you running?
Home Assistant OS
Integration causing the issue
Apple TV
Link to integration documentation on our website
No response
Diagnostics information
No response
Example YAML snippet
Anything in the logs that might be useful for us?
Logger: homeassistant.components.websocket_api.http.connection Source: components/apple_tv/media_player.py:357 Integration: Home Assistant WebSocket API (documentation, issues) First occurred: 22:36:19 (2 occurrences) Last logged: 22:46:35 [281472079975488] Error handling message: Unknown error (unknown_error) gdenas from 192.168.1.106 (Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Home Assistant/2026.4.1 (io.robbie.HomeAssistant; build:2026.1904; iOS 26.4.2) Mobile/HomeAssistant, like Safari) [281471913219456] Error handling message: Unknown error (unknown_error) gdenas from 192.168.1.106 (Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Home Assistant/2026.4.1 (io.robbie.HomeAssistant; build:2026.1904; iOS 26.4.2) Mobile/HomeAssistant, like Safari) Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 28, in _handle_async_response await func(hass, connection, msg) File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 1064, in handle_execute_script script_result = await script_obj.async_run( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ msg.get("variables"), context=context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1891, in async_run return await asyncio.shield(create_eager_task(run.async_run())) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 467, in async_run await self._async_step(log_exceptions=False) File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 534, in _async_step self._handle_exception( ~~~~~~~~~~~~~~~~~~~~~~^ trace_element, ^^^^^^^^^^^^^^ ...<2 lines>... self._log_exceptions or log_exceptions, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 594, in _handle_exception raise exception File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 532, in _async_step await getattr(self, handler)() File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1027, in _async_step_call_service response_data = await self._async_run_long_action( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<9 lines>... ) ^ File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 642, in _async_run_long_action return await long_task ^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/core.py", line 2827, in async_call response_data = await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/core.py", line 2870, in _execute_service return await target(service_call) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 733, in _service_handler response = await self._async_start_run( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ variables=service.data, context=service.context, wait=True ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 689, in _async_start_run script_result = await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 722, in _async_run return await self.script.async_run(script_vars, context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1891, in async_run return await asyncio.shield(create_eager_task(run.async_run())) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 467, in async_run await self._async_step(log_exceptions=False) File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 534, in _async_step self._handle_exception( ~~~~~~~~~~~~~~~~~~~~~~^ trace_element, ^^^^^^^^^^^^^^ ...<2 lines>... self._log_exceptions or log_exceptions, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 571, in _handle_exception raise exception File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 532, in _async_step await getattr(self, handler)() File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1027, in _async_step_call_service response_data = await self._async_run_long_action( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<9 lines>... ) ^ File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 642, in _async_run_long_action return await long_task ^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/core.py", line 2827, in async_call response_data = await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/core.py", line 2870, in _execute_service return await target(service_call) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 951, in entity_service_call response_data = await _async_handle_entity_calls( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<5 lines>... ) ^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 830, in _async_handle_entity_calls single_result = await entity.async_request_call(_with_context(entity, coro)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1696, in async_request_call return await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 825, in _with_context return await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 909, in _handle_single_entity_call result = await task ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/tts/entity.py", line 136, in async_speak await self.hass.services.async_call( ...<17 lines>... ) File "/usr/src/homeassistant/homeassistant/core.py", line 2827, in async_call response_data = await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/core.py", line 2870, in _execute_service return await target(service_call) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 951, in entity_service_call response_data = await _async_handle_entity_calls( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<5 lines>... ) ^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 830, in _async_handle_entity_calls single_result = await entity.async_request_call(_with_context(entity, coro)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1696, in async_request_call return await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 825, in _with_context return await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 909, in _handle_single_entity_call result = await task ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/apple_tv/media_player.py", line 357, in async_play_media await self.atv.stream.stream_file(media_id) File "/usr/local/lib/python3.14/site-packages/pyatv/core/facade.py", line 390, in stream_file await self.relay("stream_file")( ...<4 lines>... ) File "/usr/local/lib/python3.14/site-packages/pyatv/protocols/raop/__init__.py", line 363, in stream_file audio_file = await open_source( ^^^^^^^^^^^^^^^^^^ ...<4 lines>... ) ^ File "/usr/local/lib/python3.14/site-packages/pyatv/protocols/raop/audio_source.py", line 730, in open_source return await InternetSource.open(source, sample_rate, channels, sample_size) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.14/site-packages/pyatv/protocols/raop/audio_source.py", line 598, in open stream_generator = await loop.run_in_executor( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<9 lines>... ) ^ File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 86, in run result = ctx.run(self.task) File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 73, in run return fn(*args, **kwargs) File "/usr/local/lib/python3.14/site-packages/miniaudio.py", line 1658, in stream_any raise DecodeError("failed to init decoder", result) miniaudio.DecodeError: ('failed to init decoder', -1)Additional information
Both tracebacks show identical failure at:
/usr/local/lib/python3.14/site-packages/miniaudio.py, line 1658
regardless of how tts.speak is invoked (automation or direct WebSocket
call from iOS app). This rules out any automation-specific issue.
Last working version confirmed: 2026.4.1 (visible in iOS app
user-agent in second traceback).