USB Tethering Iphone - No Driver/Won't work

Brand new to open-wrt. I know enough of the command line to be dangerous.

I'm running OpenWrt 18.06.1 on an Archer C7 V4. I've installed

kmod-usb-core - 4.9.120-1
kmod-usb-ehci - 4.9.120-1
kmod-usb-net - 4.9.120-1
kmod-usb-net-cdc-ether - 4.9.120-1
kmod-usb-net-ipheth - 4.9.120-1
kmod-usb-net-rndis - 4.9.120-1
kmod-usb2 - 4.9.120-1
libusb-1.0 - 1.0.22-1
usbutils - 007-7

When I connect my iphone:

  1. It charges
  2. It does not pop up anything about trusting this computer

dmesg gives:

[ 7694.574481] usb 1-1: new high-speed USB device number 5 using ehci-platform

lsusb gives:

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 005: ID NNxx:NNxN Apple, Inc. iPhone5/5C/5S/6
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

The second user in this post has the same symptoms as me. A user mentioned that there was a kernel update coming that may fix this?

This user may have had a similar problem, but their solution doesn't seem ideal (usbmuxd says in the description its not about tethering).

I'm just surprised that there isn't much mention of this issue if it is broad. I can't be one of three people trying to connect iphones to this version of open-wrt right?

Help.

Natecostello,

You are correct in saying usbmuxd is not specifically just about tethering. I believe the ipheth is what makes the iPhone basically look like a ethernet connection. Modifying the WAN interface in OpenWRT to eth2 is what makes it the default route and connects the router to the internet via the iPhone hotspot.

Usbmuxd is a deamon that detects new USB connection and informs other system services of a new device which can then each determine if the new device is useful to it. It also forms the method of multiplexing more than 1 device over a single USB connection.

From my very basic understanding about the iPhone USB connection, it actually appears to the OpenWRT router as multiple devices, like a USB Hub - i.e. camera, audio streaming, picture transfer, etc etc. There seems to be a number of Vendor specific aspects of the USB connection to the iPhone which is what I gather ipheth communicates with.

I could be wrong about this and I'm sure people will correct my mistakes, but since I got my setup to work with the following build it has performed perfectly.

root@OpenWrt:~# uname -a
Linux OpenWrt 4.14.63 #0 SMP Wed Aug 15 20:42:39 2018 armv7l GNU/Linux

One thing I will note is that after I get the "Trust" prompt it helps to switch off Personal Hotspot on the iPhone then 3 seconds later turn it back on. At that point the tethering process completes and the router is online. I attribute this to the fact that the iPhone will initially reject the USB connection until I say it's OK to trust the device. Once trust is established and OpenWRT recognizes a new device has come online it will bring up the link.

I will also mention that you can try the usbmuxd solution by installing the package on your device and after boot connect your router command line, start usbmuxd manually, then plug in your iPhone and see what happens. If you get the trust prompt you are golden.

Thanks for the response! Reading more on usbmuxd and I agree with you. I think the thing that threw me is that it wasn't clear that it was always required for iphone tethering. I think there needs to be an idevice specific wiki to cover the min requirements, the general tethering entry doesn't get you there as far as I can tell.

I ended up following in your footsteps. In case anyone else is struggling:

This on an Archer C7 V4 running 18.06.1

I added these packages:

kmod-usb-net
kmod-usb-net-cdc-ether
kmod-usb-net-rndis
kmod-usb-net-ipheth
kmod-usb2
usbutils
usbmuxd
libusbmuxd
libimobiledevice
libimobiledevice-utils

I added a network interface for eth1 (since thats what it came up as in my case):
/etc/config/network

config interface 'TethWAN'
	option proto 'dhcp'
	option ifname 'eth1'

I added that interface to the existing wan zone in firewall settings:
/etc/config/firewall

config zone
	option name 'wan'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'
	option network 'wan wan6 trm_wwan TethWAN'

I ran usbmuxd, trusted the "computer, and boom...off to the races.

Thanks for the help! One additional question: You put usbmuxd on a timed delay after startup. Did you find that just starting it normal at the tail end of startup using init.d in a vanilla manner was a problem?

2 Likes

Glad you worked it out.

Yes I initially tried with an S99usbmuxd entry without the sleep delay got no joy.

I expect that is because the delay gives everything else a chance to come up. I don't like putting arbitrary delays in the boot sequence but without it it wouldn't start.

Mark it as solved, if there is no problem anymore.

1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.