Das Folgende funktioniert eine Weile, aber nur für den Browser.
Wenn Sie Ihr Telefon über USB anschließen und Internet-Passthrough wählen, sollten Sie ein neues RNDIS-Gerät (usb0 oder usb1) erhalten. Bearbeiten Sie für Ubuntu /etc/network/interfaces und fügen Sie die folgenden Zeilen hinzu:
iface usb0 inet dhcp
iface usb1 inet dhcp
Dadurch wird automatisch eine IP zugewiesen, wenn das Gerät hinzugefügt wird. Wenn eine Netzwerkadresse nicht automatisch USB0 oder USB1 zugewiesen wird, müssen Sie dies manuell tun.
Dann müssen Sie NAT auf Ihrem Linux-Computer einrichten. Etwas wie:
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
Außerdem benötigen Sie einen DNS-Server:
sudo apt-get install bind9
Dies funktioniert einige Minuten lang, aber nach einer Weile gibt das Telefon die Suche nach HTC Sync auf und trennt die Verbindung.
Für gerootete Telefone
Sie können sich dauerhaft verbinden, wenn Sie ein gerootetes Telefon haben (fre3vo hat bei mir funktioniert). Führen Sie Folgendes mit adb aus.
USB-Modus für Netzwerk und ADB aktivieren:
adb shell echo 6 > /sys/devices/platform/msm_hsusb/usb_function_switch
Weisen Sie dem USB0-Gerät auf dem Telefon eine IP zu:
adb shell ifconfig usb0 192.168.99.5 netmask 255.255.255.0 up
Fügen Sie eine Standardroute hinzu. Die IP sollte die IP sein, die usb0 in Linux zugewiesen wurde:
adb shell route add default gw 192.168.99.1 dev usb0
Stellen Sie den DNS-Server ein. Dies ist der offene DNS-Server von Google, aber es kann die IP Ihres Linux-Computers sein, wenn Sie einen DNS-Server haben:
adb shell setprop net.dns1 8.8.8.8
A hat diese kleine Bash erstellt, um alles zu automatisieren. Schließen Sie einfach Ihr Telefon im Lademodus an Ihren Computer an und führen Sie diese Bash aus.
#!/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