asterisk-1.4.4 & spandsp-0.0.3

Diesen Beitrag schrieb ich 15 Jahre und 11 Monate zuvor; die nachfolgenden Ausführungen müssen heute nicht unbedingt noch genau so funktionieren. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 2 Minuten

UPDATE: Diese Anleitung ist veraltet! Die spandsp-Entwickler haben die test-apps-asterisk offline genommen, auch über archive.org oder den Google-Cache konnte ich sie nicht mehr vollständig zusammenkriegen. Ein adäquater Ersatz für die test-apps-asterisk sind die agx-ast-addons, einsetzbar jedoch lediglich ab asterisk-1.4! Vgl. ggf. auch hier…

Hier mal quick & dirty eine Beschreibung, wie ich die Software ans Laufen bekomme – auf mehreren Produktivsystemen im Einsatz…

zaptel

$ cd /usr/src
$ wget http://ftp.digium.com/pub/zaptel/zaptel-1.4.3.tar.gz
$ tar xvfz zaptel-1.4.3.tar.gz
$ cd zaptel-1.4.3
$ make
$ make
$ make install

spandsp

$ cd /usr/src
$ wget http://soft-switch.org/downloads/spandsp/spandsp-0.0.3.tgz
$ tar xvfz spandsp-0.0.3.tgz
$ cd spandsp-0.0.3
$ ./configure
$ make
$ make install
$ echo "/usr/local/lib" >> /etc/ld.so.conf.d/i486-linux-gnu.conf
$ ldconfig
http://soft-switch.org/downloads/snapshots/spandsp/test-apps-asterisk-1.4/asterisk.patch

asterisk

$ cd /usr/src
$ wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.4.4.tar.gz
$ tar xvfz asterisk-1.4.4.tar.gz
$ cd asterisk-1.4.4/apps
$ wget http://soft-switch.org/downloads/snapshots/spandsp/test-apps-asterisk-1.4/app\_rxfax.c
$ wget http://soft-switch.org/downloads/snapshots/spandsp/test-apps-asterisk-1.4/app\_txfax.c
$ cd ..
$ wget http://soft-switch.org/downloads/snapshots/spandsp/test-apps-asterisk-1.4/asterisk.patch
$ patch -p0 < asterisk.patch
patching file build\_tools/menuselect-deps.in
Hunk #1 succeeded at 19 (offset 2 lines).
patching file configure.ac
Hunk #1 FAILED at 174.
Hunk #2 succeeded at 900 (offset 105 lines).
1 out of 2 hunks FAILED -- saving rejects to file configure.ac.rej
patching file makeopts.in
Hunk #1 succeeded at 133 (offset 13 lines).

Daher passen wir configure.ac manuell an und fügen in Zeile 198 – in der Zeile nach AST_EXT_LIB_SETUP([RADIUS], [Radius Client], [radius]) nun AST_EXT_LIB_SETUP([SPANDSP], [spandsp Library], [spandsp]) ein. Wunderbar.

$ cd /usr/src/asterisk-1.1.4/include
$ cp /usr/local/include/spandsp/plc.h .
$ cd ..
$ ./bootstrap.sh
$ ./configure

Nach dem ./configure muss in build-tools/menuselect-deps eine Zeile stehen, die etwas so ausschaut: SPANDSP=1

Und in makeopts sollte soetwas hier stehen: SPANDSP_LIB=-lspandsp -ltiff

Wenn nicht, ist bis hierhin schon etwas schief gelaufen!

$ make
$ make install
$ make samples

Es ist ein relativer Krampf, aber so funktioniert es ganz gut eigentlich. Mit spandsp-0.0.4pre${x} konnte ich es nicht zum Laufen bewegen. Wichtig ist, im laufenden asterisk dann auch zu überprüfen, dass die Applikationen wirklich vorhanden sind:

CLI> show application RxFax
CLI> show application TxFax

Sind sie es nicht, einfach mal den asterisk -vvvvc auf Konsole starten und schauen, welche Fehlermeldungen er bringt; ist es eine blafasel.so not found-Meldung, so wurde aller Wahrscheinlichkeit der Schritt bzgl. ldconfig vergessen… Naja, einfach mal ausprobieren.

Vor allem bei einem Update von 1.2.x auf 1.4.x sollte man ggf. /usr/lib/asterisk zumindest umbenennen, wenn schon nicht löschen, ehe man make install aufruft. Je nach verwendeter Hardware müssen unter Umständen auch die Treiber erneut gebacken werden.

Es kann passieren, dass der asterisk in sich zusammenbricht, sobald er ein Fax annehmen soll; setzt man die Konsole per core set verbose 17 mal auf gesprächig, so sieht man – je nach Wählplan – als letzten Aufruf den von RxFax nebst Parametern; der Disconnect von der asterisk-Konsole, der dann folgt, ist nicht nur ein Disconnect, sondern ein Komplettabsturz des Prozesses. In dem Fall: ganz von vorne anfangen.

Macht man im spandsp-0.0.3-Verzeichnis ein make uninstall, schmeißt er wirklich allen relevanten Kram raus – ein sehr nettes Feature, vor allem bei Updates von bestehenden Servern! Sourcen neu auspacken, komplett neu patchen, alles von vorne machen – dann sollte es tun… {.:note title=”Hinweis”}