[Solved] Subscriber absent? (cause 20)


I’m trying to set up an Asterisk server (not for productive use, at the moment just for testing). I followed the instructions in Asterisk: The Definitive Guide (3rd version) until the point where two endpoints call each other. That’s where I ran into problems. I managed to install

Asterisk 11 (from source)
Dahdi 2.6.1+2.6.1
Libpri 1.4.14

allowed the ports 5060, 5061 in iptables. Both my server and my two softphones (Ekiga) are in the same local network and don’t need to be connected to the internet for this setup. From the console I can place a test call, but I neither can dial any of the softphones, nor does any call from a softphone work.

Calling a softphone results in

*CLI> console dial 100
Unable to re-open DSP device /dev/dsp: No such file or directory
voice only, console video support not present
*CLI>     -- Executing [100@LocalSets:1] Dial("Console/dsp", "SIP/100") in new stack
Agent policy for Console/dsp is 'never'. CC not possible
No RTP engine was found. Do you have one loaded?
Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Auto fallthrough, channel 'Console/dsp' status is 'CHANUNAVAIL'
Unable to re-open DSP device /dev/dsp: No such file or directory
Unable to re-open DSP device /dev/dsp: No such file or directory
Unable to re-open DSP device /dev/dsp: No such file or directory
 << Hangup on console >> [/code]

My sip.conf
context=unauthenticated         ; default context for incoming calls
allowguest=no                   ; disable unauthenticated calls
srvlookup=yes                   ; enabled DNS SRV record lookup on outbound calls
udpbindaddr=             ; listen for UDP requests on all interfaces
tcpenable=no                    ; disable TCP support

[office-phone](!)   ; create a template for our devices
type=friend         ; the channel driver will match on username first, IP second
context=LocalSets   ; this is where calls from the device will enter the dialplan
host=dynamic        ; the device will register with asterisk
nat=force_rport,comedia             ; assume device is behind NAT
                    ; *** NAT stands for Network Address Translation, which allows  
                    ; multiple internal devices to share an external IP address.
; secret=   ; a secure password for this device
dtmfmode=auto       ; accept touch-tones from the devices, negotiated automatically
disallow=all        ; reset which voice codecs this device will accept or offer
allow=alaw          ; which audio codecs to accept from, and request to, the device
allow=ulaw          ; in the order we prefer

; define a device name and use the office-phone template

; define another device name using the same template

My extensions.conf


exten => 100,1,Dial(SIP/100)
exten => 101,1,Dial(SIP/101)

exten => 200,1,Answer()
same => n,Playback(hello-world)
same => n,Hangup()[/code]

(I know device name = phone number is not the best idea, this will be changed at some point)

Another strange thing: just one softphone is online at the moment, but it shows 2 as online

*CLI> sip show peers Name/username Host Dyn Forcerport ACL Port Status Description 100/100 ....... D N 5060 Unmonitored 101/101 ....... D N 5060 Unmonitored 2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 2 online, 0 offline]

I hope this information is sufficient. Any help and ideas is appreciated!


The cause 20 is normally because the destination SIP device hasn’t registered yet. However it is possible you have obfuscated the logs in a way that only loks as though they aren’t registered.

Howver, you also appear t be missing key parts of the the console support and SIP (RTP) support.

I wouldn’t advise using the console support until everything else is working, as it is more of a proof of concept than a production capability.

Although it is not the problem here, please find out what nat= really does, as it is probably not needed here. Also note that type=friend should normally be type=peer in this context and using an extension number as a SIP resource name violates the security guidelines.

I would start by fixing this problem:

No RTP engine was found. Do you have one loaded?

using make menuconfig, and/or correcting any related configuration file. If you want the console to work, you also need to install/configure /dev/dsp support in the kernel.

Thank you!

I could solve the RTP problem by installing uuid-devel and libuuid-devel, and this solved the problem with my softphones.

(And the NAT-option I set to no for now)