mullvad-browser
mullvad-browser copied to clipboard
Bug: Discord voice/WebRTC not working
Apologies, first issue - thought I'd post it here as people are migrating from FF and likely to encounter the same issue. Could be a misconfiguration or something else.
Symptom
- Open Discord
- Go to a voice channel
- Enable microphone permissions
- See rapid toggling between "No route" and "Connecting" in a loop
The troubleshooting guide doesn't seem to work: https://support.discord.com/hc/en-us/articles/115001310031-Voice-Connection-Errors
Logs
Snipped for brevity:
UnifiedConnection(default) signalingState => have-local-offer [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] RTC connected to media server: 66.22.197.94:50018 [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] Sending local SDP to RTC server. [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
UnifiedConnection(default) iceGatheringState => complete [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
UnifiedConnection(default) Renegotiating: Streams changed [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] Remote media sink wants: {"any":100} [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
UnifiedConnection(default) Renegotiating: Codecs changed [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] Setting media-session-id: e9b7f8458e4880e30557e08d0754cdeb for rtc-connection-id: 0881b208-aa72-4194-b92e-cc0ca0c25354 [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
UnifiedConnection(default) Set sdp: m=audio 50018 ICE/SDP
a=fingerprint:sha-256 4A:79:94:16:44:3F:BD:05:41:5A:C7:20:F3:12:54:70:00:73:5D:33:00:2D:2C:80:9B:39:E1:9F:2D:A7:49:87
c=IN IP4 66.22.197.94
a=rtcp:50018
a=ice-ufrag:jTqH
a=ice-pwd:XXXX
a=fingerprint:sha-256 4A:79:94:16:44:3F:BD:05:41:5A:C7:20:F3:12:54:70:00:73:5D:33:00:2D:2C:80:9B:39:E1:9F:2D:A7:49:87
a=candidate:1 1 UDP 4261412862 66.22.197.94 50018 typ host
[sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
UnifiedConnection(default) setRemoteDescription: unassigned streams: {"audio":[],"video":[]}, assigned streams: [], outbound streams: 22 [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] Remote media sink wants: {"any":100} [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
UnifiedConnection(default) signalingState => stable [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
UnifiedConnection(default) setRemoteDescription succeeded: unassigned streams: {"audio":[],"video":[]}, assigned streams: [] [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
UnifiedConnection(default) Negotiation started, assigned streams: [], unassigned streams: {"audio":[],"video":[]}, outbound stream: 22 [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
WebRTC: ICE failed, add a STUN server and see about:webrtc for more details
UnifiedConnection(default) iceConnectionState => failed [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
UnifiedConnection(default) Connection state change: CONNECTING => NO_ROUTE [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] RTC media connection state change: RTC_CONNECTING => NO_ROUTE [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] RTC connection state: RTC_CONNECTING => NO_ROUTE [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
UnifiedConnection(default) signalingState => have-local-offer [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
UnifiedConnection(default) setRemoteDescription: unassigned streams: {"audio":[],"video":[]}, assigned streams: [], outbound streams: 22 [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
UnifiedConnection(default) signalingState => stable [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
UnifiedConnection(default) setRemoteDescription succeeded: unassigned streams: {"audio":[],"video":[]}, assigned streams: [] [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
Invalid URI. Load of media resource failed. [1238413863402340363](https://discord.com/channels/534832574028316672/1238413863402340363)
[RTCControlSocket(default)] CLOSE [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] Disconnected from RTC server, clean: true, code: 1000, reason: Force Close, state: NO_ROUTE [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
UnifiedConnection(default) Connection state change: NO_ROUTE => DISCONNECTED [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] RTC media connection state change: NO_ROUTE => DISCONNECTED [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] RTC connection state: NO_ROUTE => RTC_DISCONNECTED [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] RTC connection state: RTC_DISCONNECTED => DISCONNECTED [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCControlSocket(default)] [CONNECT] wss://rotterdam3775.discord.media:443/ [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] Connecting to RTC server wss://rotterdam3775.discord.media:443/, rtc-connection-id: 0881b208-aa72-4194-b92e-cc0ca0c25354, channel: 534832574028316678(2) [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] RTC connection state: DISCONNECTED => CONNECTING [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] Error: getCodecSurvey is not implemented on MediaEngine of browsers.
getCodecSurvey https://discord.com/assets/web.c49ae1b0d87d9b22.js:12
_handleDisconnect https://discord.com/assets/web.c49ae1b0d87d9b22.js:12
emit https://discord.com/assets/web.c49ae1b0d87d9b22.js:1
emit https://discord.com/assets/web.c49ae1b0d87d9b22.js:12
close https://discord.com/assets/web.c49ae1b0d87d9b22.js:12
em https://discord.com/assets/web.c49ae1b0d87d9b22.js:12
_timeoutId https://discord.com/assets/web.c49ae1b0d87d9b22.js:12
c https://discord.com/assets/sentry.005f805396f9e7bc.js:1
setTimeout handler*515737/s/< https://discord.com/assets/sentry.005f805396f9e7bc.js:1
fail https://discord.com/assets/web.c49ae1b0d87d9b22.js:12
_handleReady https://discord.com/assets/web.c49ae1b0d87d9b22.js:12
emit https://discord.com/assets/web.c49ae1b0d87d9b22.js:1
emit https://discord.com/assets/web.c49ae1b0d87d9b22.js:12
setConnectionState https://discord.com/assets/web.c49ae1b0d87d9b22.js:12
E https://discord.com/assets/web.c49ae1b0d87d9b22.js:12
[sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] Destroy RTCConnection [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCControlSocket(default)] CLOSE [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
The connection was refused when attempting to contact wss://rotterdam3775.discord.media/?v=8. [web.c49ae1b0d87d9b22.js:12:3208157](https://discord.com/assets/web.c49ae1b0d87d9b22.js)
[RTCConnection(534832574028316672, default)] Disconnected from RTC server, clean: true, code: 1000, reason: Force Close, state: CONNECTING [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
[RTCConnection(534832574028316672, default)] RTC connection state: CONNECTING => DISCONNECTED [sentry.005f805396f9e7bc.js:14:2202](https://discord.com/assets/sentry.005f805396f9e7bc.js)
And webrtc log:
+++++++ BEGIN (process id 96206) ++++++++
ICE-STREAM(PC:{10815fb8-ba92-43e1-9d53-4f44df2f9b10} 1741084085907227 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363) transport-id=transport_0 - 8744e593:9ed94b895c1cd103724353d9fe203faf): relay only option results in no host candidate for IP4:10.140.166.111:0/UDP
ICE-STREAM(PC:{10815fb8-ba92-43e1-9d53-4f44df2f9b10} 1741084085907227 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363) transport-id=transport_0 - 8744e593:9ed94b895c1cd103724353d9fe203faf): relay only option is set without any TURN server configured
ICE-STREAM(PC:{10815fb8-ba92-43e1-9d53-4f44df2f9b10} 1741084085907227 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363) transport-id=transport_0 - 8744e593:9ed94b895c1cd103724353d9fe203faf): relay/proxy only option results in ICE TCP being disabled
ICE(PC:{10815fb8-ba92-43e1-9d53-4f44df2f9b10} 1741084085907227 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363)): couldn't create any valid candidates
ICE(PC:{10815fb8-ba92-43e1-9d53-4f44df2f9b10} 1741084085907227 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363)): Failed to initialize a stream; this might not be an unrecoverable error, if this stream will be marked obsolete soon due to an ICE restart.
ICE-STREAM(PC:{10815fb8-ba92-43e1-9d53-4f44df2f9b10} 1741084085907227 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363) transport-id=transport_0 - 8744e593:9ed94b895c1cd103724353d9fe203faf): relay only option results in no host candidate for IP4:10.140.166.111:0/UDP
ICE-STREAM(PC:{10815fb8-ba92-43e1-9d53-4f44df2f9b10} 1741084085907227 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363) transport-id=transport_0 - 8744e593:9ed94b895c1cd103724353d9fe203faf): relay only option is set without any TURN server configured
ICE-STREAM(PC:{10815fb8-ba92-43e1-9d53-4f44df2f9b10} 1741084085907227 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363) transport-id=transport_0 - 8744e593:9ed94b895c1cd103724353d9fe203faf): relay/proxy only option results in ICE TCP being disabled
ICE(PC:{10815fb8-ba92-43e1-9d53-4f44df2f9b10} 1741084085907227 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363)): couldn't create any valid candidates
ICE(PC:{10815fb8-ba92-43e1-9d53-4f44df2f9b10} 1741084085907227 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363)): Failed to initialize a stream; this might not be an unrecoverable error, if this stream will be marked obsolete soon due to an ICE restart.
ICE-STREAM(PC:{f6072ffa-5f77-47a4-8608-6537f889ab7d} 1741084088691664 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363) transport-id=transport_0 - 330e8f8f:7ef9c68b542987a38a77e3d59bfca1ae): relay only option results in no host candidate for IP4:10.140.166.111:0/UDP
ICE-STREAM(PC:{f6072ffa-5f77-47a4-8608-6537f889ab7d} 1741084088691664 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363) transport-id=transport_0 - 330e8f8f:7ef9c68b542987a38a77e3d59bfca1ae): relay only option is set without any TURN server configured
ICE-STREAM(PC:{f6072ffa-5f77-47a4-8608-6537f889ab7d} 1741084088691664 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363) transport-id=transport_0 - 330e8f8f:7ef9c68b542987a38a77e3d59bfca1ae): relay/proxy only option results in ICE TCP being disabled
ICE(PC:{f6072ffa-5f77-47a4-8608-6537f889ab7d} 1741084088691664 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363)): couldn't create any valid candidates
ICE(PC:{f6072ffa-5f77-47a4-8608-6537f889ab7d} 1741084088691664 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363)): Failed to initialize a stream; this might not be an unrecoverable error, if this stream will be marked obsolete soon due to an ICE restart.
ICE-STREAM(PC:{f6072ffa-5f77-47a4-8608-6537f889ab7d} 1741084088691664 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363) transport-id=transport_0 - 330e8f8f:7ef9c68b542987a38a77e3d59bfca1ae): relay only option results in no host candidate for IP4:10.140.166.111:0/UDP
ICE-STREAM(PC:{f6072ffa-5f77-47a4-8608-6537f889ab7d} 1741084088691664 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363) transport-id=transport_0 - 330e8f8f:7ef9c68b542987a38a77e3d59bfca1ae): relay only option is set without any TURN server configured
ICE-STREAM(PC:{f6072ffa-5f77-47a4-8608-6537f889ab7d} 1741084088691664 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363) transport-id=transport_0 - 330e8f8f:7ef9c68b542987a38a77e3d59bfca1ae): relay/proxy only option results in ICE TCP being disabled
ICE(PC:{f6072ffa-5f77-47a4-8608-6537f889ab7d} 1741084088691664 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363)): couldn't create any valid candidates
ICE(PC:{f6072ffa-5f77-47a4-8608-6537f889ab7d} 1741084088691664 (id=4294967328 url=https://discord.com/channels/534832574028316672/1238413863402340363)): Failed to initialize a stream; this might not be an unrecoverable error, if this stream will be marked obsolete soon due to an ICE restart.
+++++++ END (process id 96206) ++++++++
I would appreciate if mullvad posted a solution on their blog (or elsewhere) detailing how to fix the problem and what privacy/security/anonymity problems it could pose.