Cellulare e IrDA su Ubuntu Linux HOWTO

Post imageOrmai sono passati 2 annetti da quando facevo le prove per connettere il mio cellulare Sagem myX5-2 al PC tramite la porta infrarossi integrata nella mia scheda madre Asus P4B533-M. Con Windows è filato tutto liscio in quanto aveva già rilevato la porta infrarossi integrata. Mi è bastato attivare IrDA sul mio cellulare per farlo riconoscere immediatamente. Successivamente ho installato MPAS per trasferire file da e verso il cellulare e WellPhone per gestire messaggi, rubrica, agenda e altri dettagli. Su Linux invece le cose non sono state molto rosee e solo qualche giorno fa ho trovato la maniera per far fare amicizia tra il mio cellulare e il pinguino.

Post imageQuesto howto è quindi rivolto specialmente ai possessori del suddetto telefonino, ma per molti passaggi è valido per quasi la totalità dei cellulari in commercio dotati di porta IrDA in quanto vengono usati protocolli come OBEX a la comunicazione seriale standard tra modem.

L'howto si divide così:

  • Hardware - mettere a punto tutto il necessario
  • Driver setup - Mettere a punto la nostra macchina linux
  • OBEX - Come fare i primi test di comunicazione
  • Applicazioni - Una carrellata di applicazioni per gestire al meglio le funzioni dei cellulari


Hardware

Per prima cosa assicuriamoci di avere tutto l'armamentario collegato. Io mi sono fatto da me il transceiver con un LED infrarosso (come quello nei telecomandi) pilotato da un transistor BC108, mentre la parte ricevente è realizzata con un circuito già pronto e schermato che permette di avere un segnale in uscita già amplificato e TTL compatibile. Poi il segnale di ricezione l'ho messo in una porta NOT triggerata così da migliorare ulteriormente il segnale e mettere un LED che mostri il traffico in transito.

Questo è un esempio di uno schema molto semplificato con l'utilizzo di un transceiver integrato:
Post image

Ora che l'interfaccia hardware è pronta e collegata alla scheda madre, assicuriamoci che il BIOS sia configurato in modo da usare questa porta seriale come IrDA. Attenzione questa guida configura la porta IrDA in modalità SIR, se avete un controller FIR molto più veloce del precedente puoi seguire questa guida per la configurazione del driver.

Driver setup

Tornati sulla nostra linuxbox, se non è scoppiato nulla nel frattempo, iniziamo ad installare i pacchetti necessari:

sudo apt-get install irda-utils openobex-apps obexftp


Adesso inseriamo i seguenti moduli nel kernel così

$ sudo modprobe ircomm ircomm-tty


Ora non ci resta che "legare" la porta utilizzata per l'IrDA allo stack del kernel e già che ci siamo attiviamo anche l'auto-discovering

$ sudo irattach /dev/ttyS1 -s


Io ho messo ttyS1 perché la porta IrDA integrata è mappata come la seconda seriale all'indirizzo 0x3f8 (COM2 su Windows).

Una volta dato il comando dovremmo vedere il LED lampeggiare alla frequenza di 3 secondi circa.

Ora controlliamo se il tutto funziona, quindi eseguiamo il comando sottostante e avviciniamo il cellulare con la porta infrarossi attivata.
Dovremmo vedere qualcosa del genere, ma facendo particolare attenzione alla stringa con xid:rsp, il segno minore '<' e la stringa del cellulare, dovremmo avere la conferma che il cellulare risponde al discovering e che abbiamo configurato tutto correttamente:

$ sudo irdadump
18:33:11.018864 xid:cmd c39292d4 > ffffffff S=6 s=0 (14)
18:33:11.108780 xid:cmd c39292d4 > ffffffff S=6 s=1 (14)
18:33:11.198780 xid:cmd c39292d4 > ffffffff S=6 s=2 (14)
18:33:11.273779 xid:rsp c39292d4 < 374b3956 S=6 s=2 SAGEM hint=9025 [ Modem Telephony IrCOMM IrOBEX ] (22)
18:33:11.288783 xid:cmd c39292d4 > ffffffff S=6 s=3 (14)
18:33:11.378784 xid:cmd c39292d4 > ffffffff S=6 s=4 (14)
18:33:11.468782 xid:cmd c39292d4 > ffffffff S=6 s=5 (14)
18:33:11.558778 xid:cmd c39292d4 > ffffffff S=6 s=* dnax-box hint=0400 [ Computer ] (24)


Questa è la stringa di identificazione inviata dal mio cellulare:

18:33:11.273779 xid:rsp c39292d4 < 374b3956 S=6 s=2 SAGEM hint=9025 [ Modem Telephony IrCOMM IrOBEX ] (22)


Il mio cellulare si identifica con SAGEM e dice di supportare i protocolli IrOBEX e IrCOMM, quindi potrà trasferire file con l'omonimo protocollo e fungerà da modem.

Purtroppo ho riscontrato un problema che non so se dipende dalla mia interfaccia fai-da-te o dal cellulare, in pratica non riesco a far funzionare il collegamento a 115200 baud, così sono costretto a forzare la velocità massima a 9600 baud, è un po' bassina ma almeno funziona.

sudo sysctl net.irda.max_baud_rate=9600



Adesso facciamo un ulteriore test sul collegamento, effettuiamo un ping sul cellulare!
Diamo il seguente comando:

$ cat /proc/net/irda/discovery
IrLMP: Discovery log:

nickname: SAGEM, hint: 0x9025, saddr: 0xc39292d4, daddr: 0x062a1d03


Ponendo attenzione alla stringa restituita, prendiamo l'ultimo parametro, daddr e lo mettiamolo in irdaping così:

$ sudo irdaping 0x062a1d03
IrDA ping (0x062a1d03 on irda0): 32 bytes
32 bytes from 0x062a1d03: irda_seq=0 time=103.28 ms.
32 bytes from 0x062a1d03: irda_seq=1 time=105.20 ms.
32 bytes from 0x062a1d03: irda_seq=2 time=107.22 ms.
32 bytes from 0x062a1d03: irda_seq=3 time=103.09 ms.

4 packets received by filter

Dovremmo vedere delle risposte da parte del cellulare come in questo esempio. Per terminare premiamo CTRL-C.

Ora che funziona tutto possiamo includere i moduli ircomm e ircomm-tty nel file /etc/modules in modo da caricarli automaticamente all'avvio.

Trasferimento file - OBEX

Adesso è arrivato il momento per fare i primi esperimenti con il protocollo OBEX, quello che ci permetterà di trasferire file da e verso il nostro cellulare. In particolare per il mio cellulare ho notato che il protocollo OBEX FTP viene usato esclusivamente per l'operazione di put, mentre se voglio leggere la memoria interna con un sempre directory listing il cellulare si riavvia!

Per controllare il funzionamento del protocollo OBEX diamo un obex_test e premiamo c, dovremo ricevere il seguente output:

$ obex_test
Using IrDA transport
OBEX Interactive test client/server.
> c
Connect OK!
Version: 0x10. Flags: 0x00
> q

Ovviamente q serve per uscire.

Applicazioni

Bene ora abbiamo solo l'imbarazzo della scelta per gestire il nostro cellulare. Qui tratterò di programmi senza GUI come obexftp e obexpushd ma anche di comodi programmini più user-friendly come gnome-phone-manager e ircp-tray.

Obexftp
Obexftp è un semplice programma da riga di comando molto simile nel funzionamento a un comune client ftp. Per quanto riguarda il mio cellulare se faccio il listing della memoria il cellulare si riavvia... per cui vediamo come mandare un file al cellulare:

obexftp--irda --put foto.jpg

Per completezza esporrò anche gli altri 2 comandi fondamentali ma ricordo che col Sagem myX5-2 non funzionano e provocano il riavvio del cellulare.
Per guardare il contenuto della memoria sarà necessario fare così:

obexftp --irda --list


mentre per prelevare un file

obexftp --irda --get file

Dove al posto di file verrà messo il file da trasferire al pc nella cartella in cui viene lanciato obexftp.

Obexpushd
Obexpushd non è altro che un demone che resta in ascolto di eventuali connessioni obex, appena un cellulare tenta di inviare un file lui accetta la connessione e salva il file nella home. Per installarlo basta scaricare l'omonimo pacchetto via Synaptic o semplicemente con un sudo apt-get install obexpushd.

GNOME Phone Manager
Post imageQuesto applicativo è veramente utile e semplice. Una volta avviato sta nel vassoio di sistema e tenta subito di collegarsi al cellulare. Una volta connesso è possibile inviare e ricevere sms direttamente dal tuo desktop. Purtroppo non è ancora stato tradotto in italiano ma non credo sia un problema data la semplicità estrema di questa utility. L'unica configurazione è quella di impostare correttamente il tipo di collegamento. basterà fare click col destro sulla icona, selezionare Preferenze, spostrarsi sulla scheda Connection e selezionare "Infra red (/dev/ircomm)". Se non viene rieffettuata la connessione riavviare il programma.
GNOME Phone Manager lo puoi installare dal menù Aggiungi/Rimuovi cercando "gestore telefono", altrimenti con il solito sudo apt-get install gnome-phone-manager. L'unica nota è che Gnome Phone Manager genera parecchio traffico irda...

Post image



Ircp-Tray
Questo applicativo permette lo scambio di file tra pc e cellulare tramite il protocollo obex in maniera totalmente trasparente per l'utente. In pratica si installa nel vassoio di sistema e riman ein attesa di eventuali connessioni obex in entrata, quindi mostra una finestra per salvare il file in entrata e successivamente procede con il trasferimento. Cliccando sull'icona è invece possibile inviare un file al cellulare, basterà scegliere il file da inviare ed il gioco è fatto!
Purtroppo Ircp-Tray non è incluso in Ubuntu ma è disponibile un pacchetto .deb autoinstallante su GetDeb sia a 32 bit che a 64 bit.

Gli utenti un po' più smaliziati si possono cimentare nella compilazione dai sorgenti di ircp-Tray da me modificato, i vantaggi sono la completa traduzione in italiano e un po' di eyecandy nel menù contestuale. Link: https://launchpad.net/ircp-tray/

Post image



XGnokii
Quest'altro programma invece permette il controllo di della rubrica e degli sms. Ha una interfaccia un po' retrò ma non per questo poco funzionale. Tra le caratteristiche c'è la possibilità di effettuare dei backup della rubrica interna e dei messaggi di testo.
Per la configurazione è indispensabile modificare manualmente un file in quanto altrimenti all'avvio l'applicazione si bloccherà (è fatta un po' con i piedi ma vabbè).

Post image



Se conoscete qualche altro buon programma non esitate a segnalarmelo!

Immagine in cima all'articolo di proprietà di AMagill,

Articoli correlati

Abbonati al feed RSS. Se non sai cos'è guarda qui.

Abbonati alla newsletter per ricevere via email ogni nuovo articolo pubblicato. L'indirizzo verrà gestito da FeedBurner.

Dai il tuo parere, commenta questo articolo!
commenti su Cellulare e IrDA su Ubuntu Linux HOWTO
  1. ugaciaka scrive —

    ciao, ottima guida. Pure io ho avuto problemi con il baud massimo! Però almeno adesso funziona. Grazie!

    Ciao!!!

  2. DnaX scrive —

    Per curiosità com'è fatta la tua interfaccia? Io uso la porta IrDA integrata nella scheda madre. La sezione di ricezione è un modulo di quelli per i telecomandi delle televisioni, quindi non mi aspetto una grande banda passante, il segnale viene poi passato attraverso una porta NOT triggerata, anche lì magari dovrei usare un integrato cmos ad alta velocità... Per la parte trasmittente c'è invece in LED IR pilotato da un BC107... di cui non ricordo la banda di quest’ultimo...

  3. ugaciaka scrive —

    Mi stai parlando arabo, La porta irda è nel portatile....l’unica cosa che ti so dire è che dopo un po‘ di prove 9600 è il baud massimo che posso mettere, esattamente come a te.

    Non ho mai testato l’irda se non con (arch)linux perché vista l’ho piallato subito.

    Il portatile è un asus a8sc

  4. DnaX scrive —

    Grazie lo stesso ;)

  5. KoKi - DeaDShaDoW scrive —

    ciaoo!!! sai ho capito tutto perfetamnte ma quando installo obexapps mi dice impossibile trovare obexapps

    cosa posso fare?

  6. DnaX scrive —

    Ciao KoKi - DeaDShaDoW, scusa se ti rispondo solo adesso. Comunque hai ragione, ho scritto male il nome del pacchetto che è openobex-apps. Una ricerca su Synaptic con chiave "obex" avrebbe tolto ogni dubbio.

    Fammi sapere com'è andata e se ti interessa prova il mio programma Ircp Tray incluso in Ubuntu 8.10.

  7. ugaciaka scrive —

    Ciao dnax,
    piccolo aggiornamento: non ho impostato più il baud e adesso...trasferisco file al cellulare a bomba! linux kernel 2.6.30.5, penso che sia grazie a questo ma non saprei.

    Saluti e grazie ancora

  8. DnaX scrive —

    @Ugaciaka: Grazie per la info, adesso provo anche io col nuovo kernel!

  9. dock scrive —

    Ciao, complimenti per la guida che a me serve solo parzialmente, ovvero la mia esigenza è di ottenere una mappatura(lettura) di codici irda (da telecomando tv) per poi gestirla con Lirc.

    La mia domanda è: conosci qualche dongle irda compatibile con linux o sono tutti compatibili ?

    Grazie

  10. DnaX scrive —

    Quelli della eXagerate, che mi pare una sottomarca della Hamlet vanno bene. Purtroppo è un po‘ che non sperimento più e non sono più riuscito a farlo andare ad almeno 56kbps o meglio 4Mbps!

    Per lirc però non saprei se il driver riesce a prendere i segnali in formato raw, per poi analizzarli con lirc. La meglio è un ricevitore dei telecomandi sulla porta seriale.

Lascia un commento

CC BY-NC-SA 3.0 2004-2020 Daniele Napolitano — Per informazioni sulla licenza leggere le Note legali