#FREEBSD IPHONE NETWORK TETHER VIA USB #EXAMPLE FROM ipheth(4) #PRACTICAL UNIX SURREALISM #https://man.freebsd.org/cgi/man.cgi?query=ipheth&sektion=4&manpath=FreeBSD+13.1-RELEASE+and+Ports To load the driver as a module at boot time, place the following line in loader.conf(5): if_ipheth_load="YES" First, load the driver and find out the unit and the address of the USB Apple device: # kldload ipheth # usbconfig | grep Apple ugen0.2: 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 Configuration index 1 iConfiguration = 0x0006 Configuration index 2 iConfiguration = 0x0007 Configuration index 3 iConfiguration = 0x0008 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: 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: 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) (available in ports(7) 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. The ipheth driver was written by Hans Petter Selasky .