I think Michael's insight appears to be correct.
I say this because I also can't seem to get ICE to work correctly with FS when using the CSipSimple client with ICE support.
As you can see in the CSipSimple logs here, it seems that FS fails to correctly respond to the STUN binding request, and thus ICE negotiation fails:
17:17:58.927 icetp00 ..Triggered check for check 1 not performed because it's in progress. Retransmitting
17:17:58.927 utsx0x5dee930c ...STUN sending message (transmit count=7)
17:17:59.040 timer_android. !FIRE timer 26 of heap 16
17:17:59.040 utsx0x5f6e659c STUN timeout waiting for response
17:17:59.040 icetp00 .Check 2: [2] 192.168.1.4:4037-->79.my.serverIP:62203 (nominated): connectivity check FAILED: STUN transaction has timed out (PJNATH_ESTUNTIMEDOUT)
17:17:59.040 icetp00 ..Check 2: [2] 192.168.1.4:4037-->79.my.serverIP:62203: state changed from In Progress to Failed
17:17:59.040 stun_session.c .tdata 0x5f6e6484 destroy request, force=1, tsx=0x5f6e659c
17:17:59.040 timer_android. .Ask to cancel something already fired or cancelled : -1 @ 0x5f6e65dc
17:17:59.040 utsx0x5f6e659c .STUN client transaction 0x5f6e659c stopped, ref_cnt=46
17:17:59.041 timer_android. FIRE done and released
17:17:59.238 timer_android. FIRE timer 27 of heap 16
17:17:59.238 utsx0x5d9a080c STUN timeout waiting for response
17:17:59.238 icetp00 .Check 0: [1] 192.168.1.4:4001-->79.my.serverIP:62202 (nominated): connectivity check FAILED: STUN transaction has timed out (PJNATH_ESTUNTIMEDOUT)
17:17:59.239 icetp00 ..Check 0: [1] 192.168.1.4:4001-->79.my.serverIP:62202: state changed from In Progress to Failed
17:17:59.239 stun_session.c .tdata 0x5d9a06f4 destroy request, force=1, tsx=0x5d9a080c
17:17:59.239 timer_android. .Ask to cancel something already fired or cancelled : -1 @ 0x5d9a084c
17:17:59.239 utsx0x5d9a080c .STUN client transaction 0x5d9a080c stopped, ref_cnt=45
17:17:59.239 timer_android. FIRE done and released
17:17:59.257 timer_android. FIRE timer 28 of heap 16
17:17:59.257 utsx0x5dee930c STUN timeout waiting for response
17:17:59.257 icetp00 .Check 1: [1] 79.my.serverIP:56378-->79.my.serverIP:62202 (nominated): connectivity check FAILED: STUN transaction has timed out (PJNATH_ESTUNTIMEDOUT)
17:17:59.257 icetp00 ..Check 1: [1] 79.my.serverIP:56378-->79.my.serverIP:62202: state changed from In Progress to Failed
17:17:59.258 stun_session.c .tdata 0x5dee91f4 destroy request, force=1, tsx=0x5dee930c
17:17:59.258 timer_android. .Ask to cancel something already fired or cancelled : -1 @ 0x5dee934c
17:17:59.258 utsx0x5dee930c .STUN client transaction 0x5dee930c stopped, ref_cnt=44
17:17:59.258 timer_android. FIRE done and released
17:17:59.273 timer_android. FIRE timer 34 of heap 16
17:17:59.274 utsx0x5da8db64 STUN timeout waiting for response
17:17:59.274 icetp00 .Check 3: [2] 79.my.serverIP2:54506-->79.my.serverIP:62203 (nominated): connectivity check FAILED: STUN transaction has timed out (PJNATH_ESTUNTIMEDOUT)
17:17:59.274 icetp00 ..Check 3: [2] 79.my.serverIP2:54506-->79.my.serverIP:62203: state changed from In Progress to Failed
17:17:59.274 timer_android. ..Ask to cancel something already fired or cancelled : -1 @ 0x5dc0b400
17:17:59.274 icetp00 ..ICE process complete, status=All ICE checklists failed (PJNATH_EICEFAILED)
17:17:59.274 icetp00 ..Valid list
17:17:59.274 timer_android. ..Scheduling timer 30 of 16 in 0 ms @ 0x5dc0b400
17:17:59.278 stun_session.c .tdata 0x5da8da4c destroy request, force=1, tsx=0x5da8db64
17:17:59.278 timer_android. .Ask to cancel something already fired or cancelled : -1 @ 0x5da8dba4
17:17:59.278 utsx0x5da8db64 .STUN client transaction 0x5da8db64 stopped, ref_cnt=45
17:17:59.278 timer_android. FIRE done and released
17:17:59.289 timer_android. FIRE timer 30 of heap 16
17:17:59.289 icetp00 ICE negotiation failed after 8s:424: All ICE checklists failed (PJNATH_EICEFAILED)