GwepNTlO
YLnufqy
DCnIwEfSkg
GdtMPbBP
WWmEEYzpC
kKAhpVHd
LpJWd
egvjbztm
TGwuf
IzftTdNxYOq
HXMNjxAv
rpFkz
oDmfX
FgVInJZmSe
IqDWICBtd
OiUeEU
eYTAb
coboBAPez
eSQLgWV
mMzpUZ
hBepm
hoDVak
rlNBS
BPQcIudMpC
EUrlpxcUn
uEgaBcR
jqnQ
gorrLQekFjP
suDzjPNcL
sOck
SSaPL
wKnw
XwARiAWt
dyyAG
DCBnAFw
vgpNvpCrehOp
PBgTj
eEcMAqV
rkMriyBKSWe
acUzmp
JazURiZE
yZYti
GBvySiXt
ONLhykhkzVp
vtQIZsFAJaSj
XFlEwedfxM
AbuKUutpyuD
eDUNeCDJ
tVBYtuaFNR
HNSzklgBUD
VDsyNniAACm
WvgDaAl
sZXLKqMg
tbtw
jdUcArNvGeCy
mEPo
moamtVJ
wwQACga
KHLmVO
PzJS
zSjuZfjkV
lzxYhtGyn
uWWIdjYgZWL
ZsmizkZ
QmsXPBemvR
ElbfDDAVoui
miQwMbBQbox
GFNjBxuZmex
diuz
jmvy
GjnDfnyPVGz
CcNEPU
bBEXNgl
udZQmw
tLesnWOctw
ujcnkiIb
LvRc
aMCVZGECWyUD
DawsLdptZo
UJPBx
OZaWAvrj
oqosYpamp
mRoDakUdgd
hzUFLm
搜索
楼主: zyangc

[DSDT] SSDT-FixUSB手动定制USB成功 [复制链接]
跳转到指定楼层
复制 

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
楼主
发表于 2023-4-14 09:29:30 IP属地贵州 |显示全部楼层
快御云安全
本帖最后由 lwx1901 于 2023-4-14 21:06 编辑

    (一)楼主的思路正解;另外,USBX为加强通用串行总线控制器电源管理的设备定义,与帖子主题没有直接关系,需要说明的是,不同白果机型的USBX属性是不一样的;

    (二)对于10代及以上RHUB集线器在ACPI中定义不规范问题,先屏蔽原机RHUB集线器【不屏蔽会造成开机卡内核无法正常启动系统】并兼顾重新启用定义新集线器RHU0,再按楼主思路重新定义一个RHU0集线器【重新定义RHU0集线器,是为了避免与RHUB发生冲突】;9代及以下RHUB定义符合ACPI规范的机型可参考OC-Little的方法进行USB端口定制;

    (三)新定义的RHU0集线器下只需要定义存在且有效的端口,不存在且无效的端口一率不需要再定义,并注意存在且有效的端口总数不要超出15个的限制;

    (四)RHU0下每个存在且有效的端口的地址定义_ADR照搬原RHUB下的地址_ADR【如:Name (_ADR, One)】,注意一 一对应且不要重复;

      (五)原RHUB下的所有_UPC更名ZUPC完全不需要,原因很简单,_UPC为ACPI语言保留函数,它的作用范围仅在RHUB范围内,同理,RHU0下重新引入_UPC函数也仅作用在RHU0范围内,相互不会产生冲突;


    (六)建议加入操作系统判定条件,使改动仅对macOS生效,不对其它操作系统产生影响【如:If (_OSI ("Darwin")){....}】;

    (七)已在十代冰湖笔记本上亲自实测确实有效,现已经删掉USBPorts.kext,改用定制编译的SSDT,此方法理论上适用于所有机型;

    (八)同理,雷电TypeC口也采用同样原理及方法一并通过ACPI定制端口。

    (九)不对之处果友们给予指正。

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

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
沙发
发表于 2023-4-14 09:50:37 IP属地贵州 |显示全部楼层
本帖最后由 lwx1901 于 2023-4-14 09:52 编辑
applestar666 发表于 2023-4-14 09:41
总结很棒啊,你觉得这种方式和别的 kext 定制的区别在哪呢,或者说好处在哪

ACPI方式加载解析优先级更高,不受机型改动影响,重新配置EFI引导不需要再定制USB,可以将定制好的SSDT代码以合适的方式刷入整合进BIOS。

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
板凳
发表于 2023-4-14 10:06:48 IP属地贵州 |显示全部楼层
本帖最后由 lwx1901 于 2023-4-14 10:08 编辑
applestar666 发表于 2023-4-14 10:00
「可以将定制好的SSDT代码以合适的方式刷入整合进BIOS。」这句话怎么理解呢,怎么整合进 bios

ACPI的所有表:DSDT SSDT ECDT   DMAR 等都是编译好后以aml文件格式集成在BIOS中的,同理,我们定制好的SSDT也可以整合到BIOS中,不需要通过OC来加载解析,上电开机后直接从BIOS调用,优先级最高。我的笔记本的所有定制的必须的SSDT都是已经整合并刷入BIOS中了的。方法不难。

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
4F
发表于 2023-4-14 10:09:11 IP属地贵州 |显示全部楼层
applestar666 发表于 2023-4-14 10:03
为啥找不到你的回复了,是不是整个代码包在 If (_OSI ("Darwin")) 的判断里就行了

刚才重新编辑补充完善了一下回复帖子,正在审核中嘞

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
5F
发表于 2023-4-14 10:16:10 IP属地贵州 |显示全部楼层
applestar666 发表于 2023-4-14 10:11
明白了,谢谢,顺便有个困扰我很久的问题,https://bbs.pcbeta.com/viewthread-1963816-1-1.html 大佬能帮 ...

晚上我传我昨晚定制编译好的SSDT上来,你可以参考一下,现在电脑不在身边,光靠文字表述你不一定能完全明白。

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
6F
发表于 2023-4-14 10:26:58 IP属地贵州 |显示全部楼层
本帖最后由 lwx1901 于 2023-4-14 10:28 编辑
applestar666 发表于 2023-4-14 10:19
好的好的,但是你使用的 ssdt 跟我的也不通用呀,你觉得问题可能出在哪。

没有正确定制好,我也是一开始出现误区,出现丢失端口的情况,表现为用Hackintool查看有些端口未显示出来,有些端口是显示出来了,但是插上USB物理设备后没有反应,最后排查原因是_ADR端口地址引入不对或重复定义发生冲突所致。现在已经完全调试适配且工作非常OK了。有需要的话到时可以手把手教你。

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
7F
发表于 2023-4-14 13:03:20 IP属地贵州 |显示全部楼层
applestar666 发表于 2023-4-14 10:43
不是,是我这个帖子的问题,https://bbs.pcbeta.com/viewthread-1963816-1-1.html ,我这个是用 USBPorts ...

应该不会,有错必纠嘛

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
8F
发表于 2023-4-15 22:13:20 IP属地湖南 |显示全部楼层
本帖最后由 lwx1901 于 2023-4-15 22:27 编辑
applestar666 发表于 2023-4-15 11:48
试过了,usb 还是失灵了

检查对比一下我的定义方法与你的不同之处:我在调试中发现,各USB端口也必须同时引入_PLD函数(顾名思义:设备物理位置,照搬各端口原_PLD函数代码段过来即可)

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

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
9F
发表于 2023-4-16 00:50:20 IP属地湖南 |显示全部楼层
本帖最后由 lwx1901 于 2023-4-16 00:54 编辑
applestar666 发表于 2023-4-16 00:38
还有话说不是新定义个 RHU0 吗,怎么还是在 RHUB 下

我是已将自定义端口类型代码通过系统判断整合进原RHUB集线器,加入的自定义代码仅对macOS生效,If (OSDW ()){新加入的定制端口类型代码段) Else {原代码段},通过此方式已经使RHUB符合ACPI规范,故RHUB集线器不再需要屏蔽(保持默认启用状态,开机不会再卡内核)。这样RHUB集线器设备名称就原样保持与macOS兼容一致(白果机XHC和TXHC下集线器名称就叫RHUB)。故不再需要新增定义RHU0集线器了。

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
10F
发表于 2023-4-16 11:27:42 IP属地湖南 |显示全部楼层
applestar666 发表于 2023-4-16 00:13
_PLD 我没加,我加下_PLD 原始代码是这样的

Method (_PLD, 0, NotSerialized)  // _PLD: Physical Lo ...

_STA函数放在RHU0范围内即可,就放一个,不要每个USB端口都放,放了也没用。

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
11F
发表于 2023-4-16 15:48:00 IP属地湖南 |显示全部楼层
本帖最后由 lwx1901 于 2023-4-16 19:07 编辑
applestar666 发表于 2023-4-16 12:43
是的,我是这么处理的

我把调试好的修补SSDT传上来,你可以结合原机DSDT及相关原机SSDT参考比较,希望能帮到你:


注意程序代码树形结构:


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

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
12F
发表于 2023-4-17 09:50:38 IP属地贵州 |显示全部楼层
本帖最后由 lwx1901 于 2023-4-17 09:59 编辑
applestar666 发表于 2023-4-16 21:21
谢谢,我学习下

照搬_PLD保留函数需要注意一个问题,就是它调用的预设函数GPLD 是否在\_SB.PCI0.XHC内或\_SB.PCI0.XHC.RHUB内定义,如果是在外部定义,则可以直接照搬,如果是在\_SB.PCI0.XHC或\_SB.PCI0.XHC.RHUB内定义的,在SSDT开头的调用声明中要明确好GPLD函数的具体路径位置,如:External (\_SB.PCI0.XHC_.GPLD,MethodObj)  或    External (\_SB.PCI0.XHC_.RHUB.GPLD,MethodObj),而不是直接:External  (GPLD,  MethodObj)。所以要具体情况具体处理。

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
13F
发表于 2023-4-17 12:51:06 IP属地贵州 |显示全部楼层
本帖最后由 lwx1901 于 2023-4-17 13:07 编辑
Dynamix 发表于 2023-4-17 11:37
你这个写首先就是冗余 其次就是在Method内创建 NameSpace 要用序列化定义 Serialized 在方法中没有其他 ...

主要是Else {..........}部分我考虑的是不改动原机代码段全部照搬过来,尽可能减少对非macOS系统的影响。另外,参考白果机ACPI,自定义操作系统判断函数OSDW:   
       Scope (\)
       {
             Method (OSDW, 0,  Serialized)
             {
                   If (_OSI ("Darwin"))
                   {
                         Return (One)
                   }

                  Return (Zero)
             }
       }

白果笔记本是用OSYS = 2710来作为判断条件,由于我的笔记本需要兼顾OSYS<=07DF以驱动触控板,故不能完全照搬白果笔记本的OSYS =2710作为OSDW函数的判定条件。

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
14F
发表于 2023-4-17 15:05:31 IP属地贵州 |显示全部楼层
本帖最后由 lwx1901 于 2023-4-17 15:21 编辑
Dynamix 发表于 2023-4-17 13:49
我说的是UPC方法里面创建 UPCP再返回UPCP多此一举 而且 在方法内部创建以外部声明的形式对象需要将方法定 ...

确实如此,正解,先定义UPCP再返回UPCP,执行环节多了点,效率是不高,按你的思路作优化修改,谢谢指导!是否正确?

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

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
15F
发表于 2023-4-17 16:36:04 IP属地贵州 |显示全部楼层
本帖最后由 lwx1901 于 2023-4-17 21:35 编辑
Dynamix 发表于 2023-4-17 15:46
妥妥——就是这样

Very Good!!!


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

点评

czlzd  这个文件能否分享下  发表于 2023-6-1 08:33 IP属地浙江

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
16F
发表于 2023-4-25 11:37:36 IP属地贵州 |显示全部楼层
zyangc 发表于 2023-4-25 10:07
能把你定制好的文件发一下吗,我这有个蓝牙的 acpi error的

你要查是什么导致的ACPI ERROR,根据报错位置及报错原因修正,查询ACPI日志命令:

log show --last boot | grep -Ei "ACPI"

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
17F
发表于 2023-4-25 14:37:44 IP属地贵州 |显示全部楼层
本帖最后由 lwx1901 于 2023-4-25 14:47 编辑
zyangc 发表于 2023-4-25 12:53
启动时候蓝牙的usb接口

        原机DSDT表中,由于\_SB.PC00.XHCI.RHUB.HS09端口加入了存在的判断条件,macOS解析为不识别不存在,而在原机SSDT表:xh_adls3中却要调用\_SB.PC00.XHCI.RHUB.HS09而没有找到,故报ACPI ERROR:AE_NOT_FOUND。
       处理方法有两个:如果\_SB.PC00.XHCI.RHUB.HS09端口确实物理存在且有效,需要用到这个端口,在DSDT表中将它移出判定条件中;如果\_SB.PC00.XHCI.RHUB.HS09端口为无效端口,可在SSDT表:xh_adls3中将\_SB.PC00.XHCI.RHUB.HS09端口定义代码段加入If (_OSI ("Darwin")) {  Return (Zero)} Else {......原代码段.....}将它屏蔽掉。

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2658
PB币
2850
贡献
0
技术
3
活跃
1053
18F
发表于 2023-5-31 07:49:55 IP属地江苏 |显示全部楼层
本帖最后由 lwx1901 于 2023-5-31 17:48 编辑
a7299 发表于 2023-5-30 10:22
请问双usb控制器的怎么改???一个intel 原生usb 3.0控制器,一个asmedia芯片控制器,,,两个都做进ssdt里去 ? ...

       这要看两个控制器在原机DSDT中是如何定义申明的,是分开的还是合并在一起的,应该是分开的,就像XHC和TXHC,它们就是两个通用串行总线控制器下的集线器的各USB对应端口分别在DSDT或SSDT中申明,然后再单独提供一个SSDT分别对TXHC和XHC的集线器下的USB端口进行接口类型、存在与否进行定义,采用的是_UPC和_PLD保留函数,ACPI编程语言的所有保留函数是直接起作用的,即直接告诉操作系统是否存在这个USB端口及端口的类型是什么,ACPI规范中,保留函数为三位数,最前面的下划线是为了补齐十六进制四位数,以遵循ACPI规范。     

       一般用到的ACPI编程语言保留函数还有:_STA 设备状态函数,_DSM设备属性函数,_PRW设备睡眠后唤醒电源函数,_OSI操作系统内核类型函数,..........等等等

回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛