ONDA MT503HSA
Come utilizzarla con GNU/Linux
Ultimo aggiornamento: 4/09/2010
Nel giugno 2009 ho deciso di acquistare una chiavetta UMTS/HSDPA per navigare in internet fuori di casa.
La scelta e' caduta, per vari motivi, su una chiavetta TIM, precisamente la Onda MT503HSA.
Ovviamente (sic.), una volta collegata alla porta usb del mio portatile con Mandriva 2009.1 PowerPack, non funzionava.
Poco male, tanto ci sono i drivers per linux all'interno... Peccato che quei drivers fossero solo per Ubuntu, e per due versioni specifiche del Kernel.
Giunto a quel punto, ho deciso di darmi da fare e convincere il sistema a far funzionare la maledetta chiavetta.
Dopo un po' di ravanamenti ho scoperto che i "drivers" forniti altro non sono che un paciugo fatto con un modulo del kernel gia' esistente, e precisamente il modulo usb/serial/option. Il file fornito si limita ad aggiungere VENDOR_ID e PRODUCT_ID al modulo originale.
Pero', una gran fatica tenere aggiornati i driver e magari fornirli anche per altre distro...
Ho quindi per prima cosa scritto una "guida" per risolvere manualmente il problema. Riporto di seguito il testo:
1) Creare il file /etc/wvdial.conf con il seguente contenuto (compresa una riga vuota alla fine del file - sostituire al numero 0000 il proprio codice PIN):
[Dialer onda]
Modem = /dev/ttyUSB2
#Modem Type = Analog Modem
Baud = 460800
Init1= ATZ
Init2 = AT&F+COPS?
Init3 = AT+CSQ
Init4 = AT+CGDCONT=1,"ip","ibox.tim.it"
Phone = *99#
Dial Command = ATM0L0DT
Password = "tim"
Username = "tim"
Stupid Mode = on
Check Def Route = yes
[Dialer pin]
Modem = /dev/ttyUSB2
Init = AT+CPIN=0000
2) Inserire la chiavetta
3) Espellere l'unita' disco. Alcune distro lo fanno automaticamente, in questo caso attendere semplicemente che il led sulla chiavetta si spenga e si riaccenda.
4) Verificare che il sistema abbia riconosciuto il modem e creato 4 porte /dev/ttyUSB0-3
5) Se il sistema ha riconosciuto la chiavetta, attendere che il led sia di colore blu (UMTS/HSDPA) o verde (GPRS) e dare il seguente comando (NOTA: wvdial deve essere avviato come root, quindi o si accede alla shell come tale, oppure si modifica il file /etc/sudoers aggiungendo la riga "NOME_UTENTE ALL = NOPASSWD: /usr/bin/wvdial" - senza le virgolette e con il proprio nome utente al posto di NOME_UTENTE):
5.1) Se la SIM necessita del codice PIN: wvdial pin; sleep 30; wvdial onda
5.2) Se la SIM non necessita del codice PIN: wvdial onda
6) Se la chiavetta non viene riconosciuta come modem, occorre ravanare sui moduli del kernel. Sconsiglio vivamente di utilizzare il sorgente buggato fornito da Onda, che comunque e' la copia modificata di un modulo del kernel (usb/serial/option.c). La procedura che segue e' un po' "sporca", ma funziona.
6.1) Recuperare il driver linux fornito da Onda (e' contenuto nella chiavetta ed anche scaricabile dal sito ondacommunication.com).
6.2) Estrarre dal pacchetto della Onda la sola directory Alice_MOBILE/driver810
6.3) Modificare il file Makefile sostituendo la riga "obj-m :=onda.o" con "obj-m :=option.o"
6.4) Recuperare i sorgenti del proprio kernel
6.5) Copiare il file drivers/usb/serial/option.c nella directory del driver Onda
6.6) Modificare il file come segue:
- dove si trova la riga
#define ONDA_VENDOR_ID 0x19d2
aggiungere sotto la riga
#define ONDA_PRODUCT_MT503HSA 0x0037
- dove si trovano le righe
{ USB_DEVICE(ONDA_VENDOR_ID, xyz) },
(con al posto di xyz qualsiasi cosa), aggiungere sotto la riga
{ USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_MT503HSA) },
6.7) Dare il comando "make" dalla directory del driver Onda
6.8) Copiare il file "option.ko" creato in /lib/modules/xyz/kernel/drivers/usb/serial/ (dove xyz e' la versione del proprio kernel, recuperabile con il comando "uname -r"), rimuovendo dalla stessa posizione il file option.ko.gz (e' preferibile non cancellarlo, ma spostarlo da un'altra parte - ad esempio la directory del driver Onda - per backup).
6.9) eseguire come utente root il comando "depmod -aq"
6.10) dare il comando "modprobe option" e verificare che vengano create le 4 porte usb (vedere passo 4)
6.11) per connettersi seguire il passo 5
7) Per disconnettersi e' sufficiente premere CTRL+C nella shell in cui si รจ lanciato wvdial.
Nota: con il driver option cosi' compilato, si puo' utilizzare anche il programma Alice_MOBILE fornito dall'operatore. Wvdial e' pero' piu' che sufficiente per la connettivita'.
In seguito, dato che a quanto pare nessuno ha intenzione di inserire nel kernel le giuste definizioni, ho avuto modo di utilizzare questa procedura piu' volte per aiutare altre persone a connettersi.
Per me la cosa sarebbe finita qui', quando aggiorno il kernel perdo 5 minuti e sono a posto.
A seguito dell'insistenza di un collega del LugVI, e dato che avevo comunque voglia di giocare un po' con gli script in bash, ho creato un paio di script per permettere a (quasi) chiunque di poter usare la chiavetta senza impazzire.
Attenzione, questi script sono stati provati con successo su queste distro:
- Mandriva 2010.0
- Mandriva 2010.1
- Debian 5
- Gentoo 20100817
- Ubuntu 9.10
- Ubuntu 10.04
Se non dovessero funzionare altrove, niente panico. Contattatemi e vedremo di farli funzionare anche da voi.
NOTE:
Leggete bene le istruzioni contenute nell'archivio prima di fare qualunque altra cosa.
Disattivate il codice pin della sim. Oppure, leggetevi la guida sopra riportata e modificate di conseguenza lo script e la configurazione di wvdial. (vi consiglio di disattivare il codice pin... per farlo basta inserire la sim in un telefono e impostare la disattivazione del codice)
Gli script sono adattabili anche per altre chiavette, dato che in molti casi viene usato il driver option. Se vi serve potete contattarmi.
Ecco il
file
.
Impaginazione by KCS'81