Motorola Timeport Ti250 v.s. Linux

Motorola site
Ovvero come fare diventare il vostro telefonino con porta IrDA un potente modem al servizio di Linux...


Il telefono

Fino a pochi mesi fa non ero interessato al supporto infrarossi del portatile, dopotutto non possedevo alcuna stampante che funzionasse con questa interfaccia, ne' un cellulare che permettesse di collegarsi via IrDA. Avevo infatti un Nokia 5110 dotato di cavetto per porta seriale, che funzionava egregiamente con il programma gnokii, e mi permetteva di scaricare posta elettronica e navigare in internet senza dovermi attaccare alla linea del telefono fisso, finche'....miseriaccia nera....me lo hanno rubato >>:(

Rosso d'ira e bisognoso di un nuovo apparecchio, mi sono recato dal negoziante di fiducia e ho visto questo Motorola Ti250: non era uno degli ultimi modelli, ma le sue caratteristiche mi hanno subito attirato, vedi il gran numero di posti nella rubrica telefonica, supporto wap, vibracall e porta IrDA.
E proprio questa ultima caratteristica interessa noi utenti del mondo Linux.

Primi passi

Visto che ho appena installato la Slackware 8.0, perche' non provare a connettersi ad internet con questa distribuzione? Ma se avete una RedHat o una Suse, non credo che le cose siano molto diverse.
La prima cosa da fare e' ricompilare il kernel attivando i moduli per la porta infrarossi: questa e' una sezione del kernel 2.4.9 appena ricompilato:

# IrDA (infrared) support
CONFIG_IRDA=y
CONFIG_IRLAN=m
CONFIG_IRNET=m
CONFIG_IRCOMM=y
# CONFIG_IRDA_ULTRA is not set
CONFIG_IRDA_OPTIONS=y
CONFIG_IRDA_CACHE_LAST_LSAP=y
# CONFIG_IRDA_FAST_RR is not set
CONFIG_IRDA_DEBUG=y

# Infrared-port device drivers
CONFIG_IRTTY_SIR=m
CONFIG_IRPORT_SIR=m
# CONFIG_DONGLE is not set
# CONFIG_USB_IRDA is not set
# CONFIG_NSC_FIR is not set
# CONFIG_WINBOND_FIR is not set
# CONFIG_TOSHIBA_FIR is not set
# CONFIG_SMC_IRCC_FIR is not set
# CONFIG_ALI_FIR is not set
# CONFIG_VLSI_FIR is not set

Una volta riavviato il sistema, per utilizzare la porta IrDA bisogna caricare i moduli con i comandi:

insmod irport
insmod ircomm
insmod ircomm-tty

Nei cd della Slackware non ho trovato i programmi necessari per fare funzionare il collegamento infrarossi: poco male, e' bastato scaricare da internet i sorgenti:

  • libtools-1.2d dal sito www.gnu.org
  • irda-utils-0.9.13 dal sito irda.sourceforge.net

    e seguendo le facili indicazioni contenute nei due file INSTALL, si riesce a compilare il tutto: dovrebbero bastare i comandi "./configure", "make" e "make install".

    La comunicazione con il cellulare attraverso la porta IrDA funziona circa in questo modo: viene effettuato un collegamento tra la porta infrarossi e una porta seriale libera in modo da poter dialogare con il telefonino usando i comuni programmi per porte seriali. Successivamente si "attacca" la porta infrarossi al dispositivo esterno attraverso il comando "irattach"; a questo punto si puo' andare nel menu del nostro cellulare per attivare il collegamento infrarossi e possiamo posizionare la porta IrDA dello stesso davanti alla corrispondente porta del notebook.

    Prima di procedere dobbiamo creare dei file per il device e "attaccare" la porta IrDA alla seriale (i comandi mknod vanno dati una volta soltanto mentre il comando irattach va impartito ad ogni riavvio del sistema):

    cd /dev
    mknod /dev/ircomm0 c 161 0
    mknod /dev/ircomm1 c 161 1
    irattach /dev/ttyS1
    
    Possiamo anche verificare se il comando irattach ha effettivamente fatto il proprio dovere digitando "cat /var/log/messages". Il risultato deve essere del tipo:
    ...
    asus kernel: IrDA: Registered device irda0
    asus irattach: Starting device irda0
    asus irattach: executing: 'echo asus > /proc/sys/net/irda/devname'
    
    Usando minicom posso verificare anche il funzionamento del "modem"... dobbiamo prima settarlo con il comando:
    minicom -s
    
    Con questo comando appare il menu di settaggio del programma minicom:
                 [Configuration]
                 Filenames and paths
                 File transfer protocols
                 Serial port setup
                 Modem and dialing
                 Screen and keyboard
                 Save setup as dfl
                 Save setup as..
                 Exit
                 Exit from Minicom
    
    Con l'opzione "Serial port setup" impostiamo i parametri come segue:
         A - Serial Device         : /dev/ircomm0
         B - Lockfile Location     : /var/lock
         C - Callin Program        :
         D - Callout Program       :
         E - Bps/Par/Bits          : 38400 8N1
         F - Hardware Flow Control : No
         G - Software Flow Control : No
    
            Change which setting?
    
    a questo punto salviamo il settaggio scegliendo dal menu principale "Save setup as dfl", usciamo dal programma e digitiamo solo "minicom", posizioniamo il telefonino davanti alla porta seriale e magicamente.....appare il consueto prompt "atz" che ci permette di inserire i soliti comandi per i modem!!!!!!!! Adesso possiamo sbizzarrirci con i comandi AT, ATZ, ATDT per tentare di connettere il nostro sistema all' ISP.

    Il prossimo passo e' preparare un link simbolico al dispositivo ircomm0 con il comando:

       # cd /dev
       # ln -s /dev/ircomm0 /dev/modem
    
    possiamo verificare l'effetto di questo comando:
       # ls /dev/modem -la
       lrwxrwxrwx   1 root  root  12 Jan 3 13:08 /dev/modem -> /dev/ircomm0
    
    

    Configurazione con pppd:

    Vi sono vari motivi per i quali dovreste usare pppd per collegarvi ad internet, ad esempio perche' usate uno dei client di posta in modo testo, o perche' preferite reperire informazioni sul web con il browser lynx.
    Per collegarsi con il nostro Motorola Timeport basta creare alcuni file di testo:

    Lo script da usare per lanciare la connessione: (ricordo che dopo averlo creato bisogna dare il comando "chmod a+x timeport.sh")

    # /home/lino/timeport.sh
    /usr/sbin/pppd /dev/modem 19200 connect "/usr/sbin/chat -v -f /etc/ppp/ti250.chat"
    

    Le opzioni generali di configurazione:

    # /etc/ppp/ti250.chat
    TIMEOUT 60
    ABORT ERROR
    ABORT BUSY
    ABORT "NO CARRIER"
    ABORT "NO DIALTONE"
    "" "ATZ" OK
    "atdt49000"       -> inserite qui il numero del vostro POP
    TIMEOUT 75
    CONNECT
    

    Le opzioni generali di configurazione per la porta irda:

    # /etc/ppp/options.modem
    lock
    defaultroute
    noipdefault
    19200
    noauth
    passive
    bsdcomp 15,15
    deflate 15,15
    vj-max-slots 15
    # il vostro nome utente va inserito qui!
    user "333333333333"
    

    Aggiungete infine una riga al vostro file /etc/ppp/pap-secrets: (ovviamente cambiando username e password!)

    ...
    "333333333333" * "password"
    

    Per lanciare la connessione basta eseguire il comando ./timeport.sh; per vedere cosa succede alla linea, potete curiosare nel file messages con il comando "tail /var/log/messages". Per disconnettere il nostro cellulare, bisogna prima risalire al pid del demone pppd con il "ps aux", e uccidere il demone con "kill -9 n", dove n e' il numero del processo pppd.


    Configurazione con kppp:

    Entrando in XFree (io uso il desktop KDE) possiamo configurare una nuova connessione selezionando dal menu "Internet | Connessione a Internet".

    kppp

    Scegliendo "impostazioni" potremo inserire il nostro account premendo "Nuovo..."; su numero telefonico inserite il numero del vostro POP, su Autenticazione lasciando "PAP" tutto dovrebbe funzionare

    configurazione kppp

    impostazione account con kppp

    Alla sezione "IP" lasciamo settare dinamicamente il nostro indirizzo all'Internet Service Provider

    impostazione ip

    Impostiamo anche il DNS del nostro ISP:

    impostazione dns

    Potete lasciare perdere il resto delle impostazioni; passando alla sezione "dispositivo", avremo cura di indicare come "modem" il device che punta a /dev/ircomm0, e cioe' "/dev/modem". Bisogna settare "19200" come velocita' di connessione:

    impostazione dispositivo

    Anche qui il resto delle impostazioni non ci interessa; una volta configurato il collegamento con kppp, non resta che testare il tutto e provare a visitare qualche sito con Netscape o con Mozilla...

    Ricordate che tutti i gestori di telefonia mobile hanno delle tariffe agevolate per quanto riguarda il traffico dati via gsm: di solito offrono un numero speciale al quale connettersi (ad esempio, con Tim il numero e' "49000") e, impostando come nome utente il numero di telefonino e come password la stringa che avrete spedito al gestore tramite sms, possiamo navigare a tariffe agevolate...fate ricorso ai numeri verdi e informatevi bene sui prezzi applicati!!! I costi di navigazione dovrebbero aggirarsi circa sulle 6-7 mila lire l'ora.

    Un'altra annotazione: a causa delle limitazione intrinseche del sistema gsm dei cellulari, il collegamento verra' effettuato a 9600bps: so che non e' molto, specialmente se confrontato con tecnologie tipo Isdn o Adsl, ma c'e' tutto il vantaggio di non essere legati alla normale rete fissa. Ora infatti abbiamo un piccolo ufficio viaggiante che ci permettera' di gestire i nostri contatti e-mail e di collegarci ad internet con il portatile ovunque ci troviamo, senza il problema dei cavi e delle prese a muro...e come al solito abbiamo fatto funzionare (con soddisfazione) un apparecchio che la casa costruttrice non aveva "omologato" col sistema del pinguino...


    Gestire il cellulare con gsmlib:

    Ho scaricato dal sito www.pxh.de il pacchetto gsmlib v1.6: questo pacchetto contiene delle librerie per accedere a diversi modelli di telefonini GSM quali Nokia, Siemens, Ericcson e, naturalmente, Motorola.
    I programmi contenuti permettono di:

    Ho provato a scaricare la versione 1.7 del package, ma quando ho dato il comando make sono apparsi diversi errori, per cui, visto che il pacchetto 1.6 ha le stesse funzioni...meglio accontentarsi.

    Come procedere: per l'installazione del programma basta untarrare il file appena scaricato e seguire le istruzioni presenti nel solito README:

       # tar xvfz gsmlib-1.6.tar.gz
       # cd gsmlib-1.6
       # ./configure
       # make
       # make install
    
    e automagicamente tutti i programmi che ci servono verranno installati nella directory '/usr/local/bin':

    Successivamente bisogna stabilire la connessione con il nostro cellulare attraverso la porta IrDA

       # irattach /dev/ttyS1
    

    ora siamo davvero pronti per usare il pacchetto gsmlib.
    Per scaricare tutto il contenuto della rubrica basta dare:

       # gsmpb -b 19200 -d rubrica.txt -s /dev/modem -p "SM"
    

    questo comando crea un file rubrica.txt e vi inserisce tutti i nominativi con relativo numero di telefono contenuti nella memoria della scheda SIM, separati da un carattere "|"; con un'opportuna modifica all'opzione -p potremo scarcare anche la rubrica contenuta nella memoria del telefono. Se invece diamo il comando:

       # gsmsmsstore -b 19200 -s /dev/modem -t SM -l > messaggi.txt
    

    scarica in un file messaggi.txt tutti gli SMS contenuti nella memoria del telefonino. Il contenuto del file e' un insieme di blocchi del tipo:

    ...
    index #x
    ---------------------------------------
    Message type: SMS-DELIVER
    SC address: '33333333333'
    More messages to send: 1
    Reply path: 0
    User data header indicator: 0
    Status report indication: 0
    Originating address: '3333333333'
    Protocol identifier: 0x0
    Data coding scheme: default alphabet
    SC timestamp: 12/31/01 15:07:04 (+0100)
    User data length: 21
    User data header: 0x
    User data: 'TESTO DEL MESSAGGIO...'
    ...
    

    Invece con il comando:

       # gsmsendsms -d /dev/modem -b 19200 -C +393359609600 3333333333 "testo..."
    

    riusciamo a spedire un messaggio SMS utilizzando solamente l'interfaccia IrDA del nostro telefonino; il primo numero e' il Centro servizi (nel mio caso, della Tim), mentre il secondo numero e' quello del cellulare destinatario del messaggio. Sorprendentemente semplice e funzionale.