Salve a tutti.

Mi connetto ad internet utilizzando il cellulare come modem.
Si tratta di una connessione EDGE e come operatore ho Tim.
Il cellulare è un Nokia 6230 e lo collego al portatile attraverso il cavetto usb "DKU-2".

Le connessioni Edge sono famose per soffrire instabilità, a parte altri problemi di banda (poca)

e tempi di latenza elevati (siamo a cica 500 ms, su maya.ngi.it).Utilizzo questa connessione da

anni, ormai e ho notato un comportamento singolare:
casualmente, a volte, la connessione si inchioda, cioè resta come addormentata, senza

disconnettersi, ma non si riesce più a scambiare dati.

La soluzione manuale che adotto di solito è "disconnetti e riconnetti", ma non è sufficiente

perchè la riconnessione non va a buon fine (ora non ricordo il codice d'errore...), il cellulare

resta ancora bloccato e sul display in alto a sinistra vi è ancora la G inscritta in un

quadrato, che indica che il telefono è ancora connesso. Importante notare che la connessione di

rete termina in modo normale, è solo il telefono che resta ancora bloccato.

Nel tempo ho provato diverse "manovre"...in particolare se disconnetto, chiamo un numero

telefonico qualsiasi (io chiamo sempre il 4916 che è il numero delle info della tim...quindi

gratutito), riaggancio, a questo punto se riprovo a connettermi al numero giusto ("*99***1#")

facendo partire la connessione di rete corrispondente, allora si riconnette.

A volte, ma raramente, anche questa operazione fallisce, in tal caso si può staccare il cavetto

dalla porta usb e riattaccarlo. Così facendo, se mi connetto funziona nuovamente. Anche questa

operazione a volte non funge (molto, ma molto raramente...) e quindi non resta altra soluzione

che spegnere e riaccendere il cellulare. L'ultima spiaggia, se continua a non funzionare è

riavviare il computer.

Spero di essermi spiegato.

Ora, il problema è semplice:
capita a volte di lasciare il portatile acceso a scaricare, quando non sono presente:

inparticolare durante la notte e c'è il rischio (quasi sicuro...) che in così tanto tempo (10

ore per esempio), la connessione si inchiodi, semza disconnettersi e senza funzionare. Mi è

capitato spesso di trovare al mattino la connessione in questo stato pietoso.
Siccome il piano tariffario della tim, che ad oggi si chiama "maxi tim web time richarge",

permette di scambiare 9 GB/mese col server durante la fascia oraria 17:00 ----> 9:00, volendo

scaricare qualcosa di grosso è chiaro che la notte và sfruttata tutta (e non posso di certo

stare lì a riconnettere quando va in panne).

Ecco che allora nasce l'esigenza di scrivere un piccolo script in grado di stabilire se la

connessone è inchiodata e di effettuare eventualmente tutta una serie di manovre per sbloccare

il telefono e riconnettersi. Lo script viene utilizzato come operazione oianificata e fatto

girare ogni tot minuti (esempio 5 minuti, 10, come si vuole...)
Già da tempo ho scritto questo script, che effettivamente ha sempre funzionato, permettendomi di

sfruttare tutto il tempo che il piano tariffario mette a disposìzione.

Adesso vorrei migliorarlo in un suo aspetto: veniamo al sodo.

operazioni da svolgere:


1- invia un ping ad un sito
2- se la risposta non è positiva (in pratic trovi "100% persi")
3- disconnetti--> rasdial edge_tim /d
4- chiama il 4916: rasdial edge_tim /phone:4916 (il 4916 non può rispondere ad una chiamata

dati, quindi esce con un, errore...non importa, serve solo per sbloccare i telefono...)
5- riconnetti: rasdial edge_tim


Queste operazioni sono la sequenza ridotta all'osso, per far capire il concetto, nella pratica

lo script effettua qualche operazione in più: ci sono alcuni choce qua e la per attendere lo

sblocco ecc ecc, ma nella sostanza la serie di operazioni è quella.

Va sottolineato ancora un aspetto importante:

quando, appena disconnesso, chiamo il 4916 con rasdial, questa operazione termina subito e il

cell emette un bip strano (come dire "sono ancora bloccato"). Attendendo alcuni secondi, circa

10, 15 (ma è random, dioende di volta in volta) il cell emette un'altro bip (come dire "mi sono

sbloccato"...e in fatti controllando il display si vede connessione dati terminata.). Il fatto

curioso avviene a questo punto:

se ora passassi all'operazione numero 5, benchè il telefono è sbloccato, la connessione non

avverrebbe e se ne uscirebbe con un errore di rasdial.
per evitare questo è necessario chiamare ancora una volta il 4916, ma questa volta il telefono è

sbloccato e termina l'operazione con un errore, ma senza che il cellulare emetta il bip di

prima.
A questo punto si può riconnettere normalmente. Chiarito questo, vi riscrivo le operazioni:


1- invia un ping ad un sito
2- se la risposta non è positiva (in pratic trovi "100% persi")
3- disconnetti--> rasdial edge_tim /d
4- chiama il 4916: rasdial edge_tim /phone:4916 (l'operazione termina istantaneamente con un

errore ed il telefono emette un bip)
5- aspetta che si sblocchi il telefono---> choice /t:Y,10 (si spera che in 10 secondi si sia

sbloccato...non è detto, in tal caso alla prossima operazione il telefono emmette ancora il bip)
6- chiamo il 4916 (se il telefono è sbloccato non emette bip, altrimenti sì e occorrera

aspettare ancora che si sblocchi e quindi richiamare ancora una volta il 4916 ecc ecc....si può

fare con un if...magari gurdando il codice d'errore nei due casi: quando fa bip e quando no...)
7- telefono di nuovo attivo (si spera)-----> riconnetti: rasdial edge_tim


Come potete vedere è tutto abbastanza spartano....ma alla fine efficace. Dove voglio

migliorarlo?

vorrei cambiare qualcosa nell'operazione 6:

Il telefono è sbloccato e richiamo il 4916: è un'operazione lunga ed è inutile portarla a

termine, ho notato, dando i comandi a mano che loperazone 6, si può interrompere con un bel

ctrl+c e tutto funziona ugualmente.
In teoria si potrebbe automatizzare questa operazione di interruzione, demandando l'operazione 6

ad un bat figlio e quindi uccidendo il processo ad esso corrispondente dopo pochi secondi.
Ne ho già discusso in un altro post:

http://forum.html.it/forum/showthrea...readid=1069692

il problema è che così facendo non si riesce più a connettersi, perchè all'operazone 7 dà un

errore dicendo che la connessione è già in uso....boh....
Manualmete si può risolvere solo staccando la presa usb e riattaccandola, ma automaticamente non

saprei.
Se avete idee, precisazioni, domande per chiarire (probabili...), fatemi sapere.

Ringrazio in anticipo risposte ed interventi. A risentirci.