This message was deleted.
# helpdesk
s
This message was deleted.
f
hey, have you tried adding ice server in room connectOptions?
Copy code
RoomOptions(
  connectOptions: const ConnectOptions(
            rtcConfiguration: RTCConfiguration(
              iceServers: [
                RTCIceServer(
                  urls: [
                    'stun:<http://stun.l.google.com:19302|stun.l.google.com:19302>',
                  ],
                ),
              ],
            ),
          )
);
d
which platform are you running this on?
g
Will try by adding this to flutter
On Google cloud k8s
d
I meant the device you are running the Flutter app on..
g
Android
d
is it iOS/Android/Windows/Mac/etc..
I think you shouldn't have to specify ICE servers explicitly...
g
updated to latest fsdk 1.3.4 since found an issue that stated it might help, And tried to manually reconnect after we get this error
What do you think best route to tackle to investigate more
d
when you are connected via the browser, can you go to webrtc-internals and dump the ice candidates?
g
Deal will send here once I am able to retest
👍 1
these are the candidates removed the local IP, it is correctly showing the public facing IP and the Remote IP is correctly showing the Node IP
Copy code
{ iceServers: [turns:<http://turn.podeo.co:443?transport=tcp|turn.podeo.co:443?transport=tcp>, stun:<http://stun.l.google.com:19302|stun.l.google.com:19302>, stun:<http://stun1.l.google.com:19302|stun1.l.google.com:19302>], iceTransportPolicy: all, bundlePolicy: balanced, rtcpMuxPolicy: require, iceCandidatePoolSize: 0 }

ICE connection state: new
tried adding stun manually to connectionOptions same issue
d
hmm that is strange it's not getting your local IP..
g
Local IP I removed
it is showing correctly, I removed from the photo
d
lol.. ok I see 😅
that looks correct..
g
yeah, on the browser it always connects correctly
on flutter Wifi Android we get the mentioned error
and same connection that the browser is connecting on and it works browser not app
@dry-elephant-14928 any additional info that might help with this issue, trying to dig deeper, can't seem to pinpoint the issue
d
so you mean Flutter for browser works? but not Flutter for Android? It would be helpful to see ICE candidates that are being logged. One thing to try: can you test against a cloud.livekit.io server? Would the same issue occur with Android?
f
@green-crayon-77332 Can you provide me your lk server url and token you deployed? I’m using lk’s cloud test and it seems to connect correctly every time using android device.
g
Will try to test out on livekit cloud and we eif it persists @freezing-lifeguard-43174
Tell me when u want to test to generate a token, Its short lived tokens
f
hey, i can test now
g
Copy code
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2ODY5MDA4ODAsImlzcyI6IkR1eDNnOUtKejZqMldQRDQiLCJuYmYiOjE2ODY4OTcyODAsInN1YiI6IjkzMzYiLCJ2aWRlbyI6eyJjYW5QdWJsaXNoIjp0cnVlLCJjYW5QdWJsaXNoU291cmNlcyI6WyJtaWNyb3Bob25lIl0sInJvb20iOiI5OGFjZjIxNy0xNGE1LTQyMGItOWI2Mi1hY2FlYzUyZTk0YzUiLCJyb29tSm9pbiI6dHJ1ZX19.LjtIDeDTDmwSAV2OwBD37s7pGe8tzT2nEh-AMWOWNM0
thanks
f
Thanks, it’s reproducible, I’m investigating
g
looking forward on your approach, thank you
f
Quick question. Does your turn server only support tcp?
g
the turn is liveKits embedded turn server
it might be disabled
checking
d
there isn't a turn/udp or stun server returned?
g
udp on helm was commented, reconfigure ? or wait to finalize tests ?
@dry-elephant-14928 stun was returning google stun turn the livekits turn server
Copy code
<http://turn.podeo.co|turn.podeo.co>
f
The server returned two,
<http://stun.google.com|stun.google.com>
and
<http://turn.podeo.co:443?transport=tcp|turn.podeo.co:443?transport=tcp>
But it seems that the turn server is invalid, because the local candidate has only one reflection candidate, and no turn candidate has been obtained.
d
ah I see. prflx would be ok. it shouldn't need TURN. unless the server's port isn't open
f
In addition, the host candidate sent by the lk server seems to have changed, and several connections return different ips. Is your lk server deployed behind NAT?
g
it deployed on gcp and k8s with ingress for rtc and LoadBalancer for turn
do you think changing to a standalone instance will have better approach ?
f
Wait for me for a few minutes, I am verifying the validity of the turn server on android
g
deal thanks
f
Can you create another token, about a few hours of validity
--valid-for 4h
g
sure
need 5 minutes and will generate
f
okay, thanks,
g
Copy code
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2ODY5Mzc2MDEsImlzcyI6IkR1eDNnOUtKejZqMldQRDQiLCJuYmYiOjE2ODY5MDE2MDEsInN1YiI6IjkzMzYiLCJ2aWRlbyI6eyJjYW5QdWJsaXNoIjp0cnVlLCJyb29tIjoiOThhY2YyMTctMTRhNS00MjBiLTliNjItYWNhZWM1MmU5NGM1Iiwicm9vbUpvaW4iOnRydWV9fQ.Dn4p0yDDa2l8dJF7wCWxOV9GTZPqTJvs0xw-f63wem4
10 hours
f
cool, thanks.
g
thank you
f
The issue has been located. It is related to the inability of the Android sdk to verify the turns tls certificate. Adding TLS_CERT_POLICY_INSECURE_NO_CHECK (change in flutter-webrtc android native code) can correctly connect to your server. This may be a related issue. https://github.com/livekit/client-sdk-flutter/issues/115#issuecomment-1413597667
g
damnn
thank you great investigation skills
we are on letsencrypt ssl
f
You can try ZeroSSL Certs, but I don’t understand why Lets Encrypt Certs can’t be verified 😂
BTW, your udp turn server is invalid, if it is useful, you should be able to connect successfully.
g
deal will see what might be going on with UDP
@freezing-lifeguard-43174 even ZeroSSL did not work
a purchased SSL certificate worked
it seems some Intermediary or Root CA are not taken into consideration
f
Maybe android chrome has some root certificate? The WebRTC. native SDK can only read the root CA of the android system.
g
maybe will experiment later on to bundle let's encrypt intermediary cert to the domain cert and see if it is taken as valid
@freezing-lifeguard-43174 as an update, Let's encrypt was already appended the Intermediary certs, I did not investigate more about the issue, but with a bundled sectigo cert all going well
🔥 1