Android Reverse Tethering Over USB

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3288
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Android Reverse Tethering Over USB

Messaggio da joe »

Oggi è arrivato sul mio Moto G (2013) l'avviso che è disponibile Android - 5.0 Lollipop e mi si richiedeva se volessi aggiornare.

Siccome non ho molto traffico mobile associato alla sim del telefono per i vari aggiornamenti delle applicazioni uso la connessione del PC. E mi connetto al PC via bluetooth, mettendo in piedi una sorta di "reverse tethering over bluetooth".

La cosa funziona.
Il problema è che per questo aggiornamento di sistema, android non ne vuole sapere... richiede una connessione wifi...
Che gli frega a lui dico io...

Va bè: non se puede...

Mi è venuto in mente:
ma se collego il cellulare al PC col cavo USB sarà possibile interfacciare in rete i due dispositivi e indurre andorid ad usare la connessione del PC?
Sta volta il collegamento sarebbe via USB, molto più robusto e stabile del Bluetooth. Magari l'aggiornamento potrebbe funzionare senza lamentele.

Ovviamente non ho una chiavetta wi-fi o scheda wifi sul PC.

Cercando in rete ho visto che la cosa sarebbe tecnicamente possibile:
http://forum.xda-developers.com/showthr ... ?t=2287494

Ma in ultima parte dove specifica i comandi da dare su android, è richiesto il cosiddetto "root".
Il mio device invece non è rootato...
Diciamolo meglio.
Sul mio moto g, non ho abilitato la possibilità di ottenere i privilegi di root.
Quindi alcuni comandi necessari come ifconfig route ecc, non posso usarli.

Lato PC/linux non ci sono problemi. Al collegamento del cellulare via bluetooth, dopo aver premuto su "enable usb tethering"
Ho un'interfaccia "usb0" che
- attraverso "udev" viene tirata su con ip 10.*.*.*
- il traffico vi viene dirottato e instradato sull'interfaccia internet che nel mio caso è ppp0 con 4 righe di iptables
- e dnsmasq dovrebbe essere in grado di fornire all'interfaccia remota (sarà tipo usb0 su android o qualcosa de genere) un ip tipo 10.*.*.*, stessa maschera di rete ovviamente

Qual'è il problema secondo me:
non sono in grado di dire ad android di usare tale interfaccia usb0 per instradare il traffico internet.
Perchè non ne ho i privilegi.

Questa cosa però col bluetooth è possibile anche senza privilegi particolari, perchè nelle impstazioni bluetooth appare ad un certo punto una schermata in cui si può spuntare la casellina, utilizza per accesso ad internet.
Casellina che no sembra presente invece nelle impostazioni di questo fantomatico tethering usb.

Ne sapete nulla?

Avatar utente
lablinux
Linux 4.x
Linux 4.x
Messaggi: 1153
Iscritto il: gio 27 nov 2008, 12:23
Desktop: Gnome
Distribuzione: Debian testing
Località: Rho

Re: Android Reverse Tethering Over USB

Messaggio da lablinux »


ilmich
Master
Master
Messaggi: 1563
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 14.2 64bit
Kernel: 4.19.46
Desktop: dwm
Località: Roma

Re: Android Reverse Tethering Over USB

Messaggio da ilmich »

Probabilmente non si puo' fare a meno di seguire la guida con tutti i prerequisiti (quindi rootare il telefono)
comunque puoi sempre aggiornare manualmente, la procedura è semplice
Magari controlla per bene, soprattutto se è brandizzato, gli aggiornamenti ufficiali (e non quello del link che ti ho mandato).. tipicamente si possono scaricare liberamente dai siti dei produttori.
ho visto cose che voi astemi non potete immaginare
https://github.com/ilmich

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3288
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Android Reverse Tethering Over USB

Messaggio da joe »

Ciao avevo provato ma mi ero perso nel sito Motorola...
Alla fine comunque ho aggiornato mentre ero in un locale con rete wifi a scrocco! :D
Per applicare la guida sul wifi mi servirebbe una scheda wifi di cui il PC in uso non dispone.

Sinceramente il fatto di non poter sfruttare la connessione casalinga ne via USB (a meno di root), nè via BlueTooth (perchè la procedura non lo consente insistendo per una connessione wifi...) la vedo come una limitazione.

Probabilmente la penso così perchè non sono riuscito ad applicare la procedura manuale.

Grazie a tutti delle risposte!

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3288
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Android Reverse Tethering Over USB

Messaggio da joe »

Qua a dire il vero spiegano l'update manuale, procedura ufficiale motorola.
Però si basa su un software che andrebbe installato sul PC, il problema è che Motorola Device Manager non è compatibile, almeno ufficialmente con Linux.

https://motorola-global-portal.custhelp ... a_id/87731

ilmich
Master
Master
Messaggi: 1563
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 14.2 64bit
Kernel: 4.19.46
Desktop: dwm
Località: Roma

Re: Android Reverse Tethering Over USB

Messaggio da ilmich »

joe ha scritto:Qua a dire il vero spiegano l'update manuale, procedura ufficiale motorola.
Però si basa su un software che andrebbe installato sul PC, il problema è che Motorola Device Manager non è compatibile, almeno ufficialmente con Linux.
devono per forza fare una guida per windows perchè come sempre ci vogliono i driver usb per fare tutto questo :)
su linux flashare un firmware completo è un gioco da ragazzi con l'sdk di android.. il 'problema' è che gli OTA (update parziali), come probabilmente il tuo, li puoi fare solo dal telefono.
la guida che ti ho postato consisteva nello scaricare il firmware.. caricarlo sulla sd e lanciare l'update tramite gli strumenti messi a disposizione dal telefono stock (cosa che probabilmente fa anche il Device Manager per windows)
ho visto cose che voi astemi non potete immaginare
https://github.com/ilmich

ilmich
Master
Master
Messaggi: 1563
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 14.2 64bit
Kernel: 4.19.46
Desktop: dwm
Località: Roma

Re: Android Reverse Tethering Over USB

Messaggio da ilmich »

joe ha scritto:Sinceramente il fatto di non poter sfruttare la connessione casalinga ne via USB (a meno di root), nè via BlueTooth (perchè la procedura non lo consente insistendo per una connessione wifi...) la vedo come una limitazione.
ehh purtroppo da un certo punto di vista è anche logico.. il tethering è un po' bloccato perchè' i gestori di telefonia in un modo o nell'altro ci vanno a perdere... quindi se vuoi piu' gradi di libertà devi avere privilegi di root.. è inevitabile :D
ho visto cose che voi astemi non potete immaginare
https://github.com/ilmich

Avatar utente
lablinux
Linux 4.x
Linux 4.x
Messaggi: 1153
Iscritto il: gio 27 nov 2008, 12:23
Desktop: Gnome
Distribuzione: Debian testing
Località: Rho

Re: Android Reverse Tethering Over USB

Messaggio da lablinux »

Perché non usi il wifi?

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3288
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Android Reverse Tethering Over USB

Messaggio da joe »

Nell'ordine:

- alla fine l'ho usato il wifi, ma perchè m'è capitato di trovarmi in un locale dove vi era una rete pubblica libera.
- Il mio PC fisso non sembra dotato di adapter wifi... ecco perchè non ho eseguito subito il tutto col wifi.
- la guida consigliata includeva appunto una scheda SD: mi ha lasciato un po' perplesso perchè il motog-2013 che ho io... Quello dal display più piccolo dell'attuale insomma... bene, non ha un'SD esterna, ma solo la memoria interna.

ilmich
Master
Master
Messaggi: 1563
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 14.2 64bit
Kernel: 4.19.46
Desktop: dwm
Località: Roma

Re: Android Reverse Tethering Over USB

Messaggio da ilmich »

joe ha scritto:non ha un'SD esterna, ma solo la memoria interna.
è come il mio.. la scheda sd è emulata.. alias sta una un link simbolico verso il percorso /sdcard/ del filesystem.
Non puo' essere altrimenti perchè la fotocamera non funzionerebbe.. cosi' come tante app che utilizzano lo storage per download/immagini/musica etc etc etc
Sto studiando da poco android, ma da quello che ho capito le app senza privilegi hanno accesso (come storage di file) solo alla memory card.
ho visto cose che voi astemi non potete immaginare
https://github.com/ilmich

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3288
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Android Reverse Tethering Over USB

Messaggio da joe »

Forse l'ho già scritto sopra... sì nel mio primo post in cima, va bè spiego meglio.

In pratica il reverse tethering via bluetooth funziona benissimo.
Senza bisogno di privilegi di root su android.

Di fatto cosa succede:
Sul server (slackware) ho predisposto una configurazione cosiddetta NAP. Avviando "test-nap" il dongle bluetooth comunica ai devices che "darkstar" sta mettendo a disposizione la NAP.
Quindi sul cellulare questo viene visto e se si và nel bluetooth e si seleziona tra i dispositivi "darkstar" che è la nostra slackware, c'è un altro sottomenù con scritto utilizza questa connessione per internet.... Ecco è quello il punto che "forza" di fatto il traffico di android a passare attraverso la nuova interfaccia (non so come si chiami su android perchè non la vedo visto che per usare ifconfig dovrei rootare il telefono).
Lato server l'interfaccia si chiama "bnep0".
Appena dal cellulare si richiede di usare la connessione "darkstar 0" per internet, sul server viene creata l'interfaccia "bnep0" cui assegno un ip grazie ad una regola udev impostata.
Poi grazie a dnsmasq ho stabilito che a chi si collega all'interfaccia "bnep0" venga assegnato automaticamente un ip congruo cone quello di bnep0 stessa, in modo che si parlino.
Infine qualche regola di iptables reindirizza il traffico in entrata da bnep0 verso l'interfaccia di connessione ad internet che nel mio caso è ppp0.

Il reverse tethering via usb è la stessa cosa identica. Nel senso che appena collego il cell al PC viene creata un'interfaccia chiamata ub0 su slackware (invece di bnep0, ma è sempre un'interfaccia di rete...).
È ovvio che anche sul telefono in android venga creata un'interfaccia che potrebbe chiamarsi anch'essa usb0, ma non è detto, il nome potrebbe differire e in ogni caso non lo posso sapere perchè ifconfig non mi funziona da utente semplice.
Il problema è che mentre nella situazione bluetooth vi è la possibilità attraverso le impostazioni bluetooth di indurre tutto il sistema android ad usare l'interfaccia di rete che lavora over bluetooth, invece non esiste un corrispettivo utilizzabile da utente semplice quando siamo nella situazione usb.
Faccio notare come non sia necessario root per instradare il traffico dati sul'interfaccia diciamo "bnep0" collegata alla NAP.
Magari queste considerazioni, se sei uno sviluppatore android potrebbero chissà esserti d'ispirazione! :D

Ad ogni modo grazie delle risposte e del chiarimento sul discorso SDcard. Quindi potevo anche applicare la guida.

Alla prossima! :)

ilmich
Master
Master
Messaggi: 1563
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 14.2 64bit
Kernel: 4.19.46
Desktop: dwm
Località: Roma

Re: Android Reverse Tethering Over USB

Messaggio da ilmich »

Premesso che alla fine android è linux, la chiave sta tutta qui'
joe ha scritto: problema è che mentre nella situazione bluetooth vi è la possibilità attraverso le impostazioni bluetooth di indurre tutto il sistema android ad usare l'interfaccia di rete che lavora over bluetooth, invece non esiste un corrispettivo utilizzabile da utente semplice quando siamo nella situazione usb.
non te lo fanno fare da utente normale con la rom ufficiale, non è che non si possa fare.
Android vedilo piu' o meno come un sistema linux con utente root 'staccato'.. solo le applicazioni di sistema (che tecnicamente risiedono sotto il percorso /system) hanno accesso root senza alcun problema.. non so bene come facciano, ma vedendo come si roota il telefono immagino che il comando su (lo stesso che troviamo nei sistemi linux) funzioni solo per quelle.
Tecnicamente se scrivessi un'app che fa sto lavoro e la installassi sotto /system saresti ok.. peccato che per fare una cosa del genere devi farti una rom ad-hoc e flashare.
L'applicazione per le impostazioni di sistema non avendo la paginetta con le impostazioni usb non te lo fa fare.
joe ha scritto:Faccio notare come non sia necessario root per instradare il traffico dati sul'interfaccia diciamo "bnep0" collegata alla NAP.
qui potrei dirti qualche fesseria, ma immagino che il bluetooth/wifi sia meno 'bloccato' a livello di privilegi (immagina come quando su linux devi appartenere al gruppo audio per poter usare la scheda audio).

comunque io non so se hai paura piu' della garanzia, piuttosto che romperlo, ma ti suggerisco di sbloccarlo.. ci puoi fare molte piu' cose e ogni tanto ti sembra persino di smanettare con linux 8)

EDIT: sto iniziando a sviluppare, mi informero' meglio ;)
ho visto cose che voi astemi non potete immaginare
https://github.com/ilmich

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3288
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Android Reverse Tethering Over USB

Messaggio da joe »

Ho dato nuovamente un'occhiata a questo aspetto, cioè far connettere il telefono attraverso la connessione internet del PC collegandoli tramite cavo USB. Sul PC ovviamente c'è slackware.

Sono inciampato in questo link:
http://blog.mathieu.carbou.me/post/6045 ... android-22

Ma non capisco se sia possibile, secondo quanto spiega lì, ottenere il tutto con un telefono non rootato.
In particolare il punto 4:
STEP 4:

Setup usb0 interface of your phone. You have to options:

1. From your computer, execute:

./adb shell netcfg usb0 dhcp

2. Or in a root terminal on your phone, type:

su
netcfg usb0 dhcp
Come si vede, sembra che l'alternativa 1, che richiede "Android developer bridge" installato sul sistema connetta il cellulare lavorando dal PC col comando "adb" che agisce sull'interfaccia usb0 che viene creata quando attacco il cell e abilito il tethering via usb.

La domanda sarebbe semplicemente se sia possibile ottenere la configurazione senza dover avere accesso di root sul telefono.
Grazie in anticipo

Rispondi