Skip to content

No TTS voice response in Assist chat due to mTLS #6206

@tomaciazek

Description

@tomaciazek

Home Assistant Android app version(s):
2025.11.4-full
Android version(s):
16
Device model(s):
Samsung Galaxy S22
Home Assistant version:
2025.12.4
Last working Home Assistant release (if known):
N/A
Description of problem, include YAML if issue is related to notifications:
When using mTLS authentication through Cloudflare, the Assist chat fails on playback of TTS recording provided by Piper. With mTLS protection policy disabled on Cloudflare, everything works fine. Surprisingly, when launching an audio debug stream, it works with mTLS enabled without issues too - I guess the debug mode is using different code / libraries for audio fetching / playback.

Companion App Logs:

12-28 17:22:01.996  3667  3756 D WebSocketCoreImpl: EventSocketResponse(id=14, event={"type":"tts-start","data":{"engine":"tts.piper","language":"pl_PL","voice":"pl_PL-gosia-medium","tts_input":"Wybacz, niestety nie mogę tego zrozumieć","acknowledge_override":false},"timestamp":"2025-12-28T16:22:02.217183+00:00"})
12-28 17:22:01.998  3667  3756 D WebSocketCoreImpl: Unknown event type ignoring. received data = 
12-28 17:22:01.998  3667  3756 D WebSocketCoreImpl: EventSocketResponse(id=14, event={"type":"run-end","data":null,"timestamp":"2025-12-28T16:22:02.217652+00:00"})
12-28 17:22:02.059  3667  3667 D ServerConnectionInfo: Using external URL
12-28 17:22:02.061  3667  3686 V MediaPlayer-JNI: native_setup
12-28 17:22:02.062  3667  3686 V MediaPlayerNative: constructor
12-28 17:22:02.063  3667  3686 V MediaPlayerNative: setListener
12-28 17:22:02.063  3667  3686 V MediaPlayer-JNI: get_session_id()
12-28 17:22:02.065  3667  5384 D WebSocketCoreImpl$createSubscriptionFlow$flow: Unsubscribing from {type=assist_pipeline/run, start_stage=stt, end_stage=tts, input={sample_rate=44100}, conversation_id=null, pipeline=01kddce33x4neej39jakbcb459, device_id=adf755451a8711d90e6292569d51b168}
12-28 17:22:02.065  3667  5384 D WebSocketCoreImpl$sendMessage: Sending message 16: {type=unsubscribe_events, subscription=14, id=16}
12-28 17:22:02.066  3667  5384 D WebSocketCoreImpl$sendMessage: Message number 16 sent awaiting answer from WebSocket
12-28 17:22:02.066  3667  3686 V MediaPlayer-JNI: setParameter: key 1400
12-28 17:22:02.066  3667  3686 V MediaPlayerNative: MediaPlayer::setParameter(1400)
12-28 17:22:02.068  3667  3686 V MediaHTTPService: MediaHTTPService(android.media.MediaHTTPService@6e423e1): Cookies: null
12-28 17:22:02.072  3667  3667 I View    : setRequestedFrameRate frameRate=NaN, this=androidx.compose.ui.platform.AndroidComposeView{99c0019 VFED..... ......ID 0,0-1080,2340 aid=1073741824}, caller=android.view.ViewGroup.setRequestedFrameRate:9952 androidx.compose.ui.platform.Api35Impl.setRequestedFrameRate:3314 androidx.compose.ui.platform.AndroidComposeView.dispatchDraw:1949 android.view.View.draw:26345 android.view.View.updateDisplayListIfDirty:25175 
12-28 17:22:02.072  3667  3667 I View    : setRequestedFrameRate frameRate=-4.0, this=android.view.View{890ed07 V.ED..... ........ 0,0-0,0}, caller=androidx.compose.ui.platform.Api35Impl.setRequestedFrameRate:3314 androidx.compose.ui.platform.AndroidComposeView.dispatchDraw:1950 android.view.View.draw:26345 android.view.View.updateDisplayListIfDirty:25175 android.view.ViewGroup.recreateChildDisplayList:4794 
12-28 17:22:02.079  3667  3667 I View    : setRequestedFrameRate frameRate=NaN, this=androidx.compose.ui.platform.AndroidComposeView{99c0019 VFED..... ........ 0,0-1080,2340 aid=1073741824}, caller=android.view.ViewGroup.setRequestedFrameRate:9952 androidx.compose.ui.platform.Api35Impl.setRequestedFrameRate:3314 androidx.compose.ui.platform.AndroidComposeView.dispatchDraw:1949 android.view.View.draw:26345 android.view.View.updateDisplayListIfDirty:25175 
12-28 17:22:02.079  3667  3667 I View    : setRequestedFrameRate frameRate=NaN, this=android.view.View{890ed07 V.ED..... ........ 0,0-0,0}, caller=androidx.compose.ui.platform.Api35Impl.setRequestedFrameRate:3314 androidx.compose.ui.platform.AndroidComposeView.dispatchDraw:1950 android.view.View.draw:26345 android.view.View.updateDisplayListIfDirty:25175 android.view.ViewGroup.recreateChildDisplayList:4794 
12-28 17:22:02.085  3667  3686 V MediaPlayerNative: setVideoSurfaceTexture
12-28 17:22:02.085  3667  3686 V MediaPlayerNative: prepareAsync
12-28 17:22:02.086  3667  3686 V MediaPlayerNative: invoke 80
12-28 17:22:02.086  3667  3789 V MediaHTTPService: makeHTTPConnection: CookieHandler (java.net.CookieManager@ad3eebd) exists.
12-28 17:22:02.086  3667  3789 V MediaHTTPService: makeHTTPConnection(android.media.MediaHTTPService@6e423e1): cookieHandler: java.net.CookieManager@ad3eebd Cookies: null
12-28 17:22:02.087  3667  3789 I MediaHTTPConnection: [0] - setReadTimeout and setConnectTimeout with 8000ms
12-28 17:22:02.149  3667  3667 I InsetsSourceConsumer: applyRequestedVisibilityToControl: visible=true, type=statusBars, host=io.homeassistant.companion.android/io.homeassistant.companion.android.assist.AssistActivity
12-28 17:22:02.171  3667  5287 D WebSocketCoreImpl: Websocket: onMessage (text)
12-28 17:22:02.173  3667  5287 D WebSocketCoreImpl: Message id 16 received
12-28 17:22:02.175  3667  5367 I WebSocketCoreImpl$createSubscriptionFlow$flow: Still 1 messages in the queue, not closing connection.
12-28 17:22:02.275  3667  3667 W AccessibilityDelegate: Drawing order is not available, was AccessibilityNodeInfo requested for a child node before its parent?
12-28 17:22:02.551  3667  3789 I MediaHTTPConnection: [0] - response code = 200
12-28 17:22:02.554  3667  3789 V MediaPlayerNative: message received msg=100, ext1=1, ext2=-1015
12-28 17:22:02.554  3667  3789 E MediaPlayerNative: error (1, -1015)
12-28 17:22:02.555  3667  3667 E MediaPlayer: Error (1,-1015)
12-28 17:22:02.555  3667  3667 E AudioUrlPlayer$playAudio: Media player encountered error: 1 (-1015)
12-28 17:22:02.556  3667  3667 V MediaPlayer: resetDrmState:  mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
12-28 17:22:02.556  3667  3667 V MediaPlayer: cleanDrmObj: mDrmObj=null mDrmSessionId=null
12-28 17:22:02.556  3667  3667 V MediaPlayer-JNI: release
12-28 17:22:02.556  3667  3667 V MediaPlayerNative: setListener
12-28 17:22:02.556  3667  3667 V MediaPlayerNative: disconnect
12-28 17:22:02.558  3667  3667 V MediaPlayerNative: destructor
12-28 17:22:02.559  3667  3667 V MediaPlayerNative: disconnect

Metadata

Metadata

Assignees

No one assigned

    Labels

    AssistbugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions