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.
- iPhone running OS 3.0 with tethering enabled. See Settings > General > Network and turn on the tethering option.
- Bluetooth Adapter or similar, preferably with EDR(Enhanced Data Rate) for acceptable speeds. Tested with a Belkin F8T016NE.
From the article entitled Bluetooth:
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):
# /etc/rc.d/bluetooth restart
To start bluetooth automatically on boot, add bluetooth to your daemons array in rc.conf:
Install the Blueman GTK+ Bluetooth manager
# pacman -S blueman
A Bluetooth icon should appear in your notification area. 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, select it, open the Device menu, 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.
To be added...
Tethering over USB
Currently there is no USB driver for Linux, and therefore USB tethering is not supported. However, virtualization software can be used to enable networking within a Windows guest, potentially sharing the connection with the host system.
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.