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)