# Fix One-Way Audio on SIP Calls: SIP ALG, NAT and Codecs

> Why SIP calls have one-way audio or drop at 30 seconds, and how to fix it: disable SIP ALG, set NAT external address, open the RTP range, and avoid codec mismatches.

Source: https://edesy.in/blog/fix-one-way-audio-sip-alg-nat-2026

**One-way audio on SIP calls is almost always a NAT problem: your audio is sent to an address
the other side can't reach. Fix it in order: disable SIP ALG on the router, set your PBX's external address
and local networks, open the RTP port range, then limit codecs to G.711. Calls dropping at 30 seconds is
usually SIP ALG.**

> **Test your trunk without your PBX:** [Open your Edesy trunk](https://voice-app.edesy.in/?utm_source=edesy.in&utm_medium=blog&utm_campaign=fix-one-way-audio-sip-alg-nat-2026) and use the Call me test to see which side the problem is on.

## Why SIP audio breaks behind a router

A SIP call has two parts. **Signalling** (SIP) sets the call up and tears it down. **Media** (RTP) carries
the audio, on separate UDP ports. Inside the SIP messages, your PBX writes the IP address and port where it
wants to receive audio and replies.

Behind a router, your PBX only knows its private address, such as `192.168.1.20`. If it writes that address
into its messages, the provider sends audio and replies to an address that doesn't exist on the internet.
The call may ring and connect, but audio only flows one way, or not at all.

## Symptoms and causes

| Symptom | Most likely cause | First thing to try |
|---|---|---|
| You hear them, they don't hear you | PBX advertises its private IP; outbound RTP blocked | Set External Address and Local Networks |
| They hear you, you don't hear them | Inbound RTP blocked or not forwarded | Open and forward the RTP range |
| Every call drops at about 30 seconds | SIP ALG rewriting ports; replies lost | Disable SIP ALG, reboot router |
| No audio either way | Both of the above, or codec mismatch | Work through all four fixes |
| One-way audio only to some destinations | Codec negotiated that part of the path doesn't carry | Offer a single G.711 codec |
| Audio fine for a while, then stops | Router closes idle UDP mappings | Enable qualify/keepalive (for example every 60 s) |

## Fix 1: Turn off SIP ALG

SIP ALG is a "helper" built into many routers that rewrites SIP messages on the way out. In practice it
often breaks them. A typical failure looks like this:

1. Your PBX sends from port 5060.
2. SIP ALG changes the source port to, say, 12001 on the way out.
3. The provider receives the call from 12001, but the message still says "reply to me at 5060".
4. Replies go to 5060, the router has no mapping for it, and drops them.
5. Your PBX waits for a reply that never arrives, and hangs up after about 32 seconds (the standard SIP
   transaction timeout).

That is why every call dies at the same point. **Port forwarding cannot fix this**: forwarding handles
traffic coming in, SIP ALG changes traffic going out.

How to turn it off:

1. Open your router admin page (often `192.168.1.1` or `192.168.0.1`) and log in.
2. Look under Advanced, NAT, Firewall, WAN or VoIP for a setting named **SIP ALG**, **SIP
   Transformations**, **SIP Passthrough** or **VoIP ALG**.
3. Disable it. Watch the wording: on some routers the checkbox is labelled "Disable SIP ALG", so it must be
   ticked.
4. Save and reboot the router.

Common locations:

| Router | Where to look |
|---|---|
| TP-Link | Advanced > NAT Forwarding > ALG > SIP ALG off |
| Netgear | Advanced > WAN Setup > SIP ALG setting (wording may be reversed) |
| D-Link | Advanced > Firewall / ALG Settings > SIP off |
| Asus | WAN > NAT Passthrough > SIP Passthrough: Disable |
| MikroTik | IP > Firewall > Service Ports > disable sip |
| ISP-supplied fibre routers | Advanced, Security or NAT; if absent, ask the ISP to disable it |

## Fix 2: Tell the PBX its public address

In FreePBX 17: **Settings > Asterisk SIP Settings > chan_pjsip**.

- **External Address:** your public IP, or a dynamic DNS name if your IP changes.
- **Local Networks:** every LAN subnet, for example `192.168.0.0/24`.

The PBX then writes its public address into SIP messages for the trunk, and keeps private addresses for
internal phones. Apply config and restart if your version asks for it. The full trunk setup is in
[FreePBX SIP trunk setup for India](https://edesy.in/blog/freepbx-sip-trunk-setup-india-2026).

## Fix 3: Open and forward the RTP range

Audio uses a range of UDP ports, 10000 to 20000 by default on Asterisk.

- Allow outbound UDP from the PBX to the provider's signalling and media addresses.
- Allow inbound UDP from the provider on the RTP range.
- If the PBX is not the edge device, forward the RTP range to the PBX's LAN IP.
- Keep the PBX's configured RTP range and the router's forwarded range identical.

On Edesy, the trunk page shows the signalling IP to allow, and SIP runs on port 5070.

## Fix 4: Keep codecs simple

Edesy trunks carry G.711. Enable only **alaw** and **ulaw** on the trunk and disable g722, g729 and opus.
Mismatched codecs can cause transcoding failures or silence.

A less obvious case: when one end offers two codecs and the other end answers with both, the call can settle
on a codec that one hop further down the route doesn't actually carry. Calls to most destinations work, but
calls to a particular region have one-way audio. The fix is to offer a single codec on that path, so the
answer can only contain one. In India, alaw (PCMA) is the usual choice. If one-way audio is limited to
specific destinations, try alaw only before anything else, and tell your provider which numbers fail.

## A troubleshooting order that works

1. Run the trunk's **Call me** test from the Edesy portal. Two-way audio there means the provider side is
   fine.
2. Disable SIP ALG and reboot the router.
3. Set External Address and Local Networks; apply.
4. Check the RTP range is open and forwarded.
5. Limit codecs to alaw and ulaw; then try alaw only.
6. Enable qualify every 60 seconds so the router keeps the mapping open.
7. Still broken? Send the provider a call time, the number dialled, and your router brand and model.

## Frequently missed details

- Two routers in a row (an ISP router plus your own) means two NATs and possibly two SIP ALGs.
- A dynamic public IP changes; use dynamic DNS for External Address.
- Firewalls on the PBX itself (iptables, the FreePBX firewall module) can block RTP even when the router
  doesn't.

More help on the [FreePBX setup page](https://edesy.in/sip-trunking/freepbx), the [SIP trunking page](https://edesy.in/sip-trunking) and the
[SIP ALG troubleshooting docs](https://edesy.in/docs/sip-trunking/troubleshooting/sip-alg).

[Open the Edesy portal](https://voice-app.edesy.in/?utm_source=edesy.in&utm_medium=blog&utm_campaign=fix-one-way-audio-sip-alg-nat-2026)
to run a trunk test, or [contact us](https://edesy.in/contact) with your router model.

## Frequently Asked Questions

### Why can I hear the other person but they can't hear me on a SIP call?

Usually because your audio (RTP) is being sent to a private IP address the other side can't reach, or is blocked on the way out. Set your PBX's external (public) address and local networks, open the RTP port range, and disable SIP ALG on your router.

### Why do my SIP calls drop after about 30 seconds?

Your PBX is not receiving the provider's replies, so it gives up after the standard SIP timeout of about 32 seconds. The most common cause is SIP ALG on the router rewriting the source port, so the replies are sent to a port nothing is listening on.

### I already did port forwarding. Why is it still broken?

Port forwarding controls traffic coming into your network. SIP ALG changes traffic going out of it. They are different settings, and port forwarding cannot undo what SIP ALG does. Turn SIP ALG off and reboot the router.

### Where is the SIP ALG setting on my router?

It is usually under Advanced, NAT, Firewall, WAN or VoIP, and may be called SIP ALG, SIP Transformations, SIP Passthrough or VoIP ALG. If an ISP-supplied router doesn't show it, ask your internet provider to disable SIP ALG.

### Can codecs cause one-way audio?

Yes. If the two ends agree on a codec that one network in the path doesn't actually carry, one side hears silence. Limit the trunk to G.711 (alaw and ulaw), and if one-way audio happens only on certain destinations, try offering a single codec.

### How do I know whether the problem is my PBX or the provider?

Use a test that bypasses your PBX. On Edesy, the trunk page has a Call me test that rings a phone through the trunk directly. If that has two-way audio and your PBX calls don't, the problem is on your network or PBX.
