Quanto segue funziona per un po', ma solo per il browser.
Quando colleghi il telefono tramite USB e scegli Internet pass-through, dovresti ottenere un nuovo dispositivo RNDIS (usb0 o usb1). Per Ubuntu, modifica /etc/network/interfaces e aggiungi le seguenti righe:
iface usb0 inet dhcp
iface usb1 inet dhcp
Questo assegnerà automaticamente un IP quando il dispositivo viene aggiunto. Se un indirizzo di rete non viene assegnato automaticamente a usb0 o usb1, devi farlo manualmente.
Quindi devi configurare NAT sul tuo computer Linux. Qualcosa come:
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
Hai anche bisogno di un server DNS:
sudo apt-get install bind9
Funziona per alcuni minuti, ma dopo un po' il telefono smette di cercare HTC Sync e si disconnette.
Per i telefoni rooted
Puoi connetterti in modo permanente se hai un telefono rootato (fre3vo ha funzionato per me). Esegui quanto segue con adb.
Abilita la modalità USB per rete e adb:
adb shell echo 6 > /sys/devices/platform/msm_hsusb/usb_function_switch
Assegna un IP al dispositivo usb0 sul telefono:
adb shell ifconfig usb0 192.168.99.5 netmask 255.255.255.0 up
Aggiungi un percorso predefinito. L'IP dovrebbe essere l'IP assegnato a usb0 in linux:
adb shell route add default gw 192.168.99.1 dev usb0
Imposta il server DNS. Questo è il server DNS aperto di Google, ma può essere l'IP del tuo computer Linux se hai un server DNS:
adb shell setprop net.dns1 8.8.8.8
A ha creato questo piccolo bash per automatizzare tutto. Basta collegare il telefono in modalità di ricarica al computer ed eseguire questo bash.
#!/bin/bash
/opt/android-sdk-update-manager/platform-tools/adb shell 'echo 6 > /sys/devices/platform/msm_hsusb/usb_function_switch'
sleep 1
/opt/android-sdk-update-manager/platform-tools/adb shell ifconfig usb0 192.168.99.5 netmask 255.255.255.0 up
sleep 1
/opt/android-sdk-update-manager/platform-tools/adb shell setprop net.dns1 8.8.8.8
get_ip ()
{
ifconfig usb0 | grep inet | awk '{print $2}' | sed 's/addr://' | grep .
}
echo "waiting for IP on computer usb0"
while [[ `get_ip` < 192 ]];do sleep 2; done
ip=`get_ip`
echo "IP adress is $ip "
/opt/android-sdk-update-manager/platform-tools/adb shell route add default gw $ip dev usb0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE