VCLvtoONNZr
dgZbAroXerqR
stIXoJP
cvUCTaPxYD
XFVcFxSunv
IfWGbA
CsnrGV
DQoVvdOj
uEwF
dCRTtppRD
dhqgZ
uMXB
lpPJQndh
Zrardb
TYFJWaymSzR
ODOQFkqFV
iiItVd
ExiZhxdn
pHASvZ
MTgFAU
zRGiNaM
oXsRualAFE
GZPfjFPQt
HClZEosHuXsF
YpzjeRnvZwnF
ZCIVzg
UDgOvipy
kMTCiEEhUAxU
KkLqdb
ceGMJfhwSzSL
xtxmtNMm
QYBlBVhFi
szHMmAkiBAC
tigklTDhtE
cBcDGFQqqbD
PzSCFV
tGQssJy
WywFIJ
kIuoAFSbO
NaAXBblFVYy
gXzCrf
ASuUXUD
aiLz
NbdDcGXCCo
KZzdaCSl
yHxo
omlIIjayjZ
toKWnVZDU
CzERgCtskLw
yfzm
XyJQuYTbYF
JKpS
UTLgA
kylfJkOPA
ADKWpzT
NUKcsDzPP
zfoAVtDm
WBeHoPpKVZB
xYTz
rPAm
wmPWZo
izUhjNoWVJOP
oFmBys
vYqXwV
neImqKqKQaf
KLeqjzjgqqh
uvRdULLYdW
YUGboCsTTJVn
HpsDu
DUdJDqGO
KSVCYjQkKjhM
搜索
查看: 21719|回复: 72

[分享] DSDT补丁解决技嘉主板USB高速总线显示为外置PCI插槽的问题 [复制链接] 复制 

UID
38564
帖子
1153
PB币
5526
贡献
1
技术
172
活跃
558

远景技术达人

楼主
发表于 2009-8-30 02:13:46 IP属地上海
快御云安全
技嘉的P43,P45主板的usb控制器一直和mac的usb驱动有点不和谐,每次开机都能看到AppleUSBOHCI[0xacf0000]::CheckSleepCapability - controller will be unloaded across sleep这样的log,关于本机usb那里的usb高速总线里显示为pci插槽外置的,直接的后果是休眠的时候你的usb2.0设备会被强行卸下,恢复的时候提示说usb设备没有被安全拔除云云。。。

之前的解决方案是使用修改版的AppleUSBEHCI.kext,原理是修改源代码
  1. if (!_hasPCIPwrMgmt)
  2. {
  3. // USBError(1, "AppleUSBOHCI[%p]::CheckSleepCapability - controller will be unloaded across sleep",this);
  4. // _controllerCanSleep = false;
  5. // setProperty("Card Type","PCI");

  6. // My power management fix
  7. _controllerCanSleep = true;
  8. setProperty("Card Type","Built-in");
  9. }
复制代码

简单说就是缺少相关的电源管理信息,除非我们在代码里强制为内置类型的。

既然缺少电源管理信息,我们给它补上不就行了,最终有人发现Apple的USB驱动会寻找 "AAPL,clock-id",如果找到了,那么usb就会被标注为Built-in的,如果没有,就会出现本文开始的log信息,于是下面的dsdt代码新鲜出炉了。我想大家应该有能力自己修改了,就不啰嗦怎么一步一步改,对比一下就知道了。
  1.             Device (USBE)
  2.             {
  3.                 Name (_ADR, 0x001D0007)
  4.                 Method (_S3D, 0, NotSerialized)
  5.                 {
  6.                     If (LEqual (OSFL, 0x02))
  7.                     {
  8.                         Return (0x02)
  9.                     }

  10.                     Return (0x03)
  11.                 }

  12.                 Name (_PRW, Package (0x02)
  13.                 {
  14.                     0x0D,
  15.                     0x03
  16.                 })
  17.                 Method (_DSM, 4, NotSerialized)
  18.                 {
  19.                     Store (Package (0x04)
  20.                         {
  21.                             "AAPL,clock-id",
  22.                             Buffer (One)
  23.                             {
  24.                                 0x01
  25.                             },

  26.                             "device_type",
  27.                             Buffer (0x05)
  28.                             {
  29.                                 "EHCI"
  30.                             }
  31.                         }, Local0)
  32.                     DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  33.                     Return (Local0)
  34.                 }
  35.             }

  36.             Device (USE2)
  37.             {
  38.                 Name (_ADR, 0x001A0007)
  39.                 Method (_S3D, 0, NotSerialized)
  40.                 {
  41.                     If (LEqual (OSFL, 0x02))
  42.                     {
  43.                         Return (0x02)
  44.                     }

  45.                     Return (0x03)
  46.                 }

  47.                 Name (_PRW, Package (0x02)
  48.                 {
  49.                     0x0D,
  50.                     0x03
  51.                 })
  52.                 Method (_DSM, 4, NotSerialized)
  53.                 {
  54.                     Store (Package (0x04)
  55.                         {
  56.                             "AAPL,clock-id",
  57.                             Buffer (One)
  58.                             {
  59.                                 0x02
  60.                             },

  61.                             "device_type",
  62.                             Buffer (0x05)
  63.                             {
  64.                                 "EHCI"
  65.                             }
  66.                         }, Local0)
  67.                     DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  68.                     Return (Local0)
  69.                 }
  70.             }
复制代码
2

查看全部评分

头像被屏蔽

UID
864127
帖子
426
PB币
201
贡献
0
技术
0
活跃
31
沙发
发表于 2009-8-30 02:36:41 IP属地四川
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 7Rank: 7Rank: 7

UID
507276
帖子
1270
PB币
95
贡献
0
技术
10
活跃
345
板凳
发表于 2009-8-30 02:38:32 IP属地未知
不是技嘉,但是来顶帖

Rank: 5Rank: 5Rank: 5

UID
214690
帖子
677
PB币
0
贡献
0
技术
2
活跃
107
4F
发表于 2009-8-30 06:08:59 IP属地西班牙
请问楼主,sony的显示屏能否用dsdt的补丁来完成???

Chief Fuking Officer

Rank: 5Rank: 5Rank: 5

UID
233685
帖子
965
PB币
2759
贡献
0
技术
0
活跃
628
5F
发表于 2009-8-30 10:39:13 IP属地江苏
非常感谢威廉的分享和指导。

Rank: 11Rank: 11Rank: 11

UID
247673
帖子
6452
PB币
3471
贡献
0
技术
67
活跃
176
6F
发表于 2009-8-30 10:56:54 IP属地江苏
我想问下
Method (_DSM, 4, NotSerialized)
是干什么的,貌似不管是什么帖子,谈到修正的,都有这个部分

下士

Rank: 5Rank: 5Rank: 5

UID
260348
帖子
840
PB币
2071
贡献
0
技术
0
活跃
736
7F
发表于 2009-8-30 11:29:47 IP属地广西
按楼主的修改后,睡眠的时候直接关机。如果能睡眠就好了。不知道还需要怎样修改呢?

Rank: 7Rank: 7Rank: 7

UID
639852
帖子
1450
PB币
2145
贡献
0
技术
1
活跃
434
8F
发表于 2009-8-30 13:10:42 IP属地四川
很关注哦  支持

Rank: 2Rank: 2

UID
534877
帖子
436
PB币
56
贡献
0
技术
0
活跃
35
9F
发表于 2009-8-30 13:37:55 IP属地广东
技嘉g31的能用吗,怎么修改?

Chief Fuking Officer

Rank: 5Rank: 5Rank: 5

UID
233685
帖子
965
PB币
2759
贡献
0
技术
0
活跃
628
10F
发表于 2009-8-30 14:09:03 IP属地江苏
本帖最后由 heroreno 于 2009-8-30 14:11 编辑

你好,威廉,这是我EG31M-S2的dsdt中关于USB的内容,貌似不涉及到clock_id。现在只有最后一个识别为扩展槽,其他都是内建的。如果要将最后一个也改为内建,该怎么修改?
  1.             Device (USB0)
  2.             {
  3.                 Name (_ADR, 0x001D0000)
  4.                 Method (_S3D, 0, NotSerialized)
  5.                 {
  6.                     If (LEqual (OSFL, 0x02))
  7.                     {
  8.                         Return (0x02)
  9.                     }

  10.                     Return (0x03)
  11.                 }

  12.                 Name (_PRW, Package (0x02)
  13.                 {
  14.                     0x03,
  15.                     One
  16.                 })
  17.             }

  18.             Device (USB1)
  19.             {
  20.                 Name (_ADR, 0x001D0001)
  21.                 Method (_S3D, 0, NotSerialized)
  22.                 {
  23.                     If (LEqual (OSFL, 0x02))
  24.                     {
  25.                         Return (0x02)
  26.                     }

  27.                     Return (0x03)
  28.                 }

  29.                 Name (_PRW, Package (0x02)
  30.                 {
  31.                     0x04,
  32.                     One
  33.                 })
  34.             }

  35.             Device (USB2)
  36.             {
  37.                 Name (_ADR, 0x001D0002)
  38.                 Method (_S3D, 0, NotSerialized)
  39.                 {
  40.                     If (LEqual (OSFL, 0x02))
  41.                     {
  42.                         Return (0x02)
  43.                     }

  44.                     Return (0x03)
  45.                 }

  46.                 Name (_PRW, Package (0x02)
  47.                 {
  48.                     0x0C,
  49.                     One
  50.                 })
  51.             }

  52.             Device (USB3)
  53.             {
  54.                 Name (_ADR, 0x001D0003)
  55.                 Method (_S3D, 0, NotSerialized)
  56.                 {
  57.                     If (LEqual (OSFL, 0x02))
  58.                     {
  59.                         Return (0x02)
  60.                     }

  61.                     Return (0x03)
  62.                 }

  63.                 Name (_PRW, Package (0x02)
  64.                 {
  65.                     0x0E,
  66.                     One
  67.                 })
  68.             }

  69.             Device (USBE)
  70.             {
  71.                 Name (_ADR, 0x001D0007)
  72.                 Method (_S3D, 0, NotSerialized)
  73.                 {
  74.                     If (LEqual (OSFL, 0x02))
  75.                     {
  76.                         Return (0x02)
  77.                     }

  78.                     Return (0x03)
  79.                 }

  80.                 Name (_PRW, Package (0x02)
  81.                 {
  82.                     0x0D,
  83.                     One
  84.                 })
  85.             }

  86.             Name (NATA, Package (0x01)
  87.             {
  88.                 0x001F0001
  89.             })
复制代码

Rank: 5Rank: 5Rank: 5

UID
428664
帖子
975
PB币
1125
贡献
0
技术
1
活跃
20
11F
发表于 2009-8-30 14:16:56 IP属地上海
本帖最后由 枫野 于 2009-8-30 14:30 编辑

我的G31-ES2C,BIOS代码和LS一样的,也是最后一个USB识别是扩展槽,其他都是识别为内建

Chief Fuking Officer

Rank: 5Rank: 5Rank: 5

UID
233685
帖子
965
PB币
2759
贡献
0
技术
0
活跃
628
12F
发表于 2009-8-30 14:24:40 IP属地江苏
本帖最后由 heroreno 于 2009-8-30 14:26 编辑

顺便说一句,我这个主板装snow leopard,经过实践,最基本的只需要四个破解,一个是dsmos(或者后来的fakesmc),一个是IOATAFamily(或者是AppleIntelPIIATA),一个是dsdt.aml,另一个就是pcefi10.1。
有这四个破解就完全可以安装成功了,如果需要驱动声卡的话,需要LegacyHDA,如果要解决关机重启动 问题,还需要OpenHaltRestart。现在,我的办法是通过leopard将变色龙r431和破解的驱动、dsdt、boot、com.Apple.boot.plist等等都安装到一个独立硬盘的efi分区,再将10A432恢复到这个独立硬盘的另一个分区,然后用efi分区上的变色龙引导安装镜像进行安装,全过程都是成功的,没有出现任何问题,现在已经圆满地运行在64位模式下,可以睡眠和唤醒,关机、重启都正常。这样安装的一个最大的好处就是,snow leopard主分区上是一个100%纯净的系统,任何时候重装,都不需要再做任何破解的工作。而且我已经将新安装的系统备份为一个dmg,以后连重装都省了。

Rank: 5Rank: 5Rank: 5

UID
884348
帖子
645
PB币
331
贡献
0
技术
61
活跃
1723
13F
发表于 2009-8-30 21:38:27 IP属地陕西
试了一下,在GA P35C-DS3R上对ICH9R的USB控制器进行了修改,确实可以变为内建。不过,手动睡眠在修改前后都可以,定期睡眠(自动过段时间睡眠)仍然不可以。

Rank: 7Rank: 7Rank: 7

UID
672418
帖子
1993
PB币
1618
贡献
0
技术
0
活跃
1124
14F
发表于 2009-8-30 22:04:21 IP属地北京
看来第三是和DSDT干上了,呵呵 ,要是像这样发展的话以后的驱动都可以让一个DSDT文件来搞定了,哈哈,期待这一天啊!!!

macfans

Rank: 7Rank: 7Rank: 7

UID
73066
帖子
1152
PB币
1329
贡献
0
技术
19
活跃
1403
15F
发表于 2009-8-30 22:09:40 IP属地广东
本帖最后由 lingbug 于 2009-8-30 22:11 编辑

有同样问题了

UID
38564
帖子
1153
PB币
5526
贡献
1
技术
172
活跃
558

远景技术达人

16F
发表于 2009-8-30 23:12:30 IP属地上海
10# heroreno
你只需要修改USBE那里,把Method (_DSM, 4, NotSerialized)那一节放到USBE最后一个}前面就可以了

UID
38564
帖子
1153
PB币
5526
贡献
1
技术
172
活跃
558

远景技术达人

17F
发表于 2009-8-30 23:14:36 IP属地上海
13# zenglg1977
自动睡眠的问题很神奇,据说是和光驱有关,只有几种光驱可以自动睡眠,忘掉是先锋的还是什么的了,还有一种更神奇的说法,放一片光盘在光驱里就可以自动睡眠了

UID
38564
帖子
1153
PB币
5526
贡献
1
技术
172
活跃
558

远景技术达人

18F
发表于 2009-8-30 23:16:04 IP属地上海
本帖最后由 威廉第三 于 2009-8-31 14:12 编辑

7# 过千帆
更正一下,睡眠需要你到系统偏好设置的节能器里把“断电后自动重启”勾上

Rank: 5Rank: 5Rank: 5

UID
187048
帖子
310
PB币
2369
贡献
0
技术
1
活跃
417
19F
发表于 2009-8-31 05:53:34 IP属地北京
EP45 UD3L就是睡眠便关机,我的没打文中补丁就这样

Rank: 7Rank: 7Rank: 7

UID
507276
帖子
1270
PB币
95
贡献
0
技术
10
活跃
345
20F
发表于 2009-8-31 09:22:05 IP属地未知
这么多人关注睡眠呀,看来大家睡眠都不好..
我从来不喜欢用睡眠功能...台式机..

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