Steps to reproduce
I'm experiencing the same issue as described in this thread. Element X fails to start calls with error MISSING_MATRIX_RTC_TRANSPORT, even though the server is fully and correctly configured.
Environment:
- App: Element X (both iOS and Android)
- Version: 26.03.3
- Devices: iPhone 15 Plus (iOS 26.3.1) and Samsung SM-A725F (Android 14)
- Homeserver:
matrix.rdk-invest.ru:8450 (Synapse 1.150.0)
- SFU: LiveKit 1.10.0 with JWT service (lk-jwt-service 0.4.1)
- Reverse proxy: Nginx Proxy Manager
- TURN/STUN: Coturn (works fine for classic Element)
What works correctly:
.well-known/matrix/client:
json
{
"m.homeserver": {
"base_url": "https://matrix.rdk-invest.ru:8450"
},
"org.matrix.msc2965.authentication": {
"issuer": "https://auth.rdk-invest.ru:8450",
"account": "https://auth.rdk-invest.ru:8450/account/"
},
"org.matrix.msc4143.rtc_foci": [
{
"type": "livekit",
"livekit_service_url": "https://matrix.rdk-invest.ru:8450/livekit/jwt"
}
]
}
What doesn't work:
- ❌ Element X cannot start calls
- ❌ Error:
MISSING_MATRIX_RTC_TRANSPORT
Server logs (captured request):
text
GET /_matrix/client/unstable/org.matrix.msc4143/rtc/transports HTTP/1.1
Host: matrix.rdk-invest.ru:8450
User-Agent: Element X/26.03.3 (iPhone 15 Plus; iOS 26.3.1; Scale/3.00)
// No Authorization header present
Server response:
text
Manual verification (with token):
bash
curl -X GET "https://matrix.rdk-invest.ru:8450/_matrix/client/unstable/org.matrix.msc4143/rtc/transports" \
-H "Authorization: Bearer <valid_token>"
-> Returns {} (200 OK)
What I've tried:
- Clearing app cache
- Reinstalling Element X
- Rebooting devices
- Restarting Synapse and LiveKit
- Verified
.well-known is correct
- Verified LiveKit and JWT service are accessible
- Verified all other endpoints work with authentication
Conclusion:
This is a client-side bug. Element X does not send the Authorization: Bearer ... header specifically for the MSC4143 rtc/transports endpoint, while it correctly sends it for other authenticated endpoints (e.g., /profile, /sync, /messages). Because of this, Synapse returns 401, and the app shows MISSING_MATRIX_RTC_TRANSPORT.
The server is fully configured according to the official Element Call documentation and works perfectly with classic Element for calls (using TURN/Coturn). This issue only affects Element X.
Please fix this bug so Element X can work with self-hosted servers!
Server info for developers:
Thank you! 🚀
Steps to reproduce
I'm experiencing the same issue as described in this thread. Element X fails to start calls with error
MISSING_MATRIX_RTC_TRANSPORT, even though the server is fully and correctly configured.Environment:
matrix.rdk-invest.ru:8450(Synapse 1.150.0)What works correctly:
.well-known/matrix/clientreturns correct JSON withrtc_focihttps://matrix.rdk-invest.ru:8450/livekit/->OKhttps://matrix.rdk-invest.ru:8450/livekit/jwt/healthz-> empty response.well-known/matrix/client:
json
What doesn't work:
MISSING_MATRIX_RTC_TRANSPORTServer logs (captured request):
text
Server response:
text
Manual verification (with token):
bash
-> Returns
{}(200 OK)What I've tried:
.well-knownis correctConclusion:
This is a client-side bug. Element X does not send the
Authorization: Bearer ...header specifically for the MSC4143rtc/transportsendpoint, while it correctly sends it for other authenticated endpoints (e.g.,/profile,/sync,/messages). Because of this, Synapse returns 401, and the app showsMISSING_MATRIX_RTC_TRANSPORT.The server is fully configured according to the official Element Call documentation and works perfectly with classic Element for calls (using TURN/Coturn). This issue only affects Element X.
Please fix this bug so Element X can work with self-hosted servers!
Server info for developers:
.well-known:https://matrix.rdk-invest.ru:8450/.well-known/matrix/clienthttps://matrix.rdk-invest.ru:8450/livekit/https://matrix.rdk-invest.ru:8450/livekit/jwt/healthzThank you! 🚀