SvxLink <-> Asterisk

Die folgende Anleitung bezieht sich auf die jeweils neuste Version von SvxLink und Asterisk. Es wird nur der prinzipielle Weg beschrieben. Eine detailierte Beschreibung von z.B. Wählplänen (Dialplan) würde Umfang und Anliegen dieser Seite übersteigen.

1) Vorbereitung

Installieren Sie die Quellen von Portaudio (und Alsa):
OpenSuSE: zypper install portaudio-devel
Debian+Derivate: apt-get install libportaudio-dev

2) Asterisk

Laden sie die die Quellen von Asterisk herunter und entpacken Sie diese.

Kompilieren und installieren Sie die Quellen (mit Console-Support -> chan_console). Wir gehen davon aus, dass Sie einen sipgate.de-Zugang besitzen, von dem aus Sie sich mit Ihrem Repeater verbinden möchten.

Erstellen Sie Alsa-Loopbackdevices per
modprobe snd-aloop

aplay -l liefert dann in etwa so etwas zurück:
Karte 2: Loopback [Loopback], Gerät 0: Loopback PCM [Loopback PCM]
Sub-Geräte: 7/8
Sub-Gerät #0: subdevice #0
Sub-Gerät #1: subdevice #1
Sub-Gerät #2: subdevice #2
Sub-Gerät #3: subdevice #3
Sub-Gerät #4: subdevice #4
Sub-Gerät #5: subdevice #5
Sub-Gerät #6: subdevice #6
Sub-Gerät #7: subdevice #7
Karte 2: Loopback [Loopback], Gerät 1: Loopback PCM [Loopback PCM]
Sub-Geräte: 8/8
Sub-Gerät #0: subdevice #0
Sub-Gerät #1: subdevice #1
Sub-Gerät #2: subdevice #2
Sub-Gerät #3: subdevice #3
Sub-Gerät #4: subdevice #4
Sub-Gerät #5: subdevice #5
Sub-Gerät #6: subdevice #6
Sub-Gerät #7: subdevice #7

Bearbeiten Sie die Files alsa.conf, sip.conf, extensions.conf, console.conf, modules.conf im Verzeichnis /etc/asterisk/ wie folgt:

alsa.conf

[general]
autoanswer=yes
context=local
extensions=s
language=de
input_device=hw:2,0,0
output_device=hw:2,0,1
; Alsa loopback device -> abhängig von eigener Konfiguration

extensions.conf: Hier ist 2####0 durch die Telefonnummer des SIP-Gerätes zu ersetzen.


[general]
static=yes
autofallthrough=yes
writeprotect=no
clearglobalvars=no
autofallthrough=yes

[globals]
CONSOLE=Console/default

[default]
exten => 2####0,1,Authenticate(1234)
exten => 2####0,2,Playback(access-granted)
exten => 2####0,3,Dial(Console/default)
exten => 2####0,n,Hangup()

modules.conf

load => chan_alsa.so
load => chan_console.so
noload => chan_oss.so

In der sip.conf bitte die Zugangsdaten (SIP-login, SIP-passwort) anpassen

[general]
context=default
nat=force_rport
transport=udp
sipdebug=yes
language=de
allow=all
srvlookup=yes
allowguest=no
rtptimeout=60
rtpholdtimeout=300
trustrpid=yes
alwaysauthreject=yes
register => sip-login:sip-passwort@sipgate.de/sip-callID

[Sipgate-Adi]
context=default
language=de
type=peer
defaultuser=
fromuser=sip-user
secret=sip-passwort
extension=sip-user
host=sipgate.de
callerid=Name
canreinvite=no
qualify=yes
insecure=port,invite

console.conf

[default]
input_device = default
output_device = default
autoanswer = yes
context = default
extension = s
callerid = Radio Console DB0HRC <(0049) 123456789>
language = en
overridecontext = no
mohinterpret = default
active = yes

Asterisk starten (z.B. im interaktiven Modus -cvvv) und die Funktion überprüfen. Eine Einwahl per SIP muß möglich sein.

3) SvxLink

Installieren Sie SvxLink entsprechend der Anleitung.
Richten Sie eine RepeaterLogic für Asterisk ein (/etc/svxlink/svxxlink.conf). Achten Sie dabei darauf, dass die AlsaLoopback-Devices richtig zugeordnet werden. Sie müssen in der svxlink.conf die zum AsterisDevice korrespondierenden Schnittstellen angeben! (hw:2,0,0 <-> hw:2,1,0 usw):

[GLOBAL]
...
LOGICS=...RepeaterLogic,AsteriskLogic,...
LINKS=...,AsteriskRepeaterLink,...

[AsteriskLogic]
TYPE=Repeater
RX=RxAsterisk
TX=TxAsterisk
OPEN_ON_SQL=100
OPEN_ON_DTMF=*
DEFAULT_LANG=de_DE
OPEN_SQL_FLANK=OPEN
IDLE_TIMEOUT=10
NO_REPEAT=1
CALLSIGN=DB0HRC-A
EVENT_HANDLER=/usr/share/svxlink/events.tcl
DEFAULT_LANG=de_DE

[RxAsterisk]
TYPE=Local
AUDIO_DEV=alsa:plughw:2,1,1
AUDIO_CHANNEL=0
SQL_DET=VOX
SQL_START_DELAY=0
SQL_DELAY=0
SQL_HANGTIME=1300
VOX_FILTER_DEPTH=20
VOX_THRESH=1000
DEEMPHASIS=0
SQL_TAIL_ELIM=0
DTMF_DEC_TYPE=INTERNAL
DTMF_MUTING=1
DTMF_HANGTIME=100
DTMF_SERIAL=/dev/ttyS0
DTMF_MAX_FWD_TWIST=18
DTMF_MAX_REV_TWIST=12

[TxAsterisk]
TYPE=Local
AUDIO_DEV=alsa:plughw:2,1,0
AUDIO_CHANNEL=0
PTT_TYPE=NONE
TIMEOUT=9000
TX_DELAY=0
PREEMPHASIS=0

[AsteriskRepeaterLink]
NAME=Asterisk
CONNECT_LOGICS=RepeaterLogic,AsteriskLogic
DEFAULT_ACTIVE=1

Weiterhin wird noch ein TCL-Namespace „AsteriskLogic“ benötigt:

cp /usr/share/svxlink/events.d/RepeaterLogic.tcl /usr/share/svxlink/events.d/RepeaterLogic.tcl

Dann ändern Sie die Zeile am Beginn der Datei AsteriskLogic.tcl von

namespace eval RepeaterLogic {

in

namespace eval AsteriskLogic {

Starten Sie erst Asterisk, dann SvxLink.

Beim Anruf sollte jetzt eine Authentifikation (PIN-Nummer) abgefragt werden, danach erhält man die Information „Zugriff gewährt“. Jetzt sollte man über seine Relaisstation sprechen können.
Viel Erfolg!

4) Links
Asterisk-Forum (chan_console)
Diskussion „SvxLink and Asterisk“ auf Github
wird fortgesetzt…