Newsgroup: it.comp.os.linux.iniziare
Titolo: Script comunicazione modem cellulare

Salve a tutti.
Vorrei mettere mano ad uno script per comunicare col modem in modo da
fargli chiamare un numero "a piacere" e più in generale di adattare
alle mie esigenze il comportamento del modem stesso.
Il modem in questione in realtà è interno al mio cellulare (nokia 6230).
Vorrei chiedervi se poteste consigliarmi una buona documentazione in
grado di chiarirmi le idee sull'argomento, una di quelle che snocciolano
la questione dalla base. Possibilmente qualcosa in italiano, ma al
limite anche in inglese, comprensiva di esempi.
Al di la dell'approfondimento dell'argomento che mi interessa di per se,
il mio più immediato obiettivo è quello di riuscire a chiamare il 4916
(tanto per dire un numero).
Con wvdial riuscivo ad tentare la chiamata e anche se questa non andava
a buon fine, cioè non si stabiliva comunicazione era già sufficente per
i miei scopi. Nel dettaglio il tentativo di chiamata comportava
l'accensione del display del cellulare e altri dettagli, insomma il
device "reagiva" in qualche misura.
Avevo ottenuto quel risultato semplicemente cambiando il numero di
telefono da chiamare nel file di configurazione di wvdial.
Ultimamente ho seguito e riadattato alle mie esigenze una breve guida
che spiegavaa come connettersi editando alcuni file, penso che
tecnicamente si parli di chat script, ma non ne sono sicuro.
Ve li mostro:
________________________________________________
/etc/ppp/chat-gprs:
------------------------------------------------
TIMEOUT         5
ECHO            ON
ABORT           '\nBUSY\r'
ABORT           '\nERROR\r'
ABORT           '\nNO ANSWER\r'
ABORT           '\nNO CARRIER\r'
ABORT           '\nNO DIALTONE\r'
ABORT           '\nRINGING\r\n\r\nRINGING\r'
''              \rAT
TIMEOUT         12
OK              ATZ
OK              'AT+cgdcont=1,"IP","
ibox.tim.it
"'
OK              ATD*99***1#
_________________________________________________
Ed ecco il secondo:
_________________________________________________
/etc/ppp/peers/gprs
-------------------------------------------------
/dev/ttyACM0 460800
connect '/usr/sbin/chat -v -f /etc/ppp/chat-gprs'
noauth
defaultroute
debug
_________________________________________________
Ora per connettermi uso il comando:
pppd call gprs
e per disconnettermi
killall pppd
Ecco, dovrei adattare ualcosa del genere per chiamare
un numero di telefono reale, facciamo pure come esempio
il 4916.
Purtroppo cambiare il numero di chiamata non basta per
far "reagire" il cellulare...
Ringrazio in anticipo chiunque voglia rispondermi. A presto

 Stefano
Grazie mille della risposta. A presto.

 Il modem in questione in realtà è interno al mio cellulare (nokia 6230).
Volevo aggiornare la situazione, riguardo alla possibilità di chiamare
un numero.
1- con minicom sono riuscito:
si dà "minicom -s" poi si sceglie l'opzione di configurazione porta
seriale (per me /dev/ttyACM0) e velocità di comunicazione (57600, ma va
bene anche con altre tipo 460800, 115200....).
poi sono uscito da minicom senza resettare "CTRL-A Q" e quindi l'ho
rilanciato (sh# minicom).
Dal suo terminale ho semplicemente dato ATDT5 e ha rentato la chiamata
al numero 5. dopo un po' la chiamata è terminata con un segnale acustico
(tu-tu-tu).
Funziona, ma non mi serve a gran chè volendo poi utilizzare questa
procedura in uno script.
2- Su consiglio di un amico su un forum, vi comunico la via più breve
per inviare comandi al modem (comandi AT):
# echo "ATcomando\r" > /dev/ttyACM0
dove 'comando' è  un comando valido e /tty/ACM0 è il device in uso.
il carattere "\r" è indispensabile perchè il tutto funzioni, almeno nel
mio caso.
Ci sono ancora dubbi sul fatto che questo comando sia efficace per
eseguire la procedura che ho in mente (non vi sto a spegare tutto per
il momento, non è necessario). Infatti nonostante il display si illumini
ed il messaggio di chiamata in corso appaia, al termine di chiamata non
sento il tu-tu-tu che dicevo prima...
Tuttavia è un buon punto di inizio.
Adesso per capirci qualcosa vorrei ottenere l'output di quanto accade al
modem tipo come avviene con minicom che si è sicuri dell'accettazione di
un comando grazie all'output "OK" che si vede sul terminale...
Non saprei da che parte iniziare visto che da var/log/messages non
ottengo nulla e nemmeno da "tail -f /dev/ttyACM0"...
Vedrò di eseguire le consuete ricerche sperando in un po' più di
fortuna. Nel frattempo se tra voi c'è qualcuno in grado di rispondere si
faccia avanti senza indugio!!  ;-)
A presto e grazie in anticipo.  :-p

Aggiorno la situazione nella speranza di ricevere qualche aiuto.
In rete purtroppo non ho trovato tantissimo e mi sto arrangiando a colpi
di fortuna...
dunque sono riuscito ad uasre chat senza pppd:
ho fatto un semplice script "send/expect"
TIMEOUT         50
ECHO            ON
''              \rAT
''              ATZ\r
''              ATDT5\r
a questo punto riesco ad effettuare il tentativo di chiamata al numero 5
per esempio. colseguente comando.
alias sblocca='chat -v -f chat-script <&2> /dev/ttyACM0'
dove chiaramente chat-script è lo script riportato sopra.
inquesto modo riesco ad inviare i comandi AT, ma non riesco a ricevere
le risposte del modem tipo OK, ERROR etc... perciò per fare unaprova,
come potete vedere ho lasciato "vuoti" i campi expect nello script.
Vi chiederei se poteste spiegarmi come fare a carpire anche i messaggi
di risposta del modem.
Se non sono stato chiaro chiedete senza indugi: in rete non riesco a
trovare una spiegazione per cui mi affido alle vostre risposte sperando
in una soluzione.
Ringrazio in anticipo. A presto!! :-p

 alias sblocca='chat -v -f chat-script <&2> /dev/ttyACM0'
OOps, scusate....
ho fatto copia/icolla .....
niente, il comando giusto č:
chat -v -f chat-script <&2> /dev/ttyACM0
Fatevi avanti ;-)

 le risposte del modem tipo OK, ERROR etc... perciň per fare unaprova,
  Hai provato con chat -s?
  Senno' puoi cercare in quale log ti invia i messaggi e leggere da 
quello. Guarda in /etc/syslog e vedi dove chat ti butta i messaggi. 
Credo che tu debba cercare qualcosa come *.=info;*.=notice;*.=warn. 
:-o
  Spero di esser stato utile. :-)
  Saluti,
-- 
Gianfranco Bertozzi
http://www.locandamilu.it
Linux User #183585

  Saluti,
Grazie ancora e arrisentirci! :-)

 modem (adesso ho un Nokia 9500). :-o
  Puo' darsi che sia il nokia? Guarda un po' qui:
http://tinyurl.com/37vp9n
  e' un post mio di 2 anni fa. Avevo problemi simili al tuo ma con un 
altro cellulare si risolveva. :-o
  Hai provato a cambiare il telefonino? :-o


  Saluti,
Saluti anche a te e grazie per la disponibiltà  :-)
Se hai altre idee fatti pure avanti!!

 
http://tinyurl.com/37vp9n
Dimenticavo, visto che sto ricevendo poche rispsote su questo ng, dici
che sarebbe il caso di provare apostare anche su un'altro, magari piů
attinente?
Eventualmente Sono ben accetti consigli, grazie in anticipo. A presto.

  Hai provato a cambiare il telefonino? :-o
Al di la di tutto, sarebbe una prova interessante, potrei usare il mio


 rete, io adesso sto tentando un'operazione diversa... per i dettagli ho
  Scusami ancora ma delle volte penso che la gente riesca a leggermi
il pensiero... :-o
  Il mio era in effetti un problema di connessione e, come giustamente
hai notato tu, si trattava delle virgolette che non venivano passate
in maniera esatta; usando "chat -f" col suo file risolsi
tranquillamente. Quello che volevo significare con il link era in
sostanza: "che sia un problema di cellulare?" e nient'altro. :-)
  Il tuo problema l'ho capito bene e provando mi succede la tua stessa
cosa: riesco a far fare il numero al cellulare usando minicom o pppd
che chiama chat col suo script, ma NON con il solo chat. Appena mi
torna a casa il siemens s55 (credo sia a far la spesa adesso... ;-p)
provo, poi ti faccio sapere. :-)
  Per il NG, non so dove potresti postare. Forse su icol.software?
  Un saluto svelto,


  Un saluto svelto,
Altrettanto a te! :-)

 tentar non nuoce. Appena riesco, farò una prova col vecchio siemens. 
  Gia' provato io, non starci a perder tempo anche tu: il mio S55 si
comporta esattamente come il Nokia 9500. :-)
  Saluti,


 fare. ;-)
Anche troppo....grazie!
Ma questo ultimo passaggio, mentre utilizzi chat con pppd o liscio?
Se puoi riportare il comando che esegui, anche qui, mi levi qualche
dubbio.  ;-)
Farò alcune prove e ti farò sapere come è andata.
Per tutta la disponibilità ti ringrazio ancora.
se utilizzi la connessione EDGE (ma penso anche che possa essere 
utile per gprs ed umts), probabilemente sarai a conoscenza delle
disconnessoni o blocchi in linea della connessione....
diciamo che questi "esperimenti" sono volti alla limitazione di quegli
intoppi per sfruttare appieno i piani tariffari (penosi..) che abbiamo a
disposizione in Italia.
 A presto!! :-)

 disconnessoni o blocchi in linea della connessione....
  Io uso il GPRS da diversi anni e non credo di aver mai sofferto di
disconnessioni. Comunque uso una flat 24h/24 e quindi me ne son sempre
preoccupato poco. :-)
  Ora pero' son curioso e non ho capito bene: a che ti serve tutta 
'sta pappardella? =8-o


 'sta pappardella? =8-o
Allora, la storia è un po' lunga...
Volendo lasciare il pc a scaricare durante la notte, occorre controllare
la connesione in modo automatico.
L'obiettivo è quello di tenere up la connessione.
Il problema è che di tanto in tanto la connessione si blocca, senza
cadere la linea (è qui il guaio), perchè si blocca?
Perchè il cellulare và in panne a causa del sovraccarico della rete
penso, non è un problema solo mio... fatto sta che il cell resta
bloccato, connesso e non scabia più dati.
soluzione
far girare uno script attraverso cron a cadenza stabilita (ogni 5-10 minuti). 
Cosa deve fare?
1- pinga un sito e stabilisce se la connessione è up. se up non fa
nulla, se down va al punto 2
2- disconnette il cell
3- esegue una serie di operazioni pe sbloccare il telefono
4- riconnette
Ora ti chiederai quali operazioni deve fare per sbloccare.
2.a- chiamare un numero di telefono (scoperto dopo anni di esperienza da
     digitaldiviso...). E richiamarlo fino a che non la smette di dare
     il respsonso "NO CARRIER" (almeno così diceva l'output di wvdial
     che utilizzavo tempo fà...). Quindi l'ultima volta dovrebbe
     riuscire a chiamare il numero e quindi andare in timeout (cosi
     diceva wvdial).
2.b- A questo punto il modem potrebbe essere sbloccato, ma non è
     detto... potrebbe essersi anche instabilizzato dopo tutti i
     tantativi di chiamata eseguiti al punto 2.a.
     In tal caso (scoperto ultimamente...) si prova a disattivare e
     riattivare i moduli del kernel corrispondenti al device (cdc-acm)
     alla porta usb (ohci_hcd). (Potrebbe essere un idea provare a farlo
     anche subito dopo la disconnessione...devo ancora lavorarci un po')
3.c- Sperando in bene si può passare al punto 4. Se il telefono fosse
     ancora bloccato non resterebbe che spegnerlo ed accenderlo, ma in
     automatico non ho proprio idea di come si potrebbe realizzare.
Come puoi vedre il punto 2.a necessità una comunicazione col modem con 
controllo delle risposte e presa di decisioni (sempre in automatico).
E perciò devo trovavre un modo semplice e non interattivo per parlare 
al cellulare ed ascoltarlo. 
 
L'ho fatta lunghissima... ma per spiegare tutto il rpoblema, era
necessario. Spero nella pazenza di chi legge.
Saluti.

 al cellulare ed ascoltarlo. 
  Capito tutto. Io credo che abbiamo trovato la soluzione. Tu che ne 
pensi? :-)


 pensi? :-)
E' presto per dirlo, ma direi che siamo sulla strada giusta, ora devo
mettere insieme le cose buttare giů uno script completo.
La rispsta la avremo solo dopo aver impostato cron in modo da farlo
girare a intervalli prestabiliti e soprattutto facendo qualche prova di
download notturno in "stand alone" (suonds good! ;-D ).
Mi sei staro di grande aiuto, sembra una cosa da poco, ma questo piccolo
script se funziona darebbe un altra faccia alla mia connessione...
Se ti dovesse interessare, quando lo avrň completato eventualemte potrei
postarlo, ma secondo me sei sicuramente all'altezza, forse piů di me di
buttarlo giů da solo...se ti dovesse servire in futuro sai come fare a
sbrogliare la situazione. ;-)
A presto, posterň i risultati.

 Se ti dovesse interessare, quando lo avrò completato eventualemte potrei
  Son contento di esser stato utile. Direi che sicuramente dovresti 
postare lo script, magari puo' servire anche ad altri. :-)
  Un saluto veloce, 
