Configuració de la tarjeta X100P amb asterisk

Ja tinc aquí la X100P que vaig demanar fa uns dies. Després de punxar-la al server i perdre el uptime, el procés de configuració és bastant senzill. Instal·lem el paquet zaptel, que compilarà els mòduls per a les targetes Digium i ZapataTelephony. Si utilitzem kernel 2.6 haurem de tenir el sistema amb udev, ja que zaptel no suporta devfs.

x100p

Un cop els mòduls estan compilats, carreguem el mòdul wcfxo, corresponent a la targeta x100p: modprobe wcfxo

Al carregar els mòduls zaptel y wcfxo m’he trobat amb aquest error:

zaptel: Unknown symbol crc_ccitt_table
wcfxo: Unknown symbol zt_receive
wcfxo: Unknown symbol zt_ec_chunk
wcfxo: Unknown symbol zt_transmit
wcfxo: Unknown symbol zt_unregister
wcfxo: Unknown symbol zt_hooksig
wcfxo: Unknown symbol zt_register
wcfxo: Unknown symbol zt_alarm_notify

He trobat la sol·lució aquí, es tractava només de compilar el kernel amb CONFIG _ CRC _ CCITT=m, llavors al fer el modprobe wcfxo ha detectat correctament la targeta:

Zapata Telephony Interface Registered on major 196
ACPI: PCI interrupt 0000:00:06.0[A] -> GSI 17 (level, low) -> IRQ 17
wcfxo: DAA mode is 'FCC'
Found a Wildcard FXO: Generic Clone

Després he hagut de recompilar el asterisk amb suport de zaptel, per tenir el mòdul chan_zap.so dins de /usr/lib/asterisk/modules, ja que quan vaig instal·lar asterisk no li vaig donar suport.

Configuració de /etc/zaptel.conf:

# define spain tone zone
loadzone = es
defaultzone=es
# Use Kewlstart FXS signalling for the Wildcard X100P
fxsks=1

Veiem que vol dir el paràmetre fxsks=1: (font voip-info)

fxsks=1: is actually 3 parameters specified in one chunk. Let’s break the chunk down first, to make the parts easier to understand. The fist part in this chunk is “fxs”, which means use FXS signalling for this interface card so it can communicate with the public telephone network. The next part in this chunk is “ks”, which means use kewlstart signalling to determine whether a channel is open or closed (analogous to a telephone handset being off-hook or on-hood, respectively). The next part in this chunk is “=1″ which means this interface card will be identified as channel 1 in other configuration files; especially in extensions.conf (also known as the “Dialplan”). For example, this card will be referenced as Zap/1 in extensions.conf.

Finalment, configurem asterisk per a que reconegui la nova interface Zap/1, corresponent a la línia telefònica.

Configuració de /etc/asterisk/zapata.conf:

signalling=fxs_ks
language=en
context=usuaris
;callprogress=yes       ; try to detect disconnect supervision
busydetect=yes          ; try to detect disconnect supervision
busycount=6
immediate=no
channel => 1

Amb la x100p m’he trobat també amb el problema de que no detecta el hangup per que el meu proveïdor de línia telefònica (auna) no ofereix disconnect supervision, un senyal de 48 volts de notificació de fi de trucada. He intentat sol·lucionar-ho jugant amb els paràmetres callprogress, busydetect i busycount però sembla que encara no acaba de funcionar del tot bé. Una sol·lució que encara tinc que provar és el Absolute timeout, per a establir el temps màxim de trucada.

Un cop hem arribat aquí, configurarem les extensions al arxiu extensions.conf, primer una extensió per a fer trucades a través de la línia telefònica:

[menta]
exten => _155.,1,Dial(Zap/1/${EXTEN:3},60,r)
exten => _155.,2,Hangup

D’aquesta manera quan vulguem trucar a un fix nacional per exemple, podem marcar 155 i el número de telèfon fix per a fer la trucada amb la línia telefònica fixa. Evidentment haurem de donar permís a les extensions que vulguem que puguin utilitzar el context menta que acabem de crear. Per exemple si volem que els usuaris del context pofhq pugin utilitzar la línia de telèfon afegirem al final del context pofhq la següent línia:

include => menta

A continuació, farem que quan algú truqui al nostre número de telèfon fix, si no despenjem el telèfon prèviament li atengui la trucada asterisk. Si el callerid no és conegut, només permetem que puguin trucar a les extensions internes (o deixar-los un missatge al contestador si estan ocupades o no hi son). En canvi, si el callerID és el meu número de mòbil haig de poder fer trucades amb voipjet. Com el callerID és molt fàcil de spoofejar també posarem protecció sol·licitant un password amb DISA. La configuració per fer això al context per defecte de extensions.conf es la següent:

; esperem 1 segon abans de contestar
exten => s,1,Wait,1                     ; Wait 1 seconds
	
; si el callerID és 666666666
exten => s/666666666,2,Answer           ; contesta
exten => s/666666666,3,DigitTimeout(5)  ; set digit timeout 5 sec
exten => s/666666666,4,ResponseTimeout(10)      ; response timeout 10 sec
exten => s/666666666,5,Authenticate(1234)       ; password (canviar-lo pel que es vulgui usar)
exten => s/666666666,6,DISA(no-password|pofhq)  ; si el password es correcte transfereix al contexte
	
; si el callerid es qualsevol altre, enviem al context usuaris que només permet fer trucades a extensions internes
exten => #,1,Answer             ; contesta
exten => #,2,DigitTimeout(5)    ; set digit timeout 5 sec
exten => #,3,ResponseTimeout(10)        ; response timeout 10 sec
exten => #,4,Playback(pof-calabria)     ; Let them know what's going on
exten => #,5,DISA(no-password|usuaris)  ; transfereix al contexte sense demanar paswd
	
; després del timeout quan no coincideix el callerid, enviem a #,1
exten => t,1,Goto(#,1)
exten => i,1,Playback(invalid)          ; \"That's not valid, try again\"

Si us fixeu, després de contestar la trucada abans de donar to, faig un Playback del fitxer pof-calabria, aquest fitxer és un fitxer gravat en format GSM que dona la benvinguda i informa a la persona que truca de quins números d’extensió pot marcar. Per crear aquest fitxer, gravem un wav i el convertim a gsm amb sox, i després el copiem a /var/lib/asterisk/sounds/:

# sox inputfile.wav -r 8000 -c 1 outputfile.gsm resample -ql
# cp outputfile.gsm /var/lib/asterisk/sounds/

I això és tot… ara puc trucar a estats units des-de el mòbil trucant-me al telèfon fixe de casa, i fer sortir la trucada a través d’internet amb voipjet… pagant la tarifa del mòbil al fixe + 1 cèntim el minut de voipjet, o deixar-li un missatge al meu company de pis a la bústia de veu del asterisk trucant al fixe de casa, i que rebi el missatge al instant per correu electrònic. Interessant, no? :)

This entry was posted in gadgets, linux, voip. Bookmark the permalink.

5 Responses to Configuració de la tarjeta X100P amb asterisk

  1. sergi says:

    Ei Mussol!!!
    M’ha anat més que de conya aquest post mussol!!! “Bufar i fer ampolles” ….
    “Faves contades” que diria en Sardà…..
    Podia trigar mil anys a trobar el CONFIG_CRC_CCITT=y !!!!!
    Ja em deixaràs que et convidi a un Kebab almenys…

    La tarja Digium TDM400P ja esta configurada també…. com un cristal!!!

    Ja em vaig enterant “de veritat” del tema dels mòduls…. no hi ha res com remenar-ho una estoneta i que la màquina no reboti!!!….

    s0gentoo linux #
    s0gentoo linux # dmesg
    …..
    Zapata Telephony Interface Registered on major 196
    ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 10
    PCI: setting IRQ 10 as level-triggered
    ACPI: PCI interrupt 0000:00:08.0[A] -> GSI 10 (level, low) -> IRQ 10
    Freshmaker version: 71
    Freshmaker passed register test
    Module 0: Installed — AUTO FXS/DPO
    Module 1: Installed — AUTO FXS/DPO
    Module 2: Not installed
    Module 3: Not installed
    Found a Wildcard TDM: Wildcard TDM400P REV E/F (4 modules)
    ACPI: PCI interrupt 0000:00:0b.0[A] -> GSI 11 (level, low) -> IRQ 11
    wcfxo: DAA mode is ‘FCC’
    Found a Wildcard FXO: Wildcard X101P
    …..
    s0gentoo linux #
    s0gentoo linux #

  2. permeten fer trucades nacionals gratis a números fixes. Què necessitem? Un asterisk Una targeta FXO Una línia de telèfon convencional amb tarifa pla […]

  3. rroca says:

    sobre el tema del hangup, ho tens solucionat? Has provat això?
    http://ipvox.org/ca/node/2299
    A mi m’ha funcionat amb una TDM de digium.

  4. pof says:

    Ostres Ramón, moltes gràcies!… donçs no ho sabia! No ho tinc sol·lucionat, em passa exactament el mateix que dius en el teu post… a veure si funciona amb la línea de Menta que tenim a casa, que és una mica rara. Ja et comentaré quan tingui un forat per provar-ho :)

  5. esteve says:

    No m’anava i era perque faltava crear el dev,
    al fitxer:
    /etc/conf.d/zaptel

    posar:
    ZAP _ FORCE _ CREATE=”yes”

    Ah i la comanda ztcfg mostra:
    asterisk # ztcfg -tvvv

    Zaptel Configuration

    Channel map:

    Channel 01: FXS Kewlstart (Default) (Slaves: 01)

    1 channels configured.

    merci nano!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>