[HowTo] Asterisk 13 mit ISDN-Support fuer HFC-4S / HFC-8S Karten auf Basis Debian 9 (stretch)

sparkie

Aktives Mitglied
Mitglied seit
13 Nov 2005
Beiträge
1,610
Punkte für Reaktionen
26
Punkte
48
In einer Zeit in der ISDN sowieso kaum mehr einer braucht (oder gar will) kann ich ja mal ein kleines HOWTO
zum Thema nachreichen:)

Jedenfalls war es noch nie so einfach unter Linux eine 4-Port HFC-Karte am Asterisk einzurichten und zu
betreiben. Dementsprechend kurz geraten die nun folgenden Ausfuehrungen.

Mein Vorgehen war wie folgt. Es ist nur ein Beispiel und natuerlich *ohne jede Gewaehr*.
Verbesserungsvorschlaege sind wie immer willkommen.

Vorgehen:

- Jumpern der Karte entsprechend der gewuenschten TE-/ NT-Port Konfiguration (wird spaeter durch Software eingelesen)
- Installation eines minimalen Debian 9 (aka Stretch). z.B. mit 'network install'
- eine sshd muss am Ende laufen

Vorschlag fuer das Debian-Repository
/etc/apt/sources.list:
Code:
deb https://ftp.de.debian.org/debian/ stretch main contrib non-free
deb-src https://ftp.de.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free

Repository aktivieren
Code:
apt update
apt upgrade

Installieren der Pakete zum Bau der DAHDI Treiber
Code:
apt build-dep dahdi-source

Installieren der DAHDI Treiber Sourcen
Code:
apt install dahdi-source

Installieren von asterisk + asterisk-module
Code:
apt install asterisk-dahdi

Bau der DAHDI Treiber + Installation
Code:
m-a -t a-i dahdi

Blacklisten diverser Treiber z.B. in neuem File
/etc/modprobe.d/blklist_isdn_drivers.conf:

Code:
blacklist hfcpci
blacklist hfcsusb
blacklist hfcmulti
blacklist mISDN_dsp
blacklist mISDN_core
blacklist mISDN_dsp_oslec

blacklist dahdi
blacklist wcb4xxp
blacklist zaphfc

reboot
Code:
init 6

nach reboot darf folgendes Kommando keine Ausgabe haben (d.h. Treiber sind nicht geladen):
Code:
lsmod | egrep -i 'hfc|isdn|crc_ccitt|dahdi|echo|wcb4'

Test ob die gesteckte Karte prinzipiell erkannt wird mit
Code:
dahdi_hardware -v

das ergibt fuer meine Swyx (Beispiel) diese Ausgabe:
Code:
pci:0000:05:00.0     wcb4xxp-     1397:08b4 Swyx 4xS0 SX2 QuadBri

zur Konfiguration der 4 ISDN-Ports dahdi manuell im auto_assign mode starten
Code:
modprobe dahdi auto_assign_spans=1

HFC Treiber manuell laden
Code:
modprobe wcb4xxp

es sollte in den 'dmesg' den TE/ NT Jumperpositionen (siehe oben) entsprechend
div. Eintraege erscheinen. Ein Beispiel fuer meine Karte:

/var/log/messages:
Code:
Aug 29 12:44:08 debootstretch32 kernel: [ 1167.464340] wcb4xxp 0000:05:00.0: probe called for b4xx...
Aug 29 12:44:08 debootstretch32 kernel: [ 1167.494750] wcb4xxp 0000:05:00.0: Identified Swyx 4xS0 SX2 QuadBri (controller rev 1) at 0001d000, IRQ 20
Aug 29 12:44:09 debootstretch32 kernel: [ 1167.528261] wcb4xxp 0000:05:00.0: NOTE: hardware echo cancellation has been disabled
Aug 29 12:44:09 debootstretch32 kernel: [ 1167.573698] wcb4xxp 0000:05:00.0: Port 1: NT mode
Aug 29 12:44:09 debootstretch32 kernel: [ 1167.625250] wcb4xxp 0000:05:00.0: Port 2: TE mode
Aug 29 12:44:09 debootstretch32 kernel: [ 1167.669276] wcb4xxp 0000:05:00.0: Port 3: TE mode
Aug 29 12:44:09 debootstretch32 kernel: [ 1167.719213] wcb4xxp 0000:05:00.0: Port 4: NT mode
Aug 29 12:44:09 debootstretch32 'dahdi_handle_device'[808]: add: /devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0
Aug 29 12:44:09 debootstretch32 'dahdi_handle_device'[811]: auto_assign_spans=1. Skip /devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0
Aug 29 12:44:09 debootstretch32 kernel: [ 1167.776078] wcb4xxp 0000:05:00.0: Did not do the highestorder stuff
Aug 29 12:44:09 debootstretch32 'dahdi_span_config'[840]: add: /devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0/span-1
Aug 29 12:44:09 debootstretch32 'dahdi_span_config'[841]: add: /devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0/span-4
Aug 29 12:44:09 debootstretch32 'dahdi_span_config'[844]: add: /devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0/span-3
Aug 29 12:44:09 debootstretch32 'dahdi_span_config'[853]: auto_assign_spans=1. Skip /devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0/span-1
Aug 29 12:44:09 debootstretch32 'dahdi_span_config'[851]: add: /devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0/span-2
Aug 29 12:44:09 debootstretch32 'dahdi_span_config'[849]: auto_assign_spans=1. Skip /devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0/span-4
Aug 29 12:44:09 debootstretch32 'dahdi_span_config'[852]: auto_assign_spans=1. Skip /devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0/span-3
Aug 29 12:44:09 debootstretch32 'dahdi_span_config'[857]: auto_assign_spans=1. Skip /devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0/span-2

wie ersichtlich laufen bei mir Port 1 und 4 im NT-Mode, die restlichen Ports im TE-Mode.
Zudem erkennt man Eintraege im /sys Filesystem, die wir jetzt in ein
Konfigurationsfile schreiben lassen:
Code:
dahdi_genconf -v

das erzeugt 3 Konfigurationsfiles, die abhaengig von der Hardware und
der Jumperung verschieden aussehen. Fuer meine Hardware sehen sie beispielsweise so aus:

/etc/dahdi/assigned-spans.conf:
Code:
# Device: [] @PCI_Bus_05_Slot_01 /sys/devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0
/sys/devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0 1:1:1
/sys/devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0 2:2:4
/sys/devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0 3:3:7
/sys/devices/pci0000:00/0000:00:1e.0/0000:05:00.0/pci:0000:05:00.0 4:4:10

/etc/dahdi/system.conf:
Code:
# Span 1: B4/0/1 "B4XXP (PCI) Card 0 Span 1" (MASTER)
span=1,0,0,ccs,ami
# termtype: nt
bchan=1-2
hardhdlc=3
echocanceller=oslec,1-2

# Span 2: B4/0/2 "B4XXP (PCI) Card 0 Span 2"
span=2,1,0,ccs,ami
# termtype: te
bchan=4-5
hardhdlc=6
echocanceller=oslec,4-5

# Span 3: B4/0/3 "B4XXP (PCI) Card 0 Span 3"
span=3,2,0,ccs,ami
# termtype: te
bchan=7-8
hardhdlc=9
echocanceller=oslec,7-8

# Span 4: B4/0/4 "B4XXP (PCI) Card 0 Span 4"
span=4,0,0,ccs,ami
# termtype: nt
bchan=10-11
hardhdlc=12
echocanceller=oslec,10-11

# Global data

loadzone        = us
defaultzone     = us

/etc/asterisk/dahdi-channels.conf:
Code:
; Span 1: B4/0/1 "B4XXP (PCI) Card 0 Span 1" (MASTER)
group=0,11
context=from-pstn
switchtype = euroisdn
signalling = bri_net_ptmp
channel => 1-2
context = default
group = 63

; Span 2: B4/0/2 "B4XXP (PCI) Card 0 Span 2"
group=0,12
context=from-pstn
switchtype = euroisdn
signalling = bri_cpe_ptmp
channel => 4-5
context = default
group = 63

; Span 3: B4/0/3 "B4XXP (PCI) Card 0 Span 3"
group=0,13
context=from-pstn
switchtype = euroisdn
signalling = bri_cpe_ptmp
channel => 7-8
context = default
group = 63

; Span 4: B4/0/4 "B4XXP (PCI) Card 0 Span 4"
group=0,14
context=from-pstn
switchtype = euroisdn
signalling = bri_net_ptmp
channel => 10-11
context = default
group = 63

wie ersichtlich werden die Jumperpositionen automatisch ausgelesen und hinterlegt.
Nummerierung der 4 ISDN-Ports bei Draufsicht auf das Slotblech (liegende Karte, Bauteilseite nach oben) ist wie folgt:
Code:
    4 3 2 1

der Blacklisteintrag fuer wcb4xxp wird nun wieder entfernt (auskommentiert),
damit der Treiber in Zukunft automatisch geladen wird

/etc/modprobe.d/blklist_isdn_drivers.conf:

Code:
blacklist hfcpci
blacklist hfcsusb
blacklist hfcmulti
blacklist mISDN_dsp
blacklist mISDN_core
blacklist mISDN_dsp_oslec

blacklist dahdi
#blacklist wcb4xxp
blacklist zaphfc

das eben erzeugte dahdi-channels.conf muss dem System noch bekannt gemacht werden
z.B. durch ein #include am Ende von chan_dahdi.conf
Code:
echo '#include dahdi-channels.conf' >> /etc/asterisk/chan_dahdi.conf

ein nun folgender Reboot sollte alle Treiber automatisch laden:
Code:
lsmod | egrep 'crc_ccitt|dahdi|echo|wcb4'

liefert in meinem Fall:

Code:
dahdi_echocan_oslec    16384  8
echo                   16384  1 dahdi_echocan_oslec
wcb4xxp                69632  12
dahdi                 212992  26 wcb4xxp,dahdi_echocan_oslec
crc_ccitt              16384  1 dahdi

fuer einen ersten Test wird nun ein ISDN-Telefon mit einem der NT-Ports der Karte verbunden. Wir erstellen jetzt noch eine triviale extensions.conf

/etc/asterisk/extensions.conf:
Code:
[from-pstn]
exten => s,1,Set(TIMEOUT(response)=300)
exten => s,n,DISA(no-password,dial-out)

nach einem anschliessenden Asterisk- Restart mit
Code:
systemctl restart asterisk

sollte nach Abheben des Hoerers bereits ein wunderschoener Waehlton zu hoeren sein
falls ja -> herzliche Gratulation/ Installation war erfolgreich

Nachdem die ehemals teuren 4-Port HFC Karten in der Bucht inzwischen fuer 'n Appel und 'n Ei
zu bekommen sind, sollte dem Spass damit keine Grenzen mehr gesetzt sein:)
Insbesondere kann man schoene SIP_2_ISDN Gateways bauen um z.B. seine alte Gigaset SX205 (die einfach nicht kaputt gehen will) zu recyclen.

Es gibt allerdings Varianten der 4-Port HFC-Karte, die kein automatisches Probing
durch den Treiber erlauben. Um diese Karten dennoch wie beschrieben nutzen zu koennen
ist ein kleiner Treiberpatch erforderlich. Falls jemand eine entsprechende Karte
erwischt hat kann ich den Patch und ein HOWTO-Update dazu gerne nachreichen.

BTW: ein Hardwarevorschlag findet sich hier: Hardwarevorschlag 4-port ISDN/SIP Gateway | IP Phone Forum
 
Zuletzt bearbeitet:
Klasse beitrag, ich hab ein ähnliches Setup mit einer alten hfc-s karte (colonge), läuft treibertechnisch auch 1a, allerdings mit der openvox dahdi verision (zaphfc im dahdi paket enthalten). Ich nutze es auch als Gateway um mein Telekom SIP vdsl anschluss zu routen.
SIP---->asterisk13----->hfc-s----->ntba----->eumex------->analoge Telefone.
Das ganze mittlerweile auf ubuntu 18.04.

Werde das ganze jetzt aber etwas umstricken und den "Call-Router" auf einem udoo x86 betreiben. Eine alte Draytek Vigor 128 USB mit Colonge Chip hab ich schon ergattert ;).
 
danke, das war ich den vielgeschmaehten HFC Karten schuldig:)
ich hab ein ähnliches Setup mit einer alten hfc-s karte (colonge),
sowas Antikes laeuft noch bei dir? Wie hast du das hinbekommen? In den neueren Kerneln werden doch nur noch Multi-Port Karten unterstuetzt?

der aktuelle dahdi support von openvox (Kompatibilitaet mit debian 9) wuerde mich auch mal interessieren. Es gibt ja ganz brauchbare FXS/FXO Karten dafuer.
 
sowas Antikes laeuft noch bei dir?
JA, seit fast 2 Jahren läuft das so :D
Wie hast du das hinbekommen?
Ja, böse frickelei ,damals waren die 4F Karten noch sau teuer, bzw ich wusste nicht das es die günstiger gibt.
Also so dachte ich mir, da ich auch keine Telekom Hardware mehr nutzen will, bastelst du dir eben was eigenes, relativ günstiges.
Ich hab viel probiert mit mIsdn, asbach uralt Kerneln weil sich nichts kompilieren lies usw usf....

bis ich irgentwann im Openvox Downloadbereich über diese Dahdi Version gestolpert bin :

http://www.openvox.cn/pub/drivers/dahdi-linux-complete/openvox_dahdi-linux-complete-current.tar.gz
in dieser Dahdi Version ist unter /linux/drivers/dahdi zaphfc enthalten :)


der aktuelle dahdi support von openvox (Kompatibilitaet mit debian 9) wuerde mich auch mal interessieren.

Dazu kann ich nur sagen das diese von mir verlinkte Dahdi Version sich bis Kernel 4.4.X Kompilieren lässt, ab kernel 4.13 Spätestens nicht mehr. (Stichwort "init_timer / setup_timer")
Für Kernel 4.15 den ich nutze musste ich die Dahdi Quellen patchen.
https://issues.asterisk.org/jira/se...ve-command_timer-functions-to-xbus-core.patch
https://issues.asterisk.org/jira/se...ilding-with-4.15-init_timer-setup_timer.patch

Quelle 1:
https://forums.gentoo.org/viewtopic-p-8139910.html?sid=3cc2760616edec22582df41d6e6fb88d
Quelle 2:
https://issues.asterisk.org/jira/browse/DAHLIN-359

Das "Orginale Dahdi" hat den Patch meineswissens nach mitlerweile integriert, Openvox noch nicht.

uname -a
Linux server 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

lsmod |grep dahdi
dahdi_echocan_mg2 16384 2
dahdi 233472 8 zaphfc,dahdi_echocan_mg2
crc_ccitt 16384 2 dahdi,ppp_async

asterisk -V

dahdi_hardware
pci:0000:08:01.0 zaphfc+ 1397:2bd0 HFC-S ISDN BRI card

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

server*CLI> dahdi show version
DAHDI Version: 2.11.1 Echo Canceller: MG2

server*CLI> dahdi show channels
Chan Extension Context Language MOH Interpret Blocked In Service Description
pseudo default default Yes
1 from-internal de default Yes
2 from-internal de default Yes
 
Zuletzt bearbeitet:
super, danke fuer die Hinweise! Man liest oft HFC-S sei in aktuellen Kerneln selbst mit dem neuesten DAHDI nicht laenger unterstuetzt (oder nutzbar). Das ist dann zum Glueck eine Falschmeldung:)
 
JA, offensichtilich, den mit dem openvox paket geht es. ;)

übrigens werden per Default beide Echo Canceller aus dem Openvox dahdi kompiliert, also MG2 und OSLEC, ich nutze zurzeit MG2, hab bisher keine Unterschiede feststellen können. Wo ist denn da der Unterschied ? besser /schlechter ?
 
Wo ist denn da der Unterschied ? besser /schlechter ?
das kann ich leider auch nicht sagen. Da ich ISDN nur noch innerhalb meiner Infrastruktur verwende und somit die Echo Canceller gar nicht brauche/einsetze.

aus meinen frueheren Tests (als ich noch ISDN zum Amt hin hatte) weiss ich aber, dass die groessten Effekte durch das Verhaeltnis TX zu RX Gain gegeben sind. Wenn das ausserhalb gewisser Grenzen liegt funktioniert der SW-Canceller (egal ob MG2 oder OSLEC) nicht oder nur schlecht. Es gab in diesem Forum auch mal diverse Beitraege in dieser Richtung.

Aber hier findet man ja seit der Forumsumstellung nichts mehr.
 
Zuletzt bearbeitet:
aus meinen frueheren Tests (als ich noch ISDN zum Amt hin hatte) weiss ich aber, dass die groessten Effekte durch das Verhaeltnis TX zu RX Gain gegeben sind. Wenn das ausserhalb gewisser Grenzen liegt funktioniert der SW-Canceller (egal ob MG2 oder OSLEC) nicht oder nur schlecht. Es gab in diesem Forum auch mal diverse Beitraege in dieser Richtung.

Aber hier findet man ja seit der Forumsumstellung nichts mehr.

Danke für den Hinweis, an rx und tx gain habe ich bisher auch nicht rumgespielt, da bisher alles laut genug ist / war :)
 
Hi Leser,
sorry für das Aufwärmen alter Threads..
Aber ich lebe in einer Landeshauptstadt am Rande Berlins, in der ein Provider noch ein ISDN Netz betreibt (V*rs*TEL)..
Gibt es eine Anleitung wie man eine Junghanns Quad Bri (für 12 Euro bei Ebay erstanden) zum Schwingen bekommt? - Unter Ubuntu 18.04 oder 16.04 oder lieber CentOS?
Danke
 
Hi Leser,
sorry für das Aufwärmen alter Threads..
Aber ich lebe in einer Landeshauptstadt am Rande Berlins, in der ein Provider noch ein ISDN Netz betreibt (V*rs*TEL)..
Gibt es eine Anleitung wie man eine Junghanns Quad Bri (für 12 Euro bei Ebay erstanden) zum Schwingen bekommt? - Unter Ubuntu 18.04 oder 16.04 oder lieber CentOS?
Danke

Hallo jottschi, hast du es hinbekommen?
Versuche schon seit 2 Tagen das gleiche mit Centos7, kann zwar das ganze kompilieren mit 3.10.0-1160.6.1.el7.x86_64 Kernel und openvox_dahdi-linux-complete-current.tar.gz. (3.0.0+3.0.0)
Aber beim Laden der verschiedenen Module wird bei mir keine Channels angezeigt und in dahdi-hardware -v
erscheint:

Habe 2 PCi-express Karten verbaut eine Swyx mit 1 Port und eine Junghanns Quad-Bri

dahdi_hardware -v

pci:0000:05:04.0 qozap- 1397:08b4 Generic Cologne ISDN card
das Modul qozap ist nicht vorhanden.

lsmod |grep dahdi
dahdi 228002 1 wcb4xxp
crc_ccitt 12707 1 dahdi


dmesg
dahdi: loading out-of-tree module taints kernel.
[ 8.801457] dahdi: module verification failed: signature and/or required key missing - tainting kernel
[ 8.803084] dahdi: Version: 3.0.0
[ 8.804023] dahdi: Telephony Interface Registered on major 196
[ 240.176889] dahdi: Telephony Interface Unloaded
[ 278.191796] dahdi: Version: 3.0.0
[ 278.192163] dahdi: Telephony Interface Registered on major 196
[ 287.456071] OPVXHW loaded


Swyx: lspci -vv

03:04.0 ISDN controller: Cologne Chip Designs GmbH Device f020 (rev ab)
Subsystem: Cologne Chip Designs GmbH Device b744
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64
Interrupt: pin A routed to IRQ 11
Region 0: I/O ports at e000
Region 1: Memory at f7d00000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-

Junghanns:
05:04.0 ISDN controller: Cologne Chip Designs GmbH ISDN network Controller [HFC-4S] (rev 01)
Subsystem: Cologne Chip Designs GmbH Device b742
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 11
Region 0: I/O ports at d000
Region 1: Memory at f7c00000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel modules: hfcmulti

Beim Laden von zaphfs
Ausgabe dmesg

[ 2297.234443] dahdi: Version: 3.0.0
[ 2297.234721] dahdi: Telephony Interface Registered on major 196
[ 2328.328899] vzaphfc: HFC-S PCI A ISDN (V1.42) loading

und nichts weiteres mehr.

Kann jemand helfen.

Danke
Grüße
CTS98
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.