Administrators oldnapalm Posted December 24, 2010 Administrators Share Posted December 24, 2010 Tópico original: http://www.insanelymac.com/forum/index.php?showtopic=168014 Em algumas placas com chip ICH9/R os dispositivos USB não são reconhecidos, desligando o gerenciamento de energia. Para saber se é o seu caso, verifique a propriedade "Errata" dos AppleUSBUHCI no IORegistryExplorer, se o valor for 0x0 provavelmente o driver não reconheceu o dispositivo. O fix consiste em fazer um patch no DSDT alterando os device IDs dos dispositivos UHCI, para que o sistema reconheça como um ICH10R. Liste os dispositivos com o comando lspci -nn | grep UHCI 00:1d.0 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 [8086:2934] (rev 02) 00:1d.1 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 [8086:2935] (rev 02) 00:1d.2 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 [8086:2936] (rev 02) 00:1a.0 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 [8086:2937] (rev 02) 00:1a.1 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 [8086:2938] (rev 02) 00:1a.2 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 [8086:2939] (rev 02) Então procure pelos devices USB com esses endereços no seu DSDT e adicione o método _DSM em cada um deles, com os device IDs conforme abaixo Device (USB0) { Name (_ADR, 0x001D0000) ... código original Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "device-id", Buffer (0x04) { 0x34, 0x3A, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Device (USB1) { Name (_ADR, 0x001D0001) ... código original Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "device-id", Buffer (0x04) { 0x35, 0x3A, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Device (USB2) { Name (_ADR, 0x001D0002) ... código original Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "device-id", Buffer (0x04) { 0x36, 0x3A, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Device (USB4) { Name (_ADR, 0x001A0000) ... código original Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "device-id", Buffer (0x04) { 0x37, 0x3A, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Device (USB5) { Name (_ADR, 0x001A0001) ... código original Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "device-id", Buffer (0x04) { 0x38, 0x3A, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Device (USB6) { Name (_ADR, 0x001A0002) ... código original Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "device-id", Buffer (0x04) { 0x39, 0x3A, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Veja que nem todos os devices USB foram modificados, mas estes 6 foram suficientes para o sleep funcionar. Caso ainda não tenha, adicione o método DTGP Method (DTGP, 5, NotSerialized) { If (LEqual (Arg0, Buffer (0x10) { /* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, /* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B })) { If (LEqual (Arg1, One)) { If (LEqual (Arg2, Zero)) { Store (Buffer (One) { 0x03 }, Arg4) Return (One) } If (LEqual (Arg2, One)) { Return (One) } } } Store (Buffer (One) { 0x00 }, Arg4) Return (Zero) } Quote Donation with Paypal HERE Donation with Stripe HERE Donation with BuyMeaCoffee HERE Donation with Mercado Livre HERE Donation with Binance 0xdbe48ef6b158f1dd0035d7f49555c99e52f72714 Donation with BTC 33HeGCuCSh4tUBqdYkQqKpSDa1E7WeAJQ3 Donation with PicPay @danielnmaldonado Donation with PiX @danielnmaldonado@gmail.com Link to comment Share on other sites More sharing options...