Android设备如何支持iPhone usb网络共享
一般情况下如果iPhone连接到Android机器上,在Android平台硬件支持MFI芯片 + 软件支持Carplay协议才能正常通信。通信走NCM驱动cdc_ncm -> usbnet device -> net_device。
当Android端不支持MFI时,我们只能通过其他方式,恰巧苹果有一个服务,叫usbmuxd,这个服务主要用于在USB协议上实现多路TCP连接,将USB通信抽象为TCP通信。苹果的iTunes, XCode,都直接或者间接地用到了这个服务。
由于usbmuxd只有Linux版本,大费周折2天时间终于将usbmuxd通过交叉编译移植到Android上(后续章节会详细讲下移植过程的坑)。现将iPhone通过数据线接到Android机器上,Android 终端在usb bus上枚举出设备如下:
T: Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#= 9 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 4
P: Vendor=05ac ProdID=12a8 Rev=10.01
S: Manufacturer=Apple Inc.
S: Product=iPhone
S: SerialNumber=913710ffc532d7428b9e1ed0f53bac10aaa4ea57
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=06(still) Sub=01 Prot=01 Driver=(none)
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=64ms
C: #Ifs= 3 Cfg#= 2 Atr=c0 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=
I: If#= 1 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=
I: If#= 1 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=
E: Ad=81(I) Atr=01(Isoc) MxPS= 192 Ivl=1ms
I: If#= 2 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=
E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=125us
C: #Ifs= 2 Cfg#= 3 Atr=c0 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=06(still) Sub=01 Prot=01 Driver=
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=64ms
I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=fe Prot=02 Driver=
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
C: #Ifs= 3 Cfg#= 4 Atr=c0 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=06(still) Sub=01 Prot=01 Driver=
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=64ms
I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=fe Prot=02 Driver=
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I: If#= 2 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=fd Prot=01 Driver=
I: If#= 2 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=fd Prot=01 Driver=
E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I: If#= 2 Alt= 2 #EPs= 2 Cls=ff(vend.) Sub=fd Prot=01 Driver=
E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
可以看出iPhone没有虚拟出以太网卡eth*,设置iPhone -> 个人热点->勾选允许其他加入-> 提示点击“仅USB”,Android设备端仍然没有看到iPhone网卡,此时usbmuxd的神奇之处可以体现了,在Android设备终端输入 usbmuxd & 回车。iPhone会弹框“要信任此电脑吗?” 点击信任即可。
通过上述步骤后,iPhone切成了以太网模式:
此时,可以正常上网,如下图:
Android设备如何支持iPhone usb网络共享相关推荐
- Android系统中如何添加USB网络共享
Android系统中如何添加USB网络共享 类别 需求 索引类别 USB网络共享 问题描述 平台是RT1296,在Android系统中已经有支持USB网络共享,但相应的产品系统中还未开启USB网络共享 ...
- Android12系统上支持Android手机的usb网络共享
Android系统需要支持Android手机通过usb共享过来的网络需要修改以下代码 1.修改内核,添加这几项内核驱动,kernel驱动默认有源码,我们只需配置上就行 +CONFIG_USB_USBN ...
- Android usb网络共享开关
Android7.0 usb网络共享开关 涉及的文件: packages\apps\Settings\src\com\android\settings\TetherSettings.java pack ...
- android usb共享代码,让Android手机具有USB网络共享功能,可以通过USB连接到Internet...
第0章: 什么是USB网络共享功能 最近漫游Windows Phone的世界时,最新鲜的感觉之一就是诺基亚Lumia手机具有有趣的USB绑定功能,该功能使您的手机可以通过USB电缆连接到计算机,您可以 ...
- Android手机通过USB网络共享限速
在 Android上都有USB网络共享的功能,可以直接在手机上通过USB口使用电脑端的网络,有些手机叫"USB绑定",有些手机叫"网络共享". 简单说明一下US ...
- 如何使用ADB或者shell打开Android的usb网络共享
现在手机不把usb插在电脑上(usb网络共享)这个开关是灰色的不能打开 插上之后可以使用adb命令: #可能的值'mtp', 'ptp', 'rndis', 'midi', 'none' adb sh ...
- android 8 usb 未连接网络,让安卓手机拥有USB网络共享功能通过USB连上网络
第零章:什么是USB网络共享功能 最近在Windows Phone的世界里漫游了一圈,其中一个很新鲜的感受就是诺基亚Lumia手机有一个很有意思的USB网络共享功能,该功能能让你的手机只要通过USB数 ...
- 适用于Mac的USB网络共享驱动程序(手机mac双向usb共享网络)
该驱动程序实现了Microsoft 专有的RNDIS协议,这是Android设备本身支持的唯一协议; 虽然Linux和Windows用户多年来都喜欢原生RNDIS驱动程序,但Mac OS X仅支持开箱 ...
- 安卓获取手机网络强度_USB调试和USB网络共享,安卓有线投屏究竟选哪个?
用过EZCast投屏设备的安卓手机E粉,可能有过这样的困惑. 「开启USB调试」和「开启USB网络共享」 究竟选哪个进行有线同屏? 今天的小E课堂中,我将带大家看看这两者的区别,以及应该用哪个比较好. ...
最新文章
- 九度OJ 区间问题 10000个随机正负数生成
- 数据库连接python_python连接数据库
- win10中内置的Linux Bash启动闪退问题
- 如何在win7(xp)home version下安装 rose 32 bit
- 电商设计师套用PSD分层模板,玩转详情页的!
- Python打造文件MD5值计算器
- 利用函数重载编写函数max_c++笔记(函数重载)
- opencv进行5种图像变化:
- JS原型继承工作原理
- 证明n次根号下n阶乘等价于n/e
- sharepoint2010基于表单认证
- C语言中错误c213是什么意思,DS1302的错误:error c213
- Windows8.1-KB2999226-x64安装提示此更新不适用你的计算机
- 无线打印 airprint 服务器,怎么设置普通打印机也能airprint无线打印
- 爱了爱了!阿米洛熊猫VA108机械键盘cherry樱桃粉轴白灯,写代码神器!免费包邮送到家!...
- 使用阿里云centos7.6进行steam挂卡(使用ASF,更新日期为2021.2.12)解决ASF服务器中文运行的问题
- mac ios 远程桌面连接到服务器配置,手把手教你苹果mac如何远程桌面连接
- SVD分解和矩阵的Lipschitz条件等
- 知名互联网公司都在使用哪些数据库
- 【毕业设计】30-基于单片机矿井瓦斯_气体浓度_烟雾浓度报警设计(原理图+源代码+仿真+答辩论文+答辩PPT)
热门文章
- ZuulFilter和Fegin超时设置
- 安卓手机如何投屏到电视上_关于安卓手机投屏电视问题的一个迂回解决方案
- 线程池原理——生产者/消费者
- Ubuntu快速更换国内源
- 婚姻:谁不想要个“稳定”的男朋友
- Java 基础常见知识点面试题总结(上),2022 最新版!
- 美通社日历 | 媒体关注、会展信息、企业财报发布,节假日备忘(10月12日—10月18日)...
- ‘get‘ 不是内部或外部命令,也不是可运行的程序或批处理文件的问题:没有下载或配置get
- Android获取手机系统软件图标,名称等
- debian 重启mysql_如何重启MySQL服务,正确重启mysql的方法