Skip to content

Devices lose registration or have one-way audio

Most problems with devices behind a home or office router come from SIP ALG, a router feature that rewrites SIP messages on the way through. It was meant to help VoIP work behind NAT; in practice it often corrupts the addresses in the messages. FlySIP and current SIP devices handle NAT themselves and do not need it.

  • Phones or gateways behind a router lose their registration; Vendors → Registrations shows them coming and going.
  • Calls have audio in one direction only, or no audio at all.
  • Calls drop after about 30 or 60 seconds, or re-INVITEs such as hold and transfer fail.
  • Everything works when the device is connected directly to the internet or through a VPN.
  1. Connect the device to another network, for example a mobile hotspot, and repeat the call. If it works there, the router is the cause.
  2. Check that the account’s registration exists in Vendors → Registrations with the router’s public IP.
  3. Extract the SIP log of a failed call and look at the Via, Contact and SDP addresses. See A call failed and the CDR does not explain why.

How to confirm: the SIP log shows private addresses such as 192.168.x.x or 10.x.x.x in Contact or SDP where the device sends its public address, or headers that change between the device’s own log and the switch’s log. On MikroTik, /ip firewall service-port print lists sip without the disabled flag.

Fix: turn SIP ALG off. It is called SIP ALG, SIP Helper, VoIP Helper, SIP Passthrough or Application Layer Gateway depending on the vendor:

Router Where
MikroTik RouterOS IP → Firewall → Service Ports → sip → disable, or /ip firewall service-port disable sip
TP-Link Advanced → NAT Forwarding → ALG → clear SIP ALG (on some firmware under Security or NAT Boost)
ASUS Advanced Settings → WAN → NAT Passthrough → SIP Passthrough → Disable
Keenetic Internet → Other connections → Advanced → turn off SIP ALG
ZyXEL, D-Link Advanced → NAT → ALG Settings → clear Enable SIP ALG
Ubiquiti EdgeRouter configure, set system conntrack modules sip disable, commit, save
Huawei, ZTE Security → ALG Settings or NAT ALG Settings → disable SIP ALG

Reboot the router and re-register the devices afterwards so that old NAT mappings are cleared.

Cause 2: the NAT mapping expires between registrations

Section titled “Cause 2: the NAT mapping expires between registrations”

How to confirm: devices register successfully but become unreachable for incoming calls after a few minutes, and outgoing calls still work.

Fix: set the device’s registration interval to 60 to 120 seconds or enable its keep-alive (often called NAT keep-alive or SIP OPTIONS ping). On a PBX behind NAT, enable its NAT handling for the trunk to the switch.

How to confirm: signalling is fine but there is no audio, and the SDP in the SIP log shows a private address for the device’s media.

Fix: set Media Relay Type of the account so that media goes through the switch’s relay, check Use Media Relay on the vendor connection, and make sure the relay’s RTP ports are open in System Management → IP Firewall. See Media relay.

Collect the following and open a ticket at support.flysip.com:

  • The account name, the device model and the router model.
  • The Call-ID and time of a failed call, and its SIP log.
  • Whether the device works on another network.