Ce qui suit fonctionne pendant un certain temps, mais uniquement pour le navigateur.
Lorsque vous branchez votre téléphone via USB et choisissez Internet pass-through, vous devriez obtenir un nouveau périphérique RNDIS (usb0 ou usb1). Pour ubuntu, modifiez /etc/network/interfaces et ajoutez les lignes suivantes :
iface usb0 inet dhcp
iface usb1 inet dhcp
Cela attribuera automatiquement une adresse IP lors de l'ajout de l'appareil. Si une adresse réseau n'est pas attribuée automatiquement à usb0 ou usb1, vous devez le faire manuellement.
Ensuite, vous devez configurer NAT sur votre ordinateur Linux. Quelque chose comme :
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
Vous avez également besoin d'un serveur DNS :
sudo apt-get install bind9
Cela fonctionne pendant quelques minutes, mais au bout d'un moment, le téléphone arrête de chercher HTC Sync et se déconnecte.
Pour les téléphones rootés
Vous pouvez vous connecter en permanence si vous avez un téléphone rooté (fre3vo a fonctionné pour moi). Exécutez ce qui suit avec adb.
Activer le mode USB pour le réseau et l'adb :
adb shell echo 6 > /sys/devices/platform/msm_hsusb/usb_function_switch
Attribuez une adresse IP au périphérique USB0 sur le téléphone :
adb shell ifconfig usb0 192.168.99.5 netmask 255.255.255.0 up
Ajoutez une route par défaut. L'adresse IP doit être l'adresse IP attribuée à usb0 sous Linux :
adb shell route add default gw 192.168.99.1 dev usb0
Définissez le serveur DNS. Il s'agit du serveur DNS ouvert de Google, mais il peut s'agir de l'adresse IP de votre ordinateur Linux si vous disposez d'un serveur DNS :
adb shell setprop net.dns1 8.8.8.8
A fait ce petit bash pour tout automatiser. Branchez simplement votre téléphone en mode charge sur votre ordinateur et lancez ce 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