Natives iPhone Tethering unter Linux

Nachdem die native Tetheringfunktion auf meinem iPhone Classic nun endlich aktiviert ist, will sie natürlich auch genutzt werden. Doch wie schaut es aus unter Linux, bzw. Ubuntu mit Gnome im Speziellen? Ich nehme das Ergebnis mal vorweg: perfekt!

Vorweg sei gesagt: Für das nachfolgende braucht man KEINEN Jailbreak! Bei mir war er nur nötig um die Tetheringoption freizuschalten. Für iPhone 3G und 3GS die Tethering aktiviert haben, geht es ohne!

Das iPhone kennt zwei Möglichkeiten des Tetherings: über das USB-Kabel und über Bluetooth. USB wäre die bessere Möglichkeit, da es definitiv akkuschonender ist, also dort mal zuerst geschaut. Ziemlich schnell war klar, das es relativ aussichtslos  sein würde, da unter Windows und OSX ein neuer, proprietärer Netzwerkadapter angelegt wird und es dafür bislang keine Treiber gibt um ihn auch unter Linux zu benutzen. Bleibt also noch Bluetooth.


Update 1 (ungetestet):

Ich bekam gerade folgenden link zugeschickt: iPhoneEthernetDriver Damit soll auch das USB-Tethering möglich sein, durch ein neues Kernel Modul.

Update 2 (getestet):

Der obige Link funktioniert! Damit hat man dann auch USB-Tethering :) Dennoch finde ich Bluetooth (vorausgesetzt, es geht nicht um jede Minute Akkuleistung) irgenwie charmanter, so ganz ohne Kabel… (Danke Michi!)

Über Bluetooth wird ein Personal Area Network aufgebaut (PAN). Dies ist ein standardisiertes Verfahren und sollte daher ohne Probleme funktionieren.

Es gibt zwei Wege, die Bluetooth-PAN Verbindung zu nutzen: mit dem NetworkManager oder ohne NetworkManager. Bei beiden Methoden muss das iPhone mit dem PC gepaired sein, wovon ich im Folgenden einfach ausgehe (Bei Problemen: Bluetooth im ubuntuusers.de Wiki). Wer den NetworkManager nutzt, kann gleich zu Methode 2 gehen.

Methode 1: Ohne NetworkManager

Dafür muss die Bluetoothverbindung und das PAN manuell erstellt werden. Zuerst muss die Hardwareadresse des iPhone rausgefunden werden:

hcitool scan

Oder man schaut unter Einstellungen -> Allgemein -> Info am iPhone.

Nun baut man zuerst das PAN auf (statt 00:00… seine eigene Adresse einsetzen):

pand -c 00:00:00:00:00:00 -n

Danach das neue erstellte Interface hochfahren:

ifconfig bnep0 up

Und sich per DHCP eine IP-Adresse vom iPhone holen:

dhclient bnep0

Dies kann man sich auch zukünftig ersparen, in dem man folgende Zeile in die /etc/network/interfaces einträgt:

iface bnep0 inet dhcp

Nun sollte man über das iPhone online sein! Um die Verbindung wieder abzubauen, einfach folgendes eingeben:

ifconfig bnep0 down
pand -K

Das ganze geht auch etwas komfortabler mit einem Script (bei mir unter /usr/local/bin/tether):

#!/bin/sh
 
pand='/usr/bin/pand'
ifup='/sbin/ifup'
ifdown='/sbin/ifdown'
phone_address='00:1C:B3:56:34:C6'
 
case "$1" in
 
  start)
 
        echo "Connecting to iPhone : "
        $pand --connect $phone_address -n
        sleep 2
        $ifup bnep0
        echo "done."
   ;;
 
  stop)
 
        echo "Disconnecting from iPhone : "
        $ifdown bnep0
        sleep 2
        $pand -K
        echo "done."
   ;;
 
  *)
 
        echo "Usage: tether { start | stop  }"
 
        exit 1
 
   ;;
 
esac
 
exit 0

Methode 2: Mit NetworkManager

Wenn man den NetworkManager benutzt, was man per default macht wenn man ein aktuelles Ubuntu einsetzt, dann kommt man mit der obigen Methode nicht weit, da viele Programme, darunter auch der Firefox, darauf warten, dass der NetworkManager das “online” Signal gibt. Da er allerdings vom Konsolengetippe nichts mitbekommt, ist man noch “offline”.

Leider klappt es nicht von Haus aus mit dem Gnome Bluetooth Manager. Es gibt allerdings einen, in meinen Augen wesentlich besseren Ersatz für diesen: Blueman

In Karmic ist er erfreulicherweise in den offiziellen Paketquellen enthalten, leider aber sehr veraltet. Um das Tethering benutzen zu können benötigt man eine aktuelle Version aus ppa:blueman/ppa

Nach einem beherzten apt-get update und apt-get install blueman wird der alte Gnome Bluetoothmanager gelöscht und durch Blueman ersetzt.

Nun kann man das iPhone als neues Gerät einrichten. Nachdem man dies getan und dem iPhone in Blueman vertraut hat, kann man mittels Rechtsklick auf das Gerät in der Geräteliste das Tethering mit Aktivierung des Network Acces Points starten. Der Rest sollte automatisch geschen: Es wird eine neue Verbindung im NetworkManager angelegt und aktiviert, es wird sich per DHCP eine Adresse geholt und die Routen werden gesetzt; man ist online, technisch und, was viel wichtiger ist, auch aus Sicht des networkManagers.

Das einzige was nun zukünftig getan werden muss, um eine Verbindung aufzubauen ist in meinem Falle ein Rechtsklick auf das Blueman Trayicon -> Letzte Verbindungen -> Netzwerkzugriff auf Jan’s iPhone

Natürlich sind nicht alle Sachen von mir herausgefunden worden. Leider ist mir der Firefox abgestürzt und die Tabs sind weg. Daher kann ich keine Quellenangaben der (meist englischen) Seiten geben. Daher geht mein Dank an das große, weite, allwissende Internet im Allgemeinen! Ich hoffe auf euer Verständniss.


08. Januar 2010 von Jan
Kategorien: iPhone, Linux, Planet | 18 Kommentare

Änliche Artikel:

Kommentare (18)

  1. Wäre nicht vielleicht ein beherztes
    apt-get update ausreichend? Also ohne das “install” mittendrin?!

  2. besser is’ das! :) korrigiert, danke!

  3. Ich glaub du hast dich entweder nicht genug informiert, oder einfach falsch informiert! der USB-Tether hat nichts mit proprietärer Verfahren zu tun.



    “aber ist natürlich einfach alles auf Bösen Unternehmen zu werfen ;-)” :Sarkasmus

  4. Ok, ich gebe dir in Teilen recht. Man kann die USB-Verbindung nutzen, aber nicht in dem Sinne, wie es für das Tethering benötigt wird. Ich habe lange Zeit die Internetverbindung über das USB-Kabel genutzt. (siehe die iPhone-Übersichtsseite).

    Ich lasse mich allerdings gerne eines besseren belehren, und mich davon überzeugen, dass das im iPhone OS eingebaute Tethering über USB unter Linux funktioniert.

    Und nein, ich finde nicht das Apple böse ist ;)

  5. ok, just in dem Moment, als ich deinen Kommentar beantwortet habe, bekam ich über Twitter einen Link zum USB-Kernelmodul. Siehe oben. Muss ich mal testen :)

  6. Schau dir doch mal PdaNet aus dem Cydia Store an,
    damit kannst du ein quasi Wlan AP einrichten der als Router für UMTS dient, ganz ohne irgendwelche Beschränkungen :) (Vorrausgesetzt du kaufst die Pro Version)

  7. Sorry, ich habe vergessen es zu verlinken! bei mir funktioniert es sehr gut unter BSD
    http://www.cs.toronto.edu
    Forum: Tether uber USB – Linux

  8. USB-Tethering funktioniert, siehe Update oben!

  9. Habe echt bei der Überschrift überlegen müssen was Tethering bedeutet. Schreibt man heute nicht mehr: Native iPhone Anbindung an Linux? ist das uncool?

  10. Nein ist es nicht ;) , aber “Tethering” oder evtl besser “Internet-Tethering” ist ein fester Begriff beim iPhone und auch bei T-Mobile, wo man zum Beispiel die “Tethering-Option” zubuchen kann. Auf dem iPhone Display steht auch “Internet-Tethering”

    Aber ansonsten gebe ich dir in großen Teilen Recht, was unsere verdenglischung angeht…

  11. @DarwinOS jo, die Seite kenne ich, schau mal hier: http://www.ausminternet.de/?p=924 ist ja aber nun überflüssig :)

  12. @Jan: Ich muss dich korrigieren, arbeite im Kundendienst bei T-Mobile und die Option heißt anders, das Tethering hat sich halt nur im Gebrauch durchgesetzt.

    Offizieller/Vermarkteter Name der Option ist “Modem Nutzung” und “Modem Nutzung S”. In der Software heißt es aber auch wieder anders, der übliche Magenta-Wahnsinn :D

  13. @McDope Hmm.. ich gebe mich geschlagen! Aber in der Regel weiß jeder was gemeint ist, wenn es um “Tethering” geht. Aber danke für die Klarstellung.

    Btw.: gut jemanden bei T-Mobile zu kennen ;)

  14. Pingback: Aktuelle Links (gespeichert vom 08.01.2010 bis zum 13.01.2010) « Der Webanhalter

  15. Pingback: Das iPhone OS und Linux – ein aktueller Überblick| virtualpixel.de

  16. Eben eher zufällig beim Kompilieren eines 2.6.34er Kernels folgendes gesehen:

    Apple iPhone USB Ethernet driver

    zu finden unter: Device Drivers -> Network device support -> USB Network Adapters

    Schnell als Modul kompiliert, das Programm ipheth-utils installiert, kernel installiert, neustart, iphone angeschlossen, dhclient eth1 und schon läuft das Tethering über USB.

    Ein Speedstest (iPhone über W-LAN an 6000er Leitung) ergab 400/40 kByte Down- und Upload, was sicher besser als bei einer Bluetooth Verbindung ist.

  17. Ach wie ich gerade sehe brauch man nicht mal einen Kernel selber zu kompilieren.

    The ipheth-dkms package provides the source code for the ipheth Linux kernel
    driver. The module is automatically built and installed by DKMS for the
    running kernel.

    Kann das jemand testen?

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert