oldnapalm Posted April 15, 2010 Share Posted April 15, 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) } Link to comment Share on other sites More sharing options...
oldnapalm Posted July 20, 2010 Author Share Posted July 20, 2010 Patch no formato do DSDT Editor ICH9_USB_sleep.txt Link to comment Share on other sites More sharing options...
JrDsign Posted July 26, 2010 Share Posted July 26, 2010 Desculpe a falta de conhecimento, mas como eu executo o comando lspci -nn | grep UHCI? E, devo substituir no dsdt o "device-id" pelo numero listado, certo? Qual o formato certo de coloca-los? tipo, "[8086:2934]" com ou sem aspas, com ou sem colchetes... sou iniciante mesmo, então tenho essas curiosidades e dificuldade.... obrigado. Link to comment Share on other sites More sharing options...
oldnapalm Posted July 26, 2010 Author Share Posted July 26, 2010 Você precisa instalar o comando lspci, ele não faz parte do sistema. Mas na verdade esta parte é apenas para compreensão do que se está fazendo, não é realmente necessária. Se você tem certeza de que o chipset da placa mãe é ICH9, pode simplesmente aplicar o patch usando o DSDT Editor que certamente vai funcionar. 1) DSL - Extract from system 2) Patch - Load from file - selecione "ICH9 USB sleep.txt" 3) Apply 4) AML - Compile 5) AML - Save to file - dsdt.aml 6) Copie o dsdt.aml para /Extra Link to comment Share on other sites More sharing options...
JrDsign Posted July 26, 2010 Share Posted July 26, 2010 Não tenho certeza de que meu acer D250 seja ICH9, sabe me diser? Sei que minha gigabyte é ICH7, posso testar nela? Como instalo esse comando lspci? Pelo que sei ele lista todo o hardware e não só a usb certo? isso me ajudaria com a wifi do D250... Obrigado... Link to comment Share on other sites More sharing options...
oldnapalm Posted July 26, 2010 Author Share Posted July 26, 2010 Não sei sobre o AOD250, mas acredito que não seja ICH9. O patch é apenas para chipset ICH9, a sua Gigabyte não precisa dele. Os links do lspci você encontra aqui (ele lista apenas os dispositivos PCI) http://www.insanelymac.com/forum/index.php?showtopic=218684 Link to comment Share on other sites More sharing options...
Recommended Posts