Alcuni utilizzatori di android kitkat o lollipop si sono accorti che, sebbene sia possibile abilitare il data tethering tramite i menù di impostazione del telefono, e collegare altri dispositivi al proprio telefono via wifi, successivamente non è possibile navigare da quelli mentre la connettività dal proprio telefono continua a funzionare regolarmente.
Avendo lo stesso problema, ho trovato una soluzione non originale ma ben spiegata e soprattutto funzionante qui. La soluzione fornita nel forum da obn3g0n, che ringrazio, richiede un minimo di competenza tecnica; quanto segue è di fatto la traduzione in italiano delle istruzioni di obn3g0n, tuttavia è stata realizzata su un sistema Linux piuttosto che Windows. La soluzione non richiede il rooting del telefono.
Il problema è dovuto all’assenza o all’errata configurazione di una impostazione di configurazione nascosta all’interno del telefono android, chiamata tether_dun_required: questa, per consentire il tethering dovrebbe essere impostata a 0, ma su alcuni modelli è impostata a 1 oppure, come nel mio caso, è assente.
Per impostare correttamente la variabile di configurazione, senza necessità di rootare il telefono, occorre seguire i seguenti passi (N.B. come premesso, le istruzioni si applicano a un sistema linux, ma su Windows la procedura è pressoché analoga).
- Scaricare Android SDK (Developer Toolkit) per il proprio computer da qui: http://developer.android.com/sdk/index.html. Utilizzeremo solo i Platform Tools, che si possono trovare anche distribuiti da fonti non ufficiali, con dimensioni di download più ridotte. Personalmente preferisco le sorgenti ufficiali.
- Sui sistemi Linux non è necessario scaricare driver. Potrebbe essere necessario effettuare qualche modifica di configurazione, sotto /etc/udev/rules.d, ben spiegata su altri forum: nel mio caso non è stato necessario.
- Scaricato Android SDK per linux, dovreste avere un archivio di nome android-sdk_r24.4.1-linux.tgz (il numero di versione potrebbe essere diverso), create una cartella Android o con un nome di vostro interesse e spostateci l’archivio. Estraete quindi il contenuto dell’archivio tar xvfz android-sdk_r24.4.1-linux.tgz
- L’archivio sarà estratto in una cartella android-sdk-linux. Portatevi all’interno della cartella android-sdk-linux/tools, e lanciate l’applicazione android (./android)
- Si aprirà la finestra di android sdk manager. Selezionate Android SDK Platform-tools e cliccate su Install. Accettate la licenza e avviate il download. Al termine chiudete la finestra del manager.
- Ora all’interno della cartella android-sdk-linux/platform-tools troverete l’applicazione adb.
- Tornate al vostro telefono, entrate in “Developer mode” cliccando 7 volte su “About phone” o seguendo la procedura indicata per il vostro dispositivo (nel mio caso cliccando 7 volte sulla versione del firmware).
- Una volta abilitato “Developer mode” entrate nel relativo menù e abilitate “USB debugging”.
- Collegate il telefono alla porta usb del PC.
- Sul pc avviate adb server come utente root:
sudo adb kill-server
sudo adb start-server
sudo adb devices
Seguire le istruzioni specifiche su altri forum se ciò non funzionasse sulla vostra macchina; per lanciare sudo dovete ovviamente disporre delle credenziali di root. Dopo aver inviato l’ultimo comando, dovreste vedere l’identificativo del vostro telefono. - Se in qualunque momento apparisse l’avviso che dovete autorizzare o consentire l’accesso sul telefono, effettuate l’operazione sul vostro dispositivo mobile. Dovrebbe essere necessario effettuare l’autorizzazione una sola volta durante la sessione.
- Siamo a buon punto… Ora inviate il seguente comando, tutto intero, senza modifiche e su un’unica linea:
adb shell content insert --uri content://settings/global --bind name:s:tether_dun_required --bind value:i:0
Questo imposta la variabile di configurazione richiesta al valore 0.
A seconda di come avete installato l’SDK, il comando adb potrebbe dover essere avviato fornendone il path completo, ad esempio digitando, dalla cartella in cui si trova:./adb
- Riavviate il telefono, e inviate il seguente comando per verificare che la variabile sia ancora al valore corretto (tutto intero, senza modifiche e su un’unica linea):
adb shell content query --uri content://settings/global --where "name='tether_dun_required'"
La variabile dovrebbe essere impostata a 0. Potete lanciare lo stesso comando prima di effettuare l’impostazione per verificare se la variabile era già presente e/o impostata correttamente; nel mio caso era assente. Se il comando così com’è dovesse dare errore potete inviarlo nel modo seguente:adb shell content query --uri content://settings/global --where "name=\'tether_dun_required\'"
- Potete ora spegnere “Usb debugging” e “Developer mode”.
- Alcuni forum consigliano di verificare nelle impostazioni dei propri APN che siano impostati solo protocolli IPv4 e di togliere qualunque cosa faccia riferimento a IPv6, nel mio caso non è stato necessario.
- Se si naviga in tethering da PC, sempre secondo alcuni forum, qualora il proprio provider telefonico preveda limitazioni di uso del traffico dati (sul tethering o sulla navigazione da pc), potrebbe essere necessario usare plugin in grado di modificare lo “User agent” inviato dal proprio browser. Occorrerebbe pertanto utilizzare un plugin tipo “User agent switching” o simili oppure modificarlo direttamente dalle impostazioni del browser. Attenzione: è possibile che in questo modo l’esperienza di navigazione sia diversa da quella usuale.