Home Tecnica Embedded Socat: quando i dati passano via rete

In evidenza

I riflettori della Fiera del Levante si accendono su SMAU Bari 2012

I riflettori della Fiera del Levante si accendono su SMAU Bari 2012

Dal 15 al 16 febbraio nel Nuovo Padiglione della Fiera del Levante, la quarta edizione di Smau sarà dedicata ...
TecnoWorkshop Lucca2011

TecnoWorkshop Lucca2011

Finalmente, e dopo un po' di peripezie siamo riusciti ad organizzare il primo TecnoWorkshop del nostro...
Società Italiana dei Professionisti delle Scienze dell'Informazione

Società Italiana dei Professionisti delle Scienze dell'Informazione

La Società Italiana dei Professionisti delle Scienze dell'Informazione (acronimo SIPSI) è una associazione...
Testata Giornalistica

Testata Giornalistica

Il portale Professionisti e Consulenti ICT - Italia è ora una testata giornalistica a tutti gli effetti...

Bandi di Concorso

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Concorso pubblico per informatico alla Corte dei Conti

E' indetto un concorso pubblico, per   esami,   per   il reclutamento di tre unità di informatici da inquadrare nella III area, fascia retributiva F1, da destinare agli Uffici della Corte dei Conti con sede in Roma. Requisiti: laurea triennale in scienze e...

05 Feb 2012 - Letture:81

Istruttore informatico L.68/1999 al Comune di Potenza

Concorso pubblico, per esami, per la copertura di n. 2 posti di Istruttore Informatico, categoria C, posizione economica C1, a tempo pieno e indeterminato, con riserva assoluta alle categorie dilavoratori di cui all'art. 1 della legge n. 68/1999 (norme per...

21 Gen 2012 - Letture:86

Senior Business Consultant presso Lombardia Informatica

Selezione per figura Senior Business Consultant presso Lombardia Informatica. Il collaboratore dovrà fornire consulenza strategica e di business sulle tematiche verticali della Socio-Sanità. Requisiti di ammissione: Laurea in Ingegneria, Economia e Commercio o Scienze dell’Informazione; Percorsi di formazione professionale in ambito sanitario e socio-sanitario, su...

11 Gen 2012 - Letture:140

Bando progetto TAG (Toscana Area Giovani) per giovani talenti digitali

UPI Toscana ha indetto un avviso pubblico per la selezione di 20 giovani (2 per ciascuna delle 10 province della Toscana), da impiegare come formatori all'interno del Progetto TAG (Toscana Area Giovani). Il bando è finalizzato a valorizzare al meglio i...

03 Gen 2012 - Letture:147

Avviso pubblico per giovani dottori di ricerca per Uffici di Gabinetto

Avviso pubblico per il conferimento di n. 6 incarichi presso gli Uffici di diretta collaborazione del Ministro dell'istruzione dell'università e della ricerca, per soggetti estranei alla pubblica amministrazione. Ambiti di esperienza e Aree di competenza: Nuovi Media: nuove forma di comunicazione tra...

02 Gen 2012 - Letture:101

Database Administrator in the Information Technology (IT) Department at CERN

E' aperta una posizione nel gruppo di lavoro che fornisce servizi Database e Middleware al CERN, un'organizzazione internazionale che fa fisica delle particelle di stanza a Ginevra, Svizzera. Direttamente dal sito del bando si legge: as Database Administrator in the Database...

12 Dic 2011 - Letture:154

Posto per collaboratore tecnico CROB a Rionero in Vulture (PZ)

Indetto pubblico concorso, per titoli ed esami, per la copertura di un posto di collaboratore tecnico professionale esperto - Ingegnere - Cat. DS presso il centro di riferimento oncologico della Basilicata in Rionero in Vulture (PZ).

22 Nov 2011 - Letture:259

I più attivi

Dati e punteggi dell'ultimo anno

Giovanna Casamassima Giovanna Casamassima
47 articoli
12,692 punti totali
Rodolfo Giometti Rodolfo Giometti
45 articoli
6,854 punti totali
Vittorio D'Aversa Vittorio D'Aversa
34 articoli
3,037 punti totali
Fulvio Lucchetti Fulvio Lucchetti
11 articoli
0,552 punti totali
Fabio Bronzini Fabio Bronzini
12 articoli
0,501 punti totali

Ci hanno visitato

Oggi:2159
Ieri:2515
Totali (14/04/09):927642

I nostri numeri

Articoli pubblicati: 519
Iscritti al portale: 677
Iscritti all'Elenco: 175
Iscritti ML Discussioni: 333
Iscritti ML Articoli: 28
Iscritti ML Lavoro: 166
 

Boot from SAN

Intendiamoci, non è l’ultima briciola tecnologica caduta da un banchetto alla NA...

Controllare MAME con Wiimote su N900!

Ecco un'altra dimostrazione delle potenzialità di questo telefono (se vogliamo c...

Cloud Money

Discorrendo con un collega di cloud computing, si è finito, come al solito, a pa...

Android: se non hai il telefono usa l'emulatore!

In questi giorni sto valutando di comprare un cellulare basato su Linux. Inizial...

WODE, l'emulatore DVD per la Wii

Qualche giorno fa mi è capitato di sfidare mio cognato ad una partitella a tenni...

Installazioni di Linux su sistemi non convenzionali

Un'ottica convenzionale vede l'informatica come un insieme di applicazioni e sis...

Server Linux: tutti i trucchi per farlo al meglio

Volete fare un server Linux per la vostra impresa, ufficio o semplicemente per c...

Virtualizzazione di Windows XP o altri SO su Ubuntu con Qemu

I pc odierni sono sempre più potenti e molto spesso sotto sfruttati, la virtua...

Architettura di una trading room

La trading room o sala mercati è il luogo dove vengono effettuate le operazioni ...

busybox & Android: la command line facile

Nei precedenti articoli abbiamo visto due tecniche per aggiungere nuovi programm...

Android-x86: quando il drone sbarca sui PC

Chi pensa che Andoird abbia vita bere farà bene a ricredersi perché, oltre alle ...

XMount finalmente liberi di virtualizzare!

Cosa succede dopo che abbiamo acquisito un disco in bitstream su file immagine? ...

I-Memo: le password personali sempre con te

Prodotto dalla MensTecnica, una giovane azienda della Basilicata fondata nel 200...

SUN Wiki Publisher: scrivere facilmente su Wikipedia

Personalmente uso parecchio Mediawiki (il motore di Wikipedia); lo ritengo un ot...

Autenticarsi con la pen drive

La pen drive è ormai diventata come il cellulare, impossibile non averla, ma sie...

Code Smells

Sempre più spesso il codice ha un cattivo odore. Sei sicuro di non scrivere cod...

Lion desktop: finalmente una distribuzione mirata alle aziende!

Chi è abituato a lavorare con Linux, ed in particolare ha provato a lavorare con...

Boxee Box: la TV facile di D-Link

Grazie alla D-Link possiamo presentare un nuovo gioiello della tecnologia: il me...

Git in Eclipse

Chi mi conosce sa la mia avversione (del tutto personale, ci tengo a sottolinear...

Clonare una macchina vera in 30 minuti con VirtualBox

Essendo uno sviluppatore mi son reso conto che la virtualizzazione di una macchi...

Maemo extras: ancora più applicazioni per l'N900

Finalmente, grazie a Nokia, abbiamo a disposizione un esemplare dell'N900 su c...

Programmare in C sull'N900

In questo articolo vedremo come sia semplice programmare in C sull'N900. In part...

Intervista esclusiva a Mageia Linux

La Presidente dell'Associazione MAGEIA.ORG, Anne Nicolas, in questa intervi...

PyGTK su N900

Come programmatore avere un cellulare che in pratica è un computer (oramai il 10...

Mageia 1 alpha1 è tra noi

Finalmente è stata rilasciata la tanto attesa versione alpha1 principalmente riv...

Linutop OS 4.0: Internet, Chiosco Multimediale e non solo!

Presentata negli ultimi giorni nella capitale francese la nuova distribuzione LI...

Universal USB Installer 1.8.04 e Ubuntu Linux 10.10

Rilasciata il 10.10(.2010) la nuova versione di Ubuntu Linux (la data corrispond...

Sicurezza informatica: safety, dependability, security

La sempre maggiore diffusione delle tecnologie ha profondamente rivoluzionato la...

Il settore danneggiato e l'acquisizione forense

Se si deve acquisire un hard disk in maniera forense, ossia con tutti i crismi n...

Il telefono… la tua voce!

Era lo slogan pubblicitario della Telecom di un po’ di anni fa. Certo, al concet...

Come creare un NFS server ridondante

Quelli che mi conoscono sanno che il mio ambito lavorativo è nei sistemi embedde...

Multistrap: come ti creo un rootfs Debian dal nulla

Una volta c'era debootstrap, un tool fantastico che permetteva di creare un root...

LIM: la lavagna multimediale con il wiimote

LIM sta per Lavagna Interattiva Multimediale, ed è un progetto che, tramite l'...

L'SMS autoprodotto!

Tempo fa sulla mailing list di CFI ho provato a lanciare l'idea di effettuare un...

Cloud Computing: cos'è veramente?

Da qualche tempo si sente sempre più parlare di Cloud Computing. Sembra che ques...

Come saltare il proxy «blocca-tutto» aziendale

Mi capita spesso, ma non sempre, di andare da dei miei clienti e non potermi con...

Compilare un programma C per Android

Essendo un programmatore C (uso anche altri linguaggi, ma il C e quello che uso ...

Implementare una LIM con Linux

Come promesso rieccomi qui per illustrare come realizzare una LIM (che ricordo s...

Anomalie di partizionamento hard disk: un esperienza personale

Nonostante le decine di installazioni delle varie distribuzioni Linux eseguite s...

Odroid: la piattaforma di gioco libera

Si chiama Odroid ed e basata su Android, è la prima piattaforma di gioco interam...

Tenere i servizi sotto controllo con Monit

In questi giorni mi è capitato di dover risolvere un problema per un mio cliente...

Multi puntatore su Ubuntu 10.4: ecco come

Tempo fa ebbi modo di dare un'occhiata al progetto MPX per un cliente. La cosa n...

SL4A e il drone parla più lingue

Chi come me non ama Java si sentirà a disagio volendo programmare una qualsiasi ...

Socat: quando i dati passano via rete

Lavorando coi sistemi embedded molte volte mi capita di dovermi arrangiare su di...

Integrazione Webmaster Tool. Google Analytics, le ultime novità

Google non finisce mai di stupirci, ma soprattutto è inarrestabile sull'implemen...

TurnKey Linux: accendi e vai!

Quanto tempo occorre per installare e configurare una macchina LAMP (Linux, Apac...

Google +1: il «nemico» del «mi piace» di Facebook

Il tanto atteso nemico del "mi piace" targato Facebook è arrivato, il colosso de...

Come ti controllo i tassi di interesse con Linux

In questi giorni sto cercando di fare una surruga per il mutuo di casa mia. Tra ...

Cluster VMWARE

In questo articolo vediamo come realizzare un cluster di macchine virtuali con u...

NBTempo: una GUI per le timeline

Svolgendo alcuni casi in cui serviva creare delle timeline per verificare l'att...

Il NAS D-Link DNS-343

Grazie alla D-Link azienda produttrice di apparecchiature di rete e non solo v...

AccessPoint: la scelta ottimale del canale di trasmissione

Realizzare una rete Wireless outdoor (ma anche indoor) pone il problema della sc...

ettercap: il man-in-the-middle facile

Troppo spesso mi rendo conto che molti considerano la rete aziendale o quella ...

Openembedded: la distribuzione «ristretta» per Linux

Quando le risorse di un sistema sono limitate non è possibile usare una distribu...

Demolinux: l'automazione industriale con Linux

Qualche tempo fa il mio ex istituto superiore mi aveva chiesto di fare una picco...

munin: come ti controllo il server aziendale

In questi ultimi tempi il server che mantiene il nostro portale è sottoposto ad ...

GNU readline: un tool indispensabile per la linea di comando

Chiunque di voi abbia avuto a che fare con la linea di comando avrà senz'altro a...

Sviluppare codice per Arduino dalla command line

Arduino Uno è un micro controllore basato su CPU ATmega328; si alimenta via alim...

Arduracing: come realizzare una robot-car intelligente con Arduino

Arduracing è un progetto realizzato con Arduino in collaborazione con il Lucccal...

OpenWRT: la distribuzione piccola e versatile

In queste ultime settimane ho avuto modo di vedere da vicino OpenWRT, una distri...

Socat: quando i dati passano via rete Stampa E-mail
(3 voti, media 5.00 di 5)
Area Tecnica - Embedded
Scritto da Rodolfo Giometti   
Martedì 29 Giugno 2010 08:07
Articolo letto 1456 volte

Lavorando coi sistemi embedded molte volte mi capita di dovermi arrangiare su diverse cose, alcune volte la cosa è banale e poco interessante, ma altre no; in particolare, da un cliente, mi è capitato di dover testare le funzionalità di un modem GSM/GPRS collegato ad un sistema embedded ARM.

Il problema non era tanto nel test in se ma nel come poter accedere al modem (non poteva infatti essere scollegato dal sistema) utilizzando i tool standard che di solito si impiegano in questi casi. Il sistema del mio cliente era minimale, quindi non era subito disponibile nessun tool particolare tranne busybox, ed anche mettersi lì a ricompilare tutti i tool che mi sarebbero serviti era una soluzione poco fattibile, dato che non potevo stare tutto il giorno a ricompilare anziché testare il modem (venivo pagato per i test non per ricompilare pacchetti a destra e a sinistra! :).

Quindi come fare? Beh, la soluzione è abbastanza semplice: i tool di test del modem girano sul mio PC ed i dati  verso  e da il modem passano via rete; in pratica si realizza un collegamneto del genere (ASCII art):

 PC                      Embedded               Modem
+------------------+    +-----------------+    +-----
|   /dev/ttyS4<-+  |    | +->/dev/ttyUSB0 |<-->|
|               |  |    | |               |    +-----
|   +-----------+  |    | +----------+    |
|   |              |    |            |    |
|   +->socat<->TCP |<-->| TCP<->a2e<-+    |
+------------------+    +-----------------+

Si tratta cioè di inviare tutti i dati che arrivano dal modem, attaccato alla porta ttyUSB0 del sistema embedded, su di un socket TCP; dal PC quindi, basta effettuare una connessione TCP verso il sistema embedded e rigirare di nuovo il flusso dati su di un dispositivo seriale (virtuale, in questo caso). L'ultimo passaggio mi serve per fare in modo che i tool di test del modem GSM non si accorgano di nulla e pensino di lavorare su di un dispositivo seriale fisico a cui è attaccato direttamente il modem!

I due programmi che ho utilizzato sono socat e a2e.

Il primo programma, socat, come detto anche nel sito del progetto, è considerato una sorta di netcat++ (gergo per indicare una evoluzione di netcat), in pratica è un tool che invia e riceve dati via rete ed estende le funzionalità di netcat. In particolare noi lo useremo per collegarci via rete al sistema embedded e convertire il flusso dati in un terminale. Questo ultimo passo è realizzato grazie ai terminali virtuali o pseudo terminal. In pratica dei terminali emulati dal sistema e non fisicamente collegati a nessun terminale reale.

Il secondo programma, s2e, è una utility presente nel sistema di sviluppo dell'XPort Pro (un web server di cui ho già avuto modo di parlare in passato) e serve a convertire un flusso dati da e per una porta seriale verso un socket di rete.

La prima domanda che potrebbe sorgere spontanea è: perché usare a2e e non usare direttamente socat anche sul sistema emebdded? La risposta è altrettanto semplice: perché compilare socat sul sistema embedded (date le risorse software limitate) non è banale, mentre per compilare s2e basta un comando del compilatore!

Ok, chiarito questo vediamo come fare. Una volta trasferito il programma compilato di s2e sul sistema embedded ho usato il seguente file di configurazione:

# s2e.config
tty {
        device  /dev/ttyUSB0    # device
        baudrate 9600           # baudrate
        parity  none            # parity <none/odd/even>
        stopbit 1               # stopbit <1/2>
        length  8               # data length <5/6/7/8>
        flow    none            # flow control <none/soft/hard>
        dma     disable         # dma transfer mode <disable/enable>
        timeout 1000            # tty timeout for tx trigger (msec)
        size    2048            # size for tx trigger <0/1-2048>
        delim   0a              # xxxx (hex 1 or 2 bytes)
}

net {
        mode    server          # mode <disable/server/client>
        host    0.0.0.0         # host ipv4 address
        proto   tcp             # protocol <tcp/udp>
        port    5000            # port number
}

In pratica non ho fatto altro che dire a s2e quali sono i parametri di gestione della porta seriale usata per parlare con il modem GSM e la porta a cui attendere connesisoni di tipo TCP/IP (la 5000).

Una volta salvato il file s2e.conf si lancia il programma con:

# s2e -C s2e.conf

A questo punto s2e si mette in ascolto sulla porta 5000 del sistema embedded.

Andiamo ora sul PC; per dire a socat di collegarsi al sistema embedded e di rigirare il flusso dati da e per uno pseudo terminale si usa il comando:

# socat pty,link=/dev/ttyS4 /tmp/pipe tcp:192.168.0.221:5000

La seconda parte del comando serve per stabilire la connessione TCP/IP mentre la prima apre uno pseudo terminale e chiede a socat di creare un link simbolico verso il nuovo device (che viene creato dinamicamente) in modo da poterlo poi trovare ed usare subito. Il nome che ho scelto, /dev/ttyS4, è ovviamente strategico; infatti ho simulato il fatto di avere una nuova porta seriale presente nel sistema la quale, se fosse stata un porta seriale fisica, avrebbe preso quel nome.

Se socat non dà errori ecco quello che dovreste ottenere:

# mike@mike-desktop:~$ ls -l /dev/ttyS*
crw-rw---- 1 root dialout 4, 64 Jun 18 11:33 /dev/ttyS0
crw-rw---- 1 root dialout 4, 65 Jun 18 11:33 /dev/ttyS1
crw-rw---- 1 root dialout 4, 66 Jun 18 09:11 /dev/ttyS2
crw-rw---- 1 root dialout 4, 67 Jun 18 09:11 /dev/ttyS3
lrwxrwxrwx 1 root root       10 Jun 18 11:32 /dev/ttyS4 -> /dev/pts/1

Come si vede, socat ha creato un link simbolico allo pseudo terminale /dev/pts/1.

A questo punto il gioco è fatto! Se provo a lanciare il programma di configurazione di wvdial, in modo tale che lui cerchi di identificare il modem automaticmente, ottengo:

mike@mike-desktop:~$ sudo wvdialconf
Editing `/etc/wvdial.conf'.

Scanning your serial ports for a modem.

ttyS0<*1>: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud
ttyS0<*1>: ATQ0 V1 E1 -- failed with 9600 baud, next try: 115200 baud
ttyS0<*1>: ATQ0 V1 E1 -- and failed too at 115200, giving up.
ttyS1<*1>: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud
ttyS1<*1>: ATQ0 V1 E1 -- failed with 9600 baud, next try: 115200 baud
ttyS1<*1>: ATQ0 V1 E1 -- and failed too at 115200, giving up.
Modem Port Scan<*1>: S2   S3   
WvModem<*1>: Cannot get information for serial port.
ttyS4<*1>: ATQ0 V1 E1 -- OK
ttyS4<*1>: ATQ0 V1 E1 Z -- OK
ttyS4<*1>: ATQ0 V1 E1 S0=0 -- OK
ttyS4<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK
ttyS4<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK
ttyS4<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
ttyS4<*1>: Modem Identifier: ATI -- 332
ttyS4<*1>: Speed 4800: AT -- OK
ttyS4<*1>: Speed 9600: AT -- OK
ttyS4<*1>: Speed 19200: AT -- OK
ttyS4<*1>: Speed 38400: AT -- OK
ttyS4<*1>: Speed 57600: AT -- OK
ttyS4<*1>: Speed 115200: AT -- OK
ttyS4<*1>: Speed 230400: AT -- OK
ttyS4<*1>: Speed 460800: AT -- OK
ttyS4<*1>: Max speed is 460800; that should be safe.
ttyS4<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK

Found a modem on /dev/ttyS4.
Modem configuration written to /etc/wvdial.conf.
ttyS4<Info>: Speed 460800; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"

Bingo!

 

Aggiungi commento

Prima di pubblicare un tuo commento assicurati che:

  • sia in tema e contribuisca alla discussione in corso.

  • non abbia contenuto razzista o sessista.

  • non sia offensivo, calunnioso o diffamante.


La redazione con i controlli a campione si riserva di cancellare qualsiasi contenuto ingiurioso, volgare o illegale.


Nota bene: se non sei registrato il tuo commento verrà moderato e quindi non pubblicato immediatamente. Se, invece, sei registrato al portale e hai fatto login verrà visualizzato subito.


Codice di sicurezza
Aggiorna

 

In primo piano

Simons Voss: un mondo senza chiavi

Simons Voss: un mondo senza chiavi

Il sistema di gestione e di controllo degli accessi 3060 si presenta come un’alternativa con enormi vantaggi...
Pubblicità mirata dei prodotti

Pubblicità mirata dei prodotti

Hai un prodotto o un servizio da pubblicizzare? Fallo su consulenti-ict.it! Pubblicizzare un prodotto...
Recensioni sul Portale

Recensioni sul Portale

Hai un prodotto hardware/software o un libro riguardante uno dei temi dell'ICT? Vuoi farlo conoscere...

Ultime dal Forum

Visualizza Topic »

Eventi

Non ci sono eventi in programma
Febbraio 2012
D L M M G V S
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 1 2 3
Marzo 2012
D L M M G V S
26 27 28 29 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Sondaggi

busyCaricamento Sondaggio...

Ultimi Commenti