Asterisk / FreePBX / SPA3102 has worked fine for months and now

So here’s my sob story since I’m a bit lost at this point.

Issue : Any calls that go through SPA3102 only have audio from the outside, audio from internal phones is not getting through SPA3102 to the external line. It also sounds like whatever the internal phone user says is echo’d back to them on the phone… The external caller hears nothing but silence.

Obviously sounds like data isn’t getting to SPA3102 or it is not routing it back out, but not sure why…


I have a local internet provider that I’m getting 3 in 1 service with : Internet, Cable TV, ‘Internet Phone’. The cable modem provided has one of those “normal” phone analog plugs. (Which really behind the scenes converts to voip somewhere on there end)

Since I wanted to retain my internet phone with them, but I wanted to implement a voip system in my house, I have done the following (though I might reconsider this).


Cisco 7960 Phones - 2x (DHCP)
Cisco 7940 Phones - 3x (DHCP)
3CX Soft Phone for my iPhone - 1x (DHCP)


All network devices patch in through my Cisco 3500XL PoE switch




AsteriskNow box running TFTP and DHCP daemons.



Basic Call Flow would be like …

Internal to Internal

Cisco/3CX – Switch – PBX – Switch – Cisco/3CX

Internal to External

Cisco/3CX – Switch – PBX – Switch – SPA3102 – “Analog Phone port” (FXS?)

External to Internal

“Analog Phone port” (FXS?) on cable modem – SPA3102 – Switch – PBX – Switch – Cisco/3CX

When I orginally put everythin together months ago, I had some initial problems with ATA and it had to do with having to enable the “lan” and “wan” sides of the
device even though I did not need them.

After enabling that, everything has worked fine, for months.

The only recent changes were that we received a new cable modem a couple weeks ago; however, it worked fine for those past couple weeks with the new modem, nor can I seem to understand how it would matter that much…

Dedicated external IP address changed a couple weeks ago as well, but it worked fine regardless. I did today, during troubleshooting, update the one spot I could see the old address referenced.

Things I have checked :

I have checked that all devices can “see” each other through ping and tracert confirms the devices are not hopping through any routers or gateways so I don’t think this some type of port blocking type issue.

For entertainment value, I have rebooted all devices “just in case” with no change.

Checking the FreePBX log reveals an occasional error:

[Aug 18 15:23:51] VERBOSE[5126] netsock.c: == Using SIP RTP CoS mark 5
[Aug 18 15:23:51] WARNING[5126] app_dial.c: Unable to create channel of type ‘SIP’ (cause 20 - Unknown)
[Aug 18 15:23:51] VERBOSE[5126] netsock.c: == Using SIP RTP TOS bits 184

Researching this appears to indicate there is an extension that isn’t reachable which is reasonable as I have extensions defined that are not active at the moment. I DO NOT recall seeing this when I first setup the system so I’m not 100% sold on that.

I’m hoping someone may have experienced this and can give me the 30 second answer; otherwise, I think my next step will be to bust out a packet sniffer to see if the packets are being sent (and to where)

If anyone wants to help directly, I could setup a webex session, etc.

This is my first PBX build so I’m definitely open to assistance.


While I cannot comment on the SPA3102 from experience, it appears to be both a FXO device (for plugging into your analog port coming from the cable modem), and an FXS device for plugging in a POTS/Analog telephone, fax machine, etc.

The SPA122 is what I am familiar with which is 2 FXS and router.
Also, the Grandstream HT503 is similar to your SPA with 1 FXO and 1 FXS.

On my SPA122 (as well as my Grandstream HT503), you need to put it in “bridge” networking mode so that both the LAN and WAN ports are bridged together and it doesnt function as a router, nor function as a DHCP server.

Usually, one way audio like you are experiencing is due to NAT issues, but it sounds like your SPA3102 isnt traversing NAT to your internal FreePBX.

So, check that the SPA3102 is not using NAT and your Freepbx Extension/Trunk definition for that SPA3102 has nat=no.

Your Cisco Extensions need to have nat=no too if they are local to the FreePBX, and finally, your 3CX Softphone needs NAT traversal turned on only when not connected to your FreePBX through a local Wifi (direct). (Remote 3CX softphone works if your firewall has ports opened to FreePBX and needs NAT help usually)

You can also turn “qualify=yes” in the extension and trunk areas which will track reachability of SIP remotes and display a status list in the Asterisk CLI with a “sip show peers” command.

The sip show peers command will tell you the IP address of the extension/trunk, as well as the UDP/TCP port the peer is using.

The Qualify=yes will show messages that appear on the Asterisk CLI whenever an extension/trunk has an reachable/unreachable event (such as IP address incorrect due to NAT mismatch). (asterisk -r from an SSH or console prompt)

Finally, make sure that Spanning Tree on your Cat 3500xl is either turned off or that the ports with only 1 device have portfast turned on, or RTSP is turned on.

** Keep in mind, a phone with a computer attached to its secondary data port is considered 2 devices and shouldnt be on a portfast port **

Spanning tree blocking/forwarding events can wreak havoc with connectionless traffic like UDP and time sensitive connectionless applications like UDP VOIP.

If you are careful to never make loops, turning spanning tree off completely makes a lot of things better.

Good Luck!