iOS14 tethering issues

I can confirm that the wnienhaus/languagegame recipe above just worked for me (OpenWRT 19.07.04 on GL.iNet GL-B1300, iOS 14.2, iPhone SE 2016). Phew!

As an 'intermediate-level' user, I did not fancy my chances following some of the expert solutions posted, involving recompiling Linux kernel etc. - though I see why they are superior if one is able to execute. Whereas the wnienhaus/languagegame recipe is much easier to follow!

Hopefully the next OpenWRT supported build release will include a full fix (done the expert way, of course!), to complement the excellent work of luochongjun, who has compiled a full new set of patched GL.iNet snapshots (which are built on OpenWRT, of course).

I believe Apple broke this functionality deliberately for the Linux/OpenWRT community - their inadequate response since speaking for itself - so it is great the community has fixed it so quickly, thereby sticking two fingers up to the money men!

2 Likes

Is it in the 19.07.5 branch or not since it is just 1 commit behind???

I don't think so. I had to do the same workaround as posted previously for openwrt 19.07.4, and it worked again for 19.07.5.

Workaround worked for me but had to change sed line to

xxd ipheth.ko.orig | sed 's/05EC/05EA/g' | xxd -r > ipheth.ko

on Netgear WNDR3700

1 Like

I'm new around here and would consider myself a beginner user. Wondering if anyone can assist with the sed command that I should be using for my router architecture? I'm not sure how to interpret the hexdump from xxd so as to make the appropriate changes... I am using an ASUS RT-AC51U router and im running OpenWrt v19.07.5

I'm using an Archer C7 V5. I got it working with this modification to Walterav's post.

xxd ipheth.ko.orig | sed 's/5ec/5ea/g' | xxd -r > ipheth.ko
(noticed that this is just the same as crispypants fix so I can confirm it works)

I am no expert but I think it simply looks for 1516 (5ec) and replaces it with 1514 (5ea) as described in the Github fix. I don't really see why this wouldn't work for any version if it worked for me.

objdump is really handy to check if it has worked. If you still see 1516 references not 1514 it hasn't worked.

Anyway it worked for me tethering to an iphone (ios 14.4) on my Arched C7 V5.

Out of curiosity, are you guys trying to use iOS 14's tether feature or trying to use libimobiledevice tools to interact with it?

Upstream kernel fixed the issue and backported it everywhere AFAIK. libimobiledevice has been updated and fixed for master and 19.07.

My pea brain managed to figure out the issue thanks to your help, thanks very much. I was having difficulty viewing the modified file and as it turns out the order was reversed and lower case. So my command was:

xxd ipheth.ko.orig | sed 's/ec05/ea05/g' | xxd -r > ipheth.ko

This is for an Asus RT-AC51U and iPhone X running iOS 14. Everything seems to be working now.

I'm trying USB-tethering using iPhoneSE (iOS14.4), with OpenWRT 19.07.07 on NanoPi.
I followed the steps of:

I also edit /etc/config/network to set 'eth1' with proto of dhcp.

By connecting iPhone, IPv6 address is acquired, while IPv4 address is not, which results in failing to access IPv4 address destination.


By connecting Android phone, both IPv4 and IPv6 address are acquired.

Are anyone meets the similar problem?

Hi,
When creating tetering adapter (gui) under advanced settings selected Override MTU: 1514
Afterwards it worked as expected... :slight_smile:

I can also report this code fixes the issue on iOS 12.7,13.6 tethering as well. on latest 19.07.4

The following commit reduces both RX and TX buffers from 1516 to 1514 to fix the issue with iOS 14, where the Linux client has only local connectivity to the iPhone, but no Internet connection:
httpstorm/linux-kernel@f33d9e2#diff-d13f85b8acc1204f31e7abc538e9fdb1faa07b94cd928800b6b976561d32f6e3

I also experienced that issue during my research. It is important to note that only TX needs to be reduced to resolve the original issue. Further more the change fails to consider that the RX buffer is later reduced by IPHETH_IP_ALIGN (2 bytes) resulting in 1512 bytes effective. Hence packets of size 1513-1514 result in overflow in ipheth_rcvbulk_callback(), after which the driver malfunctions and all communication stops. My patch corrects that by increasing the RX buffer size by adding IPHETH_IP_ALIGN to compensate because that the same padding is subtracted later.

Anyone experiencing disconnects after the original patch, please help me find a reviewer for the updated patch below!

I am just getting myself into openWRT and related stuff so I am a bit lost as to how to follow these instrucitons.
I gather from the posts here that the TX buffer needs to be reduced from 1516 to 1514, but how do I go about doing so?
I see lines of code to be examined, but I am lost as to how to get to a page where I can be editing the codes.

I am using a GL-AR750S on 19.07.7
Any help would be appreciated.

Initial fixe(s) for the IOS platform were already merged and backported to the 19.07.x branch.

But as you further read on in this thread it was not 100% correctly fixed but I can asure you it is good enough for a newby to start and setup packages, edit scripts etc for this to work and test. Just want to say don't let this halt your progress.

Later on you may download a updated OpenWrt release with patches included or compile your own, but as you mentioned earlier your geting your self in to this start here: