Chiamare un numero col modem

Salve a tutti.
Vorrei effettuare una chiamata ad un numero telefonico col mio modem.
Utilizzo un cellulare nokia 6230 che viene visto come modem /dev/ttyACM0.

Ho provato a seguire alcune guide che spiegano come utilizzare minicom.Con Minicom in effetti, dopo averlo settato in modo che utilizzi il giusto dispositivo (/dev/tty/ACM0), funziona. In pratica basta dare nel suo terminale il comando atdt5, per esempio e tenterà di chiamare il numero “5”. Poi la chiamata non va abuon fine, nel senso che non risponde nessuno e dopo alcuni secondi il tentativo termina ed il messaggio che ricevo sul terminale di minicom è “NO CARRIER”, ma questo non importa, non devo effettuare una chiamata “completa”.
L’importante è che al tentativo di chiamata il telefono “reagisca”, cioè in pratica si illumini il display e compaia il messa
ggio di chiamata in corso.

Volendo automatizzare questa operazione, non posso utilizzare il buon minicom, allora vorrei servirmi di qualche script tipo
chat per fare questo.
In rete, nonostante numerose ricerche, non ho trovato nulla in merito: si parla di pppd e di come instaurare una connessione
internet attraverso script vari, ma non si parla di script per eseguire l’operazione che serve a me…
Per la connessione anch’io ho provato alcuni script “send/expect” abbinati a chat e pppd e funzionano bene.
Utilizzo anche wvdial, ma vorrei cavarmela con scrpits fatti a mano…
A proposito di wvdial, lui riesce ad eseguire l’operazione di cui parlavo sopra: mi è bastato modificare il numero di telefono da chiamare e voilà, dando wvdial il display s’accende e il telefono tenta la chiamata.

Se potete darmi qualche dritta…

Grazie in anticipo. A presto :stuck_out_tongue:

Dunque, posso confermare che ho fatto diverse prove e seguito diversi consigli.
Ho provato con minicom ed effettivamente funziona, riesco ad effettuare un tentativo di chiamata, il display si illumina. compare il messaggio di chiamata in corso ed infine termina dopo alcuni secondi emettendo un segnale sonoro, e dal terminale di minicom si legge “NO CARRIER”.

Il problema è che mi servirebbe qualcosa di meno interattivo, per poi infilare tutto in uno script.
Pertanto dopo ricerche e consigli vari sono riuscito a utilizzare un semplice echo di comandi modem “AT” rediretto al device in uso.

echo "ATZ\r" > /dev/ttyACM0
echo "ATDT5\r" > /dev/ttyACM0

Col secondo comando il cellulare s’è acceso e ha tentato la chiamata. A dire il vero ho riprovato di nuovo più tardi e non ha funzionato, comunque è già un buon inizio…
Il problema principale di questa tecnica è che non sputa fuori nessun output, dove potrebbe essere leggibile?

Continuo questo monologo per aggiungere informazioni sui risultati ottenuti.
Il mio obiettivo sarebbe quello di comunicare col modem inviandogli un certo comando, ricevere la risposta e a seconda dei casi inviare un ulteriore comando.
In pratica dovrei buttare giù un piccolo script, anche se a dire il vero per ora non sono in grado di dire di preciso quali sono i comandi che dovrebbe mandare e le risposte che dovrebbe aspettarsi…
Perciò sto sulgenerico: come comunicare col modem?
Non mi sto chiedendo come conntetermi ad internet con i solti script chat e pppd, la mia è una domanda più generica.
Probabilmente pensere: “puoi comunicare col modem con minicom” egiustamete infatti minicom funziona benone, ma a me serve qualcosa di noninterattivo.
Ho pensato di utilizzare uno script send/expect da dare in pasto a chat… ma come fare ad indicare a chat che deve spedire e ricevere i dati al modem?
Dopo tanto cercare in rete ho risoltoa metà il problema:

consideriamo il seguente script (script-chat)

TIMEOUT 20
''      ATZ\r
''      ATD5\r

In pratica invia ATZ, non aspetta nulla, invia ATD5 (chiama il 5).
Il problema era: come dire a chat di eseguire lo script usanndo come target il modem?
Se avete idee fatevi avanti!! :wink:

Io ho risolto parzialmente così:

# chat -v -f /percorso/script-chat <&2> /dev/ttyACM0

cosa succede?

i comandi vengono inviati e il 5 viene chiamato.

Dove sta il problema? il problema è che lo script sopra fnziona perché in realtà è “a senso unico” cioè chat invia solamente comandi senza aspettare nulla.
Se modificassi lo script così:

TIMEOUT 20
''      ATZ
OK      ATD5

allora chat invierebbe ATZ, ma po starebbe lì ad attendere OK senza ricevere nulla e andrebbe in timeout.
Le cause potrebbero essere 2:

1- il modem non risponde OK, ma ERROR oppure NO CARRIER o altro…
2- il modem risponde OK, ma chat non intercetta la risposta (problemi di redirezione)

Ho eseguito il comando citato sopra con il secondo script e tenendo sottocchio il /var/log/messages:

si vedono i comandi AT inviati, ma non quelli ricevuti: se anche il problema fosse il numero 1, cioè la risposta del modem fosse per esempio “NO CARRIER”, lo script andrebbe in timeout, ma dal file di log dovrei vedere la risposta “NO CARRIER” non vi pare?
Dico questo perché quando mi connetto con pppd e uno script di chat, vedo le rispsote del modem (gli OK…)…

Ho paura che si tratti della seconda causa (problemi di redirezione)…
Sperando che possiate aiutarmi, vi saluto e ringrazio chiunque abbia letto il messaggio :stuck_out_tongue:

Forse ho risolto:

basta dare in una cosole:

cat /dev/ttyACM0

E la conole in questione diventa un termrinale tipo quello di minicom, dove si vedono le stringhe di send e le relative risposte del modem.
In una seconda console si può dialogare col modem direttamente con:

echo “ATZ\r” > /dev/ttyACM0

e si vede l’output sulla prima console.
Funziona anche con uno script send expect dato in pasto allo zio chat… :wink:

per esempio con il seguente script di chat (script.chat) riesco a chiamare il numero 5 e risponde anche, cioè se chiamassi un numero reale lo farei proprio squillare!! è merito del “;” dopo il numero…

TIMEOUT 10
‘’ ATZ\r
OK ATD5;\r

e quindi:

chat -v -f script.chat

Funziona perché il cat in qualche modo tiene il device /dev/ttyACM0 agganciato all’input/output, tanto per capirci.

Per leggere l’output, cioè le risposte del modem, dovrebbe funzionare con la redirezione di del comando cat su un file tipo “risposte.modem”

cat /dev/ttyACM0 > risposte.modem

Da lì possono essere lette magari da uno script che poi potrebbe eseguire altre operazioni a seconda della rispsta ricevuta dal modem…spero di essermi spiegato.
Devo provare ancora in pratica, ma dovrebbe funzionare.
Saluti

[quote=ccccc]

Devo provare ancora in pratica, ma dovrebbe funzionare.
Saluti[/quote]

Tanto per solidarietà mi intrometto per dirti che la tua “odissea” mi incuriosisce e che spero che questa soluzione sia definitiva per i tuoi “misteriosi problemi” di caduta della linea via gprs (o umts che sia).

In bocca al lupo!

Grazie della solidarietà :smiley:

Non sono ancora in gradodi confermare nulla perché al di là di tutto occorre fare un po’ di testing per provare l’efficacia dello script completo.

Per ora mi accontento dei risultati ottenuti…
Diciamo che dà una certa soddisfazione sentire la signorina che risponde riferendo il credito residuo e dopo uno “sleep 20” schiaffarle la cornetta in faccia. :wink:
Se non si trattasse di un messaggio preregistrato il mio script sarebbe proprio sgarbato… :smiley:

Comunque oltre questa manovra ho notato anche che disattivando e riattivando i moduli cdc_acm e ohci_hcd, si imprime un ulteriore Shock al cellulare bloccato:
purtroppo questa operazione non l’ho potuta attuare su Fedora perché avevo compilato io il kernel e avevo messo quelle due voci come built-in…poco male, se il testing che sto eseguendo sulla slack mi daràesito positivo, maetterò mano al kernel su fedora (anzi, magari già che ci sono passerò dalla attuale 4 alla 7 che dovrebbe uscire tra poco penso…).

Per quanto riguarda le disconnessioni o i blocchi in linea, non sono poi molto misteriosi:
leggendo sui forum qua e la ho scoperto che è un problema assai diffuso…purtroppo da nessuna parte ho letto di una soluzione reale al problema.
Penso che quasi sicuramente sia un problema di Tim: seconodo me la loro rete è sottodimensionata di brutto. Lo conferma il fatto che il problema si manifesta la sera quando, guarda caso, tutti sono connessi e sfruttano i 9 GB di traffico disponibile nella fascia prepagata.
Se poi ci si chiede a chi Tim paghi la Banda sottodimensionata e ci si risponde TI, allora i nodi vengono al pettine… :-x

Saluti.