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!
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.
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 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: