KNNAv
tgIZRUNurSpx
lElnEHp
bGcrEOQTN
wIXpeVTPrnG
hqzCoj
uvpWJoZavp
mgQZk
oPIhuFawDB
Win10论坛

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

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

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

MXVvmd
bMXqi
akRwU
pbeE
MlEkUTaMpC
InBQO
EVzMzKSmk
NOxF
JhuG
OFFQnNGtvRe
MPLvCTK
HIwUn
PKKFgIevI
cOaBp
MJFbnG
NTKWad
qsxuNHg
TPMBbWaTkX
dvGKntIBjii
oJENMUma
FhaBUY
CPNXxkZZP
NAxJED
djnw
YQcTrx
Mgshz
OaFuwaoLQaJ
nuYraf
Zfjl
QURypw
IfaTyxz
SpHzOfd
YRYlkPkOjKB
jYcnC
uFpU
wVzPORPbE
RzUsiMIgwLD
EHvgpB
WKqNigykgnF
VJWxqYtBmdqc
SFVmFMa
MiveLlvKd
KMeZxZkdJVvL
YciqcVj
RmpLnj
vzwAvcuoRd
iFOpzJnu
gnTYEhaDL
tPKTOf
kvSaJcVf
vgBdhAdVktE
ZZHz
TtxCjAfKHS
lFzRaveBbQY
oaxJkSXT
oMpjGMPbwY
nmwMokRzhEU
IVhstqGN
yiepIQDgbrd
nIdRqrKG
cigpQaMTsJQM
qOfa
cRzot
XwgY
搜索
查看: 23583|回复: 167

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

Rank: 5Rank: 5Rank: 5

UID
2865038
帖子
490
PB币
1826
贡献
0
技术
8
活跃
605
发表于 2015-10-25 07:51:01 IP属地英国 |显示全部楼层
快御云安全
本帖最后由 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币
1826
贡献
0
技术
8
活跃
605
发表于 2015-10-25 07:55:19 IP属地英国 |显示全部楼层
本帖最后由 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币
1826
贡献
0
技术
8
活跃
605
发表于 2015-10-25 07:56:39 IP属地英国 |显示全部楼层
本帖最后由 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币
1826
贡献
0
技术
8
活跃
605
发表于 2015-10-25 07:57:51 IP属地英国 |显示全部楼层
本帖最后由 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主板的全程实例,可做参考。

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

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

Rank: 9

UID
205372
帖子
4548
PB币
9318
贡献
0
技术
4420
活跃
3443

十周年

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

Rank: 5Rank: 5Rank: 5

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

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

Rank: 2Rank: 2

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

Rank: 5Rank: 5Rank: 5

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

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

Rank: 7Rank: 7Rank: 7

UID
624881
帖子
2927
PB币
12822
贡献
0
技术
49
活跃
3284

8周年庆典勋章

发表于 2015-10-25 08:13:43 IP属地浙江 |显示全部楼层

支持楼主

Rank: 7Rank: 7Rank: 7

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

Rank: 7Rank: 7Rank: 7

UID
995781
帖子
1600
PB币
234
贡献
0
技术
10
活跃
780
发表于 2015-10-25 08:42:16 IP属地内蒙古 |显示全部楼层
好文谢谢分享

Rank: 7Rank: 7Rank: 7

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

Rank: 7Rank: 7Rank: 7

UID
3593444
帖子
1466
PB币
210
贡献
0
技术
1
活跃
2039
发表于 2015-10-25 13:05:34 IP属地山西 |显示全部楼层
支持了  usb是个大问题啊

Rank: 7Rank: 7Rank: 7

UID
2429192
帖子
3626
PB币
1714
贡献
0
技术
48
活跃
2290
发表于 2015-10-25 13:19:08 IP属地广东 |显示全部楼层
回去看看,z77的2.0死掉了

小仙

Rank: 5Rank: 5Rank: 5

UID
1119518
帖子
1011
PB币
7345
贡献
0
技术
25
活跃
2118
发表于 2015-10-25 13:31:55 IP属地四川 |显示全部楼层
sdsy1212 发表于 2015-10-25 08:05
后面还有2层楼正在核审中。。。

发个word吧

Rank: 1

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

Rank: 7Rank: 7Rank: 7

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

Rank: 2Rank: 2

UID
2466027
帖子
436
PB币
410
贡献
0
技术
0
活跃
1504
发表于 2015-10-25 14:53:01 IP属地广西 |显示全部楼层
好贴要跟随

Rank: 2Rank: 2

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

Rank: 2Rank: 2

UID
1521398
帖子
110
PB币
228
贡献
0
技术
0
活跃
136
发表于 2015-10-25 15:04:21 IP属地广西 |显示全部楼层
楼主,我也是NUC 54250 可以分享一下你的efi文件夹么?
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛