HOWTO: connettersi ad Internet con un cellulare GPRS e un dongle Bluetooth

Se avete cercato una guida che spieghi come connettere un cellulare GPRS alla vostra linux box sicuamente vi sarete imbattuti in una guida piuttosto semplice: cercando su google viene fuori sempre la stessa, copiaincollata in una decina di blog.
Ovviamente però trattandosi di Linux le cose non possono essere così semplici, e infatti le guide sono tutte un pò incomplete. Per fortuna che io sono testardo e ho fatto prove finchè non ne sono venuto a capo. Chi usa linux dev'essere un tantino masochista.
 
Ma andiamo con ordine.
 
Anzitutto vi serve un cellulare GPRS con connessione Bluetooth, un dongle BT (o il supporto nativo del vostro portatile) ed un abbonamento adatto col vostro gestore telefonico. 
Per quanto riguarda il supporto Bluetooth di Linux di solito siamo piuttosto fortunati, praticamente qualsiasi dongle viene riconosciuto subito alla connessione (almeno a me è capitato così).
Poi vi servono due programmi: Blueman e GnomePPP (o Kppp se usate KDE); questa guida riguarda Gnome ed eeeUbuntu, che alla fine ho scelto come distribuzione da installare sul piccolissimo portatile Asus).
Presumendo che stiate usando Debian o derivate o cmq una distribuzione che usi apt come sistema di pacchetti, prima di installare Blueman occorre aggiungere il repository da cui scaricare Blueman:
Aprite un Terminale ed il file /etc/apt/sources.list con un editor di testo digitando:

sudo nano /etc/apt/sources.list

ed aggiungeteci (non importa dove, ma meglio in fondo) la riga:

deb http://download.tuxfamily.org/blueman hardy blueman

Salvate e chiudete il file con Ctrl-o e Ctrl-x
Fatto questo occorre aggiungere la chiave GPG per il repository appena insertito con il comando:

wget http://download.tuxfamily.org/blueman/blueman.gpg -O- | sudo apt-key add -

A questo punto bisogna aggiornare il database apt con:

sudo apt-get update

Ed installare i pacchetti con:

sudo apt-get install blueman gnome-ppp

Fatto tutto 'sto casino, e se il tutto è andato bene, potete finalmente passare avanti e configurare la connessione.
Aprite Blueman dal menù di Gnome (non so precisamente dove lo metta...).
Ora bisogna aggiungere il cellulare alla lista dei dispositivi premendo il pulsante Inquiry e selezionando il telefono dalla lista che appare, poi cliccare Bind. Se vi viene richiesto il PIN inseritelo (va messo lo stesso nel telefono e nel PC).
Naturalmente il telefono dev'essere acceso e impostato in modalità Visibile. Consiglio anche di cambiare il nome predefinito del cellulare, per non rischiare di ritrovarvi come me l'altro giorno in treno, circondato da TRE Sony W300i in modalità visibile, tra cui il mio...
Cliccate Edit / Services, quindi cliccate bottone col divieto d'accesso nella colonna centrale accanto a Serial per selezionare il servizio Porta Seriale.
Cliccate sul bottone coi tre puntini nella colonna destra (configure) per aggiungere una porta seriale, poi cliccate Add Serial port ed infine selezionate nella casella Host il vostro telefono.
Cliccate poi Services segliendo DUN: Dial Up Networking dalla lista che appare. 
Infine cliccate il bottone Add Port e vedrete la porta apparire nell'elenco, accoppiata alla periferica /dev/rfcomm0 o /dev/rfcomm1 a seconda della vostra configurazione  Bluetooth.
Chiudete la finestra di configurazione di Blueman e passate ad impostare GnomePPP.
Aprite GnomePPP dal menù, poi cliccate Settings, quindi:

Device /dev/rfcomm0

o

Device /dev/rfcomm1

a seconda di cosa è impostato su Blueman

Type Analog Modem
Speed 460800
Phone line Tone
Volume Off

Ora cliccate Init Settings
Nella riga ini2 dovete inserire questa stringa:

AT+cgdcont=N,"ip","APN"

Dove al posto di N dovete inserie il numero con cui è memorizzato il profilo connessione internet nel vostro telefono.
Tipicamente, se avete un telefono branded di un certo operatore, dovete inserire 1 ma ad esempio nel mio caso (apparecchio branded TIM ma abbonamento Wind) occorre inserire 5 (ovvero la posizione della connessione nella lista delle configurazioni internet del vostro cellulare).
Anche la stringa da inserire al posto di APN dipende dal vostro gestore, come dalla lista qui sotto.

  • ibox.tim.it
  • web.omnitel.it
  • internet.wind

La stringa di inizializzazione è il comando che viene inviato al telefono, che altro non è che un emulatore di modem e quindi utilizza lo stesso set di comandi, detti Comandi AT perchè iniziano tutti con questa sigla.
Ora chiudete la finestra dei settings, togliete la spunta da "wait for dialtone" ed inserite username e password (qualsiasi cosa va bene, consiglio il nome del gestore telefonico). Nel campo Phone Number dovete inserire:

*99***N#

Anche qui, al posto di N dovete mettere il medesimo numero utilizato nella stringa di inizializzazione che avete impostato qualche passaggio fa.
Se tutto è andato a buon fine, cliccando Connect vi collegherete ad Internet utilizzando il telefono cellulare e la connessione Bluetooth.
Naturalmente non è tutto rose e fiori e se non riuscite a connettervi andate a vedere il log di gnome-ppp premendo l'apposito bottone dopo aver fatto connect. Se nel log c'è qualcosa tipo pppd error 2 o pppd error 3 o "permission problem", è un problema di setuid.
Ora io non ho capito bene a cosa serva setuid nè cosa diavolo sia o perchè su ubuntu che avevo prima non dà fastidio e qua si... Sta di fatto che basta fare

sudo chmod 4755 /usr/sbin/pppd

Dove spiegano cos'è setuid dicono che questo potrebbe portare disastri irreparabili e il cielo potrebbe cadervi sulla testa, ma se volete connettervi è un rischio calcolato.
Ah, volendo potevate usare anche GPRS EasyConnect, (purtroppo lo sviluppo del programma è stato interrotto per scaristà di tempo dello sviluppatore, che è il rischio dei prodotti non commerciali), e vi risparmiavate un bel pò di lavoro dato che il tool ha al proprio interno una nutrita serie di stringhe di inizializzazione per moltissimi telefoni.
UPDATE; GPRS Easy Connect è scaricabile da http://drsjlazar.blogspot.com/2008/06/gprs-easy-connect-for-ubuntu-hardy.html
E si, con Windows ed il programma di gestione del telefono facevate molto prima, perchè la configurazione la faceva da solo :D ma avete Linux e quindi vi beccate queste "scommodity".