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.