Android Handy als Modem unter Linux (Tethering)

Update: Soweit ich es testen konnte, funktioniert das Script mit Android 1.5 (Cupcake), 1.6 (Donut) und 2.0 (Eclair).

Vorweg: Es sollte klar sein, dass normales "Notebook"-Surfen meistens um einiges Trafficintensiver ist. Immer darauf achten, nicht über seine Volumen zu kommen, falls vorhanden. Und unbedingt im Vertrag nachschauen ob Tethering erlaubt ist!

Nachdem ich jetzt ein HTC Magic habe, habe ich mich mal umgeschaut wie man sein Laptop unterwegs über sein Android Handy mit Internet versorgen kann.

Unter Windows kann man PDANet benutzen. Soll wohl funktionieren, aber ist aber nach der Trial-Phase nurnoch für HTTP zu benutzen.

Aber zum Glück habe ich Ubuntu 8.10 (Intrepid Ibex) auf meinem eeePC – Da kann man das ganze kostenlos mit nur wenigen Zeilen erledigen. Auch wenn diese Anleitung mit Ubuntu getestet wurde, sollte es auf so ziemlich jedem Linux System laufen auf dem auch openVPN läuft.

OpenVPN installieren

Ist über Aptitude schnell erledigt:

sudo aptitude install openvpn

Android SDK runterladen

Bitte besorgt euch immer die passende und aktuellste Version. Nachfolgend ist alles mit der (momentan) aktuellen Version 1.5 RC3 beschrieben (Auf die Version passend zum Handy-OS achten).

Hier gibt es die aktuelle Android SDK

Ladet euch die SDK runter und entpackt sie in einen Order eurer Wahl (bei mir ~/android-sdk) und kopiert das Programm adb in /usr/bin/:

sudo cp ~/android-sdk/tools/adb /usr/bin/adb
sudo chmod a+x /usr/bin/adb

Der Rest der SDK kann gelöscht werden. Wir jetzt nicht mehr benötigt.

Android USB Debugging aktivieren

Damit wir auf das Handy zugreifen können, muss das USB Debugging aktiviert sein. Einfach über Einstellungen -> Anwendungen -> Entwicklung -> USB Debugging aktivieren.

Jetzt das Handy über USB an den PC anschließen. Mit folgendem Befehl können wir überprüfen ob das Handy richtig erkannt wird:

sudo adb devices

In der Liste sollte ein Device auftauchen. Die genaue ID ist bei jedem Handy unterschiedlich.

List of devices attached
HTXXXXXXXXX device

AziLink installieren

Jetzt müssen wir AziLink auf dem Handy Installieren. Dieses Programm startet dann einen openVPN Server auf dem Handy, worüber wir dann die Internetverbindung beziehen.
Auf der offiziellen AziLink Seite gibt es immer die aktuellste Version. Ich werde hier mit Version 2.0.2 Arbeiten.

wget http://azilink.googlecode.com/files/azilink-2.0.2.apk
wget http://azilink.googlecode.com/files/azilink.ovpn
mv azilink.ovpn ~/azilink.ovpn
sudo adb install azilink-2.0.2.apk

Damit ist AziLink auf dem Android installiert und sollte in der App-Liste stehen. Das Icon ist eine Motte.

Verbindungsscript erstellen

Jetzt brauchen wir nurnoch ein kleines Script welches automatisch die Verbindung aufbaut:

sudo nano /usr/bin/azilink

Folgendes eingeben:

Update 28.2.2010: Nachdem viele User ein Problem mit fehlenden Rechten zu haben scheinen seit Ubuntu 9.04, habe ich die Befehle unten mit sudo vorangesetzt. Es sollte jetzt deutlich weniger Probleme geben.

#! /bin/sh
sudo adb forward tcp:41927 tcp:41927
sudo echo "nameserver 192.168.56.1" > /etc/resolv.conf
sudo openvpn --config ~/azilink.ovpn

Jetzt noch kurz mit sudo chmod a+x /usr/bin/azilink den Code ausführbar machen und fertig.

Verbindung starten

Als erstes muss AziLink auf dem Handy den VPN starten. Dazu AziLink starten und "Service Active" auswählen.
Der Status sollte nun "Waiting for connection" sein.
Nach der Benutzung den Service auch wieder schließen, da er nur unnötigt Strom zieht.

Jetzt einfach mit dem Befehl azilink die Verbindung starten.
Mit Ctrl+C wird die Verbindung wieder geschlossen.

Schlusswort

Wie immer: Kommentare sind gerne erwünscht. Ich hoffe ich konnte mit der Anleitung helfen ;)

4 Responses to “Android Handy als Modem unter Linux (Tethering)”

  1. JK

    Dein Script /usr/bin/azilink funktioniert so nicht, da ein normaler User normalerweise keine Rechte auf /etc/resolv.conf und für das Anlegen von TUN/TAP-Devices hat. Ich habe es ein wenig modifiziert:

    #!/bin/sh
    sudo adb forward tcp:41927 tcp:41927
    sudo cp /etc/resolv.conf /etc/resolv.conf.pre_azilink
    sudo sh -c 'echo "nameserver 192.168.56.1" >/etc/resolv.conf'
    sudo openvpn –config ~/azilink.ovpn
    sudo cp /etc/resolv.conf.pre_azilink /etc/resolv.conf
    # EOF

    Ansonsten super Anleitung, danke.

    JK

    Reply
  2. Fabian

    Super Anleitung, vielen Dank!

    Jetzt kann ich endlich unterwegs und auf Arbeit mit meinem Linux ins Netz!

    Eine Sache wäre da noch anzumerken:
    Es funktionieren unter Ubuntu (9.10) weder
    -> sudo echo "nameserver 192.168.56.1" > /etc/resolv.conf
    noch
    -> sudo sh -c 'echo "nameserver 192.168.56.1" >/etc/resolv.conf'

    Einfach als 'su' oder 'sudo' in die Datei per Hand eintragen und falls
    wieder obsolet mit '#' auskommentieren!

    Gruß
    Fabian

    Reply
  3. Shoko

    Das Problem mit echo ist bekannt, aber so sollte es funktionieren:

    echo “nameserver 192.168.56.1″ | sudo tee -a /etc/resolv.conf

    Reply

Leave a Reply