ICE failed for component 1 in stream 1 - STUN demux error: no FINGERPRINT attribute - how to troubleshoot?

Hi all,

My android web browser is unable to establish a video connection to Janus running on my Raspberry Pi over internet, however the connection works when android client is connected to the same LAN as the Janus server. I’m hoping someone can point me in a direction as I’ve looked at the logs and unable to find out the reason why.

All I can see in the logs that can point to a potential issue is this error:
STUN demux error: no FINGERPRINT attribute and Incorrectly multiplexed STUN message ignored.. Does this mean that the client has some incompatibilities?

Here is the log file from the server:

Starting Janus Runner ...
Probbing the network first time ...
Got new _Netcfg(nat_type='Full Cone NAT', src_ip='192.168.1.199', ext_ip='135.XXX.XXX.XXX (Janus Server IP)', stun_host='stun.l.google.com', stun_port=19305)
Starting Janus ...
Started Janus pid=27285: /usr/bin/janus --disable-colors --plugins-folder=/usr/lib/ustreamer/janus --configs-folder=/etc/kvmd/janus --interface=192.168.1.199 --stun-server=stun.l.google.com:19305
Janus commit: not-a-git-repo
Compiled on:  Tue Mar 14 08:49:10 UTC 2023
Logger plugins folder: /usr/lib/janus/loggers
---------------------------------------------------
Starting Meetecho Janus (WebRTC Server) v0.13.3
---------------------------------------------------
Checking command line arguments...
[janus.jcfg]
general: {
debug_level: 7
debug_colors: no
interface: 192.168.1.199
configs_folder: /etc/kvmd/janus
plugins_folder: /usr/lib/ustreamer/janus
}
nat: {
nice_debug: true
ignore_mdns: false
ice_enforce_list: eth0
full_trickle: true
stun_server: stun.l.google.com
stun_port: 19305
}
media: {
ipv6: false
ipv6_linklocal: true
min_nack_queue: 2000
rtp_port_range: 20000-40000
no_media_timer: 0
slowlink_threshold: 10
twcc_period: 100
dtls_timeout: 1000
nack_optimizations: true
}
certificates: {
}
transports: {
}
plugins: {
}
events: {
}
loggers: {
}
Debug/log level is 7
Debug/log timestamps are disabled
Debug/log colors are disabled
Adding 'eth0' to the ICE enforce list...
Selecting local IP address...
-- Will try to use 192.168.1.199
Using 192.168.1.199 as local IP...
Token based authentication disabled
Initializing recorder code
RTP port range: 20000 -- 40000
Initializing ICE stuff (Full mode, ICE-TCP candidates disabled, full-trickle, IPv6 support disabled)
ICE port range: 20000-40000
STUN server to use: stun.l.google.com:19305
>> 142.250.112.127:19305 (IPv4)
Testing STUN server: message is of 20 bytes
>> Sent 20 bytes, waiting for reply...
>> Got 32 bytes...
>> XOR-MAPPED-ADDRESS: 0
>> Our public address is 135.XXX.XXX.XXX (Janus Server IP)
Enabling libnice debugging...
[WARN] No NICE_DEBUG environment variable set, setting maximum debug
[WARN] No G_MESSAGES_DEBUG environment variable set, setting maximum debug
Debugging NICE_DEBUG=all G_MESSAGES_DEBUG=all
Setting min NACK queue to 1000ms
Disabling no-media timer
Setting slowlink-threshold to 10 packets
Setting TWCC period to 100s
Using certificates:
(null)
(null)
Crypto: OpenSSL >= 1.1.0
No cert/key specified, autogenerating some...
Generating DTLS key / cert
Fingerprint of our certificate: CB:54:58:7C:FA:5D:C9:D3:A3:B5:47:D8:B8:E4:4F:83:73:2C:2C:2F:86:39:97:58:15:DE:AE:03:DA:80:0D:6B
[WARN] Data Channels support not compiled
Sessions watchdog started
Joining Janus requests handler thread
Event handlers support disabled
Plugins folder: /usr/lib/ustreamer/janus
Loading plugin 'libjanus_ustreamer.so'...
== ustreamer/main      -- Initializing PiKVM uStreamer plugin 5.41 ...
== ustreamer/config    -- Reading config file '/etc/kvmd/janus/janus.plugin.ustreamer.jcfg' ...
[janus.plugin.ustreamer.jcfg]
video: {
sink: kvmd::ustreamer::h264
}
audio: {
device: hw:0,0
tc358743: /dev/kvmd-video
}
== ustreamer/audio     -- Probing PCM capture ...
== ustreamer/audio     -- PCM capture is available
Version: 5041 (5.41)
[janus.plugin.ustreamer] ustreamer
PiKVM uStreamer Janus plugin for H.264 video
== ustreamer/video     -- No active watchers, memsink disconnected
Plugin API version: 17
Transport plugins folder: /usr/lib/janus/transports
Loading transport plugin 'libjanus_websockets.so'...
JANUS WebSockets transport plugin created!
Configuration file: /etc/kvmd/janus/janus.transport.websockets.jcfg
[janus.transport.websockets.jcfg]
general: {
ws: true
ws_unix: /run/kvmd/janus-ws.sock
}
libwebsockets logging: 0
Websockets server started (UNIX socket /run/kvmd/janus-ws.sock)...
Secure Websockets server disabled
Admin Websockets server disabled
Secure Admin Websockets server disabled
JANUS WebSockets transport plugin initialized!
Version: 1 (0.0.1)
[janus.transport.websockets] JANUS WebSockets transport plugin
This transport plugin adds WebSockets support to the Janus API via libwebsockets.
Plugin API version: 8
Janus API: enabled
Admin API: disabled
WebSockets thread started
[WSS-0xaf01d408] 27 (LWS_CALLBACK_PROTOCOL_INIT)
[WSS-0xae700ca0] 49 ((null))
[WSS-0xae700ca0] 20 (LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION)
[WSS-0xae700ca0] WebSocket connection opened from (unix skt)
Checking if (unix skt) is allowed to contact janus interface
Yep
[WSS-0xae700ca0] WebSocket connection accepted
[WSS-0xae700ca0]   -- Ready to be used!
[WSS-0xae700ca0] Got 47 bytes:
[WSS-0xae700ca0] First fragment: 47 bytes, 0 remaining
{"janus":"create","transaction":"OIsJTDHVspUE"}
[WSS-0xae700ca0] Done, parsing message: 47 bytes
[WSS-0xae700ca0] Parsed JSON message - consumed 47/47 bytes
Got a Janus API request from janus.transport.websockets (0xae703768)
Creating new session: 4830361675044257; 0xb0b00e68
Sending Janus API response to janus.transport.websockets (0xae703768)
[WSS-0xae700ca0] Sending WebSocket message (107 bytes)...
[WSS-0xae700ca0] Re-allocating to 123 bytes (was 0, response is 107 bytes)
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=107 bytes, Sent=107 bytes, Missing=0 bytes
[WSS-0xae700ca0] Got 142 bytes:
[WSS-0xae700ca0] First fragment: 142 bytes, 0 remaining
{"janus":"attach","plugin":"janus.plugin.ustreamer","opaque_id":"oid-19ohIRKhTsHc","transaction":"Es8XYHuUUc66","session_id":4830361675044257}
[WSS-0xae700ca0] Done, parsing message: 142 bytes
[WSS-0xae700ca0] Parsed JSON message - consumed 142/142 bytes
Got a Janus API request from janus.transport.websockets (0xae703768)
Creating new handle in session 4830361675044257: 3598914013491511; 0xb0b00e68 0xb0b01308
== ustreamer/main      -- Creating session 0xae7011a8 ...
Sending Janus API response to janus.transport.websockets (0xae703768)
[3598914013491511] Handle thread started; 0xb0b01308
[ice.c:janus_ice_handle_thread:1280] [3598914013491511] Looping...
[WSS-0xae700ca0] Sending WebSocket message (142 bytes)...
[WSS-0xae700ca0] Re-allocating to 158 bytes (was 123, response is 142 bytes)
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=142 bytes, Sent=142 bytes, Missing=0 bytes
[WSS-0xae700ca0] Got 137 bytes:
[WSS-0xae700ca0] First fragment: 137 bytes, 0 remaining
{"janus":"message","body":{"request":"features"},"transaction":"JWhV5NO5f3GN","session_id":4830361675044257,"handle_id":3598914013491511}
[WSS-0xae700ca0] Done, parsing message: 137 bytes
[WSS-0xae700ca0] Parsed JSON message - consumed 137/137 bytes
Got a Janus API request from janus.transport.websockets (0xae703768)
Transport task pool, serving request
[3598914013491511] There's a message for ustreamer
[3598914013491511] Sending event to transport...
Sending event to janus.transport.websockets (0xae703768)
Creating plugin result...
Sending Janus API response to janus.transport.websockets (0xae703768)
Destroying plugin result...
[WSS-0xae700ca0] Sending WebSocket message (380 bytes)...
[WSS-0xae700ca0] Re-allocating to 396 bytes (was 158, response is 380 bytes)
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=380 bytes, Sent=380 bytes, Missing=0 bytes
[WSS-0xae700ca0] Sending WebSocket message (90 bytes)...
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=90 bytes, Sent=90 bytes, Missing=0 bytes
[WSS-0xae700ca0] Got 159 bytes:
[WSS-0xae700ca0] First fragment: 159 bytes, 0 remaining
{"janus":"message","body":{"request":"watch","params":{"audio":false}},"transaction":"gqzkM0OlRGXj","session_id":4830361675044257,"handle_id":3598914013491511}
[WSS-0xae700ca0] Done, parsing message: 159 bytes
[WSS-0xae700ca0] Parsed JSON message - consumed 159/159 bytes
Got a Janus API request from janus.transport.websockets (0xae703768)
Transport task pool, serving request
[3598914013491511] There's a message for ustreamer
[3598914013491511] Audio has NOT been negotiated
[3598914013491511] Video has been negotiated
[3598914013491511] SCTP/DataChannels have NOT been negotiated
[3598914013491511] Setting ICE locally: got ANSWER (0 audios, 1 videos)
[3598914013491511] Creating ICE agent (ICE Full mode, controlling)
(process:27285): libnice-DEBUG: 08:08:20.572: Agent 0xac304bb8 : Property set, role is already "controlling".
[3598914013491511] Adding 192.168.1.199 to the addresses to gather candidates for
(process:27285): libnice-DEBUG: 08:08:20.573: Created NiceStream (1 created, 0 destroyed)
(process:27285): libnice-DEBUG: 08:08:20.573: Created NiceComponent (1 created, 0 destroyed)
(process:27285): libnice-DEBUG: 08:08:20.574: Agent 0xac304bb8 : allocating stream id 1 (0xac3053b0)
(process:27285): libnice-DEBUG: 08:08:20.575: Agent 0xac304bb8 : In ICE-FULL mode, starting candidate gathering.
(process:27285): libnice-DEBUG: 08:08:20.575: Agent:0xac304bb8 s:1: Resolving STUN server 142.250.112.127
(process:27285): libnice-DEBUG: 08:08:20.576: Interface:  lo
(process:27285): libnice-DEBUG: 08:08:20.576: IP Address: 127.0.0.1
(process:27285): libnice-DEBUG: 08:08:20.576: Interface:  eth0
(process:27285): libnice-DEBUG: 08:08:20.576: IP Address: 192.168.1.199
(process:27285): libnice-DEBUG: 08:08:20.576: Interface:  lo
(process:27285): libnice-DEBUG: 08:08:20.576: IP Address: ::1
(process:27285): libnice-DEBUG: 08:08:20.576: Interface:  eth0
(process:27285): libnice-DEBUG: 08:08:20.576: IP Address: fe80::e65f:1ff:fea2:e550%eth0
(process:27285): libnice-DEBUG: 08:08:20.579: Agent 0xac304bb8: Could not set IPV6 socket ToS: Protocol not available
(process:27285): libnice-DEBUG: 08:08:20.579: Component 0xac306440: Attach source (stream 1).
(process:27285): libnice-DEBUG: 08:08:20.579: Attaching source 0xacd024b8 (socket 0xacd08890, FD 12) to context 0xb0b02848
(process:27285): libnice-DEBUG: 08:08:20.579: Agent 0xac304bb8: s1/c1: creation of host candidate udp:[192.168.1.199]:39822: success
(process:27285): libnice-DEBUG: 08:08:20.579: Agent 0xac304bb8 : stream 1 component 1 STATE-CHANGE disconnected -> gathering.
[3598914013491511] Component state changed for component 1 in stream 1: 1 (gathering)
[3598914013491511] Discovered new local candidate for component 1 in stream 1: type=host
[3598914013491511]   Address:    192.168.1.199:39822
[3598914013491511]   Priority:   2015363327
[3598914013491511]   Foundation: 1
[3598914013491511]     1 1 udp 2015363327 192.168.1.199 39822 typ host
[3598914013491511] Sending trickle event (candidate) to transport...
Sending event to janus.transport.websockets (0xae703768)
-------------------------------------------
>> Merged (1050 bytes)
-------------------------------------------
v=0
o=- 317554657543430134 1 IN IP4 135.XXX.XXX.XXX (Janus Server IP)
s=PiKVM uStreamer
t=0 0
a=group:BUNDLE v
a=extmap-allow-mixed
a=msid-semantic: WMS janus
m=video 9 UDP/TLS/RTP/SAVPF 96 97
c=IN IP4 135.XXX.XXX.XXX (Janus Server IP)
[3598914013491511] Sending event to transport...
Sending event to janus.transport.websockets (0xae703768)
Creating plugin result...
Sending Janus API response to janus.transport.websockets (0xae703768)
Destroying plugin result...
(process:27285): libnice-DEBUG: 08:08:20.580: Agent:0xac304bb8 s:1: Resolving STUN server 142.250.112.127
[WSS-0xae700ca0] Sending WebSocket message (241 bytes)...
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=241 bytes, Sent=241 bytes, Missing=0 bytes
[WSS-0xae700ca0] Sending WebSocket message (1489 bytes)...
[WSS-0xae700ca0] Re-allocating to 1505 bytes (was 396, response is 1489 bytes)
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=1489 bytes, Sent=1489 bytes, Missing=0 bytes
[WSS-0xae700ca0] Sending WebSocket message (90 bytes)...
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=90 bytes, Sent=90 bytes, Missing=0 bytes
(process:27285): libnice-DEBUG: 08:08:20.582: Agent 0xac304bb8: s:1: Resolved STUN server 142.250.112.127 to 142.250.112.127
(process:27285): libnice-DEBUG: 08:08:20.582: Agent 0xac304bb8 : Adding new srv-rflx candidate discovery 0xacd088e0
(process:27285): libnice-DEBUG: 08:08:20.582: Agent 0xac304bb8 : discovery tick #1 with list 0xacd02630 (1)
(process:27285): libnice-DEBUG: 08:08:20.582: Agent 0xac304bb8 : discovery - scheduling cand type 1 addr 142.250.112.127.
== ustreamer/video     -- Memsink opened; reading frames ...
(process:27285): libnice-DEBUG: 08:08:20.616: Agent 0xac304bb8: inbound STUN packet for 1/1 (stream/component) from [142.250.112.127]:19305 (32 octets) :
(process:27285): libnice-stun-DEBUG: 08:08:20.616: STUN demux error: no cookie!
(process:27285): libnice-stun-DEBUG: 08:08:20.616: STUN unknown: 0 mandatory attribute(s)!
(process:27285): libnice-stun-DEBUG: 08:08:20.617: Received 32-bytes STUN message
(process:27285): libnice-stun-DEBUG: 08:08:20.617:  No XOR-MAPPED-ADDRESS: 1
(process:27285): libnice-stun-DEBUG: 08:08:20.617:  Mapped address found!
(process:27285): libnice-DEBUG: 08:08:20.617: Agent 0xac304bb8 : stun_bind_process/disc for 0xacd088e0 res 0.
(process:27285): libnice-DEBUG: 08:08:20.617: Interface:  lo
(process:27285): libnice-DEBUG: 08:08:20.618: IP Address: 127.0.0.1
(process:27285): libnice-DEBUG: 08:08:20.618: Interface:  eth0
(process:27285): libnice-DEBUG: 08:08:20.618: IP Address: 192.168.1.199
(process:27285): libnice-DEBUG: 08:08:20.618: Interface:  lo
(process:27285): libnice-DEBUG: 08:08:20.618: IP Address: ::1
(process:27285): libnice-DEBUG: 08:08:20.619: Interface:  eth0
(process:27285): libnice-DEBUG: 08:08:20.619: IP Address: fe80::e65f:1ff:fea2:e550%eth0
(process:27285): libnice-DEBUG: 08:08:20.619: agent_recv_message_unlocked: Valid STUN packet received.
[3598914013491511] Discovered new local candidate for component 1 in stream 1: type=srflx
[3598914013491511]   Address:    135.XXX.XXX.XXX (Janus Server IP):39822
[3598914013491511]   Priority:   1679819007
[3598914013491511]   Foundation: 2
[3598914013491511]     2 1 udp 1679819007 135.XXX.XXX.XXX (Janus Server IP) 39822 typ srflx raddr 192.168.1.199 rport 39822
[3598914013491511] Sending trickle event (candidate) to transport...
Sending event to janus.transport.websockets (0xae703768)
[WSS-0xae700ca0] Sending WebSocket message (274 bytes)...
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=274 bytes, Sent=274 bytes, Missing=0 bytes
(process:27285): libnice-DEBUG: 08:08:20.623: Agent 0xac304bb8 : Candidate gathering FINISHED, stopping discovery timer.
(process:27285): libnice-DEBUG: 08:08:20.623: Agent 0xac304bb8: gathered UDP local candidate : [192.168.1.199]:39822 for s1/c1. U/P '(null)'/'(null)'
(process:27285): libnice-DEBUG: 08:08:20.624: Agent 0xac304bb8: gathered UDP local candidate : [135.XXX.XXX.XXX (Janus Server IP)]:39822 for s1/c1. U/P '(null)'/'(null)'
[3598914013491511] Gathering done for stream 1
[3598914013491511] Sending trickle event (end-of-candidates) to transport...
Sending event to janus.transport.websockets (0xae703768)
[WSS-0xae700ca0] Sending WebSocket message (139 bytes)...
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=139 bytes, Sent=139 bytes, Missing=0 bytes
[WSS-0xae700ca0] Got 950 bytes:
[WSS-0xae700ca0] First fragment: 950 bytes, 0 remaining
{"janus":"message","body":{"request":"start"},"transaction":"I3cbO5JwRujR","jsep":{"type":"answer","sdp":"v=0\r\no=- 6020619638440812223 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE v\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:rFLL\r\na=ice-pwd:1Bbml0TiwSsXXXXXXXXXXXXX\r\na=ice-options:trickle\r\na=fingerprint:sha-256 CD:AA:A1:C0:36:96:4A:A9:75:2B:62:6A:EF:FA:C1:14:39:C2:BA:0A:9E:AE:5F:75:47:33:3A:C9:D4:87:44:8A\r\na=setup:active\r\na=mid:v\r\na=extmap:1 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=recvonly\r\na=rtcp-mux\r\na=rtpmap:96 H264/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\n"},"session_id":4830361675044257,"handle_id":3598914013491511}
[WSS-0xae700ca0] Done, parsing message: 950 bytes
[WSS-0xae700ca0] Parsed JSON message - consumed 950/950 bytes
Got a Janus API request from janus.transport.websockets (0xae703768)
Transport task pool, serving request
[3598914013491511] There's a message for ustreamer
[3598914013491511] Remote SDP:
v=0
o=- 6020619638440812223 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE v
a=extmap-allow-mixed
a=msid-semantic: WMS
m=video 9 UDP/TLS/RTP/SAVPF 96 97
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:rFLL
a=ice-pwd:1Bbml0TiwSsXXXXXXXXXXXXX
a=ice-options:trickle
a=fingerprint:sha-256 CD:AA:A1:C0:36:96:4A:A9:75:2B:62:6A:EF:FA:C1:14:39:C2:BA:0A:9E:AE:5F:75:47:33:3A:C9:D4:87:44:8A
a=setup:active
a=mid:v
a=extmap:1 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=recvonly
a=rtcp-mux
a=rtpmap:96 H264/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
[3598914013491511] Video mid: v
[3598914013491511] Audio has NOT been negotiated, Video has been negotiated, SCTP/DataChannels have NOT been negotiated
[3598914013491511] Parsing video candidates (stream=1)...
[3598914013491511] ICE ufrag (local):   rFLL
[3598914013491511] ICE pwd (local):     1Bbml0TiwSsXXXXXXXXXXXXX
[3598914013491511] Fingerprint (local) : sha-256 CD:AA:A1:C0:36:96:4A:A9:75:2B:62:6A:EF:FA:C1:14:39:C2:BA:0A:9E:AE:5F:75:47:33:3A:C9:D4:87:44:8A
[3598914013491511] DTLS setup (local):  active
[3598914013491511] Setting accept state (DTLS server)
[3598914013491511] Video mid: v
[3598914013491511] Setting remote credentials...
(process:27285): libnice-DEBUG: 08:08:20.804: Agent 0xac304bb8: set_remote_credentials 1
(process:27285): libnice-DEBUG: 08:08:20.804: Agent 0xac304bb8 : conn_check_remote_candidates_set 1 1
[3598914013491511]   -- ICE Trickling is supported by the browser, waiting for remote candidates...
Will remove payload type 97 (97 rtx/90000)
[3598914013491511] Sending event to transport...
Sending event to janus.transport.websockets (0xae703768)
Creating plugin result...
Sending Janus API response to janus.transport.websockets (0xae703768)
Destroying plugin result...
[WSS-0xae700ca0] Sending WebSocket message (309 bytes)...
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=309 bytes, Sent=309 bytes, Missing=0 bytes
[WSS-0xae700ca0] Sending WebSocket message (90 bytes)...
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=90 bytes, Sent=90 bytes, Missing=0 bytes
[WSS-0xae700ca0] Got 303 bytes:
[WSS-0xae700ca0] First fragment: 303 bytes, 0 remaining
{"janus":"trickle","candidate":{"candidate":"candidate:3909950828 1 udp 2113937151 252fe920-c404-4b84-9d69-5de9d26e1d35.local 48902 typ host generation 0 ufrag rFLL network-cost 999","sdpMid":"v","sdpMLineIndex":0},"transaction":"hlwuW9JipX7z","session_id":4830361675044257,"handle_id":3598914013491511}
[WSS-0xae700ca0] Done, parsing message: 303 bytes
[WSS-0xae700ca0] Parsed JSON message - consumed 303/303 bytes
Got a Janus API request from janus.transport.websockets (0xae703768)
[3598914013491511] Trickle candidate (v): candidate:3909950828 1 udp 2113937151 252fe920-c404-4b84-9d69-5de9d26e1d35.local 48902 typ host generation 0 ufrag rFLL network-cost 999
[3598914013491511] Resolving mDNS address (252fe920-c404-4b84-9d69-5de9d26e1d35.local) asynchronously
Sending Janus API response to janus.transport.websockets (0xae703768)
[WSS-0xae700ca0] Sending WebSocket message (90 bytes)...
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=90 bytes, Sent=90 bytes, Missing=0 bytes
[WARN] [3598914013491511] Error resolving mDNS address (252fe920-c404-4b84-9d69-5de9d26e1d35.local): Error resolving “252fe920-c404-4b84-9d69-5de9d26e1d35.local”: Temporary failure in name resolution
[WSS-0xae700ca0] Got 296 bytes:
[WSS-0xae700ca0] First fragment: 296 bytes, 0 remaining
{"janus":"trickle","candidate":{"candidate":"candidate:881731229 1 udp 1677729535 199.XXX.XXX.XXX (Android Client IP) 28367 typ srflx raddr 0.0.0.0 rport 0 generation 0 ufrag rFLL network-cost 999","sdpMid":"v","sdpMLineIndex":0},"transaction":"In4JKvklodlg","session_id":4830361675044257,"handle_id":3598914013491511}
[WSS-0xae700ca0] Done, parsing message: 296 bytes
[WSS-0xae700ca0] Parsed JSON message - consumed 296/296 bytes
Got a Janus API request from janus.transport.websockets (0xae703768)
[3598914013491511] Trickle candidate (v): candidate:881731229 1 udp 1677729535 199.XXX.XXX.XXX (Android Client IP) 28367 typ srflx raddr 0.0.0.0 rport 0 generation 0 ufrag rFLL network-cost 999
[3598914013491511]  Adding remote candidate component:1 stream:1 type:srflx 0.0.0.0:0 --> 199.XXX.XXX.XXX (Android Client IP):28367
[3598914013491511]  Transport: UDP
[3598914013491511]    Candidate added to the list! (1 elements for 1/1)
[3598914013491511] ICE already started for this component, setting candidates we have up to now
[3598914013491511] ## Setting remote candidates: stream 1, component 1 (1 in the list)
[3598914013491511] Queueing candidate 0xb0b02f70 (startup)
Sending Janus API response to janus.transport.websockets (0xae703768)
[3598914013491511] Processing candidate 0xb0b02f70
[WSS-0xae700ca0] Sending WebSocket message (90 bytes)...
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=90 bytes, Sent=90 bytes, Missing=0 bytes
(process:27285): libnice-DEBUG: 08:08:20.900: Agent 0xac304bb8: set_remote_candidates 1 1
(process:27285): libnice-DEBUG: 08:08:20.901: Agent 0xac304bb8 : Adding UDP remote candidate with addr [199.XXX.XXX.XXX (Android Client IP)]:28367 for s1/c1. U/P '(null)'/'(null)' prio: 64001eff
(process:27285): libnice-DEBUG: 08:08:20.901: Agent 0xac304bb8 : creating a new pair
(process:27285): libnice-DEBUG: 08:08:20.901: Agent 0xac304bb8 : pair 0xacd04368 state FROZEN (priv_add_new_check_pair)
(process:27285): libnice-DEBUG: 08:08:20.901: Agent 0xac304bb8 : new pair 0xacd04368 : [192.168.1.199]:39822 --> [199.XXX.XXX.XXX (Android Client IP)]:28367
(process:27285): libnice-DEBUG: 08:08:20.901: Interface:  lo
(process:27285): libnice-DEBUG: 08:08:20.901: IP Address: 127.0.0.1
(process:27285): libnice-DEBUG: 08:08:20.901: Interface:  eth0
(process:27285): libnice-DEBUG: 08:08:20.902: IP Address: 192.168.1.199
(process:27285): libnice-DEBUG: 08:08:20.902: Interface:  lo
(process:27285): libnice-DEBUG: 08:08:20.902: IP Address: ::1
(process:27285): libnice-DEBUG: 08:08:20.902: Interface:  eth0
(process:27285): libnice-DEBUG: 08:08:20.902: IP Address: fe80::e65f:1ff:fea2:e550%eth0
(process:27285): libnice-DEBUG: 08:08:20.902: Agent 0xac304bb8 : added a new pair 0xacd04368 with foundation '1:881731229' and transport udp:udp to stream 1 component 1
(process:27285): libnice-DEBUG: 08:08:20.902: Agent 0xac304bb8 : stream 1 component 1 STATE-CHANGE gathering -> connecting.
(process:27285): libnice-DEBUG: 08:08:20.902: Agent 0xac304bb8 : conn_check_remote_candidates_set 1 1
[3598914013491511] Component state changed for component 1 in stream 1: 2 (connecting)
[3598914013491511] 1 remote candidate added
(process:27285): libnice-DEBUG: 08:08:20.922: Agent 0xac304bb8 : Pair 0xacd04368 with s/c-id 1/1 (1:881731229) unfrozen.
(process:27285): libnice-DEBUG: 08:08:20.923: Agent 0xac304bb8 : pair 0xacd04368 state WAITING (priv_conn_check_unfreeze_next)
(process:27285): libnice-DEBUG: 08:08:20.923: Agent 0xac304bb8 : pair 0xacd04368 state IN_PROGRESS (priv_conn_check_initiate)
(process:27285): libnice-DEBUG: 08:08:20.923: Agent 0xac304bb8 : STUN-CC REQ [192.168.1.199]:39822 --> [199.XXX.XXX.XXX (Android Client IP)]:28367, socket=12, pair=0xacd04368 (c-id:1), tie=14116094708490738705, username='rFLL:443n' (9), password='1Bbml0TiwSsXXXXXXXXXXXXX' (24), prio=6e2000ff, controlling.
(process:27285): libnice-DEBUG: 08:08:20.923: Agent 0xac304bb8 : conn_check_send: set cand_use=1 (aggressive nomination).
(process:27285): libnice-stun-DEBUG: 08:08:20.923:  Message HMAC-SHA1 message integrity:
(process:27285): libnice-stun-DEBUG: 08:08:20.923:   key     : 0x3142626d6c30546977537351423234647865554f73685a59
(process:27285): libnice-stun-DEBUG: 08:08:20.923:   sent    : 0x2e8396ea483e1c4847c9dcdc63bebc2c65d06fa7
(process:27285): libnice-stun-DEBUG: 08:08:20.923:  Message HMAC-SHA1 fingerprint: 0xbee04a35
(process:27285): libnice-DEBUG: 08:08:20.923: Agent 0xac304bb8: conncheck created 92 - 0xacd04adc
(process:27285): libnice-DEBUG: 08:08:20.923: Agent 0xac304bb8 : timer set to 500ms, waiting+in_progress=1
(process:27285): libnice-DEBUG: 08:08:20.924: Agent 0xac304bb8 : stream 1: timer tick #1: 0 frozen, 1 in-progress, 0 waiting, 0 succeeded, 0 discovered, 0 nominated, 0 waiting-for-nom, 0 valid
(process:27285): libnice-stun-DEBUG: 08:08:20.924:  Message HMAC-SHA1 fingerprint: 0x7795b196
(process:27285): libnice-DEBUG: 08:08:20.924: Agent 0xac304bb8 : resending STUN to keep the local candidate 192.168.1.199:39822 alive in s1/c1.
(process:27285): libnice-stun-DEBUG: 08:08:20.945:  Message HMAC-SHA1 fingerprint: 0x72717ee2
(process:27285): libnice-DEBUG: 08:08:20.960: Agent 0xac304bb8: inbound STUN packet for 1/1 (stream/component) from [142.250.112.127]:19305 (32 octets) :
(process:27285): libnice-stun-DEBUG: 08:08:20.961: STUN demux error: no FINGERPRINT attribute!
(process:27285): libnice-DEBUG: 08:08:20.961: Agent 0xac304bb8 : Incorrectly multiplexed STUN message ignored.
(process:27285): libnice-DEBUG: 08:08:20.961: agent_recv_message_unlocked: Packet passed fast STUN validation but failed slow validation.
(process:27285): libnice-DEBUG: 08:08:21.428: Agent 0xac304bb8 :STUN transaction retransmitted on pair 0xacd04368 (timer=2/3 0/1000ms).
(process:27285): libnice-DEBUG: 08:08:21.933: Agent 0xac304bb8 : stream 1: timer tick #51: 0 frozen, 1 in-progress, 0 waiting, 0 succeeded, 0 discovered, 0 nominated, 0 waiting-for-nom, 0 valid
(process:27285): libnice-DEBUG: 08:08:22.438: Agent 0xac304bb8 :STUN transaction retransmitted on pair 0xacd04368 (timer=3/3 0/500ms).
(process:27285): libnice-DEBUG: 08:08:22.944: Agent 0xac304bb8 : Retransmissions failed, giving up on pair 0xacd04368
(process:27285): libnice-DEBUG: 08:08:22.944: Agent 0xac304bb8 : Failed pair is [192.168.1.199]:39822 --> [199.XXX.XXX.XXX (Android Client IP)]:28367
(process:27285): libnice-DEBUG: 08:08:22.944: Agent 0xac304bb8 : pair 0xacd04368 state FAILED (candidate_check_pair_fail)
(process:27285): libnice-DEBUG: 08:08:22.944: Agent 0xac304bb8 : conn.check list status: 0 nominated, 0 valid, c-id 1.
(process:27285): libnice-DEBUG: 08:08:22.944: Agent 0xac304bb8 : stream 1: timer tick #101: 0 frozen, 0 in-progress, 0 waiting, 0 succeeded, 0 discovered, 0 nominated
, 0 waiting-for-nom, 0 valid
(process:27285): libnice-DEBUG: 08:08:22.944: Agent 0xac304bb8 : waiting 5000 msecs before checking for failed components.
(process:27285): libnice-DEBUG: 08:08:23.955: Agent 0xac304bb8 : stream 1: timer tick #151: 0 frozen, 0 in-progress, 0 waiting, 0 succeeded, 0 discovered, 0 nominated, 0 waiting-for-nom, 0 valid
(process:27285): libnice-DEBUG: 08:08:27.976: Agent 0xac304bb8 : checking for failed components now.
(process:27285): libnice-DEBUG: 08:08:27.981: Agent 0xac304bb8 : stream 1 component 1 STATE-CHANGE connecting -> failed.
(process:27285): libnice-DEBUG: 08:08:27.982: Agent 0xac304bb8 : priv_conn_check_tick_agent_locked: stopping conncheck timer
(process:27285): libnice-DEBUG: 08:08:27.982: Agent 0xac304bb8 : changing conncheck state to COMPLETED.
[3598914013491511] Component state changed for component 1 in stream 1: 5 (failed)
[WARN] [3598914013491511] ICE failed for component 1 in stream 1, but let's give it some time... (trickle pending, answer received, alert not set)
[3598914013491511] Creating ICE state check timer with ID 10
[WARN] [3598914013491511] ICE failed for component 1 in stream 1, but we're still waiting for some info so we don't care... (trickle pending, answer received, alert not set)
[ERR] [ice.c:janus_ice_check_failed:1959] [3598914013491511] ICE failed for component 1 in stream 1...
[3598914013491511] Hanging up PeerConnection because of a ICE failed
[3598914013491511] Telling the plugin about the hangup (ustreamer)
[3598914013491511] Removing stream 1 from agent 0xac304bb8
(process:27285): libnice-DEBUG: 08:08:43.005: Agent 0xac304bb8, freeing conncheck_list of stream 0xac3053b0
(process:27285): libnice-DEBUG: 08:08:43.006: Free socket sources for component 0xac306440.
(process:27285): libnice-DEBUG: 08:08:43.007: Detaching source 0xacd024b8 (socket 0xacd08890, FD 12) from context 0xb0b02848
(process:27285): libnice-DEBUG: 08:08:43.008: Destroyed NiceComponent (1 created, 1 destroyed)
(process:27285): libnice-DEBUG: 08:08:43.008: Destroyed NiceStream (1 created, 1 destroyed)
[3598914013491511] Closing nice agent 0xac304bb8
[3598914013491511] Disposing nice agent 0xac304bb8
[3598914013491511] Notifying WebRTC hangup; 0xb0b01308
[3598914013491511] Sending event to transport...; 0xb0b01308
Sending event to janus.transport.websockets (0xae703768)
[3598914013491511] WebRTC resources freed; 0xb0b01308 0xb0b00e68
[WSS-0xae700ca0] Sending WebSocket message (117 bytes)...
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=117 bytes, Sent=117 bytes, Missing=0 bytes
== ustreamer/video     -- Memsink closed
== ustreamer/video     -- No active watchers, memsink disconnected
[WSS-0xae700ca0] Got 80 bytes:
[WSS-0xae700ca0] First fragment: 80 bytes, 0 remaining
{"janus":"keepalive","session_id":4830361675044257,"transaction":"4bm6GKo6absV"}
[WSS-0xae700ca0] Done, parsing message: 80 bytes
[WSS-0xae700ca0] Parsed JSON message - consumed 80/80 bytes
Got a Janus API request from janus.transport.websockets (0xae703768)
Got a keep-alive on session 4830361675044257
Sending Janus API response to janus.transport.websockets (0xae703768)
[WSS-0xae700ca0] Sending WebSocket message (90 bytes)...
[WSS-0xae700ca0]   -- First=1, Last=1, Requested=90 bytes, Sent=90 bytes, Missing=0 bytes

Thanks in advance!

I wanted to add my solution here in case anyone bumps into the same problem. In my setup, janus runs on a raspberry pi behind a router. I’ve made the following change to janus.cfg:

rtp_port_range: 20000-20004

and forwarded ports 20000,20001,20002,20003,20004 from the router to the raspberry pi running janus.
This seems to have solved the problem for me, I can see the video and audio channel established now.