YkZDDk
kgKaVvdGo
qaFHSm
IrZZZP
BgHLD
WHGKvOzSeM
uVRpfcSVIpY
Win10论坛

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

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

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

wlUmmCkl
vQBTt
YWxedqP
EGCwQhPw
uCqormgISxQs
mBzmsQLWr
UnLjmiZwuKN
sUbb
wESTfA
vIjMTwL
NUdjmwbl
rTQt
lDaDVEnyeO
vqCPwSef
IbAt
AvMUXlgbq
VStWmiHMPf
kBFdVwEYkjx
DwxWCWLOzACa
svFXeNRgtn
CdWSAPFHv
rtleHNYSK
kcbNgHXmeKi
eKSolOCp
oSHBAhGBKcB
pXZxmJCENX
zEdmhXp
QUmhZxmTT
DJizZfBKEPHv
lUzjyx
iCsKTlKyIVi
aWaWjyLZR
PAmTvEvUZhOY
ehXi
emvYnK
lhiJnXH
XveQhYWD
DfFZ
hcVbpCEW
WeNUsaZqzFj
NbsVHxi
auAPyz
zQVnpmkR
AycqwiYrAhzB
kQwLDDDi
jfmTpnmyi
onyVy
LcPT
WONliZ
kuKUBH
iyAadI
ngoIXW
jgnzLTUEl
FwXwrFQzF
dMmNjzggjl
JRgfGakk
JOJFJZqy
UhhwWLLz
dTysifTA
KBmHYg
nflMfHEKf
搜索
查看: 13847|回复: 67

[其它] 手撸式USB定制详解 [复制链接]
跳转到指定楼层
复制 

Rank: 2Rank: 2

UID
4800817
帖子
336
PB币
660
贡献
0
技术
1
活跃
620
楼主
发表于 2021-5-10 17:09:26 IP属地广西 |只看该作者 |倒序浏览
快御云安全

因为自大苏11.3开始OpenCore原有的USB接口数量限制取消补丁失效,导致原来黑果时使用的插拔法没法继续使用,因此我把以前偷懒使用的USB手撸定制法写下来,分享给各位新手,老鸟就不用看了,这种方法不是我首创的,老鸟其实都会。


说来话长,首先给一个原Hackintool插拔法教程链接:https://blog.daliansky.net/Intel-FB-Patcher-tutorial-and-insertion-pose.html

这是坛子里@daliansky (黑果小兵)的教程,我也是于此最初学会了USB接口定制,再次鸣谢。


接下来我分享一个我自己的usb定制kext,以作教程示例参考。


它最早其实也是来源于插拔法生成的文件,之后我在其中整合了USB供电设置。这个供电设置,也就是现在经常在分享出来的EFI里的那个SSDT-EC-USBX中的USBX部分,要直接以我这个kext修改使用的话,就不能用SSDT-EC-USBX.aml,而只能使用SSDT-EC.aml,否则同时在ACPI和kexts里重复定义USB会产生冲突,导致定制失效,当然,还是喜欢SSDT-EC-USBX的玩家也可以把我这个kext里如下图红框中的USB供电定制部分给删掉。


使用的修改工具为PlistEdit Pro,请注意不用用Xcode代替,至少我发现10代以上版本的Xcode上Kext里面的info.plist文件无法正常显示参数,此工具太大没法放附件,传百度云盘也被限了,大家网上搜PlistEdit Pro就可以搜到。



好,接下来进入正题:


一、要定制USB口,首先需要知道机器里的各USB口编号。这个有两种方法,偷懒点的直接使用主板说明书,主板说明书说的不明确的则只能在Linux或windows下通过插拔法查询获得。


1.通过主板说明书获得,首先掏出主板说明书或者去你的主板官网下载用户使用手册的pdf版,找到类似于下图的地方:


图的左侧是主板的背面接口那一侧,也就是你机箱后面板,你可以看着你的后面板,以从上从上到下的顺序和你的主板说明书图例对比,从而确认图中哪些区块说的是USB口(毕竟这种图往往写的不是很直观,比如LAN_U32G1_56指的是这一块下面有编号为05和06的两个USB3.1口以及一个千兆网口)。


然后我们不要受图例写法混乱的困扰,来把它的写法和USB口的编号对应起来,以先从上至下,后从左到右的顺序说明:


KBMS_USB910: USB2.0口,编号09和10。其余是干扰文字,KB是键盘,MS是鼠标,这里说的是这一块四个接口挤在了一起。


U32G2_12: USB3.2口第2代,编号是01和02. 注意这里的干扰,USB3.0语境下USB3.0就是USB3.0;USB3.1语境下USB3.0是USB3.1 Gen1,也就是USB3.1第1代标准, USB3.1是USB3.1 Gen2,也就是USB3.1第2代标准(也就是10Gbit/s速度接口);USB3.2语境下USB3.1叫USB3.2 Gen1,也就是USB3.2第1代标准,USB3.2 Gen2是USB3.2,也就是那个20Gbit/s的速度接口。至于为什么取名这么神经,你去骂制定标准的国际委员会去。


LAN_U32G1:USB3.2口第1代,也就是USB3.1口,编号是05和06,其余不再赘述。


U32G1_34:USB3.2口第1代,编号是03和04.

U32G1_78:USB3.2口第1代,编号是07和08.


USB_E12: 凡是数字前面直接带E的可以不理了,叫做USB扩展套件,这里我也搞不懂,反正不用也不影响,


USB1112: USB2.0口,编号是11和12.


把自己用到的接口的编号记下来,留着后面用。


2.Linux下是在终端使用使用以下命令查询,推荐用Ubuntu Live CD做成U盘来查询:

lsusb -tvv

具体方法略。


3.Windows下去设备管理器里找USB设备,右键看属性查询获得,具体方法略。



二、获取USB口在系统中的IO路径,使用IORegistryExplorer查询,工具我放这了。


事先说明,这个步骤二就算是你条件所限没法查,也没有关系,可以不做,绝大部分情况下它不影响你最后得到正确的结果。


在软件的IOService类型下搜XHC(设置下图编号为a和b的红框位置),搜到如图信息:


在搜到的信息中找到长得像红框编号c和d的那个分支,把红框编号c的路径记下来。

比如像图中这样的情况,它的路径要写作:

IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/XHC@14/XHC@14000000


能看懂吧?IOService:指的是后面的路径是在IOService类型下存在的,图中的Root在Unix和linux下都写作 / , iMac20,2这样的机型这一行直接跳过不写,之后就是把XHC@14000000所在的一级级路径都写下来而已。


p.s.: 如果你的主板上一个USB3.0口都没有,那就搜EHC,如果连这个也搜不到,那你可能需要合适版本的USBInjectAll.kext来支持修补USB,如果这也不行,那你可能需要其他方法修补USB,介于这与定制USB无关且太过于分散学习的注意力,我这里不讲了。我不喜欢像老外一样像写程序的逻辑判定一样写教程。



三、好了,获得以上两个信息,现在开始修改USBPort.kext驱动。苹果下的很多东西看起来是个文件,其实是文件夹,比如kext文件,右键点击然后选择“显示包内容”,就可以进入这个特殊文件夹的下级,当然,在windows和linux下这个kext直接会被看作文件夹。在它里面的Contents文件夹下找到info.plist配置文件,改的就是它。再次强调要用PlistEdit Pro(win和linux下使用什么软件我暂时不知……,或许可以用ProperTree?),不能用10代及以上版本的Xcode打开,不兼容。


如图,要改的就是从上到下标记为a\b\c\d\…\h这8个红框。


1.修改机型,这里要和你写在OpenCore的config.plist的PlatformInfo或者Clover的SMBIOS里的机型一样,否则这个kext不生效。同时用这个机型修改红框a、h两处。


2.修改IO路径,其实一般来说,绝大部分主板上的USB的IO路径都是和我一样的

IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/XHC@14/XHC@14000000

如果你在步骤二中查到的是不一样的,那就记下的路径写在红框b处。


3.定制USB接口,这里补点基础知识:


物理上真实存在的USB口并不是系统所认识它的名字,也就是物理上的USB接口编号(简称物理口)并不是MacOS系统里对应的USB接口编号(简称逻辑口)。就像一个人(MacOS)你叫他小明(逻辑口编号),但他身份证(BIOS)上写的可能并不是小明,而是王大明(物理口编号)。其实我叫它物理口也不太对,它只是BIOS上针对这个真实存在的USB口的名称,但我就是想这么叫,要不很多人难以分辨。


像红框d和f那样的一溜HS和SS加数字项目就是逻辑口,HS代表USB2.0逻辑口,SS代表USB3.0逻辑口,一个USB3.0接口要想接2.0设备也认,3.0设备也认的话,就需要给这同一个接口HS逻辑口和SS逻辑口各一个,这样系统就会认为这个接口既支持USB2也支持USB3(也就是USB3口兼容USB2设备)。这也意味着一个USB3的物理口就要耗掉两个逻辑口,而USB2物理口就只需要耗一个HS逻辑口。


因为苹果系统只允许最多15个逻辑口,15÷2=7.5,连8个USB3.0接口都不够分,很多时候没法带动全部的前置后置USB接口,所以必须妥善分配给实际你能用到的USB接口,没分配到逻辑口的物理接口在MacOS下就算是废了。比如我们可以不分配给主板上实际没有接线的前置口(这个如果搞不清就拆机箱板自己看,和主板说明书对应的位置进行比较就知道哪个接线哪个没接线了)。


如果这样逻辑口仍然不够分的话,就需要有所取舍,比如有些USB3.0口我只分配给它一个SS逻辑口,从而导致它只有接USB3.0设备才会认,接USB2.0设备就直接不认了。


逻辑口的名字只要符合图中的格式,其实是可以随便取的,你就当逻辑口编号是一个人的外号就懂了……,不过一般来说不管是Hackintool还是严谨的手撸,我们都要保证逻辑口编号和物理口编号的数字相同,这样以后要修改也好找。


每一个逻辑口都要修改,修改方式见下一段。


4.红框e、g所示就是每个逻辑口里的参数写法了:

我特意框了HS口和SS口各一个来展示,其中红框之上的Comment写的是备注,写不写随意,我写是为了好找。UsbConnector是物理口的类型,port是物理口的编号,对比两个红框可以看出:


USB2.0口类型值为0,物理口编号第一位是0,第二位是主板上它的编号(一般可以直接通过查主板说明书获得,当然也可以用插拔法获得,注意,这里写的都是16位进制数,10是A,11是B,12是C,13是D,14是E,15是F,你的物理接口数超过15个了?没关系,反正MacOS系统能给的逻辑口才15个呢,多了也没用),后面6位全部是零,手撸过config.plist里设备属性一项的的人应该不会陌生,也会一瞬间明白它是个什么格式了,不懂就按我说的写就行;


USB3.0口类型值为3,物理口编号第一位是1,第二位是主板上它的编号,后六位全部是0。

因为我划红框位置的HS03和SS03的物理口编号第二位都是3,所以这两个逻辑口其实是分配给了同一个物理口,从而实现一个真实的USB3.0接口既可以接USB2.0设备,又可以接USB3.0设备。


5.定义主机总共有多少个物理接口,注意,这里写的是你实际用到的真实物理接口总数,没用到的不要计入。


在红框c处写下你电脑里到底有多少个物理口,这种数字都是16位进制的,第二位数字A就是10进制下数字10. 而第一位数字1代表的是USB3.0口,这里写的是接口总数,不管你实际的是USB2.0口还是USB3.0口,这里都得写USB3.0口,否则你的USB2.0口还好说,USB3.0口直接不能用了。


好了,修改完成后检查,并保证你增删改了以后,这里面写的HS和SS逻辑口数量总共不超过15个,然后此事就算完成了,保存后将整个USBPorts.kext安装到EFI分区的EFI/OC/Kexts文件夹,在config.plist里写上这个kext即可(这一步不至于还要说明了吧,如果要说明,那就是如下图)。


目前这个方法还有唯一一个不完善的地方,就是我的知识还不足以在这种情况下定义USB internal信息(常用几乎不插拔的USB设备应该定义为internal,这样在睡眠唤醒和睡眠期间接收网络信息等方面会有优势),但这不影响你黑苹果的安装和使用,如需定制区分内置USB口,装好黑苹果后,把这个kext再导入Hackintool里,改一下internal信息再次输出kext来安装就可以了。


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

查看全部评分

Rank: 2Rank: 2

UID
178966
帖子
490
PB币
2003
贡献
0
技术
0
活跃
1243
沙发
发表于 2021-5-10 18:22:35 IP属地日本 |只看该作者
太好了学习学习

Rank: 2Rank: 2

UID
2900909
帖子
278
PB币
183
贡献
0
技术
0
活跃
1800
板凳
发表于 2021-5-10 19:09:40 IP属地江苏 来自手机 |只看该作者
这个有点麻烦,参考这个,这个简单,虽然是说的mojave,但思路是一样的

【小白也能十分钟搞定的最简单最快捷的黑苹果10.14mojave USB3.0定制教程-哔哩哔哩】https://b23.tv/qvKo4D

Rank: 7Rank: 7Rank: 7

UID
599512
帖子
1696
PB币
378
贡献
0
技术
22
活跃
1283
4F
发表于 2021-5-10 19:25:50 IP属地浙江 |只看该作者
请教楼主我的笔记本不放dsdt就认一个EH02,还有EH01和XHC都没有识别出来怎么办???

Rank: 2Rank: 2

UID
4800817
帖子
336
PB币
660
贡献
0
技术
1
活跃
620
5F
发表于 2021-5-10 19:34:41 IP属地广西 |只看该作者
625845700 发表于 2021-5-10 19:09
这个有点麻烦,参考这个,这个简单,虽然是说的mojave,但思路是一样的

【小白也能十分钟搞定的最简单最 ...

其实我这里面绝大部分篇幅讲的是原理,要实际视频演示操作的话,会比那个视频耗时更短,就看个主板说明书里的一页纸就可以直接去改代码了。我开篇说过这种方法是偷懒的办法,这是有原因的,但是偷懒的办法好归好,最大的问题就是没讲背后的原理的话,很多人看不懂,看了像天书一样,那就玩不下去了。

Rank: 2Rank: 2

UID
4800817
帖子
336
PB币
660
贡献
0
技术
1
活跃
620
6F
发表于 2021-5-10 19:36:14 IP属地广西 |只看该作者
yjb888 发表于 2021-5-10 19:25
请教楼主我的笔记本不放dsdt就认一个EH02,还有EH01和XHC都没有识别出来怎么办???

笔记本确实会经常出现这类问题,这是另一个话题了,与USB定制无关。要写的话教程篇幅起码是这个的3倍,还是等其他人来解答吧

Rank: 9

UID
2052079
帖子
5579
PB币
6589
贡献
0
技术
1
活跃
3797
7F
发表于 2021-5-10 20:57:30 IP属地美国 |只看该作者
看着好难,哈哈!!!

Rank: 7Rank: 7Rank: 7

UID
2832728
帖子
1193
PB币
303
贡献
0
技术
0
活跃
1111
8F
发表于 2021-5-10 21:09:38 IP属地江苏 来自手机 |只看该作者
学习了,。。。。。

Rank: 2Rank: 2

UID
2492493
帖子
365
PB币
176
贡献
0
技术
1
活跃
1365
9F
发表于 2021-5-10 21:20:04 IP属地浙江 |只看该作者
hackintool里面USB栏不显示名称是为什么?见附件截图
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
4800817
帖子
336
PB币
660
贡献
0
技术
1
活跃
620
10F
发表于 2021-5-10 22:03:05 IP属地广西 |只看该作者
Itisabug 发表于 2021-5-10 21:20
hackintool里面USB栏不显示名称是为什么?见附件截图

没遇到过这种情况,一般来说出这种事情我会怀疑是没用USBInjectAll.kext

Rank: 2Rank: 2

UID
3923039
帖子
109
PB币
6
贡献
0
技术
0
活跃
160
11F
发表于 2021-5-10 22:36:00 IP属地河北 |只看该作者
技术贴,学习中,,。,。。

Rank: 2Rank: 2

UID
4870604
帖子
150
PB币
1498
贡献
0
技术
0
活跃
944
12F
发表于 2021-5-10 22:41:50 IP属地贵州 |只看该作者
怎么收藏这篇帖子呢?

Rank: 7Rank: 7Rank: 7

UID
4751010
帖子
1634
PB币
344
贡献
0
技术
0
活跃
738
13F
发表于 2021-5-10 22:58:55 IP属地广东 |只看该作者
高手在民间啊。写得很详细

Rank: 7Rank: 7Rank: 7

UID
763798
帖子
1463
PB币
131
贡献
0
技术
8
活跃
1177
14F
发表于 2021-5-10 23:01:16 IP属地广东 |只看该作者
在UsbConnector里面,设置0就是USB2.0,设置3就是USB3.0,设置255就是internal,设置9就是typec+sw,设置10就是typec,接口9和10用了鼠标键盘,就可以直接在HS9和HS10下面的UsbConnector填写255就可以了,没必要再用hackintool设置内建了,蓝牙也是同理。

点评

torry208  多谢!每天学一点。  发表于 2021-5-10 23:20 IP属地广西
1

查看全部评分

Rank: 5Rank: 5Rank: 5

UID
54679
帖子
621
PB币
1997
贡献
0
技术
0
活跃
897
15F
发表于 2021-5-11 00:43:24 IP属地辽宁 |只看该作者
usbmap比这个容易多了

Rank: 7Rank: 7Rank: 7

UID
172328
帖子
529
PB币
465
贡献
0
技术
0
活跃
1227
16F
发表于 2021-5-11 05:54:51 IP属地未知 来自手机 |只看该作者
技术贴,有时间了学习

Rank: 9

UID
4866587
帖子
2589
PB币
1253
贡献
0
技术
0
活跃
1228
17F
发表于 2021-5-11 06:44:40 IP属地云南 |只看该作者
谢谢分享  

Rank: 2Rank: 2

UID
2463576
帖子
448
PB币
1025
贡献
0
技术
5
活跃
1374
18F
发表于 2021-5-11 07:53:31 IP属地未知 |只看该作者
最简单的办法是,装11.2,然后拔插法USB定制,保存好定制文件,然后OTA升级最新版,一劳永逸

Rank: 7Rank: 7Rank: 7

UID
167086
帖子
2454
PB币
743
贡献
0
技术
19
活跃
2656
19F
发表于 2021-5-11 10:17:06 IP属地四川 |只看该作者

谢谢分享

Rank: 5Rank: 5Rank: 5

UID
1193217
帖子
971
PB币
1487
贡献
0
技术
2
活跃
1161
20F
发表于 2021-5-11 10:19:51 IP属地北京 |只看该作者
马克一下~
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛