---
name: "if_ipheth"
section: "4"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/if_ipheth"
---

# if\_ipheth(4)

USB Apple iPhone/iPad tethered Ethernet driver

## NAME

**ipheth** – USB Apple iPhone/iPad tethered Ethernet driver

## SYNOPSIS

To load the driver as a module at boot time, place the following line in [loader.conf(5)](/loader.conf/5.md):

```
if_ipheth_load="YES"
```

Alternatively, to compile this driver into the kernel, place the following lines in your kernel configuration file:

**device uhci** **device ohci** **device usb** **device miibus** **device uether** **device ipheth**

## DESCRIPTION

The **ipheth** driver provides support for network access through Apple iPhone and iPad devices, often referred to as USB tethering.

**ipheth** should work with any Apple iPhone or iPad device. In most cases this must be explicitly enabled on the device first.

For more information on configuring this device, see [ifconfig(8)](/ifconfig/8.md). The device does not support different media types or options.

## HARDWARE

The following devices are supported by the **ipheth** driver:

- Apple iPhone tethering (all models)

- Apple iPad tethering (all models)

## EXAMPLES

- **Example** **1:** Manual Configuration

  The following example shows how to manually configure network access on a device that is not automatically recognized.

  First, load the driver and find out the unit and the address of the USB Apple device:

  ```
  # kldload ipheth
  # usbconfig | grep Apple
  ugen0.2: <Apple Inc. iPhone> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
  ```

  In this example, the unit and the address of the device is 0.2 (“ugen0.2”), and its configuration index is 0 (“cfg=0”).

  Secondly, check what other configurations are available for the device:

  ```
  # usbconfig -d 0.2 dump_all_config_desc | grep -E '(^ Conf|iConf)'
   Configuration index 0
      iConfiguration = 0x0005  <PTP>
   Configuration index 1
      iConfiguration = 0x0006  <iPod USB Interface>
   Configuration index 2
      iConfiguration = 0x0007  <PTP + Apple Mobile Device>
   Configuration index 3
      iConfiguration = 0x0008  <PTP + Apple Mobile Device + Apple USB Ethernet>
  ```

  In this example, there are 4 different configurations available. The configuration with index 3 seems to be related to Ethernet. It is time to configure the device:

  ```
  # usbconfig -d 0.2 set_config 3
  # usbconfig | grep 'Apple.*cfg=3'
  ugen0.2: <Apple Inc. iPhone> at usbus0, cfg=3 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
  ```

  At this point the Apple device should ask whether the FreeBSD machine can be trusted (“Mobile Data” has to be on).

  A new *ue* USB Ethernet interface should become available:

  ```
  # dmesg | grep 'ue[0-9]'
  ue0: <USB Ethernet> on ipheth0
  ue0: bpf attached
  ue0: Ethernet address: 4e:7c:5f:2c:5f:7a
  ```

  At this point it might be necessary to run [usbmuxd(1)](/usbmuxd/1.md) (available in [ports(7)](/ports/7.md) at *comms/usbmuxd*):

  ```
  # usbmuxd --enable-exit --foreground --user root --verbose
  ```

  Now it is time to configure the network interface:

  ```
  # sysrc ifconfig_ue0="SYNCDHCP"
  ifconfig_ue0:  -> SYNCDHCP
  # service netif restart ue0
  ```

  That is it. The machine should now be connected to the network via USB tethering.

## SEE ALSO

[arp(4)](/arp/4.md), [cdce(4)](/cdce/4.md), [cdceem(4)](/cdceem/4.md), [intro(4)](/intro/4.md), [netintro(4)](/netintro/4.md), [urndis(4)](/urndis/4.md), [usb(4)](/usb/4.md), [ifconfig(8)](/ifconfig/8.md), [usbconfig(8)](/usbconfig/8.md)

## HISTORY

The **ipheth** device driver first appeared in FreeBSD 8.2.

## AUTHORS

The **ipheth** driver was written by Hans Petter Selasky ⟨*hselasky@FreeBSD.org*⟩.

## BUGS

Some devices are not recognized automatically and may need to be manually configured to use an alternative configuration with the [usbconfig(8)](/usbconfig/8.md) utility. See EXAMPLES for workarounds.
