Introduction

With the release of iPhone OS 3.0 it is possible to use the device as a 3G data modem over either USB or Bluetooth on Windows and OS X systems, without the need for jailbreaking. There is no official support for tethering on Linux systems and by the time of writing no working USB driver has been developed. However, tethering over Bluetooth is still an option.

Tethering over Bluetooth

Tethering over Bluetooth will drain the batteries relatively quickly, but simultaneous charging from an USB port works well.

Hardware Requirements

iPhone running OS 3.0 with tethering enabled. See Settings > General > Network and turn on the tethering option.

Setup

To use Bluetooth, the bluez package for the Linux Bluetooth protocol stack must be installed:

# pacman -S bluez

Once bluez is installed, both the dbus daemon and the bluetooth daemon must be running:

# /etc/rc.d/dbus start

# /etc/rc.d/bluetooth start

The dbus daemon is used to read settings and for pin pairing, while the bluetooth daemon is required for the Bluetooth protocol. It is important that dbus is started before bluetooth. If dbus was not running when bluetooth was started, then try (after dbus is running):

Gnome/Xfce4

A Bluetooth icon should appear in your notification area. Note: the icon may not appear if bluetooth was not turned on at startup. Click it, and search for nearby devices, adding your iPhone (note, you may need to have the Bluetooth setting screen up on your iPhone for discovery to work).

Once the iPhone has been added to the devices list, open the Device menu and select pair. This will require the usual entering of a PIN on the computer then the iPhone. Now open the Device menu again, and choose Network Access > Network Access Point. If everything goes well, blueman reports a success and the status bar on your iPhone should glow blue, indicating a successful tether.

Blueman will have created a new network interface, typically bnep0. To connect to it, run the following as root.

# dhcpcd bnep0

Optionally, if you have NetworkManager installed and want it to automatically connect to the bnep0 interface, blacklist the interface in your rc.conf just as with the other interfaces you want to be automatically handled:

INTERFACES=(!eth0 !wlan0 !bnep0 ...)

NetworkManager might still automatically connect to the new interface initially, but on subsequent boots the above action is necessary.

KDE

To be added...

netcfg

Alternatively, you can create a netcfg network profile to allow easy tethering from the command line, without requiring Blueman or Gnome. Assuming an already paired iPhone with address '00:00:DE:AD:BE:EF', simply create a profile in /etc/network.d called - for example - 'tether':

Tethering over USB

USB tethering from within Windows guest in Virtualbox

One potential way to accomplish this is to use a Windows guest in VirtualBox, and present the host Arch system with a network interface (Host Only?). The working iPhone network device in Windows might then be bridged to the host only interface device within Windows. The iPhone USB network driver is installed together with iTunes. However, this has yet to be tested successfully. More info to come.

Tethering via USB with libimobiledevice+ipheth (native support)

Note: This section needs to be reviewed for style

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).

Requirements

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