Hello folks,
I have an issue with Zoiper on Android, connected to an Asterisk PBX.
Background: my phone company has switched to an architecture where RFC adresses are issued for GSM data connections (not even 100.... carrier grade NAT, just 10/8). This means users share public ip adresses. They are not doing any data snooping for SIP/RTP (understandable), so SIP/RTP can't work, which I unfortunately discovered last week. Registration and call setup are fine, media is always one way.
So I changed my phones to use iax2, which should solve the issues (and is easier on my own firewall as well).
Issue I can't get it to work permanently. Registration is initially fine, but after some time (can be minutes or hours) the registration vanishes:
gaia*CLI> iax2 show peers
Name/Username Host Mask Port Status Description
s5 10.1.10.42 (D) (null) 45746 (E) Unmonitored
s8 (null) (D) (null) (null) (E) Unmonitored
s10 (null) (D) (null) (null) (E) Unmonitored
3 iax2 peers [0 online, 0 offline, 3 unmonitored]
"s5" is a phone I just forcefully re-registered (so it works)
"s8" and "s10" are phones that have been left for some time and have become unregistered
When the phones are in "unregistered" state, the Zoiper app itself still says "registered". Even more interesting, I have been monitoring the actual data from/to the Asterisk server and actually no data at all is received from the phones in "unregistered" state, while the phones still registered send REGREQ/REGAUTH/REGACK/ACK messages every minute.
I am aware of Android phones overly power saving using WLAN (which I use when I'm home) and in some states simply fail to receive (send?) data. So for the unregistered phones I started a continuous ping to keep the WLAN interface active. This does not appear to make a difference. That's why I think there is an issue with Zoiper and not Asterisk. At some point Zoiper just stops sending registration messages and for some reason assumes registration is ok, until forcefully re-registered (disable account -> enable acount).
Please note that this issue occurs either on WLAN or GSM data. When connecting from WLAN there is no firewall involved. From GSM data, there is a firewall, but there are no relevant drops or rejects.
Things I already tried (and did not help):
- install Zoiper-beta (as suggested here)
- set "keep alive wifi"
- set "run in background"
- set "background mode" to "alarm scheduler"
- set "background mode" to "constant wake lock"
- set "registration expiry time" to "60"
On Asterisk:
[general]
delayreject=yes
bandwidth=high
disallow=all
allow=ilbc
jitterbuffer=no
encryption=yes
forceencryption=yes
minregexpire = 10 ; tried various
maxregexpire = 3600 ; tried various
autokill=no
allowfwdownload=no
requirecalltoken=auto
shrinkcallerid=no
[s5]
type=friend
host=dynamic
secret=...
context=intern
;qualify=yes ; tried both no and yes
;qualifysmoothing=yes
requirecalltoken=no
[s8]
type=friend
host=dynamic
secret=...
context=intern
;qualify=yes ; tried both no and yes
;qualifysmoothing=yes
requirecalltoken=no
[s10]
type=friend
host=dynamic
secret=...
context=intern
;qualify=yes ; tried both no and yes
;qualifysmoothing=yes
requirecalltoken=no
Thanks for your interest!