572 lines
16 KiB
Plaintext
572 lines
16 KiB
Plaintext
Asterisk Open PBC/IVR Project using the Sangoma A101 and A102 cards
|
|
===================================================================
|
|
|
|
Alex Feldman: Aug 2005
|
|
Nenad Corbic:
|
|
|
|
WANPIPE supports the Asterisk Open PBX/IVR project through an interface
|
|
of the Zaptel family of hardware devices. These devices share a common
|
|
driver suite, called the ZAPATA Telephony Driver Suite (zaptel).
|
|
|
|
|
|
IMPORTANT
|
|
---------
|
|
Please read the APPENDIX for IMPORTANT INFO
|
|
|
|
|
|
------------------------------------------------------------------
|
|
ASTERISK / ZAPTEL Installation
|
|
------------------------------------------------------------------
|
|
|
|
First install:
|
|
zaptel, zapata, libpri and asterisk
|
|
software on your system.
|
|
|
|
The Asterisk distributions can be found at http://www.asterisk.org.
|
|
|
|
1. Download the LATEST sources from http://www.asterisk.org;
|
|
|
|
2. Untar zaptel, libpri and asterisk source
|
|
in /usr/src directory
|
|
|
|
3. Proceed with ASTERISK/ZAPTEL installation as per
|
|
Asterisk instructions
|
|
|
|
Install: 1) Zaptel
|
|
2) LibPri
|
|
3) Asterisk
|
|
|
|
Note:
|
|
Zaptel kernel drivers must compiled and
|
|
installed BEFORE loading WANPIPE drivers.
|
|
|
|
|
|
-----------------------------------------------------------------
|
|
WANPIPE Releases
|
|
-----------------------------------------------------------------
|
|
|
|
2.3.3: Latest Wanpipe Release
|
|
|
|
o New channelized TDMV Driver (A104 Only)
|
|
|
|
Voice data is channelized and grouped into
|
|
8 byte chunks in HARDWARE. Each voice
|
|
channel is then DMAed directly into the ZAPTEL
|
|
buffers. Thus there is ZERO copy from HARDWARE
|
|
to ZAPTEL, resulting in better performance and
|
|
scalability.
|
|
|
|
o New DCHAN PRI Hardware HDLC support:
|
|
|
|
A104 Supported from beta1-2.3.3 release,
|
|
A101/A102 Supported from beta6-2.3.3 release
|
|
|
|
Instead of using the ZAPTEL software HDLC engine,
|
|
WANPIPE drivers use FPGA-based HARDWARE HDLC engine to
|
|
handle the PRI HDLC traffic. The HDLC frames are
|
|
then passed directly into LIBPRI, resulting
|
|
in higher reliability, better performance and scalability.
|
|
|
|
o New TDMV API (A104 Only)
|
|
|
|
Customers that develop Voice Applications in User Space,
|
|
can now develop using Channelized TDMV API.
|
|
|
|
The TDMV API works in the same way as standard HDLC API.
|
|
Application creates a socket to a network interface and
|
|
uses standard system calls to read and write.
|
|
However, data received from the TDMV API socket, will be
|
|
in 8,16,32 or 63 byte CHUNKS for each configured timeslot.
|
|
|
|
Thus for full T1 1-23 voice channels the rx data would
|
|
look like:
|
|
__________________________________
|
|
| 8bytes | 8 | | ... | 8 |
|
|
----------------------------------
|
|
Slot 1 2 3 23
|
|
|
|
The DCHAN PRI HDLC frames would be received as OOB messages
|
|
on the same socket.
|
|
|
|
OR
|
|
|
|
The DCHAN PRI HDLC frames could be received using another
|
|
socket that is connected to a network interface that is
|
|
bound to channel 24.
|
|
|
|
|
|
2.3.2: Stable Wanpipe TDMV Release
|
|
|
|
o The ORIGINAL TDMV driver for both A101/2 and A104 cards.
|
|
TDMV Driver has been optimized for best Echo cancel
|
|
performance.
|
|
|
|
This driver has been fully tested in the field and is
|
|
considered stable.
|
|
|
|
|
|
|
|
----------------------------------------------------------------
|
|
WANPIPE Installation for Asterisk
|
|
----------------------------------------------------------------
|
|
|
|
1. Download the LATEST Wanpipe 2.3.3 Release or Greater!
|
|
|
|
Note: Wanpipe does not support Asterisk in releases
|
|
LOWER than 2.3.2!
|
|
|
|
ftp.sangoma.com/linux/current_wanpipe
|
|
|
|
|
|
2. Untar wanpipe release in /usr/src/ directory
|
|
|
|
eg: tar xvfz wanpipe-beta13-2.3.3.tgz
|
|
|
|
|
|
3. Run ./Setup install
|
|
|
|
Proceed with installation choose YES for each option.
|
|
|
|
IMPORTANT:
|
|
Under compilation mode:
|
|
Select Option 2: TDM Only drivers
|
|
Select Option 3: TMD and WANPIPE drivers
|
|
|
|
Enable TDMV_DCHAN option for Hardware HDLC for
|
|
DCHAN PRI.
|
|
|
|
This option will also PATCH the ZAPTEL driver.
|
|
Thus, ZAPTEL MUST be recompiled and installed
|
|
after the ./Setup is completed.
|
|
|
|
Proceed to compile wanpipe drivers.
|
|
|
|
4. To confirm successful installation run:
|
|
|
|
wanrouter hwprobe
|
|
|
|
Confirm that Sangoma cards have been found.
|
|
|
|
Note:
|
|
Zaptel kernel drivers must compiled and
|
|
installed BEFORE loading WANPIPE drivers.
|
|
|
|
|
|
------------------------------------------------------------------------
|
|
WANPIPE Configuration for the A100 series of cards
|
|
------------------------------------------------------------------------
|
|
|
|
You can use the A101 or A102 cards for both data and voice. The
|
|
following describes how to configure the Asterisk system for
|
|
voice, with an auxiliary data interface, if needed.
|
|
|
|
|
|
1. Run the configuration utility wancfg.
|
|
|
|
/usr/sbin/wancfg
|
|
|
|
Hardware Setup:
|
|
|
|
Select Hardware: AFT
|
|
|
|
T1/E1 CSU/DSU Setup can be configured via
|
|
"Advanced Physical Medium Config"
|
|
|
|
If all the 24 (T1) or 30 (E1) timeslots will
|
|
be used by Asterisk then there is no need to
|
|
configure the T1/E1 Channelization.
|
|
|
|
If less than the full span is used by Asterisk,
|
|
set the channel span in
|
|
"Advanced Timeslot Groups Configuration"
|
|
|
|
|
|
A104/2 TE1 Clock Synchronization:
|
|
|
|
TE1 Clock synchronization is used to propagate
|
|
a single clock source over the T1/E1 ports on a single card.
|
|
|
|
|
|
Example:
|
|
wanpipe1: Port 1 receives T1 Clock from Telco
|
|
wanpipe2: Port 2 provides MASTER transmit clock for the link,
|
|
synchronized to the clock on Port 1
|
|
|
|
|
|
TE_CLOCK = MASTER #Specify AFT card as Master clock source
|
|
FE_REF_CLOCK = 1 #Specify the clock source port
|
|
|
|
For more information refer to APPENDIX below.
|
|
|
|
|
|
Protocol Setup:
|
|
Select Protocol: TDM VOICE
|
|
No other options
|
|
|
|
Interface Setup:
|
|
Select: SPAN Number: 1-24
|
|
The SPAN usually starts with 1
|
|
|
|
|
|
Select: Override Asterisk Echo Enable
|
|
Default: NO
|
|
|
|
This option will DISABLE/Override Asterisk
|
|
ECHO Cancellation setting for this SPAN.
|
|
|
|
Therefore, if you want to DISABLE Echo Cancellation
|
|
for this SPAN, ie: ignore what is configured in
|
|
zapata.conf, then set this option to YES.
|
|
|
|
*This is used in switching applications where one SPAN needs echo
|
|
cancellation and rest do not.
|
|
|
|
Select: DCHAN PRI Timeslot:
|
|
|
|
Hardware HDLC support for DCHAN PRI
|
|
|
|
A104: Supported from beta5-2.3.3 or greater
|
|
Release : beta5-2.3.3 or greater.
|
|
Firmware Version: V.11 or greater
|
|
|
|
A101/2: Supported from beta6-2.3.3 or greater
|
|
Release : beta6-2.3.3 or greater.
|
|
Firmware Version: All versions (V.24 latest)
|
|
|
|
Options: 0 : Disable Hardware HDLC on PRI
|
|
timeslot.
|
|
|
|
T1 1 to 24 : Enable Hardware HDLC on PRI
|
|
timeslot. Default 24
|
|
|
|
E1 1 to 31 : Enable Hardware HDLC on PRI
|
|
timeslot. Default 16
|
|
|
|
Note: TDMV_DCHAN value is ALWAYS from (1-24/31).
|
|
(Don't confuse this with the Asterisk configuration that uses
|
|
values greater than 24/31 for the DCHAN specification)
|
|
|
|
|
|
|
|
No other options
|
|
|
|
|
|
|
|
Channelization Notes:
|
|
--------------------
|
|
|
|
If you are using PRI mode, channel 24 must be included in the
|
|
"Timeslots in Group" list for the Asterisk T1 span, and channel
|
|
16 for the Asterisk E1 span.
|
|
|
|
For the non-Asterisk data channels, if any, configure
|
|
the interface as a standard WANPIPE interface,
|
|
running Frame Relay, PPP, Cisco HDLC or X.25 with IP or API
|
|
access.
|
|
|
|
|
|
|
|
------------------------------------------------------------------------
|
|
Zaptel configuration
|
|
------------------------------------------------------------------------
|
|
|
|
Download the documentation how to configure Zaptel driver from
|
|
|
|
(http://www.digium.com/downloads/configuring_zaptel.pdf).
|
|
|
|
When configuring the Zaptel driver (/etc/zaptel.conf)
|
|
|
|
1) Select the same span configurations as you used for WANPIPE
|
|
(i.e. LBO, framing, coding parameters).
|
|
|
|
Otherwise the Zaptel configuration is completely
|
|
standard, except that if there are data channels that
|
|
will be handled by WANPIPE, those channels should be ignored,
|
|
and not configured as 'nethdlc'.
|
|
|
|
2) If you are using multiple WANPIPE devices for Asterisk
|
|
|
|
For example, an A102 card might be configured as:
|
|
|
|
wanpipe1 and wanpipe2
|
|
|
|
then you need to set your starting scripts to start
|
|
the wanpipes in the same sequence as defined in zaptel.conf.
|
|
|
|
Run: wanrouter wanrc
|
|
|
|
to set the wanpipe startup order.
|
|
|
|
3) If you are using some channels for DATA
|
|
|
|
You don't need to set the channel list for this
|
|
interface under /etc/zaptel.conf because all data will go
|
|
through the separate WANPIPE driver to the kernel.
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------
|
|
APPENDIX
|
|
-------------------------------------------------------------
|
|
|
|
|
|
1)HOTPLUG Conflicts with WANPIPE
|
|
===============================
|
|
|
|
|
|
The HOTPLUG Service should be disabled because it
|
|
conflicts with Wanpipe interface startup.
|
|
The HOTPLUG can conflict with startup of TDMV drivers.
|
|
|
|
Possible Solutions:
|
|
|
|
1) Insert wanpipe interface name into the hotplug
|
|
interface list, and restart hotplug.
|
|
|
|
vi /etc/hotplug/net.agent
|
|
|
|
Insert wanpipe interface name into
|
|
the ignore list:
|
|
|
|
...ppp*|lo*|w*)
|
|
|
|
Where w* relates to all wanpipe interfaces
|
|
starting with letter "w"
|
|
|
|
Restart hotplug agent:
|
|
|
|
/etc/init.d/hotplug restart
|
|
|
|
2) Remove the Hotplug RPM
|
|
rpm -qa | grep hotplug
|
|
rpm -e <hotplug name>
|
|
|
|
3) Stop hotplug:
|
|
/etc/init.d/hotplug stop
|
|
|
|
However, you must do this each
|
|
time you boot up. Thus insert this
|
|
command in rc.local.
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
|
2) Exec "ztcfg" after wanrouter start
|
|
==================================
|
|
|
|
The "ztcfg" tool must be executed before starting
|
|
asterisk. WANPIPE "wanrouter" script has the capability
|
|
to execute an external script after "wanrouter start"
|
|
command is competed.
|
|
|
|
The wanrouter looks to /etc/wanpipe/scripts directory
|
|
for any configured bash scripts.
|
|
|
|
1) Create a file called "start" (lower case)
|
|
|
|
vi start
|
|
----------Cut Here----------------
|
|
#!/bin/sh
|
|
|
|
#Make sure that udev/devfs zaptel device
|
|
#has come up.
|
|
while [ ! -e /dev/zap ];
|
|
do
|
|
echo "Waiting for zaptel device /dev/zap..."
|
|
sleep 2
|
|
done
|
|
|
|
sleep 1
|
|
|
|
ztcfg -vvvv
|
|
|
|
----------Cut Here----------------
|
|
|
|
2) Copy the file "start" into /etc/wanpipe/scripts directory.
|
|
(Note: the file doesn't have to have exec privileges)
|
|
|
|
|
|
The script "start" will execute each time the "wanrouter start"
|
|
command executes.
|
|
|
|
|
|
Please Refer to README.external_scripts for more info about
|
|
wanrouter and external scripts.
|
|
|
|
|
|
------------------------------------------------------------
|
|
|
|
|
|
2) Updating FLASH on AFT Cards
|
|
===========================
|
|
|
|
The AFT FLASH update utility is located in:
|
|
wanpipe/util/wan_aftup directory.
|
|
|
|
The same directory contains the latest AFT
|
|
FLASH Firmware BIN files since the release
|
|
of the driver.
|
|
|
|
The latest AFT Firmware bins are located in
|
|
ftp.sangoma.com/linux/current_wanpipe/firmware.
|
|
|
|
|
|
To update flash on ANY AFT card do the following:
|
|
|
|
1) Make sure you have the latest AFT Firmware BIN
|
|
The latest file necessary for the current release
|
|
will be in the wan_aftup/ directory.
|
|
One can also check the ftp site above.
|
|
|
|
The AFT Binary file must reside in wan_aftup/ directory.
|
|
|
|
2) Make sure that wanpipe drivers are NOT Loaded
|
|
lsmod | grep wanpipe
|
|
|
|
3) Run ./update_aft_firm.sh
|
|
|
|
Specify interface name that corresponds to the
|
|
AFT card.
|
|
|
|
Specify the latest AFT Firmware version
|
|
|
|
Once the flashing is done, select Y to reload firmware.
|
|
(This step only reloads flash, not your machine!)
|
|
|
|
4) Card is ready for normal operation. (No reboot needed)
|
|
|
|
---------------------------------------------------------------
|
|
|
|
|
|
3) Multiple ZAPTEL Releases AND Wanpipe Crashing
|
|
=============================================
|
|
|
|
On systems, where ZAPTEL has been upgraded from old
|
|
releases, it is possible for a kernel module directory
|
|
to contain MULTIPLE ZAPTEL drivers.
|
|
|
|
Old Zaptel install dir: /lib/modules/$(uname -r)/zaptel
|
|
|
|
New Zpatel install dir: /lib/modules/$(uname -r)/misc
|
|
|
|
If old zaptel installation was NOT removed, the new installation
|
|
would NOT overwrite the old kernel modules. In this case
|
|
the OLD modules would continue to be loaded, even though the
|
|
new ones were installed.
|
|
|
|
Check:
|
|
|
|
The check if this condition exists on your machine run:
|
|
|
|
modprobe -l | grep zaptel.*o
|
|
|
|
If multiple zaptel modules are found
|
|
the problem must be fixed before starting
|
|
WANPIPE !!!.
|
|
|
|
|
|
In this scenario, if a customer starts WANPIPE drivers based
|
|
on NEW ZAPTEL sources, the WANPIPE would CRASH !!!
|
|
The WANPIPE driver shares structures with ZAPTEL, thus, a
|
|
result of mismatched structures is a kernel panic.
|
|
|
|
|
|
Solution:
|
|
|
|
The solution in this case is to REMOVE the old zaptel modules.
|
|
rm -rf /lib/modules/$(uname -r)/zaptel
|
|
depmod -a
|
|
|
|
|
|
---------------------------------------------------------------
|
|
|
|
|
|
4) Multiple ZTCFG executions on bootup
|
|
====================================
|
|
|
|
On systems that have zaptel and digium drivers
|
|
installed, one must be careful to synchronize
|
|
wanpipe, digium and zaptel ztcfg on boot up.
|
|
|
|
Therefore, wanpipe and digim MUST start before ztcfg
|
|
is executed.
|
|
|
|
Check your /etc/rcS.d startup scripts. Make sure that
|
|
the startup numbers S## for zaptel are higher than those
|
|
of wanpipe and digium.
|
|
|
|
|
|
---------------------------------------------------------------
|
|
|
|
|
|
5) UDEV Conflicts with ZAPTEL
|
|
==========================
|
|
|
|
UDEV is a user space daemon, which handles all /dev
|
|
devices. On startup ZAPTEL schedules creation of
|
|
/dev/zap device. It takes about 10 seconds for the
|
|
UDEV daemon to create /dev/zap and all its devices after
|
|
zaptel has been started (wanrouter start).
|
|
|
|
On shutdown, ZAPTEL schedules deletion of /dev/zap
|
|
device. Again it takes about 1-5seconds for UDEV
|
|
daemon to delete /dev/zap device from user space.
|
|
|
|
A conflict can occur if one quickly starts and then stops
|
|
wanpipe/zaptel. In this case UDEV daemon might be in
|
|
process of creating /dev/zap devices, while zaptel kernel
|
|
driver tries to remove them.
|
|
|
|
To prevent this please install the wanpipe external
|
|
start script referenced in ITEM #2 of the APPENDIX above.
|
|
This script will delay wanpipe start until UDEV has
|
|
created the /dev/zap devices.
|
|
|
|
|
|
----------------------------------------------------------------
|
|
|
|
|
|
6) A104/2 TE1 Clock Synchronization:
|
|
=================================
|
|
|
|
TE1 Clock synchronization is used to propagate
|
|
a single clock source over the T1/E1 ports on a single card.
|
|
|
|
Example:
|
|
wanpipe1->Port 1 receives T1 Clock from Telco
|
|
wanpipe2->Port 2 provides MASTER transmit clock for the link,
|
|
synchronized to the clock on Port 1
|
|
|
|
|
|
Settings for wanpipe1, Port 1:
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Using wancfg, configure as slave with TE_CLOCK=NORMAL
|
|
|
|
Settings for wanpipe2, Port 2:
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Using wancfg, configure as master with
|
|
TE_CLOCK=MASTER
|
|
FE_REF_CLOCK=1
|
|
|
|
|
|
The FE_REF_CLOCK parameter refers to the source of the MASTER
|
|
clock for this port. On the A104 it can be any of the 4 ports.
|
|
On the A102, Port A=1 and Port B=2. Setting FE_REF_CLOCK=0
|
|
sets the clock source as the on-board oscillator, disabling
|
|
any synchronization.
|
|
|
|
|
|
IMPORTANT: When starting and stopping wanpipe devices make sure
|
|
that the wanpipe# that provides the synchronized clock source
|
|
is started first and stopped last. This is normally done automatically
|
|
by the wanrouter startup script.
|
|
|
|
If the wanpipe# that provides the synchronized clock source is
|
|
stopped, the other devices using the clock source will
|
|
behave unpredictably.
|
|
|
|
|