Nodephone with Asterisk 1.6 or Trixbox 2.8

Scenario

You’ve installed Trixbox, you’ve setup extensions for your SIP clients (e.g. Ekiga) and you’ve successfully registered your SIP clients with Asterisk/Trixbox, allowing you to call internal extensions.

Using Trixbox without Tears (either Trixbox without Tears or Trixbox-2 without Tears) you’ve setup a trunk for Nodephone, and inbound and outbound routes.

Issue

When you attempt to dial out you get a “All circuits are busy now” voice response. This is a response from Asterisk (and not your SIP provider) so the issue appears to be with Asterisk. Looking at the Asterisk log (/var/log/asterisk/full*) or logging into an Asterisk terminal with debug on (asterisk -rvvvv) you get the following errors:

Unable to create channel of type 'SIP' (cause 20 - Unknown)
== Everyone is busy/congested at this time (1:0/0/1)
"TRUNK Dial failed due to CHANUNAVAIL (hangupcause: 20) - failing through to other trunks") in new stack

Depending on which client you’re using the logs may also contain the following:

No audio format found to offer. Cancelling call to

The Fix

The issue is related to codecs. The Nodephone settings found in Trixbox Without Tears (and many configurations found on the Whirlpool forums) only use the g729 codec. The codec doesn’t appear in any of the clients I tested (the non-free/freeware X-Lite, and the free software Ekiga and Twinkle clients) most likely because g729 is patented.

To overcome this issue add g711 ulaw and alaw to the list of allowed codecs to your Asterisk configuration (your Nodephone trunk in Trixbox):

allow=alaw&ulaw&g729