[转]iphone通过USB共享网络给ubuntu Linux, IOS14+不能使用的解决方法

注意: ubuntu默认没有装gcc ,运行下面教程脚本前,先要装好gcc

$ sudo apt-get install gcc

 

>> 点击下载 <<   已经编译好的 ipheth.ko        文件大小:[ 6.4KB ]

 

 

原文连接:https://blog.csdn.net/potato1992/article/details/113729111

原文编译安装脚本GitHub: https://github.com/potato1992/Iphone_usb_tethering_fix

原文编译安装脚本:Iphone_usb_tethering_fix-master.zip   文件大小: [ 103KB ] 

下载时间:20220825 (脚本可能随时更新,建议使用失效时,登陆原作者github重新下载

 

Iphone 通过USB共享网络给Linux, IOS14+不能使用的解决方法
1. 安装libimobiledevice

其实本来很简单,只需要:

然后在你的手机设置->热点,开启,然后插上数据线就行了。
2. 解决IOS14+不能用

从IOS14之后,我发现这个工具不能用了,Github有讨论过这个问题:libimobiledevice issue,由于苹果并不开放这个协议,社区基本上也只能算抹石头过河,最后有人发现,只需要改一下缓冲区大小就行了,即ipheth.c驱动中:

这时有两种快速解决方案:

(1) Linux 5.10.4已经修复这个问题

如果你的工作对Linux内核版本没有要求,升级吧。

(2)编译驱动替换

为了方便大家使用,我把需要的东西都准备好了,放在github上,执行以下步骤就行了,都是简单的英文,我就懒得重新打一次了。注意如果将来升级了内核,这些步骤应该要重新执行一次。

    Clone the project:

    Enter the project folder and make the ko file:

    根据向导,如果自动安装成功,就可以不往后面看了

(3)如果手动安装

    Backup your original driver:

    Remove the old driver:

    Copy the built driver

    Reload the new driver

应该就可以了。
编译失败了怎么办

换个版本试试,工程里面附带的从Linux3.1开始到5.9所有的ipheth驱动版本,如果还是编译不成功,有两种可能:

1. 说明我附上的这些驱动不适合你的版本,你需要自己从你的Linux发行商去下载Linux内核代码,版本要和你用的一致(uname -r 可以看内核版本),然后复制drivers/net/usb/ipheth.c  这个文件扔进pathes文件夹,然后做如下更改:

重新运行脚本,应该就可以了。

2. 你的Linux 发行版缺失编译kernel module必要的文件,运行以下命令检查:

输出应该是类似这样的:

有两种可能可以解决的办法:

(1) 安装 Linux header,版本要和你的uname -r 显示的一致。

(2) 换个机器(虚拟机),安装官方版本ubuntu/debian,切换内核到待修复电脑的版本,然后运行这个脚本得到 ipheth.ko 驱动,复制到待修复电脑手动安装驱动。

这个脚本是不支持openwrt的,openwrt缺乏编译kernel module的必要组件,需要你下载openwrt代码,按照上面问题1的说明修改ipheth.c代码,然后用你的openwrt发行商提供的编译工具编译出驱动,再扔进路由器安装。

其实是非常没有技术含量的事情,写出来给大家一个思路。

 

posted @ 2022-08-25 15:03  悟透  阅读(1918)  评论(0编辑  收藏  举报