Logo PJ
Home
Arcade
Musica
Bicicletta
FabLab
Linux
DreamBox
Giochi
 
   Introduzione   Perle   Programmi   SSH   SAMBA   Firewall   GPS   WIFI   Jukebox   PCcar 

Driver per la Nokia Card Phone v1.0

Mi hanno sempre attratto, un po' per curiosità mia e un po' per esigenze di lavoro, i modem GSM: quei piccoli dispositivi che ti permettono di collegarti a Internet da qualsiasi posto via radio, purché ci sia un minimo di segnale disponibile; poi, essendo molto pigro, è indubbia la comodità di spedire SMS scrivendoli direttamente dalla tastiera del computer. Alla categoria dei modem GSM appartengono anche i telefoni cellulari che, collegati al PC tramite un cavo o via infrarossi, si interfacciano al computer e vengono pilotati via seriale per gestire comunicazioni dati oppure mandare SMS.

La mia prima esperienza sul campo la ho fatta con una Nokia CardPhone 2.0, che per chi non lo sapesse è una scheda PCMCIA dalle dimensioni molto ridotte che permette di effettuare chiamate vocali o dati, spedire SMS o FAX utilizzando unicamente il proprio PC portatile. In realtà sebbene il nuovo modello sia dual band e gestisca il protocollo HSCSD (che in Italia non viene supportato), il modello precedente permette di effettuare le telefonate vocali utilizzando direttamente casse e microfono del PC, al contrario della sorella più giovane che richiede invece un auricolare apposito.

Poiché un progetto portato avanti da me al lavoro richiedeva appunto l'utilizzo di un modem GSM per la trasmissione di SMS informativi riguardo lo stato della rete e dei server, la mia necessità era quella di utilizzare tale scheda sotto Linux.

Al momento di partire col progetto cercavo chi ancora vendesse la versione 1.0 della scheda, perché si sapeva che di quella erano stati rilasciati dalla Nokia gli appositi driver per Linux, mentre la versione 2.0 non funzionava assolutamente con il pinguino.

La ditta che sembrava fornirmi tale versione di scheda mi ha poi invece spedito il modello nuovo, per cui sono rimasto per molti mesi con una scheda usabilissima dalla parte Windows, praticamente inutile su Linux. Il tutto fino a quando è stata trovata la patch (in pratica tale scheda si presenta al sistema come doppia, seriale e audio, mentre deve essere indirizzata come singola) e ora il dispositivo funziona senza alcun problema, basta solo disporre dei driver aggiornati.

Nel frattempo sono riuscito a trovare per i fatti miei una versione 1.0 usata: tutto contento la monto e accendo il sistema, però... i driver sono vecchi e non funzionano con la nuova versione del pacchetto pcmcia-cs. Al che praticamente con molta pazienza e un gioco di copia/incolla sono riuscito a creare un nuovo modulo da far caricare al posto del consueto serial_cs.

Mentre la patch, una volta applicata alla distribuzione pcmcia-cs, richiede solamente la compilazione del tutto, se si vogliono utilizzare direttamente i due file sorgenti che ho realizzato occorre utilizzare una procedura un po' più complessa: come prima cosa occorre copiare i file nokia_cs.c e nokia_cs.h nella directory clients, dopodiché nella stessa directory occorre modificare il file Makefile includendo il nome del sorgente e quello del modulo (per essere sicuri aggiungere i nomi di seguito a quelli del serial_cs); infine occorre modificare il file config situato nella directory etc aggiungendo le seguenti linee:

device "nokia_cs" class "serial" module "nokia_cs" card "Nokia Phone Card v1.0" manfid 0x0124, 0x0800 bind "nokia_cs"

Il primo blocco di linee definisce un nuovo dispositivo associato al modulo che ho realizzato, mentre il secondo comunica al sistema di utilizzare tale modulo nel caso venga inserita una scheda Nokia, identificata dal manfid specificato. Fatto questo si compila il tutto e si installano moduli e programmi di gestione.

Una volta installato il tutto, occorre fare in maniera che il programma cardmgr sia attivo in background (la cosa migliore è farlo avviare da uno script di init). Proviamo ora ad inserire la scheda nello slot e verifichiamo che sul log di sistema compaiano le seguenti linee:

Oct 5 20:07:41 sonja cardmgr[3143]: socket 0: Nokia Phone Card v1.0 Oct 5 20:07:41 sonja cardmgr[3143]: executing: 'modprobe nokia_cs' Oct 5 20:07:42 sonja kernel: ttyS17 at port 0x0100 (irq = 9) is a 16450 Oct 5 20:07:42 sonja cardmgr[3143]: executing: './serial start ttyS17' Oct 5 20:07:45 sonja kernel: nokia_cs: Card setup completed!

Il sistema ha quindi identificato correttamente tramite il manfid la scheda inserita, ha provveduto a caricare il modulo necessario e ha attivato il dispositivo /dev/ttyS17 associato. A questo punto /dev/modem punta alla scheda GSM e la tratta esattamente come se si trattasse di un modem telefonico, utilizzando praticamente gli stessi comandi AT (in realtà utilizza un set esteso pensato proprio per lo standard GSM, basti pensare alla gestione degli SMS). È possibile lanciare minicom, o un programma di terminale analogo, per verificare che il modem risponda ai comandi impartiti:

ATZ OK ATI0 Nokia Mobile Phones OK ATI2 SW5.00 OK ATI3 Nokia Cellular Card Phone RPE-1 GSM900 OK

Il modem quindi funziona correttamente ed è pronto per ricevere o spedire SMS! Il software che io utilizzo per gestire i messaggini appartiene al pacchetto SMS Server Tools di Stefan Frings, che mette a disposizione un programma per spedirli, uno per riceverli e un demone che gestisce uno spooler. In pratica i miei script PHP quando devono spedire un SMS preparano un file opportunamente formattato all'interno della directory di spool e al resto pensa il demone.

RIFERIMENTI

Qui di seguito vi metto a disposizione i sorgenti dei driver che ho realizzato. Vi ho inserito anche una serie di link utili riguardo tale argomento.

  • Il sito ufficiale del pacchetto pcmcia-cs, necessario per gestire le schede PCMCIA sotto linux.
  • Patch (tipo sconosciuto, 8291 byte) da applicare alla versione 3.1.34 del pacchetto pcmcia-cs.
  • I sorgenti (tipo sconosciuto, 7844 byte) del driver.
  • Il sito del pacchetto SMS Server Tools.
  • Il sito dell'ETSI.
  • La Card Phone sul sito Nokia.