Win10论坛

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

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

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

搜索
查看: 14305|回复: 166

[分享] 10.11自定义USB口,全部驱动成功,特来分享   [复制链接]

Rank: 5Rank: 5Rank: 5

UID
2865038
帖子
490
PB币
1829
贡献
0
技术
8
活跃
599
发表于 2015-10-25 07:51:01 |显示全部楼层
本帖最后由 sdsy1212 于 2015-12-21 08:22 编辑

10.11USB可算是大家有的折的了。从前也很多用台式机的人并不使用DSDT,我就不用,但是到了在,迫不得已,必得用了。


修复USB程一个分3部分。第一,提取DSDT。第二,windows找每个USBUSB2号和USB3号。第三,通模板文件,生成适合本机的kext


首先我一下,其可以不必使用DSDT,但是如果不用,就要修改系文件,女座的我是不能容忍的。而且,如果不用DSDT,升以后修改的文件就失了,没法一劳永逸了。

首先,导致USB失效的文件是S/L/E下的IOUSBHostFamily.kext里的AppleUSBEHCIPCI.kext和 AppleUSBXHCIPCI.kext 里的

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

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

你可以直接修改2个文件,但是是系文件,女座的你能忍

当然不能,所以我用一个injector USB kext来解决问题。(原帖来自insanelymac

思路是这样的,通俗的USB2 USB3osx中的学名分EHC1 EHC2XHC1,而主板自DSDT信息中USB2 USB3的学名EHC1 EHC2XHC的。XHCXHC1只差一个数,osx没有出来USB3而没有完全限制住USB3。我利用个思想,在系候将USB2改的osx不出来,然后用另外一个kext去描述它的属性,描述的内容自然是与你自己机器吻合的。clover候加载这kext这样USB就能全部驱动了。


然后,问题就来了,我们更具体一点是要描述?咋描述?


这时候我需要一个windows境,利用一个叫aida64_engineer的程序。个程序可以帮我们检测USB的物理接口的逻辑地址。


里我另外一件事。可能大家注意到一点,USB3的接口是色的,而实际上,USB3色不同,而且脚也不同,USB3USB24以兼容USB2,同多出55就是USB3的不同之。当一个USB3口插入USB2设备候,因USB2没有那多出的5,就使用兼容的4模式,如果插入的是USB3设备,那就使用9模式。这样于一个USB3口来,它可以有2种工作模式,USB2USB3也就是说对于一个USB3的物理接口,会有2逻辑地址,以配合2种工作模式。


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

查看全部评分

Rank: 5Rank: 5Rank: 5

UID
2865038
帖子
490
PB币
1829
贡献
0
技术
8
活跃
599
发表于 2015-10-25 07:55:19 |显示全部楼层
本帖最后由 sdsy1212 于 2015-10-27 05:24 编辑

所以,当你使用aida64去查看机箱上的同一个USB3口的时候,当你插USB2设备(比如鼠标)和USB3设备(比如USB3的U盘),显示出来的逻辑地址是不一样的。但是,对于一个USB2口,不管你插USB2设备还是USB3设备,都只有一个地址。
你要做的就是记录每一个USB2口,当插入设备时,位于哪个控制器下,编号多少。如果纯USB2口下的设备 都在USB 3.0 ROOT HUB下出现 那么你就不用管什么EHC1 EHC2 EH01 EH02了 和你没关系
如果纯USB2口下的设备 在USB 2.0 ROOT HUB下的[Port1] Generic USB Hub下一层的PORT1,2,3,4,5...下 就算再多个物理口 逻辑口都只能是算一个[Port 1]
后面你生成kext的时候 EH01里只算一个Port 1就好 EH02里也只算一个Port 1就好
每一个USB3口,当插入USB2设备时,编号多少,插入USB3设备时,编号又是多少。
干这件事的时候就是,找一个USB口插一个USB设备,刷新一下aida64软件的结果,记录一下,然后换口再继续重复操作。

比如,我试验一个我的机箱前面板的USB3口,按理说,这个USB3口会有2个地址。我先插个USB3的U盘试试。结果如下图。

我发现这个口,在插入USB3设备的时候,会出现在Port 16。如果我改成插入一个USB2的罗技接收器,我发现,16号设备不见了,而接收器信息出现在了Port 1。

自此,我们得出了结论,此USB口的USB2编号为1,USB3编号为16,此口不管是USB2还是USB3都属于USB3控制器管理。
注意,有些USB2设备,如上文所说 这里只要是出现在[Port1]Generic USB Hub下的 不管是Port1下有多少个Port1,2,3,4,5,6等等 都只能算一个Port1

这2个控制器,到了osx下就是ECH1 ECH2了,我之前的那个口是USB3控制器下的,到了osx里,就是XHC了。
因为一般来说 ECH1和ECH2下都只会有Port1 如果你真的纠结哪个是EHC1哪个是EHC2
那么我告诉你8CA6数字小 所以它是EHC1 8CAD数字大 所以它是EHC2

你要做的,就是把每个口都试一遍,当你完成了这个操作,第二部分的工作就算做完了。你要把这些结果记录下来。



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

查看全部评分

Rank: 5Rank: 5Rank: 5

UID
2865038
帖子
490
PB币
1829
贡献
0
技术
8
活跃
599
发表于 2015-10-25 07:56:39 |显示全部楼层
本帖最后由 sdsy1212 于 2015-10-29 09:12 编辑

等等,好像我们直接完成了第二部分,那第一部分呢?

第一部分是有关DSDT的。那么DSDT到底是什么呢,简单的说,DSDT就是描述你主板接口功能等等所有配置的清单。

对于修复USB来说,DSDT方面要做的事很简单,只是查找EHC1 EHC2替换为EH01 EH02而已。这么做的目的就是让osx的系统文件无法找到EHC1 EHC2从而无法描述USB2.0控制器下的设备,而我们后面自制的kext则会担起对EH01 EH02这两个偷梁换柱后的USB控制器进行详细描述,并使其驱动。

但是我知道很多用台式机同学可能都没有提取过DSDT文件,不用担心,我们慢慢聊这个问题,一步一步的解决。

本文所述的方法只能适用于7系8系9系主板,因为6系没有原生USB3.0,10系我又没亲身试过,故不在讨论范围内。

虽然这段我们是谈DSDT的,但是我们先聊点别的。

上一楼所说,USB控制器有2种,Enhanced Host Controller USB2.0 ROOT HUB控制器和eXtensible Host Controller USB3.0 ROOT HUB控制器也就是EHC和XHC。其中EHC控制器有2个EHC1 EHC2,而XHC控制器只有一个,其名称就是XHC。

对于7系主板来说,黑色的纯USB2.0口是在EHC1 EHC2控制下的,蓝色的USB3.0口不管插USB2.0设备还是USB3.0设备,都会在XHC控制下。对于8系9系主板来说,不管是黑色的纯USB2.0口还是蓝色的USB3.0口,你插什么设备都在XHC控制器下。

说这么多,那这到底有什么用呢?

是这样的,如果你是8系9系的主板,那么EHC1 EHC2和你没半毛钱关系,也就是说你可以不管DSDT了。直接看下一楼怎么制作injector kext就好了。

如果你是7系主板,那么很不幸,DSDT还是和你有关系的,因为你的黑色纯USB2.0口是受EHC1 EHC2控制的,你得把DSDT里的EHC1 EHC2改成EH01 EH02。可是有些同学心里犯怵了,我没DSDT文件啊,而且听说改DSDT有很多错误的,我弄不来怎么办。

我要说不幸中也是有万幸的。

因为我们毕竟不是在DSDT里搞什么大动作,也不是注入整段的补丁代码,只是修改几个名字。所以我们可以用clover的配置文件config.plist里的补丁代码来实现这个改名字的操作,而不提取DSDT。

具体代码是

<key>DSDT</key>

            <dict>

                    <key>Patches</key>

                    <array>

                            <dict>

                                    <key>Comment</key>

                                    <string>change EHC1 to EH01</string>

                                    <key>Find</key>

                                    <data>RUhDMQ==</data>

                                    <key>Replace</key>

                                    <data>RUgwMQ==</data>

                            </dict>

                            <dict>

                                    <key>Comment</key>

                                    <string>change EHC2 to EH02</string>

                                    <key>Find</key>

                                    <data>RUhDMg==</data>

                                    <key>Replace</key>

                                    <data>RUgwMg== </data>

                            </dict>

                    </array>

             </dict>

怎么在config.plist里添加这段代码,我就不教你了。

改完clover的config后,即使你没DSDT文件,那么,以后你再去提取DSDT,里面也没EHC1 EHC2了,在clover启动时就给自动替换成EH01 EH02了。

然而,人和人还是不一样的,总有把自己的人生设定为困难模式的同学,这里我也简单说下如何提取DSDT,而如果你用了clover注入代码修改EH01 EH02的方法后,也可以试着提取一下未改过错的DSDT,查找一下EHC1 EHC2看看有没有,从而达到让你的心里更踏实的目的。

提取的方法有很多,对于菜鸟,以前没提取过DSDT的,可以下载RehabMan大神的patchmatic程序,并解压放置在桌面(所有涉及的程序已经贴在1楼附件里了),然后打开终端执行

cd ~/Desktop

./patchmatic –extract

桌面上就会生成很多aml文件,这些aml文件就是DSDT和SSDT。但是这些文件是机器能读的文件,我们读不了,所以需要反编译。这时你需要下载iasl程序(解压后放到桌面上)来对aml文件进行集体反编译,让其变成我们能读的格式。

用法是

./iasl –da –dl *.aml

执行完这个以后,桌面就会出现很多dsl文件,DSDT.dsl就是我们需要的了。

现在你需要下载RehabMan大神的MaciASL工具(解压后放到‘应用程序’里以备用)来对DSDT.dsl进行编辑(双击DSDT.dsl就行,或者选择打开方式->MaciASL),并改错(此处省略两万字)和再编译。注意第一次进入MaciASL后,要在Preferences里的iASL栏里的Compiler Options改成ACPI 5.0,用4.0编译会有更多的错误。

如果你已经用clover注入替换代码了,那么你现在可以查找EHC1 EHC2看看有没有,应该是没有就对了,因为你替换掉了嘛。再找找EH01 EH02,这里应该是有的就对了。

如果你没用clover注入替换代码,我们要查找EHC1,将其全部替换为EH01。查找EHC2,将其全部替换为EH02。注意EHC1和EHC2都不仅仅有一个。

再点Compile(即'编译'的意思),然后查错(被省略的两万字)

错误都搞定后,我们选择另存为。格式选择’ACPI Machine Language Binary’。这就是你的DSDT了,应该是DSDT.aml文件就对了。

把这个修改好的DSDT,aml放到你的CLOVER的EFI/CLOVER/ACPI/patched文件夹下


自此,DSDT的事就干完了。


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

Rank: 5Rank: 5Rank: 5

UID
2865038
帖子
490
PB币
1829
贡献
0
技术
8
活跃
599
发表于 2015-10-25 07:57:51 |显示全部楼层
本帖最后由 sdsy1212 于 2015-10-29 09:17 编辑

现在我们来说说最后一步,怎么用模板,改出一个你自己主板合适的injector USB kext。

我们首先下载模板(1楼附件里有)。是一个kext文件,要点右键,显示内容->Content,你会发现一个Info.plist文件

然后下载一个叫plistedit pro的软件(附件里也有,破解注册使用时别忘了断网)去修改它。

此时,你手中应有一个表格,关于你的USB2口和USB3口的,用aida64记录的信息。

打开模板以后,要检查机型,如果不符合,要改一下,共6处。

然后就改相应的项就可以了。这里要注意port-count,就是你最后一个port的编号。

还有port的名字并不重要什么HS01HS02你可以任意取。

UsbConnector里如果此编号连接类型USB3填3,如果是USB2填0,如果是蓝牙设备,我看别人帖子说填255,如果摄像头也填255。当然蓝牙和摄像头多数还是USB2类型的,你不确定就先填0。

port的data就是你记录的逻辑地址编号了。注意此处使用的是16进制。

也就是说1 2 3 4 5 6 7 8 9之后是A B C D E F 然后是10 11 12 13 14 15

比如你记录的地址是18,那么这里要填写的是12000000而非18000000

完成了这个以后,保存,放到你的Clover的EFI/CLOVER/kexts/10.11目录下

重启,你的USB就回来了。

由于这里说的比较潦草,另有一篇帖子有一个Z77主板的全程实例,可做参考。

http://bbs.pcbeta.com/viewthread-1651310-1-1.html

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

Rank: 9

UID
205372
帖子
4538
PB币
9141
贡献
0
技术
4412
活跃
3320

十周年

发表于 2015-10-25 08:01:45 |显示全部楼层
支持楼主,希望对有同样问题的景友有帮助。

Rank: 5Rank: 5Rank: 5

UID
2865038
帖子
490
PB币
1829
贡献
0
技术
8
活跃
599
发表于 2015-10-25 08:05:52 |显示全部楼层
czczyx 发表于 2015-10-25 00:01
支持楼主,希望对有同样问题的景友有帮助。

后面还有2层楼正在核审中。。。

Rank: 2Rank: 2

UID
4374947
帖子
302
PB币
384
贡献
0
技术
26
活跃
454
发表于 2015-10-25 08:07:28 |显示全部楼层
我想知道此方法对于拓展卡USB3.O是否有用,像NEC这种扩展卡

Rank: 5Rank: 5Rank: 5

UID
2865038
帖子
490
PB币
1829
贡献
0
技术
8
活跃
599
发表于 2015-10-25 08:11:05 |显示全部楼层
yuanjing1840 发表于 2015-10-25 00:07
我想知道此方法对于拓展卡USB3.O是否有用,像NEC这种扩展卡

这个不太清楚 不懂pcie总线、、、抱歉了。。。

Rank: 7Rank: 7Rank: 7

UID
624881
帖子
2921
PB币
12893
贡献
0
技术
49
活跃
2751

8周年庆典勋章

发表于 2015-10-25 08:13:43 |显示全部楼层

支持楼主

Rank: 7Rank: 7Rank: 7

UID
1040079
帖子
1519
PB币
9936
贡献
0
技术
30
活跃
1738
发表于 2015-10-25 08:17:09 |显示全部楼层
来,我也学习一下。怎么修改USB来让CAPITAN系统认识

Rank: 7Rank: 7Rank: 7

UID
995781
帖子
1582
PB币
353
贡献
0
技术
10
活跃
583
发表于 2015-10-25 08:42:16 |显示全部楼层
好文谢谢分享

Rank: 7Rank: 7Rank: 7

UID
893876
帖子
3062
PB币
5636
贡献
0
技术
79
活跃
1754
发表于 2015-10-25 10:27:02 |显示全部楼层
先标记一下,跟楼主学习下如何修改

Rank: 7Rank: 7Rank: 7

UID
3593444
帖子
1381
PB币
273
贡献
0
技术
1
活跃
1422
发表于 2015-10-25 13:05:34 |显示全部楼层
支持了  usb是个大问题啊

Rank: 7Rank: 7Rank: 7

UID
2429192
帖子
3351
PB币
1600
贡献
0
技术
48
活跃
1709
发表于 2015-10-25 13:19:08 |显示全部楼层
回去看看,z77的2.0死掉了

小仙

Rank: 5Rank: 5Rank: 5

UID
1119518
帖子
812
PB币
6330
贡献
0
技术
24
活跃
1665
发表于 2015-10-25 13:31:55 |显示全部楼层
sdsy1212 发表于 2015-10-25 08:05
后面还有2层楼正在核审中。。。

发个word吧

Rank: 1

UID
3285858
帖子
60
PB币
0
贡献
0
技术
0
活跃
17
发表于 2015-10-25 14:20:57 |显示全部楼层
很棒,正是我想要的

Rank: 7Rank: 7Rank: 7

UID
4682951
帖子
1384
PB币
489
贡献
0
技术
28
活跃
557
发表于 2015-10-25 14:39:40 来自手机 |显示全部楼层
好帖子,感谢分享

Rank: 2Rank: 2

UID
2466027
帖子
399
PB币
421
贡献
0
技术
0
活跃
885
发表于 2015-10-25 14:53:01 |显示全部楼层
好贴要跟随

Rank: 2Rank: 2

UID
3976612
帖子
156
PB币
23
贡献
0
技术
0
活跃
288
发表于 2015-10-25 14:58:10 |显示全部楼层
支持技术贴,讲得很清楚

Rank: 2Rank: 2

UID
1521398
帖子
109
PB币
226
贡献
0
技术
0
活跃
132
发表于 2015-10-25 15:04:21 |显示全部楼层
楼主,我也是NUC 54250 可以分享一下你的efi文件夹么?
回顶部
Copyright (C) 2005-2020 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件