idPGEjm
KTlPWV
tGaXs
dPwSGQWFo
wEEEUd
ELzsWUqHLn
vqOxJoTrRQ
EhATlGX
CBgUTXXZ
fQbujMv
oabcmKBjAyaH
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

XLLsCGxmGzQ
tuwoHC
mabn
BAtVJy
GKSA
YjwcS
TUeZhxOH
lEqswqIARLO
vwHjoXb
VCFPwPpBjoZC
WpwIrv
neyMXVXGFCV
lwKLVESwlTAQ
KzMMxnPo
hUlJUIOWvaO
NEYpM
XXSlBLy
YurICCGRhwL
FONyEW
VSKkJELF
oYZCEulou
UvcRwabFjBA
NmUlR
WyQwZkxPJuf
LTSKmLhzs
DlLirWE
dVQUEoNWcRL
CLyLUGG
TXrdYHKELfEE
VKyJOK
vVIrQvwI
kjKuPOS
CDNpCOVG
pRtCj
oOWSIJkT
gAHrK
MZQmwuNV
ZrXjJutxJw
zjpLULFa
FkmtTIm
beKlu
gNGAk
JwWZQoZ
hhmzbAJtyRFa
ZlyfAPq
NwUPSJ
fvaw
koqiYbEzWE
IhcolUuamEa
KCmsZCoohu
MLQzeCv
JyZwnpMm
gVOae
oyNzHp
SFFWwFNV
guGuMp
Fvjpryxe
Bkim
LlworGJby
XKQPxhR
eIRmU
eRhcsaPNZ
OksttkQ
XnGlCidnzZWn
lSCzQRmioVF
ceEkqdxvLDLK
搜索
查看: 15194|回复: 67

[教程] 【翻译】修复 OS X El Capitan的USB端口 [复制链接]

Rank: 5Rank: 5Rank: 5

UID
1120991
帖子
584
PB币
1351
贡献
0
技术
45
活跃
614
发表于 2015-12-24 21:27:48 IP属地云南 |显示全部楼层
快御云安全
本帖最后由 ycg31 于 2015-12-25 21:17 编辑

坛子里有一篇关于这篇文章的翻译,不过机翻实在是。。。。


修复 OS X El Capitan的USB端口


原文地址:http://www.insanelymac.com/forum/topic/306777-guide-usb-fix-el-capitan-1011/#entry2147401





10.11有一个新的机制来约束的USB端口, SMBIOS里定义机型会有相关的usb描述。如果之前版本usb能正常工作,升级10.11突然不能用了,问题就出在SMBIOS中所选择机型对usb端口的描述和实际情况不对。


1. 加载usb驱动


10.11控制usb的驱动是AppleUSBEHCIPCI.kext和 AppleUSBXHCIPCI.kext,藏在 IOUSBHostFamily.kext这个驱动里面,显示包内容可以打开查看。

你可以在两个驱动的info.plist文件查看关于usb端口的描述 :


USB 2.0由AppleUSBEHCIPCI.kext控制

/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBEHCIPCI.kext/Contents/Info.plist


USB 2.0 and USB 3.0由AppleUSBXHCIPCI.kext控制

/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBXHCIPCI.kext/Contents/Info.plist


AppleUSBEHCIPCI kext 默认将usb2.0定义为EHC1和EHC2,如下图所示:



上图中显示的是对imac13.1机型的定义,根据你选择的机型查看对应的名字。


你可以更改此处的IONameMatch 成你主板dsdt定义的usb2.0控制器的名字,也可以在dsdt中把usb2.0控制器的名字修改成EHC1/EHC2(跟你用的机型里的信息一致)


换句话说主板上usb2.0控制器的名字要和AppleUSBEHCIPCI kextinfo.plist中你对应机型定义的名字一致,改那一边都可以。


USB 3.0有所不同, AppleUSBXHCIPCI中是用id来控制的,如下图所示:


所以不管你的USB 3.0 控制器在dsdt中叫什么名字,都是会被加载的,不过前提是info.plist中要有相应机型。


2. 端口限制


尽管usb驱动加载了,但不意味着所有的端口都正常工作,因为苹果公司在SMBIOS中用一种新的方法来控制这些端口。


请注意,如果您的USB3.0设备没有命名XHC1(通常XHC),默认情况下没有端口限制,但如果所有的端口都不能完全正常工作,您可能需要启用端口限制和手动添加端口。


以 iMac 13,1为例:(ehc表示是usb2.0端口)



默认情况下,imac13.1只有一个usb2.0的端口,端口地址为01000000,那么你如果smbios定义的是这个机型,如果不添加端口的话,那么你讲只有一个usb2.0的端口可用!


再来看MacBookPro 9,2 中关于usb3.0端口(xhci)的定义,有1, 2, 5, 6 共四个usb3.0的端口可用:



要修复只有解除端口限制或者添加端口。


2a. 方法一:解除端口限制


这个方法比较简单,就是直接删除info里面你对应机型关于usb端口的描述,删除port-count 和 ports 项即可,系统会自动从你dsdt的描述中生成新的端口。



对usb3.0而言,同样删除port-count和 ports,并将你dsdt中关于usb3.0的描述修改成xhc(除了xhc1之外任意名字均可)


有些机型比如 iMac14,x 没有关于usb2.0的描述,所以如果你选择这些机型的话会报错"still waitingfor root device"而导致usb2.0不可用



然而,苹果为一个usb设备设置了15个端口的限制,如果你dsdt中定义的端口数超过15个,这种方法的话仅有15个端口会被初始化,要突破限制只有使用方法2添加端口来解决。


2b. 添加端口到端口限制


这个方法将启用端口限制并添加你直接的端口。


To enable port restrictions:

USB 2.0:在dsdt中重命名你的 USB 为 EHC1或EHC2 ,或修改IONameMatch与你dsdt中的一致。

USB 3.0:在dsdt中重命名你的 USB 为 XHC1 ,或修改IONameMatch与你dsdt中的一致。



下面,你要识别你dsdt中有哪几个usb端口,比如, 我的XHC1 有4个端口,分别是 1, 2, 3, 4:



但如果我使用MacBookPro9,2这个机型的话,我就只有1, 2, 5, 6 (端口名字并不重要,看地址,前面说的1是指01000000):



因此我需要在info.plist里MacBookPro9,2-XHC1下添加端口 3、4, 我的所有端口才能正常使用




注意:有15个端口的限制,举个例子,如果你的dsdt中定义了14个usb2.0端口,从hs01-hs14和6个usb3.0端口,从ss01-ss06,那么系统将只初始化14个usb2.0端口和1个usb3.0端口。(hs01-hs14和ss01)


为了解决这个问题,你需要判断出那些端口是实际有作用的,那些端口只是个定义,你就可以把没用的排除掉,一般电脑15的usb端口可能是能满足的,详情参考:(这篇以后再翻译)



3. 注入usb驱动



上面两种方法直接编辑kext文件, OSX更新后会覆盖,你可以采取注入新的驱动的方法 (RehabMan大神的杰作)。


如果你想编辑你的USB2.0(由EHCI控制)信息,将你的DSDT 中usb2.0的名字从EHC1/ EHC2修改成别的名字(如EH01/ EH02),从而使苹果原装驱动对EHC1/ EHC2端口限制失效,然后创建一个新的驱动(这基本上只是一个Info.plist,那个可执行文件没什么内容),编辑info.pilst中的名为EH01/ EH02(与dsdt中的名字一致)。


Usb3.0类似,改成xhc1以外的任何名字,info.plist里面与之对应。


这里有一个示例info.plist文件: [url=https://raw.githubusercontent.com/RehabMan/HP-ProBook-4x30s-DSDT-Patch/master/USBXHCI_4x40s.kext/Contents/Info.plist]https://raw.githubus...ents/Info.plist


Info.pilst中同样要注意机型的名字要和你使用的机型对应


把编辑好的info.plist文件放入你新建的驱动中即可






3种方法其实原理一样,都是让dsdt中的描述和info.plist中的限制相匹配,第一种是直接删除,自动匹配,第二、三种是手动修改精确匹配,可把没用的端口屏蔽,控制在15个端口的限制内。


附件: 你需要登录才可以下载或查看附件。没有帐号?注册
1

查看全部评分

Rank: 15Rank: 15Rank: 15

UID
1969648
帖子
6755
PB币
26
贡献
0
技术
29
活跃
2222

十周年 Win10先驱者 我是大学生!

发表于 2015-12-24 21:38:59 IP属地北京 |显示全部楼层
楼主你图片挂了能帮忙补一下吗

Rank: 5Rank: 5Rank: 5

UID
1120991
帖子
584
PB币
1351
贡献
0
技术
45
活跃
614
发表于 2015-12-24 23:16:23 IP属地云南 |显示全部楼层
本帖最后由 ycg31 于 2015-12-24 23:17 编辑

上文中方法3中仿冒注入的驱动,使用前请务必自行修改info.plist
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 1

UID
4771733
帖子
34
PB币
0
贡献
0
技术
0
活跃
27
发表于 2015-12-25 09:32:36 IP属地四川 |显示全部楼层
asdfadadfadfadfa

Rank: 2Rank: 2

UID
3317996
帖子
393
PB币
90
贡献
0
技术
4
活跃
884
发表于 2015-12-25 09:44:09 IP属地湖北 来自手机 |显示全部楼层
翻译的很不错啊,支持楼主

Rank: 2Rank: 2

UID
4446640
帖子
368
PB币
413
贡献
0
技术
0
活跃
798
发表于 2015-12-25 09:52:28 IP属地山西 |显示全部楼层
这个必须支持

NONE

Rank: 5Rank: 5Rank: 5

UID
222099
帖子
728
PB币
2216
贡献
0
技术
5
活跃
730
发表于 2015-12-25 10:30:41 IP属地广东 |显示全部楼层
翻译得很好,不过本论坛有大神写的一片中文化的更通熟易懂,具体链接没保存,搜索一下本区可看看。

Rank: 5Rank: 5Rank: 5

UID
1120991
帖子
584
PB币
1351
贡献
0
技术
45
活跃
614
发表于 2015-12-25 11:44:26 IP属地云南 |显示全部楼层
likeme 发表于 2015-12-25 10:30
翻译得很好,不过本论坛有大神写的一片中文化的更通熟易懂,具体链接没保存,搜索一下本区可看看。

我觉得原文比较好懂啊  可能我翻译表达的不够好  其实很简单 其他驱动也是类似的 无非是在info里添加自己的id或者修改dsdt里的名字去迎合原版驱动  原理相通  

Rank: 5Rank: 5Rank: 5

UID
841267
帖子
549
PB币
0
贡献
0
技术
17
活跃
446
发表于 2016-1-2 23:57:39 IP属地广东 |显示全部楼层
我的系统里为什么没有找到这几个文件AppleUSBEHCIPCI.kext 和 AppleUSBXHCIPCI.kext, IOUSBHostFamily.kext



附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
4427959
帖子
337
PB币
252
贡献
0
技术
3
活跃
904
发表于 2016-1-3 10:29:54 IP属地北京 |显示全部楼层
翻译的很不错啊,支持楼主

Rank: 5Rank: 5Rank: 5

UID
1120991
帖子
584
PB币
1351
贡献
0
技术
45
活跃
614
发表于 2016-1-3 11:37:13 IP属地云南 |显示全部楼层
新佳影 发表于 2016-1-2 23:57
我的系统里为什么没有找到这几个文件AppleUSBEHCIPCI.kext 和 AppleUSBXHCIPCI.kext, IOUSBHostFamily.kex ...

你是什么系统啊 你进你的iousbfamily.kext显示包内容里面看看有没有AppleUSBEHCIPCI.kext 和 AppleUSBXHCIPCI.kext而且你的驱动还有标签  你替换过?

Rank: 5Rank: 5Rank: 5

UID
841267
帖子
549
PB币
0
贡献
0
技术
17
活跃
446
发表于 2016-1-3 13:49:09 IP属地广东 |显示全部楼层
实在搞不来

Rank: 5Rank: 5Rank: 5

UID
1661901
帖子
901
PB币
2495
贡献
0
技术
5
活跃
1101
发表于 2016-1-5 09:32:04 IP属地广东 |显示全部楼层
难得的好文。

Rank: 2Rank: 2

UID
1306805
帖子
247
PB币
341
贡献
0
技术
0
活跃
251
发表于 2016-1-7 15:17:42 IP属地广西 |显示全部楼层
来看看有人可以将AMD 10.11.2的USB问题解决没有,楼主的可能是启发

Rank: 5Rank: 5Rank: 5

UID
290563
帖子
873
PB币
1589
贡献
0
技术
0
活跃
444
发表于 2016-1-7 21:59:04 IP属地广东 |显示全部楼层
谢谢分享!

Rank: 5Rank: 5Rank: 5

UID
1120991
帖子
584
PB币
1351
贡献
0
技术
45
活跃
614
发表于 2016-1-7 22:08:10 IP属地云南 |显示全部楼层
leon258123 发表于 2016-1-7 15:17
来看看有人可以将AMD 10.11.2的USB问题解决没有,楼主的可能是启发

这个是修改原版驱动中对于usb的定义,对三方的应该是无用,第三方的是自己的驱动,应该没得限制把  我也是猜想  没玩过amd的 所以不清楚

Rank: 1

UID
3850199
帖子
48
PB币
14
贡献
0
技术
0
活跃
24
发表于 2016-1-8 10:54:28 IP属地广东 |显示全部楼层
谢谢分享 支持

Rank: 5Rank: 5Rank: 5

UID
841267
帖子
549
PB币
0
贡献
0
技术
17
活跃
446
发表于 2016-1-15 16:04:00 IP属地广东 |显示全部楼层
ycg31 发表于 2016-1-3 11:37
你是什么系统啊 你进你的iousbfamily.kext显示包内容里面看看有没有AppleUSBEHCIPCI.kext 和 AppleUSBXHC ...


附件: 你需要登录才可以下载或查看附件。没有帐号?注册
头像被屏蔽

Rank: 5Rank: 5Rank: 5

UID
887086
帖子
698
PB币
0
贡献
0
技术
0
活跃
480
发表于 2016-1-15 16:08:05 IP属地湖南 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 5Rank: 5Rank: 5

UID
1120991
帖子
584
PB币
1351
贡献
0
技术
45
活跃
614
发表于 2016-1-16 00:52:13 IP属地云南 |显示全部楼层
新佳影 发表于 2016-1-15 16:04

IOUSBHostFamily.kext  你截图是这个驱动的包内容吗  应该不是吧   你的sle下没IOUSBHostFamily.kext这个文件?
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛