...

Installazione chiavino USB 3G mod. Huawei E169 come gateway

by user

on
Category: Documents
25

views

Report

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.
Fly UP