wangdongfreesky 发表于 2023-3-12 19:51

DSDT定制修正USB端口,使用UPC函数法

本帖最后由 wangdongfreesky 于 2023-3-12 19:52 编辑

请看说明:
首先进入到windows或者PE系统,打开AiDA64,或 其他可查看USB端口的工具
用USB2.0设备 、USB3.0设备,如果有typec接口,请购买一个Typec的转接头支持USB3.0的
然后分别插入USB接口,并按如下格式记下位置:


前面板上:USB2.0 所在端口在3.1控制器下 编号 Pot1 有的机器是HS01 HS02
前面板下:USB2.0 所在端口在3.1控制器下 编号 Pot2
前面板左:USB2.0 所在端口在3.1控制器下 编号 Pot3
前面板右:USB2.0 所在端口在3.1控制器下 编号 Pot4


后面板上:USB3.0 所在端口 3.0控制器 编号Pot1 有的机器是SS01 及SS02等
后面板下:USB3.0 所在端口 3.0控制器 编号Pot5
后面板左:USB3.0 所在端口 3.0控制器 编号Pot9
后面板右:USB3.0 所在端口 3.0控制器 编号Po10


后面板上:typeCSW所在端口 3.0控制器 编号Po10
后面板下:TypeCC所在端口 3.1控制器 编号Po11


蓝牙内建端口:所在端口在3.1控制器下 编号Pot8
以上是例子,你需要按上面的格式记下你自己实际的
注:TypeCSW和TypeCC的区别,如果你的TypeC端口反向插的时候不会出现在另一个端口那么就是TypeCSW,否则就是TypeCC
记下端口号后,数一下数量是否超过15个,如果超过15个,那么你就要有所取舍,把常用的保留,把不常用的抛弃
还要注意,要保留你蓝牙所在的USB,这个千万别忘了,否则蓝牙就没了


———————————————分割线——————————————


然后打开模版


这个模板分为三部分
第一部分是引用
External (_SB_.PCI0.GP17.XHC_.RHUB.PO10, DeviceObj)这里的路径要改成你电脑中的路径GP17可能是RP01等,XHC可能是XHCI,PCI0可能是PC00等,PO10也可能是HS01或SS01
第二部分是类型定义
Name (UPC3, Package (0x04)
    {
      0xFF, 0xff 表示开启,有的主板之所以有的usb端口不显示就是因为这个参数为Zero,表示没有启用
      0x03, 0x03 表示类型为USB3,0x09 和 0x0A分别表示typec的两种类型,Zero表示系统默认的usb2
      Zero,
      Zero
    })
如果你没有typec接口那么可以删掉UPCW和UPCC
第三个部分是指定类型
Scope (\_SB.PCI0.GP17.XHC.RHUB.POT1)
    {
      Method (_UPC, 0, Serialized)// _UPC: USB Port Capabilities
      {
            Return (UPC3) /* \UPC3 */   
      }
    }
接下来通过你之前的测试,首先删掉你不用的第一部分引用,和第二部分类型,以及第三部分指定
然后是修正指定的端口类型,
如果是USB2或USB3,那么Return(UPC3),
如果是蓝牙,那么Return (UPCF)
如果是TypeCC,那么Return (UPCC)
如果是TypeCW,那么Return(UPSW)


——————分割线————————


最后一步,将编辑好的SSDT-FixUSB放入到OC的ACPI目录,修改OC配置文件加载SSDT-FixUSB,同时将补丁添加进ACPI补丁中勾选并生效


wangdongfreesky 发表于 2023-3-12 20:01

使用UPC函数法定制USB的好处:
1.修改机型不必重新定制USB
2.可以解决系统不识别USB个别端口的问题
3.适用性广兼容性好AMD平台和Intel平台通用,可在PE下或其他系统下制作,只需用usb端口查看软件如Aida64 RW HE等。端口可以不是HSXX SSXX
4.个别USB控制器仅需多加一个XHCI-unsupported.kext来识别即可

vier 发表于 2023-3-12 20:11

好教程谢谢分享

hgsshaanxi 发表于 2023-3-12 20:26

高级教程啊 多谢分享啊辛苦了~~

harryboy6537 发表于 2023-3-12 21:29

写得不错,感谢楼主分享

flysomi 发表于 2023-3-12 21:49

收藏备用。

黄增光 发表于 2023-3-12 22:05

感谢分享教程

ydhmq 发表于 2023-3-12 22:24


收藏备用。

liuxianwus 发表于 2023-3-12 22:26

感谢分享,空了好好研究研究,现在用kext方式定制,USB3.1和TypeC不能正常工作,

evil000 发表于 2023-3-12 22:41

不错 挺好的教程

jiao2366702 发表于 2023-3-12 23:32

感谢分享,收藏备用

Exile79 发表于 2023-3-13 09:09

红字部分都记下了 感谢分享

zyangc 发表于 2023-3-13 09:44

External (_SB_.PCI0.GP17.XHC_.RHUB.PO10, DeviceObj)

这个路径要怎么找出来,提取的dsdt里面是这样的

   External (_SB_.PC00.XHCI.RHUB.INIR, MethodObj)    // 0 Arguments
    External (_SB_.PC00.XHCI.RHUB.PS0X, MethodObj)    // 0 Arguments
    External (_SB_.PC00.XHCI.RHUB.PS2X, MethodObj)    // 0 Arguments
    External (_SB_.PC00.XHCI.RHUB.PS3X, MethodObj)    // 0 Arguments

zyangc 发表于 2023-3-13 10:07

这个路径怎么找出来啊External (_SB_.PCI0.GP17.XHC_.RHUB.PO10, DeviceObj)

我的dsdt和你这差的有点大,只找到
    External (_SB_.PC00.XHCI.RHUB.INIR, MethodObj)    // 0 Arguments
    External (_SB_.PC00.XHCI.RHUB.PS0X, MethodObj)    // 0 Arguments
    External (_SB_.PC00.XHCI.RHUB.PS2X, MethodObj)    // 0 Arguments
    External (_SB_.PC00.XHCI.RHUB.PS3X, MethodObj)    // 0 Arguments

hxjhao 发表于 2023-3-13 10:59


红字部分都记下了 感谢分享

pyf14 发表于 2023-3-13 11:17

谢谢楼主 收藏了

Dynamix 发表于 2023-3-13 11:48

本帖最后由 Dynamix 于 2023-3-13 12:07 编辑

给AMD的用还行 Intel的 路径不一样 Intel的看看这方法 兼容性更强 改动更少如果AMD的OEM表也有GUPC那就同理了, 我用的也这方法 https://github.com/daliansky/OC-little/issues/18

wangdongfreesky 发表于 2023-3-14 01:43

Dynamix 发表于 2023-3-13 11:48 https://bbs.pcbeta.com/static/image/common/back.gif
给AMD的用还行 Intel的 路径不一样 Intel的看看这方法 兼容性更强 改动更少如果AMD的OEM表也有GUPC那就同理 ...

路径不同,端口不同,该改名的改名啊,谁叫你拿来就用啊!拿来就用还叫定制吗?

wangdongfreesky 发表于 2023-3-14 01:44

zyangc 发表于 2023-3-13 09:44 https://bbs.pcbeta.com/static/image/common/back.gif
External (_SB_.PCI0.GP17.XHC_.RHUB.PO10, DeviceObj)

这个路径要怎么找出来,提取的dsdt里面是这样的 ...

机器不一样,路径和端口名都不一样的

wangdongfreesky 发表于 2023-3-14 01:48

Dynamix 发表于 2023-3-13 11:48 https://bbs.pcbeta.com/static/image/common/back.gif
给AMD的用还行 Intel的 路径不一样 Intel的看看这方法 兼容性更强 改动更少如果AMD的OEM表也有GUPC那就同理 ...

改动少,看不懂有啥用?最起码我这种好理解吧?其实就是重写UPC函数,让它返回你要告诉系统这个端口的类型
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: DSDT定制修正USB端口,使用UPC函数法