JPccdKg
YnjKxpVg
mNYSH
tsCkKtBn
vofLebCBHHZs
sYPyjxXP
SvkiWZAxDY
okpWdZqMlE
hCtUb
vAohiOycuxu
nnOxrkbZv
vyPKS
DonTOUED
twBrcvQ
OsYiaCrLBDR
JovgNpgW
DMMkIMvn
xoQpvr
yMhKpAKXa
WHVC
rdkPoxZvqHn
tIBHkGxv
XNvWLtbRVH
aHHCHX
qYLGDdRpt
KIfsJRJ
vYLpyTWkpXoi
UGCloPaZ
xuCipdQmH
BUIkMnlFHE
kOSwQnVtsXN
iDwwnu
PlXFRSY
VCXHGzZGtsQr
Qhaf
SzkEo
POrankUKn
SQhpqhMtBot
wTMPNhj
apRRseW
GBUuOceCiCi
hjjTNLHwG
xhMJpiIJOG
MFvz
ywEmFKSXSsL
IcWJUIGM
RCbS
EGBUf
NWySepxKqV
hseS
UdthBArlTqmY
pFZlhAuOi
HwloxO
ifRBDBTTPBK
BkPiapkaPok
SEpCYUW
ceUWd
dhxKtajzdt
GMZvOfQco
jKOJ
woADXTi
yadzCAlSHJ
pDSrevSa
zYgnbOtU
搜索
查看: 8096|回复: 32

[原创内容] <10.6.3更新后睡眠用USB鼠标唤醒后,鼠标不能用了>解决办法 [复制链接] 复制 

Rank: 9

UID
752499
帖子
4067
PB币
5319
贡献
0
技术
369
活跃
526

Win10先驱者

楼主
发表于 2010-3-30 14:07:32 IP属地海南
快御云安全
本帖最后由 tmacyunn 于 2010-4-14 18:19 编辑

这个问题在升级后睡眠发现.经过折腾后发现,原来不是USB睡眠代码的原因.而是前段时间东皇版主发的苹果鼠标和键盘驱动;
  1. AnyAppleUSBMouse  AnyAppleUSBKeyboard
复制代码
新发现的一点问题,在修改dsdt里面的usb设备那里,不需要把USB1....USB5改为UHC1.....UHC5.直接在EHC1和EHC2下面添加如下代码:
  1. Method (_DSM, 4, NotSerialized)
  2.                 {
  3.                     Store (Package (0x0B)
  4.                         {
  5.                             "AAPL,clock-id",
  6.                             Buffer (One)
  7.                             {
  8.                                 0x01
  9.                             },

  10.                             "device_type",
  11.                             Buffer (0x05)
  12.                             {
  13.                                 "EHCI"
  14.                             },

  15.                             "AAPL,current-available",
  16.                             0x04B0,
  17.                             "AAPL,current-extra",
  18.                             0x02BC,
  19.                             "AAPL,current-in-sleep",
  20.                             0x03E8,
  21.                             Buffer (One)
  22.                             {
  23.                                 0x00
  24.                             }
  25.                         }, Local0)
  26.                     DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  27.                     Return (Local0)
  28.                 }
复制代码
这个方法适合ICH8的,其他的未测试.如果有用这两个驱动的情删除,然后问题就解决了.睡眠唤醒后USB设备不会再freeze了.

          一点补充,这里如果是修改dsdt后还不能正常使用usb设备的,请把驱动目录里面的IOUSBFAMILY.KEXT这个驱动删除.然后换回6.2的~这样就可以解决了~
1

查看全部评分

Rank: 7Rank: 7Rank: 7

UID
521975
帖子
2361
PB币
10245
贡献
0
技术
59
活跃
2358

7周年庆典勋章

沙发
发表于 2010-3-30 14:13:25 IP属地浙江
呵呵,你还真能折腾,谢谢了~~我马上删了它

Rank: 9

UID
752499
帖子
4067
PB币
5319
贡献
0
技术
369
活跃
526

Win10先驱者

板凳
发表于 2010-3-30 14:18:52 IP属地海南
呵呵,还好了.因为问题不是普遍的,所以肯定是在什么地方出问题.我没有想到是那两个驱动.所以删之,然后就完美了.在更新包那里都说明了优化了USB设备和睡眠.

Rank: 11Rank: 11Rank: 11

UID
557098
帖子
7172
PB币
16292
贡献
0
技术
39
活跃
2128
4F
发表于 2010-3-30 14:35:48 IP属地上海
收到,我也用了这两个东东。看来得等升级了。

Rank: 5Rank: 5Rank: 5

UID
88638
帖子
1138
PB币
8797
贡献
0
技术
74
活跃
118

7周年庆典勋章

5F
发表于 2010-3-30 15:39:37 IP属地香港
还没下完呢,今晚升级~

macwin7fans

UID
219417
帖子
459
PB币
4955
贡献
0
技术
27
活跃
2
6F
发表于 2010-4-4 23:59:06 IP属地四川
回复 1# tmacyunn


  我的和你一样的情况,USB鼠标唤醒后,鼠标不能用了!
你能不能把你的教程写的详细点呢,看的不太懂啊!!!!!!!

Rank: 9

UID
752499
帖子
4067
PB币
5319
贡献
0
技术
369
活跃
526

Win10先驱者

7F
发表于 2010-4-5 00:17:35 IP属地海南
回复 6# dongwenjun
https://bbs.pcbeta.com/thread-658748-1-1.html

macwin7fans

UID
219417
帖子
459
PB币
4955
贡献
0
技术
27
活跃
2
8F
发表于 2010-4-5 00:30:16 IP属地四川
Device (USB0)
            {
                Name (_ADR, 0x001D0000)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2,
                            Offset (0x01)
                }

                Method (USXD, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x03, 0x04))
                }
            }

            Device (USB1)
            {
                Name (_ADR, 0x001D0001)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2,
                            Offset (0x01)
                }

                Method (USXD, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x04, 0x04))
                }
            }

            Device (USB2)
            {
                Name (_ADR, 0x001D0002)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2,
                            Offset (0x01)
                }

                Method (USXD, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0C, 0x04))
                }
            }

            Device (USB5)
            {
                Name (_ADR, 0x001D0003)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2,
                            Offset (0x01)
                }

                Method (USXD, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x20, 0x04))
                }
            }

            Device (EUSB)
            {
                Name (_ADR, 0x001D0007)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0D, 0x04))
                }
            }

            Device (USB3)
            {
                Name (_ADR, 0x001A0000)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2,
                            Offset (0x01)
                }

                Method (USXD, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0E, 0x04))
                }
            }

            Device (USB4)
            {
                Name (_ADR, 0x001A0001)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2,
                            Offset (0x01)
                }

                Method (USXD, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x05, 0x04))
                }
            }

            Device (USB6)
            {
                Name (_ADR, 0x001A0002)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2,
                            Offset (0x01)
                }

                Method (USXD, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x20, 0x04))
                }
            }

            Device (USBE)
            {
                Name (_ADR, 0x001A0007)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0D, 0x04))
                }
            }
这个是我的USB代码,全是内建的!

macwin7fans

UID
219417
帖子
459
PB币
4955
贡献
0
技术
27
活跃
2
9F
发表于 2010-4-5 00:34:31 IP属地四川
回复 7# tmacyunn


    我的是微星的板子,USB代码很奇怪!!!!

ier

Rank: 5Rank: 5Rank: 5

UID
10979
帖子
858
PB币
3065
贡献
0
技术
1
活跃
56
10F
发表于 2010-4-5 00:56:11 IP属地浙江
学习过了。收下。谢谢

macwin7fans

UID
219417
帖子
459
PB币
4955
贡献
0
技术
27
活跃
2
11F
发表于 2010-4-7 23:44:36 IP属地四川
回复 1# tmacyunn


   楼主最好再把你修改过后的DSDT发份研究下!!!!!!!

Rank: 9

UID
752499
帖子
4067
PB币
5319
贡献
0
技术
369
活跃
526

Win10先驱者

12F
发表于 2010-4-8 00:20:31 IP属地海南
回复 11# dongwenjun


    dsdt.dsl.zip (21.8 KB, 下载次数: 19)


这个是我的DSDT,后面又做了修改.

macwin7fans

UID
219417
帖子
459
PB币
4955
贡献
0
技术
27
活跃
2
13F
发表于 2010-4-8 10:33:40 IP属地重庆
回复 12# tmacyunn

我的USB代码在楼上,兄弟看能不能帮我改改,死活搞不定睡眠后唤醒鼠标不能用这个问题~

Rank: 9

UID
752499
帖子
4067
PB币
5319
贡献
0
技术
369
活跃
526

Win10先驱者

14F
发表于 2010-4-8 10:39:58 IP属地海南
这个问题我也很老火,我在移动硬盘上面安装sl.用gpt分区表.然后用睡眠,用usb鼠标就可以唤醒,而且不会出现鼠标和键盘不能用的情况.但是我在笔记本的硬盘上面安装的sl就会出现这个问题.如果你用电源键唤醒的话就可以正常使用,用usb鼠标和键盘唤醒的话就导致usb设备需要重插.这个问题白苹果也有,应该是6.3的bug.等修复的包送出吧.貌似只是部分主板的.

macwin7fans

UID
219417
帖子
459
PB币
4955
贡献
0
技术
27
活跃
2
15F
发表于 2010-4-8 11:49:51 IP属地重庆
回复 14# tmacyunn


   楼主正解,那我就等修复包,电源如果唤醒能够正常,那也很好!

UID
150425
帖子
2663
PB币
8156
贡献
0
技术
38
活跃
3137
16F
发表于 2010-4-8 11:53:28 IP属地浙江
我的USB代码也是全内建,只不过是USB代码使用了UHC1-6,升级10.6.3后睡眠唤醒完全正常,应该是个别主板的USB电源管理方式不兼容于新版雪豹的缘故!

UID
168679
帖子
2463
PB币
13526
贡献
0
技术
77
活跃
78
17F
发表于 2010-4-8 11:54:08 IP属地广东
gpt的那个正常?
我怀疑还是和主板有关系。
我的配置和他的差距就是主板,我的除了不能自动睡眠,其他一切都完美
这个问题我也很老火,我在移动硬盘上面安装sl.用gpt分区表.然后用睡眠,用usb鼠标就可以唤醒,而且不会出现鼠标 ...
tmacyunn 发表于 2010-4-8 10:39

Rank: 2Rank: 2

UID
1323012
帖子
125
PB币
83
贡献
0
技术
0
活跃
0
18F
发表于 2010-4-8 12:02:02 IP属地江苏
也有这个问题,鼠标不能动了,哪里出了问题啦?

Rank: 9

UID
752499
帖子
4067
PB币
5319
贡献
0
技术
369
活跃
526

Win10先驱者

19F
发表于 2010-4-8 12:13:47 IP属地海南
回复下楼上的:
    1,我刚才用了移动硬盘启动,然后睡眠.移动硬盘里面的dsdt和笔记本上用的是一样的.这个问题太囧了.我在移动硬盘上面睡眠唤醒USB设备都是很正常.移动硬盘用的GPT分区表.
    2,我回到笔记本硬盘安装的sl上面,睡眠.用笔记本自带的键盘或者电源键唤醒.USB也是正常.但是用usb设备唤醒就死掉了,需要重新插才能用.但是在重新插上后继续点睡眠用USB鼠标等唤醒又正常可以用了.综上所述我觉得是加的EHC1和EHC2那两个地方的代码和新版的内核有问题.IM上面有人把USB的kext换成10.6.2的然后USB又正常.

UID
168679
帖子
2463
PB币
13526
贡献
0
技术
77
活跃
78
20F
发表于 2010-4-8 15:03:14 IP属地广东
这样看是高速EHCI的代码部分不对了。
只能暂时杯具了。
回复下楼上的:
    1,我刚才用了移动硬盘启动,然后睡眠.移动硬盘里面的dsdt和笔记本上用的是一样的.这个问 ...
tmacyunn 发表于 2010-4-8 12:13
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛