Installing asterisk

2008-01-08 7-minute read

This is attempt number two. Attempt number one I didn’t properly document, so hopefully this attempt will be more successful just for that reason. Below is my final email on our previous attempt. The two differences with the current attempt are:

  • It’s June 2008 as opposed to September 2007. Hopefully we have new software that might have fixed problems from before.

  • New server hardware. We’re using a different computer.

Here’s the email of the previous problem:

	I've started going through and trying to debug. I'm seriously at the point of
	recommending that we remove the card and send it back for a replacement if not
	full refund (and go for a different phone system).

	I've limited experience with the zaptel stuff before and I find it incredibly
	flakey. I don't know if it's this particular card or this particular card
	model (it's a newer version). Several years ago I worked with a different
	zaptel card and, once we got it working, it seemed to work pretty
	consistently.

	In any event... this was my experience this evening:

	I confirmed the familiar problem of calling into the system and not having the
	system respond to key presses. And once again I confirmed that by shutting
	down asterisk, unloading and reloading the modules and starting asterisk
	again, the problem goes away (for the time being).

	I created a script in /root called reset-asterisk that will take care of this
	in one fell swoop.

	I tested dialing out from both phones on 718, 917 and did not get the "You
	must dial a one" error. However, as I continued to test I did get the error
	and believe that it is intermittent. Sigh. Looking at the console, asterisk
	appears to be sending out the one with the number - maybe it's not waiting
	long enough for the dial tone so the one is not properly going through?

	I also found that sometimes I could pick up both internal phones and make two
	simoultaneous calls (at least once) but most times I would get that error or a
	busy signal.

	To make matters worse, at two points in my testing the entire server froze up
	(did not respond to pings) forcing me to hard reset the machine.

	My sense is that most if not all of these problems are related to the zaptel
	card and/or kernel modules. And what makes this so difficult is that all the
	problems seem to be intermitten!!

	I'm not sure what to do at this point, but am open to suggestions!

	jamie

	p.s. I made the following changes on the server:

	* Enabled serial console access (modified /etc/inittab and
	+/etc/boot/grub/menu.1st)

	* Uploaded "The Man in Black.mp3" into the /var/lib/asterisk/moh directory. On
	one server crash, asterisk was trying to access that directory (moh = music on
	hold). I'm not sure why, but thought I would throw a file into that directory
	to see if that was why it was failing.

	* changed extensions.conf to use a different programming logic to select the
	line to dial out with (based on:
	http://www.voip-info.org/wiki/index.php?page=Asterisk+cmd+ChanIsAvail).

We’re starting with a Debian Lenny installation that is stripped down to run just the basics. Then:

	aptitude install asterisk
	aptitude install zaptel zaptel-source

Then, based on /usr/share/doc/zaptel/README.Debian.gz, I ran:

	module-assistant a-i zaptel

Woops - got an error:

	Bad luck, The kernel headers for the target kenrel version could not be
	found and you did not specify other valid kernel headers to use.

Tried again with:

	module-assistant prepare

And got:

	The following packages have unmet dependencies: linux-headers-2.6.22-3-686:
	Depends: linux-kbuild-2.6.22 but it is not installable E: Broken packages

Strange. Linux 2.6.24-1-686 is installed:

	0 zaius:/usr/share/doc/zaptel# aptitude search linux-image | grep ^i
	i   linux-image-2.6-686             - Linux 2.6 image on PPro/Celeron/PII/PIII/P
	i A linux-image-2.6.22-3-686        - Linux 2.6.22 image on PPro/Celeron/PII/PII
	i A linux-image-2.6.24-1-686        - Linux 2.6.24 image on PPro/Celeron/PII/PII
	0 zaius:/usr/share/doc/zaptel#

But is wasn’t chosen when I rebooted:

	0 zaius:/usr/share/doc/zaptel# uname -a
	Linux zaius 2.6.22-3-686 #1 SMP Sun Feb 10 20:20:49 UTC 2008 i686 GNU/Linux
	0 zaius:/usr/share/doc/zaptel#

I ran update-grub:

	0 zaius:/usr/share/doc/zaptel# update-grub 
	Searching for GRUB installation directory ... found: /boot/grub
	Searching for default file ... found: /boot/grub/default
	Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
	Searching for splash image ... none found, skipping ...
	Found kernel: /vmlinuz-2.6.24-1-686
	Found kernel: /vmlinuz-2.6.22-3-686
	Updating /boot/grub/menu.lst ... done
	0 zaius:/usr/share/doc/zaptel#

Checked /boot/grub/menu.lst and made sure default was set to 0 and the 2.6.24 kernel was the first listed and then rebooted.

Now we are using 2.6.24:

	0 zaius:~# uname -a
	Linux zaius 2.6.24-1-686 #1 SMP Thu May 8 02:16:39 UTC 2008 i686 GNU/Linux
	0 zaius:~# 

Strange. Not sure what happened before.

Now running module-assistant a-i zaptel returns without an error (it installed cpp-4.1 gcc-4.1 gcc-4.1-base libmudflap0 libmudflap0-dev linux-headers-2.6.24-1-common linux-kbuild-2.6.24) and then built the kernel modules from the zaptel-source.

Now:

	0 zaius:~# lsmod | grep zap
	1 zaius:~# modprobe zaptel
	0 zaius:~# lsmod | grep zap
	zaptel                188548  0 
	crc_ccitt               2176  1 zaptel
	0 zaius:~#

Ok. So far so good. The zaptel device seems created:

	0 zaius:~# find /dev/zap
	/dev/zap
	/dev/zap/ctl
	/dev/zap/pseudo
	/dev/zap/channel
	/dev/zap/timer
	0 zaius:~#

Continuing with README.Debian.gz:

	/etc/zaptel.conf
	----------------
	A sample /etc/zaptel.conf is no longer installed by default. You should 
	generate it manually (or automatically with genzaptelconf) if and when
	you actually have zaptel hardware and installed a zaptel-modules package
	for your kernel version.

Ok.

	0 zaius:/usr/share/doc/zaptel# genzaptelconf
	0 zaius:/usr/share/doc/zaptel#

That was really anti-climatic. Nonetheless, it apparently worked:

	0 zaius:/usr/share/doc/zaptel# cat /etc/zaptel.conf 
	# Autogenerated by /usr/sbin/genzaptelconf -- do not hand edit
	# Zaptel Configuration File
	#
	# This file is parsed by the Zaptel Configurator, ztcfg
	#

	# It must be in the module loading order


	# Global data

	loadzone	= us
	defaultzone	= us

	0 zaius:/usr/share/doc/zaptel# cat /etc/asterisk/zapata-channels.conf 
	; Autogenerated by /usr/sbin/genzaptelconf -- do not hand edit
	; Zaptel Channels Configurations (zapata.conf)
	;
	; This is not intended to be a complete zapata.conf. Rather, it is intended 
	; to be #include-d by /etc/zapata.conf that will include the global settings
	;
	0 zaius:/usr/share/doc/zaptel#

Hm. I think it’s supposed to list our FXO/FXS modules in /etc/asterisk/zapata-chanels.conf. From our previous install, we have 6 channels:

	0 zaius:~# cat asterisk.from.blackbolt/zapata-channels.conf
	; Autogenerated by /usr/sbin/genzaptelconf -- do not hand edit
	; Zaptel Channels Configurations (zapata.conf)
	;
	; This is not intended to be a complete zapata.conf. Rather, it is intended 
	; to be #include-d by /etc/zapata.conf that will include the global settings
	;

	; Span 1: WCTDM/0 "Wildcard TDM800P Board 1" 
	;;; line="1 WCTDM/0/0 FXOLS"
	signalling=fxo_ls
	callerid="Channel 1" <6001>
	mailbox=6001
	group=5
	context=from-internal
	channel => 1
	callerid=
	mailbox=
	group=
	context=default

	;;; line="2 WCTDM/0/1 FXOLS"
	signalling=fxo_ls
	callerid="Channel 2" <6002>
	mailbox=6002
	group=5
	context=from-internal
	channel => 2
	callerid=
	mailbox=
	group=
	context=default

	;;; line="3 WCTDM/0/2 FXOLS"
	signalling=fxo_ls
	callerid="Channel 3" <6003>
	mailbox=6003
	group=5
	context=from-internal
	channel => 3
	callerid=
	mailbox=
	group=
	context=default

	;;; line="4 WCTDM/0/3 FXOLS"
	signalling=fxo_ls
	callerid="Channel 4" <6004>
	mailbox=6004
	group=5
	context=from-internal
	channel => 4
	callerid=
	mailbox=
	group=
	context=default

	;;; line="5 WCTDM/0/4 FXSKS"
	signalling=fxs_ks
	callerid=asreceived
	group=0
	context=from-pstn
	channel => 5
	context=default

	;;; line="6 WCTDM/0/5 FXSKS"
	signalling=fxs_ks
	callerid=asreceived
	group=0
	context=from-pstn
	channel => 6
	context=default

	0 zaius:~#

Trying again with -v (verbose) and -d (hardware detection):

	0 zaius:~/asterisk.from.blackbolt# genzaptelconf -vd
	Unloading zaptel modules:

	Temporarily moving zaptel.conf aside to work around broken modprobe.conf
	Test Loading modules:
		- 	wct4xxp	
		- 	wcte12xp	
		- 	wcte11xp	
		- 	wct1xxp	
		- 	wanpipe	
		- 	tor2	
		- 	torisa	
		- 	qozap	
		- 	vzaphfc	
		- 	zaphfc	
		- 	ztgsm	
		ok	wctdm24xxp	
		- 	wctdm	
		- 	opvxa1200	
		- 	wcfxo	
		- 	pciradio	
		- 	wcusb	
		- 	xpp_usb	
	Generating '/etc/zaptel.conf and /etc/asterisk/zapata-channels.conf'
	Note: generated /etc/asterisk/zapata-channels.conf not included in zapata.conf
	To fix:  echo '#include zapata-channels.conf' >>/etc/asterisk/zapata.conf
	Reconfiguring identified channels

	Zaptel Version: 1.4.10.1
	Echo Canceller: MG2
	Configuration
	======================


	Channel map:

	Channel 05: FXS Kewlstart (Default) (Slaves: 05)
	Channel 06: FXS Kewlstart (Default) (Slaves: 06)

	2 channels to configure.

	0 zaius:~/asterisk.from.blackbolt#

Hm. Now it found 2 our of the 6 channels. That’s an improvement. The channels it found are the FXS channels (the ones you plug a telephone line into, as opposed to FXO which plug a telephone into).

Ok. Enough for tonight…