===== Installazione drivers DAHDI su Debian Squeeze =====
* Installare il sorgente di DAHDI e le parti userspace relative:
aptitude install dahdi-source dahdi dahdi-linux
* Compilare DAHDI con module-assistant
m-a a-i dahdi
Ora tocca alla configurazione, che cambia a seconda di quale hardware si usa, e delle configurazioni dello stesso. Il punto di partenza e` il file ''/etc/dahdi/genconf_parameters'', un esempio del quale si trova in ''/usr/share/doc/dahdi/examples/genconf_parameters.gz''
===== Configurazione generica e comandi utili =====
Se vi trovate di fronte a una scheda che non conoscete, questa e` (piu` o meno) la procedura per arrivare ad avere qualcosa di funzionante.
* Per vedere quale hardware avete e se e` supportato, potete usare il comando ''dahdi_hardware'' che riporta un elenco delle schede che riconosce e indica anche quale driver dovete usare per queste schede. Ad esempio, se l'output e` questo:
pci:0000:08:00.0 wctdm24xxp- d161:8005 Wildcard TDM410P
allora significa che il driver da caricare e` ''wctdm24xxp''. Il "meno" in fondo significa che non e` ancora stato caricato. Potete usare un "modprobe" per caricarlo a mano, cosi` potete procedere. Vale la pena di guardare l'output in dmesg o nel syslog per vedere se il driver fornisce informazioni utili o messaggi di errore.
* Per generare una configurazione, dopo aver caricato a mano il driver giusto, potete usare ''dahdi_genconf''. Questo comando genera una configurazione di massima che probabilmente e` tutto meno che perfetta, pero` e` un inizio. Il comando ''dahdi_genconf'' utilizza un file di configurazione (se presente) per impostare alcuni parametri. Il file in questione e` ''/etc/dahdi/genconf_parameters'', un esempio del quale si trova in ''/usr/share/doc/dahdi/examples/genconf_parameters.gz''. Se il file non esiste, si applicano i default. Una configurazione "media" per un sistema italiano dove sono collegate solo linee telefoniche (non telefoni) alla scheda potrebbe essere questa:
# toni italiani
lc_country it
# context delle chiamate entranti dalla scheda dahdi
context_lines from-dahdi
# gruppo di default nel quale inserire le linee dahdi
group_lines 0
In questa configurazione mancano tutti i default "specifici" delle linee (analogiche, ISDN, ecc) che vanno verificati e inseriti correttamente a seconda del tipo di scheda che avete.
* Creare il file ''/etc/dahdi/modules'' che contiene i moduli da caricare all'avvio dei sistema dahdi. Questi sono in linea di massima i moduli (o il modulo) che avete caricato a mano prima per inizializzare la scheda.
* Eventualmente se vi sono conflitti di driver fra quelli caricati da soli al boot e quello che serve a voi, mettete in blacklist i moduli dei driver che NON devono essere caricati al boot
* Eseguire ''/etc/init.d/dahdi restart'', il quale comando dovrebbe caricare e inizializzare il driver senza errori
* Modificare il file ''/etc/asterisk/chan-dahdi.conf'' adattandolo alle esigenze della vostra configurazione. Questo file DEVE includere il file ''/etc/asterisk/dahdi-channels.conf'' che e` stato generato prima da dahdi_genconf.
* Riavviare Asterisk e verificare in console che i comandi dahdi funzionino e che i canali dahdi siano visibili. Per esempio, usare il comando ''dahdi show status''.
Questa spiegazione e` assai lacunosa, il problema e` che le parti che non sono definite in modo preciso sono dipendenti dal tipo di installazione che fate e dal tipo di scheda che usate. Qui di seguito ci sono configurazioni specifiche per determinate schede che mi e` capitato di usare.
===== Configurazione di Dahdi senza hardware, solo per il timing =====
* Creare il file /etc/dahdi/genconf_parameters. Questo file verra` usato da ''dahdi_genconf'' per generare le configurazioni effettive per dahdi. Il piu` semplice esempio e` per una macchina che non ha hardware ISDN ma usa solo il timing "dummy" e`:
lc_country it
* Eseguire ''dahdi_genconf'', il quale generera` due files, uno e` ''/etc/dahdi/system.conf'' e l'altro e` ''/etc/asterisk/dahdi-channels.conf''.
* Eseguire ''/etc/init.d/dahdi restart'', il quale comando dovrebbe informarci che non essendoci hardware dedicato, si limita a caricare il modulo dummy.
Dal momento che non esistono canali dahdi in questa configurazione, possiamo ignorare i files ''/etc/asterisk/chan-dahdi.conf'' e ''/etc/asterisk/dahdi-channels.conf''
===== Configurazione di Dahdi con una scheda ISDN singola BRI con chipset HFC =====
* Blaclistare eventuali moduli che possano accedere alla scheda ISDN, tipicamente occorre inserire in ''/etc/modprobe.d/blacklist.conf'' queste righe:
blacklist hfcpci
blacklist mISDN_core
* Creare il file /etc/dahdi/genconf_parameters. Questo file verra` usato da ''dahdi_genconf'' per generare le configurazioni effettive per dahdi.
# toni italiani
lc_country it
# context delle chiamate entranti dalla isdn
context_lines from-dahdi
# gruppo di default nel quale inserire le linee isdn dahdi
group_lines 0
# signalling delle linee (bri o bri_ptmp)
bri_sig_style bri_ptmp
* Verificare, usando ''dahdi_hardware'', se la scheda viene vista e se il driver caricato e` quello giusto. Se vi e` un errore che dice ''driver should be 'zaphfc' but is actually 'hfcpci''', occorre fare un rmmod del driver errato e un modprobe del driver giusto.
* Eseguire ''dahdi_genconf'', il quale generera` due files, uno e` ''/etc/dahdi/system.conf'' e l'altro e` ''/etc/asterisk/dahdi-channels.conf''. Se da` errori dicendo che non ci sono canali definiti, occorrera` ri-eseguirlo una volta caricata la configurazione dell'hardware, dopo il restard di dahdi.
* Creare il file ''/etc/dahdi/modules'' che contiene i moduli da caricare all'avvio dei sistema dahdi. In questo caso, il driver per la scheda HFC:
zaphfc dahdi_transcode dahdi_dummy
* Eseguire ''/etc/init.d/dahdi restart'', il quale comando dovrebbe caricare e inizializzare il driver
* Modificare il file ''/etc/asterisk/chan_dahdi.conf'', che e` assai complesso. Questo che segue e` un esempio che funzionicchia, ma e` tutt'altro che collaudato a fondo e sono sicuro che non sia perfetto.
; chan_dahdi contenente i parametri di localizzazione delle linee
; qui metto le configurazioni che faccio io a mano e che non sono modificate dal dahdi_genconf.
[channels]
language=it
usecallerid=yes
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
group=1
callgroup=1
pickupgroup=1
pridialplan=unknown
prilocaldialplan=unknown
nationalprefix=0
internationalprefix=00
; overlapdial=yes
priindication=outofband
; alla fine, dopo aver settato tutti i parametri, includo (il # all'inizio non e` un commento!)
; il file dahdi-channels.conf, che e` generato da dahdi_genconf.
; VA INCLUSO ALLA FINE altrimenti i parametri impostati sopra non funzionano, perche` la logica di Asterisk
; e` che prima imposti i parametri, poi li applichi al canale che indichi in seguito.
; e siccome i canali sono indicati nel file incluso, questo va incluso alla fine.
#include /etc/asterisk/dahdi-channels.conf
* Riavviare asterisk e dalla console dovrebbe essere possibile vedere i canali dahdi e l'hardware installato con i comandi che seguono:
linux*CLI> dahdi show status
Description Alarms IRQ bpviol CRC4 Fra Codi Options LBO
HFC-S PCI A ISDN card 0 [TE] OK 0 0 0 CCS AMI YEL 0 db (CSU)/0-133 feet (DSX-1)
linux*CLI> dahdi show channels
Chan Extension Context Language MOH Interpret Blocked State
pseudo default default In Service
1 from-dahdi it default In Service
2 from-dahdi it default In Service
===== Configurazione con una scheda Quad-BRI B400P =====
Questa configurazione usa una scheda Quad-BRI Openvox B400P, che usa un chipset HFC. In questa configurazione usero` alcune porte in modo PTP e altre in modo PTMP, giusto perche` le cose facili non mi piacciono. Ma procediamo:
* Blaclistare eventuali moduli che possano accedere alla scheda ISDN, tipicamente occorre inserire in ''/etc/modprobe.d/blacklist.conf'' queste righe:
blacklist hfcpci
blacklist mISDN_core
blacklist hfcmulti
* Creare il file /etc/dahdi/genconf_parameters. Questo file verra` usato da ''dahdi_genconf'' per generare le configurazioni effettive per dahdi. Notare che qui imposto tutte le porte come PTP, poi modifichero` la configurazione che viene generata per decidere quali linee sono PTP e quali PTMP.
# toni italiani
lc_country it
# context delle chiamate entranti dalla isdn
context_lines from-dahdi
# gruppo di default nel quale inserire le linee isdn dahdi
group_lines 0
# signalling delle linee (bri o bri_ptmp)
bri_sig_style bri
* Verificare, usando ''dahdi_hardware'', se la scheda viene vista e se il driver caricato e` quello giusto. Se vi e` un errore che dice ''driver should be 'wcb4xxp' but is actually 'hfcmulti''', occorre fare un rmmod del driver errato e un modprobe del driver giusto.
* Eseguire ''dahdi_genconf'', il quale generera` due files, uno e` ''/etc/dahdi/system.conf'' e l'altro e` ''/etc/asterisk/dahdi-channels.conf''. Se da` errori dicendo che non ci sono canali definiti, occorrera` ri-eseguirlo una volta caricata la configurazione dell'hardware, dopo il restard di dahdi.
* Creare il file ''/etc/dahdi/modules'' che contiene i moduli da caricare all'avvio dei sistema dahdi. In questo caso, il driver per la scheda B400P:
wcb4xxp
* Eseguire ''/etc/init.d/dahdi restart'', il quale comando dovrebbe caricare e inizializzare il driver. Ora dovremmo avere 4 led che lampeggiano dietro le 4 porte della scheda (se non c'e` nessuna linea collegata).
* Se abbiamo linee miste PTP e PTMP, occorre modificare ''/etc/asterisk/dahdi-channels.conf'' per impostare le linee in modo corretto, impostando per ognuna il giusto ''signalling'' a ''bri_cpe'' o a ''bri_cpe_ptmp''.
* Modificare il file ''/etc/asterisk/chan_dahdi.conf'', usando lo stesso che trovate nella sezione precedente, quella relativa alla scheda singolo BRI con chipset HFC.
===== Configurazione con una scheda analogica TDM410 =====
Questa configurazione usa una scheda analogica TDM410 con 4 moduli. Di questi 4, tre sono di tipo FXO (quindi si connettono a linee telefoniche esterne) e uno e` di tipo FXS (quindi connette un telefono analogico interno). Il modulo FXS in questa configurazione viene inizializzato ma non utilizzato, quindi non e` detto che funzioni correttamente, magari e` necessario modificare dei parametri di configurazione per farlo funzionare.
* Creare il file /etc/dahdi/genconf_parameters. Questo file verra` usato da ''dahdi_genconf'' per generare le configurazioni effettive per dahdi.
# toni italiani
lc_country it
# context delle chiamate entranti dalla isdn
context_lines from-dahdi
# gruppo di default nel quale inserire le linee isdn dahdi
group_lines 0
# signalling per le linee analogiche
fxs_default_start ks
* Creare il file ''/etc/dahdi/modules'' contenente il nome del modulo del driver della scheda, in questo caso ''wctdm24xxp''
* Caricare il modulo sopra indicato con modprobe
* Verificare in dmesg che il modulo non dia errori (le schede piggyback sono tutte a posto? L'alimentazione c'e`?)
* Eseguire ''dahdi_genconf'' verificando che non dia errori
* Editare il file ''/etc/asterisk/chan_dahdi.conf'', avendo cura di salvare una copia dello stesso, in quanto ci sono mille parametri che potrebbero esservi utili. Questo che segue e` un file che funziona per la mia applicazione, ma non e` affatto detto che funzioni per voi. Nella configurazione di una scheda analogica ci sono veramente troppe impostazioni che sono critiche e dipendono da come la usate.
[channels]
language=it
context=from-pstn
; timing per il flash italiano, che e` MOLTO piu` rapido di quello USA. Tempi in mS.
preflash=80
flash=100
; questo e` default? Eventualmente commentare
;usecallerid=yes
;cidsignalling=v23
; verificare se servono
echocancel=yes
echocancelwhenbridged=yes
; ricnoscimento dell'occupato
busydetect=yes
busycount=3
; potremmo anche usare il busypattern, il problema e` che abbiamo due pattern diversi
; a seconda che il segnale indichi occupato o congestione.
; non usiamo il cambio di polarita` per nulla
answeronpolarityswitch=no
hanguponpolarityswitch=no
; questo era abilitato nella vecchia configurazione, ma dubito che funzioni
; correttamente, a meno che il centralino non produca segnali compatibili con quelli USA
callprogress=yes
;progzone=us
; non includo dahi-channels.conf come dovrei, ma replico qui le sue configurazioni "significative".
; cosi` tra l'altro elimino il quarto modulo che e` un FXS che non uso.
; Queste che seguono sono le impostazioni copiate da dahdi-channels.conf
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 1-3
* Come sempre, dopo un restart di Asterisk dovreste poter vedere i vostri canali DAHDI con un ''dahdi show channels'' in console.
===== Problemi di eco su linee analogiche =====
Se ci sono problemi di eco sulle linee analogiche con driver dahdi, e` possibile provare a usare un tool per configurare il cancellatore dell' eco (software).
* Fermare Asterisk
* Collegare le linee analogiche alle porte analogiche, perche` la cancellazione dell'eco sara` calibrata sulla base della linea collegata
* eseguire ''fxotune -i -n 4 -b 1 -e 1 -p -vvv'' (sostituire -b1 e -e1 con il numero del primo e dell'ultimo canale da testare)
* verificare che sia stato scritto /etc/fxotune.conf dalla precedente esecuzione
* Ricaricare il driver dahdi per rendere attivi i settaggi salvati in fxotune.conf
* Riavviare asterisk
* verificare che l'eco e` scomparso. (spero)