From ArchWiki
Revision as of 04:08, 2 May 2010 by Darkade (talk | contribs)
Jump to: navigation, search

Tethering with libimobiledevice and ipheth

With the release of libimobiledevice it's now possible to natively tether the iPhone 3G and 3GS with firmware 3.0 or superior (Not tested with 4.0, now in developer release).


  • Enable tethering in the iPhone
  • Install usbmuxd
  • Install libimobiledevice (previously libiphone)
  • Install The iPhone Ethernet Driver (ipheth)

Though there are packages for all of these, the usbmuxd is the only requirement recommended to install from arch. Both libimobiledevice and ipheth are recommended to install from the git.

Enable tethering in the iPhone

If your carrier hasn't already enabled tethering you can do it by:

  • Creating a profile in your iPhone
  • Using blackra1n tu unlock your iPhone
  • Installing a carrier update (a new .ipcc)

All of these methods are really easy to find in google. Notice that the 3rd method will just work in fw inferior to 3.1.2, following that you'll first need to use Blackra1n

Installing usbmuxd

As said before usbmuxd is available from AUR and you can install it trough yaourt

# yaourt -S usbmuxd

Installing libimobiledevice

You can get libimobile device from MCoyler site at github

To get the source and install run the following commands. This should be pretty much straight forward

# git clone git://
# cd libiphone
# ./
# make

As always check there are no errors so far; if everything looks good you are ready to install

# sudo make install

Install ipheth

The following section is based in the tutorial available here

Again we will be getting a git repository, but this install is divided in two sections. Install the kernel module, and installing the pairing program.

Remember that this depends on libimobiledevice and usbmuxd, so install those first.

# git clone git://

Now we are good to install the Kernel Module.

# cd ipheth/ipheth-driver
# make

If there are no errors you can load the module

# sudo insmod ipheth.ko

Now plug your iPhone and run dmesg. It should give you something like the following:

# ...
# [ 8181.461000] ipheth 1-6:4.2: Apple iPhone USB Ethernet device attached
# [ 8181.463067] usbcore: registered new interface driver ipheth
# ...

If you have a hard time finding these lines run

# dmesg | grep ipheth

Now you should have a new network device, mine is called eth1 but it can be different. If you are ussing the NetworkManager Applet you should see a wired network device called Apple iPhone.

Just one step to go. Installing the pairing program. You will have to run this program every time you plug your iPhone, I really don't know why but otherwise it won't work.

# cd ipheth/ipheth-pair
# make
# sudo make install

This will install [b]ipheth-pair[/b] (the pairing program) in /lib/udev/ipheth-pair Not the most practical location since it's not in your PATH. With you iPhone plugged rud

# /lib/udev/ipheth-pair

If you don't get any errors you should now be able to connect to tether your iPhone with NetworkManager

Trouble shooting

iPhone not appearing in the devices list

If you can't see the device in dmesg or in the NetworkManager device list you probably didn't reload the module. Just run:

# sudo insmod ipheth.ko

You can also add the module to rc.conf just

# cd ipheth/ipheth-driver
# make clean
# make
# sudo make install

and then edit the [b]rc.conf[/b] since it's still in a beta stage I don't recommend this, but if it works for you there shouldn't be trouble.

The iPhone appears in the device list but it doesn't connect

Did you pair the iPhone? run

# /lib/udev/ipheth-pair

Now you should be able to connect

You run ipheth-pair but it returns there's no libimobiledevice

If you get this error

# ./ipheth-pair: error while loading shared libraries: cannot open shared object file: No such file or directory

You can solve it by running

# sudo ln -s /usr/local/lib/ /usr/lib/