Si vuole utilizzare Asterisk per connettere alcuni telefoni IP con una linea telefonica analogica. La scheda Sangoma è equipaggiata con un modulo FXO che fornisce due porte analogiche da collegarsi ad altrettante linee telefoniche
Pacchetti Debian Squeeze installati:
I pacchetti module-assistant e linux-headers servono per la compilazione dei moduli kernel dahdi.
È possibile eseguire la compilazione come utente non privilegiato, ridirigendo tutto nella directory corrente:
module-assistant --userdir . --text-mode build dahdi
Quindi, da root, si installa il pacchetto .deb risultante:
dpkg -i dahdi-modules-2.6.32-5-amd64_2.3.0.1+dfsg-1+2.6.32-23_amd64.deb
Dovrebbe essere possibile creare il pacchetto .deb anche con make-kpkg, ma senza l'intera directory dei sorgenti kernel si sono verificati degli errori simili a quelli riportati in questo bug report. L'errore è stato: No rule to make target `scripts/basic/Makefile'.
I moduli kernel da caricare sono:
modprobe dahdi
Con dmesg si vede la risposta del kernel:
[ 8435.018799] dahdi: Telephony Interface Registered on major 196 [ 8435.018803] dahdi: Version: 2.3.0.1
Dopo aver caricato il modulo compaiono dei nuovi device:
# ls -l /dev/dahdi/ crw-rw---- 1 root dialout 196, 254 Sep 30 15:58 channel crw-rw---- 1 root dialout 196, 0 Sep 30 15:58 ctl crw-rw---- 1 root dialout 196, 255 Sep 30 15:58 pseudo crw-rw---- 1 root dialout 196, 253 Sep 30 15:58 timer
Il comando dahdi_hardware conferma che l'hardware è stato riconosciuto:
# dahdi_hardware pci:0000:03:04.0 wanpipe- 1923:0040 Sangoma Technologies Corp. A200/Remora FXO/FXS Analog AFT card
Serve davvero per la scheda A200?
Per compilare dai sorgenti servono alcuni pacchetti di sviluppo:
La procedura di setup ha bisogno dei privilegi di root perché va a scrivere in diversi posti:
/usr/include/wanpipe//lib/modules/2.6.32-5-amd64/build/wanpipe/lib/modules/2.6.32-5-amd64/kernel/net/wanrouter//lib/modules/2.6.32-5-amd64/kernel/drivers/net/wan/Durante il setup viene chiesto quale Compilation Mode si preferisce:
2. TDM Voice (Dahdi/Zaptel) Support
Protocols: TDMV (Dahid/Zaptel), TDM API on AFT adatpers.
Default for: Asterisk & CallWeaver
La directory con i sorgenti zaptel (il più moderno dahdi nel nostro caso):
/usr/local/src/dahdi/usr_src/modules/dahdi
| Canale | Percorso attraverso il quale instradare delle chiamate, può essere ad esempio FXO (linea telefonica), FXS (apparecchio telefonico), SIP (voce su IP, standard usato da molti device), IAX (voce su IP, standard proposto da Asterisk). |
|---|
NOTA1: Debian include il modulo kernel per la cancellazione echo OSLEC, oltre al predefinito MG2. Di conseguenza i vari tool sono stati patchati per utilizzarlo.
NOTA2: La documentazione spesso fa riferimento al modulo ztdummy o al più moderno dahdi_dummy. Debian ha applicato una patch accettata upstream per cui il modulo non è più necessario e viene usato in timing interno.
File di configurazione, da editare manualmente o creare con gli appositi tool.
| /etc/dahdi/modules | Elnco dei moduli kernel da caricare al boot. |
|---|---|
| /etc/dahdi/system.conf | File per la configurazione dell'hardware, letto da dahdi_cfg. |
| /etc/dahdi/init.conf | Modifica il comportamento di default di /etc/init.d/dahdi. |
Editare il file /etc/dahdi/genconf_parameters in modo che il tool dahdi_genconf sappia cosa fare. Ecco un esempio:
# Set tone zone values. This is used for playing tones (busy, # dial-tone and such). The default is us. This sets the value # for both loadzone and defaultzone in system.conf. lc_country it
dahdi_genconf system
produce il file /etc/dahdi/system.conf
dahdi_genconf chandahdi
produce il file /etc/asterisk/dahdi-channels.conf
Per configurare una porta FXO (da connettere alla linea telefonica) bisogna attivare su di essa la segnalazione (signaling) FXS.
Con una configurazione di Dahdi sbagliata Asterisk può non partire proprio. Ecco cosa succede lanciando il programma in modo interattivo:
# asterisk -cvvvvv ... == Registered application 'DAHDIBarge' app_dahdibarge.so => (Barge in on DAHDI channel application) Segmentation fault
Se invece il programma si avvia, è possibile uscire dalla linea di comando con:
*CLI> core stop now