An Azure service that integrates speech processing into apps and services.
WS_OPEN_ERROR_UNDERLYING_IO_OPEN_FAILED is documented as a connection failure pattern for the Speech SDK. For the specific CRL-related case, the documented indicators are:
- running on Linux or Android
- using SDK version prior to 1.48.2
- failures that can appear after a period of working connections or when connecting across regions
- SDK logs that show TLS verification failures such as
certificate verify failed -
Error 44/X509_V_ERR_DIFFERENT_CRL_SCOPE
That makes the first concrete action to upgrade from 1.44.0 to 1.48.2 or later and then retest on the failing Quest device. The documented risk of staying on an older SDK is continued connection failures until the SDK is upgraded, CRL checking is disabled, or the CRL cache is cleared.
For diagnostics, enable Speech SDK logging and inspect the TLS-related lines. The documented log signatures to look for are:
SPX_TRACE_ERROR: AZ_LOG_ERROR: tlsio_openssl.c:1655 Error 44 was unexpected
SPX_TRACE_ERROR: AZ_LOG_ERROR: tlsio_openssl.c:691 error:0A000086:SSL routines::certificate verify failed
SPX_TRACE_ERROR: web_socket.cpp:930 WS open operation failed with result=1(WS_OPEN_ERROR_UNDERLYING_IO_OPEN_FAILED)
If those lines appear on the managed headset and not on the unmanaged headset, that strongly points to a TLS/CRL validation difference on the device rather than a Speech key or region problem.
On authentication: the documented authentication failures for Speech SDK typically surface as 401, 403, AuthenticationFailure, invalid SpeechConfig, or access denied 0x5. Since those are not appearing in the failing logs, the failure pattern described is more consistent with a lower-level connection problem than with invalid key/region configuration.
On HTTPS versus WebSocket behavior: the context confirms the Speech SDK uses WebSocket connections, and the failing error is specifically during WebSocket open. A successful HTTPS reachability test does not rule out a WebSocket/TLS problem.
Given the device difference, the most supported troubleshooting path is:
- Upgrade the Speech SDK on Android/Quest from 1.44.0 to 1.48.2 or later.
- Enable SDK logging on both headsets and compare TLS-related errors during socket open.
- Check whether the failing device shows the documented TLS indicators:
certificate verify failed,Error 44, orX509_V_ERR_DIFFERENT_CRL_SCOPE. - If the app is using a Speech container anywhere in testing, make sure it is initialized with host authentication. Using key+region sends traffic to the public Speech service instead of the container.
- If the issue persists after upgrade, use the public support channels for Speech SDK issues: Stack Overflow with the
azure-speechtag or the Speech SDK GitHub issue tracker.
For the Unity package migration question, the available context does not document a Unity-specific migration issue causing this behavior.
References: