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...