Squeeze auf Igel LX546 Premium mit HFC-S und Asterisk

igelZur Installation von Debian Squeeze auf dem Igel habe ich einen TFTP Server eingerichtet und dort das Debian Netinstall Image entpackt. Komischerweise hatte ich mit allen getesteten Ubuntu CD’s Probleme beim Download von Paketen. Das ganze passierte auch unter Squeeze, lies sich durch Änderung des Mirrors jedoch umgehen.

Grundsätzlich bin ich folgender dieser Anleitung aus dem Digium Blog gefolgt.

Nach erfolglosen Versuchen mit dem von DIGIUM bereitgestellten DAHDI Paketen (scheinbar wegen fehlendem Treiber für meine Cologne Chips HFC-S PCI-A Karte) habe ich folgendes Projekt gefunden:

http://sourceforge.net/projects/dahdi-hfcs/
Nicht ganz aktuell, funktioniert jedoch tadellos. Anstelle des normalen Dahdi Pakets aus der Anleitung von Digium konnte ich das von SourceForge nehmen.

Hardware

  • Igel LX 564 Premium
  • 1 Ghz VIA Nehemiah
  • 2 GB Compact Flash Karte
  • 256 MB Ram
  • HFC-S PCI-A, Cologne Chip Designs GmbH

lspci

00:08.0 Network controller: Cologne Chip Designs GmbH ISDN network controller [HFC-PCI] (rev 02)
Subsystem: Cologne Chip Designs GmbH ISDN Board
Flags: bus master, medium devsel, latency 16, IRQ 11
I/O ports at e000 [disabled] [size=8]
Memory at ee000000 (32-bit, non-prefetchable) [size=256]
Capabilities: [40] Power Management version 1
Kernel driver in use: dahdi_hfcs

Der Interrupt 11 wird leider bei meiner Installation aktuell von diversen anderen Geräten genutzt, ob das ein Problem ist/wird kann ich nicht sagen, wird die Zeit zeigen:

uhci_hcd:usb2, uhci_hcd:usb3, uhci_hcd:usb4, yenta, dahdi_hfcs, VIA8233, eth0

Compact Flash

Der Hauptschuldige für die benötigte Zeit bei der Installation war natürlich die CompactFlash Karte, jedoch trägt dazu der schmale Via Prozessor wahrscheinlich auch seinen Teil bei (Meine 2Mbit Leitung mal außer Acht gelassen).

Im Gehäuse ist hinter dem Compact Flash Slot auf der Hauptplatine eine Stiftleiste angebracht bei der man Notebook IDE Platten anschließen kann.

Ich habe zwar eine alte 2,5“ IDE Platte da, leider fehlt mir aber ein passendes Flachbandkabel. Für die normalen 3,5“ Anschlüsse kein Problem, aber eines für die 2,5“ Variante habe ich bisher nie gebraucht. Kann man auf jeden Fall günstig in der Bucht erwerben.

Installation des Betriebssystems

Zur Debian Installation gibt es nicht viel zu sagen. Sie verläuft wie auf einem normalen PC, genutzt habe ich die Text Installation.

Das ganze hat gut und gerne 2 Stunden in Anspruch genommen. Bei der Paketauswahl habe ich alles abgewählt um eine möglichst schlanke Installation zu erhalten.

Installation der nötigen Pakete

Da auf die Installation zusätzlicher Pakete verzichtet wurde muss ich noch die für den täglichen Gebrauch unverzichtbare Tools nachinstallieren. Natürlich ist das Geschmackssache, bei mir sieht das in etwa so aus:

apt-get install vim mc multitail wget

Nun kommen wir zu den Paketen die zum Bauen von dahdi, libpri und Asterisk nötig sind:

apt-get install build-essential libssl-dev libncurses5-dev libnewt-dev  libxml2-dev libsqlite3-dev libmysqlclient-dev zlib1g-dev linux-headers-`uname -r`

Download & Entpacken der Pakete

  1. Cd /usr /src
  2. dahdi-hfcs-2011-10-30.tar.gz von obigem Sourceforge Projekt
  3. Libpri:
    http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
  4. Asterisk 11:
    http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz
  5. tar xf *.tar.gz

Kompilieren von Dahdi, libpri und Asterisk

Dahdi

make && make install && make config

libpri

make && make install

Asterisk 11

Beim menuselect kann man res_config_mysql aktivieren, das wird AFAIK gebraucht um Call Data Recording mit MySQL zu nutzen.

./configure && make menuselect && make && make install && make config && make samples

Konfiguration

Debian

Um Dahdi den Weg zu bereiten müssen 2 Kernelmodule in die Blacklist aufgenommen werden. Dazu wurde die Datei /etc/modprobe.d/blacklist.conf um die folgenden Zeilen erweitert:

blacklist hfcpci
blacklist mISDN_core

Dahdi

Leider habe ich stundenlang probiert und es versäumt mir Notizen zu machen. In groben Zügen müssen folgende Schritte ausgeführt werden (AFAIK wird genconf bereits durch make config ausgeführt). Mit dem Thema Echocanceller habe ich mich noch nicht weiter auseinander gesetzt, die Dahdi Basiskonfiguration unten war mir für erste Tests erstmal genug. Solange keine Probleme auftreten bleibt das auch so.

Durch ausführen des Befehls „dahdi_genconf“ versucht dahdi eine die für die Hardware passende Basiskonfiguration zu ermitteln. Dabei werden einige Konfigurationsdatein überschrieben ! Da das System frisch installiert war konnte hier natürlich nichts verloren gehen. Sicherheitshalber hatte ich vorher /etc/dahdi und /etc/asterisk einmal komplett gesichert. Die Kommentare sind in den eigentlichen realen Konfigurationsdateien eigentlich mehr störend als nützlich, als Referenz jedoch Klasse !

/etc/dahdi/system.conf

# Span 1: DAHDI_HFCS_FKA_ZTHFC1 "HFC-S PCI A ISDN card 0 [TE] "
span=1,1,0,ccs,ami
# termtype: te
bchan=1-2
hardhdlc=3
echocanceller=mg2,1-2
# Global data
loadzone             = de
defaultzone          = de

Asterisk

Um Asterisk mitzuteilen wie die Karte anzusprechen ist und welche Kanäle verfügbar sind müssen noch 2 Konfigurationsdateien in /etc/asterisk bearbeitet werden.

In beiden Dateien muss bei signalling der Modus der Karte festgelegt werden. Dabei gibt es 4 Möglichkeiten die für unser Euro ISDN am Basisanschluß relevant sind. Jeweils 2 für den Betrieb als Slave und als Master. Dabei ist Slave der normale Modus am Anschluß des Providers (ob Mehrgeräte- oder Anlagenanschluß ist egal), der Master Modus kann genutzt werden um einen internen S0 Bus zu betreiben.

  1. Anlagenanschluss – Client (normal)
    signalling = bri_cpe
  2. Mehrgeräteanschluß – Client (normal)
    signalling = bri_cpe_ptmp
  3. Anlagenanschluss – Master
    signalling = bri_cpe
  4. Mehrgeräteanschluß – Master
    signalling = bri_cpe_ptmp

In meinem Beispiel gehe ich von einem normalen ISDN Mehrgeräteanschluß an einem NTBA des Providers aus. Fehler bei der Konfiguration machen sich nicht unbedingt sofort bemerkbar. Zumindest kann ich aus Erfahrung sagen das eine Digium 4 Fach Karte im p2mp Modus durchaus auch an einem Anlagenanschluß funktioniert, nur eben nicht richtig und mit teilweise komischen Nebenwirkungen (einseitige Stille ist zB. ein Probleme das hierdurch zeitweise auftrat).

/etc/asterisk/dahdi-channels.conf

; Span 1: DAHDI_HFCS_FKA_ZTHFC1 "HFC-S PCI A ISDN card 0 [TE] "
group=0,11
context=from-pstn
switchtype = euroisdn
signalling = bri_cpe_ptmp
channel => 1-2
context = default

group = 63

/etc/asterisk/chan_dahdi.conf

[channels]
language=de
switchtype=euroisdn
pridialplan=unknown
prilocaldialplan=dynamic
internationalprefix = 00
nationalprefix = 0
overlapdial=yes
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
callgroup=1
pickupgroup=1
; -----------------------------------------------------
signalling = bri_cpe_ptmp
group = 1
context=ISDN-PORT
channel => 1-2

/etc/asterisk/extensions.ael

Im Dialplan (ich verwende AEL, Beispiele für die extensions.conf sollten sich im Netz finden lassen) muss nun für den ISDN-PORT noch ein Context angelegt werden

context ISDN-PORT {
  MSN      => {
    Answer();
    Playback(hello-world); //Dial(SIP/100);
    Hangup()
  }
}

Neustart und Check

Um alle Änderungen zu aktivieren habe ich einen Neustart durchgeführt.

Dahdi sollte durch ausfüheren von „dahdi_cfg –vv“ auf der Konsole etwas wie das hier ausgeben:

# dahdi_cfg -vv
DAHDI Tools Version - 2.6.2
DAHDI Version:
Echo Canceller(s): HWEC, OSLEC, MG2

Configuration
======================
SPAN 1: CCS/ AMI Build-out: 0 db (CSU)/0-133 feet (DSX-1)

Channel map:
Channel 01: Clear channel (Default) (Echo Canceler: mg2) (Slaves: 01)
Channel 02: Clear channel (Default) (Echo Canceler: mg2) (Slaves: 02)
Channel 03: Hardware assisted D-channel (Default) (Echo Canceler: none) (Slaves: 03)

3 channels to configure.
Setting echocan for channel 1 to mg2
Setting echocan for channel 2 to mg2
Setting echocan for channel 3 to none

Innerhalb der CLI („asterisk –rvvv“) sollten folgende Kommandos ähnliche Ausgaben zu Tage fördern:

CLI> dahdi show version
DAHDI Version:  Echo Canceller: HWEC, OSLEC, MG2

CLI> dahdi show status
Description                              Alarms  IRQ    bpviol CRC    Fra Codi Options  LBO
HFC-S PCI A ISDN card 0 [TE]             OK      0      0      0      CCS AMI           0 db (CSU)/0-133 feet (DSX-1)

CLI> dahdi show channels
Chan Extension  Context         Language   MOH Interpret        Blocked    State      Description
pseudo            default                    default                         In Service
1            ISDN-PORT       de         default                         In Service
2            ISDN-PORT       de         default                         In Service

Fazit

Die ganze Sache beschäftigt mich schon seit über 2 Jahren, damals noch mit einem Pentium 2 350 zum Testen. Die Dahdi Geschichte habe ich nie zum Laufen bekommen und habe nach tagelangen Versuchen die Karten weggepackt und die Sache aufgeschoben. Auch bei diesem neuen Anlauf ging einiges nicht sofort.

Dieser Artikel wurde bereits im März geschrieben, das ganze lief sehr stabil, wurde natürlich nie unter Last getestet. Da die CF Karte auf dauer doch zu langsam war hat eine alte P-ATA Notebook Festplatte Ihren Weg in den Igel gefunden. Diese war jedoch wahrscheinlich der Grund das der Igel in der Sommerhitze irgendwann seinen Geist aufgegeben hat. Nicht mehr per LAN erreichbar und ein Reboot war auch nicht von Erfolgen gekrönt. Ich muss gestehen das ich noch nicht zum nachschaun gekommen bin, das ganze steht im Regal und wartet darauf das ich zu viel Zeit habe.

Ich hatte übrigens keinerlei Qualitätsprobleme bei Gesprächen über die ISDN Karte, allerdings kam es zu Störungen von Gesprächen die über eine Fritz Box geführt wurden, die am gleichen NTBA hing.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert