Installazione chiavino USB 3G mod. Huawei E169 come gateway
by user
Comments
Transcript
Installazione chiavino USB 3G mod. Huawei E169 come gateway
Installazione chiavino USB 3G mod. Huawei E169 come gateway GSM per Asterisk. Creato da P.M. Lovisolo – Sistemista attualmente discoccupato in cerca di lavoro :( mail: [email protected] Dopo aver installato Asterisk e FreePBX, come descritto nella mia prima guida: http://www.lovisolo.com/asterisk/software/GUIDE-HOWTO/asterisk.pdf , ecco come collegare un chiavino USB 3G modello Huawei E169 al centralino e utilizzarlo come gateway GSM, ovvero chiamare e riceve tramite rete cellulare (con SIM). Rispetto al canale bluetooth con Chan_mobile, questo canale e' decisamente piu' stabile e affidabile, l'unico neo e' la non perfetta gestione dei toni DTMF quando vengono inviati tramite cellulare. Se avete gia' installato Chan mobile, disabilitatelo perche' puo' andare in conflitto con Chan_dongle. Preparazione del chiavino per l'utilizzo con il centralino Dpo aver inserito il chiavino con la SIM in una presa USB2, occorre installare il teminale minicom: sudo apt-get install minicom poi lanciare minicom per la sua configurazione: sudo minicom -s selezionare "serial port setup" selezionare "A" inserire: ttyUSB1 e dare invio premere il tasto “Esc” per uscire e poi selezionare "save setup as dfl" poi selezionare "exit" deve apparire quanto segue: Welcome to minicom 2.4 OPTIONS: I18n Compiled on Jan 25 2010, 06:49:09. Port /dev/ttyUSB1 Press CTRL-A Z for help on special keys AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0 OK nota: la porta ttyUSBx puo' variare in base al modello di chiavino Huawei, per il modello E169 "vergine" della Wind e' ttyUSB1, la porta si verifica con il comando "dmesg", ecco un esempio del relativo output: ... [ 1249.225411] usb 5-1: GSM modem (1-port) converter now attached to ttyUSB0 [ 1249.227199] option 5-1:1.1: GSM modem (1-port) converter detected [ 1249.227281] usb 5-1: GSM modem (1-port) converter now attached to ttyUSB1 [ 1249.229221] option 5-1:1.2: GSM modem (1-port) converter detected [ 1249.229317] usb 5-1: GSM modem (1-port) converter now attached to ttyUSB2 Comando da mettere in minicom per disabilitare il CD-ROM virtuale del chiavino: AT^U2DIAG=0 Comando per la verifica della funzionalita' voce: AT^CVOICE=? se appare ^CVOICE=(0) la funzionalita' voce e' gia' attiva e siamo a posto, se invece appare ^CVOICE=(1) la funzionalita' e' disattiva e va abilitata con il comando seguente: comando per abilitarla: AT^CVOICE=0 NOTA BENE: se il chiavino fosse bloccato dall'operatore che lo ha venduto, occorre prima sbloccarlo cambiando il firmware (cercare con google le istruzioni), questa operazione e' fattibile ovviamente solo se il chiavino e' di vostra proprieta' e comunque invalida la garanzia! I chiavini non brandizzati, quelli della TIM e della Wind non dovrebbero essere bloccati. Installare Chan_dongle sul centralino Innanzitutto diamo i permessi di utilizzo del chiavino per l'utente Asterisk creando un nuovo file: sudo nano /etc/udev/rules.d/92-dongle.rules inseriamo al suo interno le seguenti righe: KERNEL=="ttyUSB*", MODE="0666", OWNER="asterisk", GROUP="asterisk" Salviamo e chiudiamo con “Ctrl +X” poi installiamo le dipendenze necessarie per Chan_dongle: sudo apt-get install linux-headers-`uname -r` gcc g++ make libnewt-dev libncurses5-dev openssl libssl-dev zlib1g-dev scarichiamo i sorgenti di Chan_dongle e li installiamo: wget http://www.lovisolo.com/asterisk/software/pacchetti/chan_dongle-1.1.r14.tgz tar -zxvf chan_dongle-1.1.r14.tgz cd chan_dongle-1.1.r14 ./configure --disable-debug --enable-apps --enable-manager make sudo make install poi copiamo il file di configurazione “dongle.conf” , che si trova in chan_dongle-1.1.r14/dongleread-only/etc/ , nella directory /etc/asterisk Editiamo quindi il file “dongle.conf” e modifichiamo le seguenti righe: sudo nano /etc/asterisk/dongle.conf context=from-pstn group=1 autodeletesms=yes disablesms=no language=it exten=qui_mettete_il numero_di_telefono_della_SIM(+39...) dtmf=off Salviamo e chiudiamo con “Ctrl +x” poi diamo i giusti permessi al file con il comando: sudo chown asterisk:asterisk /etc/asterisk/dongle.conf quindi configuriamo Asterisk per caricare automaticamente all'avvio il modulo Chan_dongle: sudo nano /etc/asterisk/modules.conf e inseriamo alla fine del file la seguente riga: load => chan_dongle.so Salviamo e chiudiamo con “Ctrl +x” poi riavviamo il centralino. Per verificare che il canale Dongle sia effettivamente funzionante, date il comando: sudo asterisk -r per entrare nella CLI di Asterisk e quindi il comando: dongle show devices deve apparire qualcosa di simile: *CLI> dongle show devices ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number dongle0 1 Free 20 0 0 Telecom Italia E169 11.314.17.06.192 358109025xxxx 2220196031xxxxx 33497xxxxx Nota: la SIM del vostro operatore deve essere gia' inserita nel chiavino! Per avere maggiori informazioni sul chiavino e sullo stato del canale, dalla CLI di Asterisk digitare: dongle show device state dongle0 Configurazioni finali e consigli Innanzitutto ricordatevi che il chiavino deve essere sempre collegato ad una presa USB2 dato che assorbe circa 500 mA di corrente, consiglio comunque di collegarlo al centralino utilizzando un HUB USB con proprio alimentatore da almeno 1 A. Disabilitazione della sospensione delle prese USB nota: la disabilitazione di questa funzione di risparmio energetico e' importante perche' altrimenti il chiavino si blocca quando il sistema va in modalita' low power. Create un file con nome “usb-level” nella directory /root sudo nano /root/usb-level dentro inseriamo le seguenti righe: for foo in /sys/bus/usb/devices/*/power/level; do echo on > $foo; done Salviamo e chiudiamo con “Ctrl +x” e poi diamo i permessi di esecuzione al file: sudo chmod 777 /root/usb-level Configuriamo l'avvio di questo comando in automatico quando il centralino viene avviato: sudo nano /etc/rc.local prima della linea "exit 0" inseriamo la seguente riga: /bin/sh /root/usb-level e poi, dopo aver salvato il file con ctrl+x, gli dai permessi di esecuzione con il comando: sudo chmod 755 /etc/rc.local Blocco in 3G del canale GSM Onde evitare che il canale GSM oscilli dal 2G al 3G con possibilita' di blocco del funzionamento del chiavino, oppure perche avete una Sim della Tre e non volete che vada in roaming su TIM, ecco il comando da dare per bloccare in 3G il canale: entrate nella CLI di Asterisk con il comando sudo asterisk -r poi date il comando seguente dalla CLI: dongle cmd dongle0 AT^SYSCFG=14,2,3FFFFFFF,2,4 se invece volete bloccarlo in 2G, questo e' il comando: dongle cmd dongle0 AT^SYSCFG=13,1,3FFFFFFF,2,4 altro comando utile (sempre dalla CLI di Asterisk) e' il seguente: dongle cmd dongle0 AT+CCWA=0,0,1 e serve per disabilitare il “call-waiting”, se invece vi trovate con il messaggio che la memoria SMS della dongle e' piena ecco i comandi per risolvere: dongle cmd name_dongle AT+CPMS=\"SM\",\"SM\",\"SM\" dongle cmd name_dongle AT+CMGD=1,4 serve per svuotare gli SMS nella sim memory dongle cmd name_dongle AT+CPMS=\"ME\",\"ME\",\"ME\" dongle cmd name_dongle AT+CMGD=1,4 server per svuotare gli SMS nella dongle memory. Configurazione di FreePBX con il canale Dongle in “Impostazioni” > “Fasci” selezionare “Aggiungi Fascio Personalizzato” mettendo i seguenti dati: Nome Fascio: dongle Numero Massimo di Canali: 1 Stringa di Chiamata Personalizzata: dongle/dongle0/$OUTNUM$ salvare e poi applicare le modifiche cliccando sulla barra arancione in alto. In “Rotte in Uscita” creare una nuova rotta con nome dongle e dopo aver selezionato i “dial patterns” necessari per questa rotta (ad esempio 3. per le chiamate a numeri cellulari), selezionare come Trunk Sequence for Matched Routes” che c'e' in fondo alla pagina, il canale “dongle” Inviare un SMS con il caller ID del chiamante (da mettere in /etc/asterisk/extensions_custom.conf): [from-internal-custom] exten => 91,1,Answer exten => 91,2,DongleSendSMS(dongle0, +39numerocellulare ,chiamata ricevuta il:$ {STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - dal numero:${CALLERID(num)}) exten => 91,3,Hangup Quando arriva un SMS sul dongle0, asterisk lo legge (numero mittente e testo) e lo inoltra tramite mail all'indirizzo specificato : [from-pstn] exten => sms,1,Noop(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE($ {SMS_BASE64})}) exten => sms,2,System(echo 'From: ${CALLERID(num)} <>\nTo: <[email protected]>\nSubject:Ricevuto SMS\nRicevuto da: ${CALLERID(num)}\n$ {BASE64_DECODE(${SMS_BASE64})})' >> /var/log/asterisk/sms.txt) exten => ussd,3,System(sendmail -t -f [email protected] < /var/log/asterisk/sms.txt) exten => sms,4,Wait(3) exten => sms,5,System(rm -f /var/log/asterisk/sms.txt;) exten => sms,6,Hangup() invece per ricevere gli USSD ed inoltrarli sempre tramite email ecco l'estensione da creare: [from-pstn] exten => ussd,1,Verbose(Arrivato USSD: ${BASE64_DECODE(${USSD_BASE64})}) exten => ussd,2,System(echo 'From: ${CALLERID(num)} <[email protected]>\nTo: <[email protected]>\nSubject:Ricevuto USSD\nRicevuto il: ${STRFTIME(${EPOCH},,%Y%m-%d %H:%M:%S)} - ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}' >> /var/log/asterisk/ussd.txt) exten => ussd,3,System(sendmail -t -f [email protected] < /var/log/asterisk/ussd.txt) exten => ussd,4,Wait(3) exten => ussd,5,System(rm -f /var/log/asterisk/ussd.txt;) exten => ussd,6,Hangup() Patch per Chan_Dongle per impossibilita' di ricevere SMS con mittente alfanumerico Quando il mittente di un SMS non e' in formato numerico puro e contiene del testo, chan_dongle genera un errore simile a questo: [dongle0] Error parsing incoming message '+CMGR: 0,,135 e il SMS non viene ricevuto. Ad esempio gli SMS inviati dal sito Postepay hanno come mittente: "PosteInfo" e non vengono ricevuti. Per risolvere il problema ecco come fare: andare nella directory in cui abbiamo scompattato i sorgenti di chan dongle: su - root cd /root/chan_dongle-1.1.r14 creare una copia del file originario per sicurezza: cp pdu.c pdu.c.bak cancellare il file originario: rm pdu.c Scaricare il file corretto con la patch applicata: wget http://www.lovisolo.com/asterisk/software/pacchetti/chan_dongle_patches/pdu.c poi diamo i seguenti comandi per ricompilare il pacchetto chan_dongle: ./configure --disable-debug --enable-apps --enable-manager make make install e poi riavviamo il server per applicare la modifica appena effettuata: reboot Ho scoperto un altro problema di chan dongle: quando invia o riceve un SMS e se nel messaggio c'e' la chiocciolina @, il messaggio viene troncato e la parte del messaggio dopo la chiocciolina non viene ricevuta/inviata. Altri caratteri che se inseriti nel messaggio SMS possono creare problemi sono: { } [ ] / \ Ecco la patch per risolvere: Entrare nella directory in cui abbiamo scompattato originariamente chan_dongle: su - root cd /root/chan_dongle-1.1.r14 facciamo una copia del file originale per sicurezza: cp char_conv.c char_conv.c.back cancellare il file originario: rm char_conv.c Scaricare il file corretto con la patch applicata: wget http://www.lovisolo.com/asterisk/software/pacchetti/chan_dongle_patches/char_conv.c poi diamo i seguenti comandi per ricompilare il pacchetto chan_dongle: ./configure --disable-debug --enable-apps --enable-manager make make install e poi riavviamo il server per applicare la modifica appena effettuata: reboot NOTA FINALE: in questa guida ho sempre utilizzato sudo prima dei comandi, ovviamente se siete loggati in console come utente root, potete ometterlo. segue su: http://www.lovisolo.com/asterisk/software/GUIDE-HOWTO/configurazione.freepbx.pdf AVVERTENZE Le informazioni qui fornite sono state create per il solo scopo didattico e vengono divulgate nella speranza che siano utili ma senza alcuna garanzia, di alcun tipo, implicita o esplicita, ivi compresa, senza alcuna limitazione, la convenienza, l'utilizzabilità o l'adeguatezza per particolari scopi o usi. L'uso di queste informazioni, l'eventuale realizzazione degli apparati sperimentali fatta sulla base delle informazioni (che sono di tipo meramente indicativo) presenti nei riferimenti elencati in proposito, ed ogni altra attività in qualsiasi modo correlata al software ed alle informazioni presenti nella relativa documentazione e nei predetti riferimenti sono a totale rischio dell'utente. L'autore non risponderà in nessun caso ed a nessun titolo, nei confronti di nessuna persona fisica o giuridica, di alcun danno, di qualsiasi tipo, diretto o indiretto, a persone o cose, compresi quelli incidentali o conseguenti, che possa in qualsiasi modo essere correlato al software ed alle informazioni presenti nella relativa documentazione e nei predetti riferimenti e/o a qualsiasi uso, da parte di chicchessia ed in qualsiasi contesto, del suddetto software e delle suddette informazioni, indipendentemente dal fatto che l'autore possa essere stato avvertito dell'eventualità del prodursi di tali danni. L'uso del software e delle informazioni di cui sopra implica l'accettazione integrale delle presenti AVVERTENZE.