oswaldini Opublikowano 22 Marca 2010 Zgłoś Udostępnij Opublikowano 22 Marca 2010 Modyfikacja sekcji USB v1.0 - Pierwsza publikacja SPIS TEMATÓW O MODYFIKACJI DSDT: [Cześć 1] Wydobycie DSDT z naszego sprzętu [Cześć 2] Podstawowe modyfikacje DSDT [Cześć 3] Sekcja audio w DSDT [Cześć 4] Modyfikacja sekcji USB [Cześć 5] Dopisywanie grafiki do DSDT [Cześć 6] Fixy dla notebooków/netbooków oraz PC [Cześć 7] Kosmeytka DSDT + Uciszanie kompilatora [Cześć 8] Sprawdzenie działania Power Managmentu (SpeedStep) Modyfikacja ta nie zawsze jest potrzebna. Przydaje się gdy nie działa opcja sleep kiedy mamy chipset który nie występuje natywnie w komputerach Apple. Przykłąd przedstawia płytę z ICH9 i maskowaniem USB na chipie ICH10. Do działania tej metody wymagane jest posiadanie Method DTGP - opis w "[Cześć 2] Podstawowe modyfikacje DSDT" 1. Zlokalizowanie sekcji USB w DSDT USB (UHCI) możemy zaleźć w DSDT np.: pod nazwami USB0...USB5, UHC1...UHC6 lub inne a USB 2.0 (EHCI) pod nazwami EHCI, EHC1..EHC2, EUSB, USBE. Układ w komputerach Apple na chipsecie ICH10 to "3x3" tzn w IORegistryExplorer sa na portach USB: 0x001D0000 - 0x001D0002 oraz 0x001A0000 - 0x001A0002 (1D,0 - 1D,2 ; 1A,0 - 1A,2). EHCI (USB 2.0) jest na portach 0x001D0007 oraz 0x001A0007 (1D,7 ; 1A,7). Poniżej tabela przedstawiająca porty i ID dla ICH9® UHCI 1: 1D 2934 UHCI 2: 1D, 1 2935 UHCI 3: 1D, 2 2936 UHCI 4: 1A 2937 UHCI 5: 1A, 1 2938 UHCI 6: 1A, 2 2939 EHCI 1: 1D, 7 293A EHCI 2: 1A, 7 293C Poniżej tabela portów i ID dla ICH10® które wykorzystamy do podszywania się pod ten chipset: UHCI 1: 1D 3A34 UHCI 2: 1D, 1 3A35 UHCI 3: 1D, 2 3A36 UHCI 4: 1A 3A37 UHCI 5: 1A, 1 3A38 UHCI 6: 1A, 2 3A39 EHCI 1: 1D, 7 3A3A EHCI 2: 1A, 7 3A3C 2. Modyfikacja sekcji USB w DSDT Przykład dla jednej sekcji USB, reszta analogicznie z wstawieniem odpowiedniego ID Oryginalna sekcja UHC1 Device (UHC1) { Name (_ADR, 0x001D0000) OperationRegion (U1CS, PCI_Config, 0xC4, 0x04) Field (U1CS, DWordAcc, NoLock, Preserve) { U1EN, 2 } Method (_PSW, 1, NotSerialized) { If (Arg0) { Store (0x03, U1EN) } Else { Store (Zero, U1EN) } } Method (_S3D, 0, NotSerialized) { Return (0x02) } Method (_S4D, 0, NotSerialized) { Return (0x02) } Name (_PRW, Package (0x02) { 0x03, 0x03 }) } Wstawiamy przed Name (_PRW, Package (0x02) sekcje z odpowienim ID: 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) } Zmodyfikowana: Device (UHC1) { Name (_ADR, 0x001D0000) OperationRegion (U1CS, PCI_Config, 0xC4, 0x04) Field (U1CS, DWordAcc, NoLock, Preserve) { U1EN, 2 } Method (_PSW, 1, NotSerialized) { If (Arg0) { Store (0x03, U1EN) } Else { Store (Zero, U1EN) } } Method (_S3D, 0, NotSerialized) { Return (0x02) } Method (_S4D, 0, NotSerialized) { Return (0x02) } 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) } Name (_PRW, Package (0x02) { 0x03, 0x03 }) } Przykład dla jednej sekcji EHCI, reszta analogicznie z wstawieniem odpowiedniego ID Oryginalna sekcja EHC1 Device (EHC1) { Name (_ADR, 0x001D0007) OperationRegion (UFCS, PCI_Config, 0x54, 0x04) Field (UFCS, DWordAcc, NoLock, Preserve) { , 15, PMES, 1 } Device (HUB2) { Name (_ADR, Zero) Device (PRT1) { Name (_ADR, One) } Device (PRT2) { Name (_ADR, 0x02) } Device (PRT3) { Name (_ADR, 0x03) } Device (PRT4) { Name (_ADR, 0x04) } } Method (_S3D, 0, NotSerialized) { Return (0x03) } Method (_S4D, 0, NotSerialized) { Return (0x03) } } Wstawiamy przed Method (_S3D, 0, NotSerialized) z odpowiednim ID Method (_DSM, 4, NotSerialized) { Store (Package (0x0F) { "device-id", Buffer (0x04) { 0x3A, 0x3A, 0x00, 0x00 }, "AAPL,clock-id", Buffer (One) { 0x0A }, "built-in", Buffer (One) { 0x00 }, "device_type", Buffer (0x05) { "EHCI" }, "AAPL,current-available", 0x04B0, "AAPL,current-extra", 0x02BC, "AAPL,current-in-sleep", 0x03E8, Buffer (One) { 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } Zmodyfikowana: Device (EHC1) { Name (_ADR, 0x001D0007) OperationRegion (UFCS, PCI_Config, 0x54, 0x04) Field (UFCS, DWordAcc, NoLock, Preserve) { , 15, PMES, 1 } Device (HUB2) { Name (_ADR, Zero) Device (PRT1) { Name (_ADR, One) } Device (PRT2) { Name (_ADR, 0x02) } Device (PRT3) { Name (_ADR, 0x03) } Device (PRT4) { Name (_ADR, 0x04) } } Method (_DSM, 4, NotSerialized) { Store (Package (0x0F) { "device-id", Buffer (0x04) { 0x3A, 0x3A, 0x00, 0x00 }, "AAPL,clock-id", Buffer (One) { 0x0A }, "built-in", Buffer (One) { 0x00 }, "device_type", Buffer (0x05) { "EHCI" }, "AAPL,current-available", 0x04B0, "AAPL,current-extra", 0x02BC, "AAPL,current-in-sleep", 0x03E8, Buffer (One) { 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } Method (_S3D, 0, NotSerialized) { Return (0x03) } Method (_S4D, 0, NotSerialized) { Return (0x03) } } 3. Usuwanie zbędnych sekcji USB w DSDT Usuwamy sekcje z portem 1D,3 lub 1A,3. Często oznaczane jako USBR. Przed tą modyfikacją radzę włączyć IORegistryExplorer, zlokalizować sekcje USB i kolejno wsadzać np Pendrive'a do każdego USB w celu upewnienia się czy komputer nie korzysta z tego portu ! Przykład: Lokalizujemy i usuwamy całą sekcję USBR: Device (USBR) { Name (_ADR, 0x001D0003) OperationRegion (U1CS, PCI_Config, 0xC4, 0x04) Field (U1CS, DWordAcc, NoLock, Preserve) { U1EN, 2 } Method (_PSW, 1, NotSerialized) { If (Arg0) { Store (0x03, U1EN) } Else { Store (0x00, U1EN) } } Method (_S3D, 0, NotSerialized) { Return (0x02) } Method (_S4D, 0, NotSerialized) { Return (0x02) } Name (_PRW, Package (0x02) { 0x20, 0x03 }) } Po usunięciu tej sekcji musimy usunąć wszystkie inne informacje o USBR, dlatego wyszukujemy je za pomocą wyszukiwarki w DSDT. Znajdujemy: Method (_L20, 0, NotSerialized) { Notify (\_SB.PCI0.USBR, 0x02) Notify (\_SB.PCI0.USB5, 0x02) } Usuwamy: Notify (\_SB.PCI0.USBR, 0x02) Zmodyfikowany: Method (_L20, 0, NotSerialized) { Notify (\_SB.PCI0.USB5, 0x02) } Po zakończeniu edycji kompilujemy DSDT. Zapraszam do tematu o kosmetyce, znajduje się tam opis upodobniania nazewnictwa urządzeń jak w komputerach Apple. Można ładnie sobie poprawić sekcje USB i pozbyć sie errorów w logu. Inne DevID dla USB można znaleźć w drugim temacie ze źródła Źródła informacji: http://www.insanelymac.com/forum/index.php?s=e43445d1606da1521cedff3970c715de&showtopic=168014 http://hamac.pl/topics25/intel-ichx-mcp79-i-spolka-vt1054.htm Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Netaro Opublikowano 4 Października 2010 Zgłoś Udostępnij Opublikowano 4 Października 2010 W moim lapku jest ICH9, Wiec jak w Twoim tutku maskuje na ICH10 korzystajac z podanych przez ciebie ID. Ale troche rzeczy odstaje od tego co jest tutaj zaprezentowane. Dlatego tez pytanie, jak postepowac w sytuacji, gdy mamy sekcje nie nazwane UHCX, tylko USBX, i jeszcze na dodatek numeracja zaczyna sie od 0 (USB0), a nie jak w przytoczonym przykladzie UHC1? Co gorsza, USB2 nie posiada _PRW, wiec nie wiem czy mam tam wstawic PRW z powiedzmy, 0x05 , 0x03 (bo tak by logicznie nakazywala numeracja, jak mamy w USB0 0x03, 0x03 a w USB1 0x04, 0x03, choc w USB3 jest juz o wiele wieksza wartosc). Pozatym, sekcje EHCI sa bardzo ubogie, kompletnie nieporownywalne do tego co Ty tutaj pokazujesz, wiec troche nie moge odniesc tychze fix'ow do mojego DSDT. Tutaj jest wycinek mojego DSDT, wyciagniete z windy 7 - http://pastebin.com/S66wNAsG Prosilbym o podpowiedz co w takim razie tutaj zrobic. EDIT: Cholera, nie wiem czemu, podpis nie chce mi sie tutaj pojawic, a mam tam opisane co mam za lapka . Wiec w takim razie, mam tak: Laptop: Samsung q210 | C2D P7350 | ALC262 | IHC9 PM45 | Nvidia GeForce 9200M GS | Yukon 88E8055 | AirPort Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
oswaldini Opublikowano 5 Października 2010 Autor Zgłoś Udostępnij Opublikowano 5 Października 2010 Masz jedno z typowych DSDT, nazewnictwo moze sie roznic i nie gra ono zadnej roli. Sekcje modyfikowana mozesz wstawić przed: Name (UPRW, Package (0x02) Sekcje ktore sa do zmodyfikowania to sekcje o ID: Name (_ADR, 0x001D0000) np: USB0(1) Name (_ADR, 0x001D0001) np: USB1(2) Name (_ADR, 0x001D0002) np: USB2(3) Name (_ADR, 0x001D0007) np: EHC1 Name (_ADR, 0x001A0000) np: USB3(4) Name (_ADR, 0x001A0001) np: USB4(5) Name (_ADR, 0x001A0002) np: USB5(6) Name (_ADR, 0x001A0007) np: EHC2 Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Netaro Opublikowano 5 Października 2010 Zgłoś Udostępnij Opublikowano 5 Października 2010 To jeszcze pytanie pozwole sobie zadac, zeby nie bylo niejasnosci: 1: Troche pozwole sobie powtorzyc poprzednie pytanie: Jak nie mam UPWR w jednym USB, jak tez i jak mam totalnie puste sekcje EHCI, to nadal sie stosuje te fixy w tych sekcjach, czy sie je pomija? Bo jak widac po zamieszczonym przezemnie wycinku z dsdt, w EHCI nie mam _S3D, ani tez szczerze mowiac czegokolwiek innego. (A moze powinienem przekopiowac te sekcje tak jak sa pokazane w Twoim tutorialu)? Sam bym przeprowadzil testy co jak dziala, ale niestety ostatnio cierpie na chroniczny brak czasu ktory mi mocno doskwiera Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
314TeR Opublikowano 5 Października 2010 Zgłoś Udostępnij Opublikowano 5 Października 2010 Sam bym przeprowadzil testy co jak dziala, ale niestety ostatnio cierpie na chroniczny brak czasu ktory mi mocno doskwiera I uważasz, że ktoś za Ciebie poświęci swój czas i wykona Ci modyfikacje bo ma czas w nadmiarze... Trochę własnego wysiłku i wkładu... Przyjrzyj się powyższym przykładom, i "znajdź różnice" przed i po... tak naprawdę wstawiasz TYLKO metody _DSM z zawartością... Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
druteron Opublikowano 22 Marca 2012 Zgłoś Udostępnij Opublikowano 22 Marca 2012 Również mam z tym problem, mianowicie dla UHC 1 i 2 nie mam sekcji _PRW, ani UPRW. Co mam zrobić w takim wypadku? Poniżej zamieszczam część kodu. device (UHC0) { Name (_ADR, 0x001D0000) Device (HUB0) { Name (_ADR, Zero) Device (PRT1) { Name (_ADR, One) } Device (PRT2) { Name (_ADR, 0x02) } } Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "3A34", Buffer (0x04) { 0x34, 0x3A, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } Name (_PRW, Package (0x02) { 0x03, 0x03 }) OperationRegion (USBR, PCI_Config, 0xC4, One) Field (USBR, AnyAcc, NoLock, Preserve) { URES, 8 } Method (_PSW, 1, NotSerialized) { If (Arg0) { Store (One, URES) } Else { Store (Zero, URES) } } Method (_S3D, 0, NotSerialized) { Return (0x02) } Method (_S4D, 0, NotSerialized) { Return (0x02) } } Device (UHC1) { Name (_ADR, 0x001D0001) Device (HUB1) { Name (_ADR, Zero) Device (PRT1) { Name (_ADR, One) } Device (PRT2) { Name (_ADR, 0x02) } } } Device (UHC2) { Name (_ADR, 0x001D0002) Device (HUB2) { Name (_ADR, Zero) Device (PRT1) { Name (_ADR, One) } Device (PRT2) { Name (_ADR, 0x02) } } } Device (UHCR) { Name (_ADR, 0x001D0003) Device (HUBR) { Name (_ADR, Zero) Device (PRT1) { Name (_ADR, One) } Device (PRT2) { Name (_ADR, 0x02) } } } UHC0 już zmodyfikowałem. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
314TeR Opublikowano 22 Marca 2012 Zgłoś Udostępnij Opublikowano 22 Marca 2012 Również mam z tym problem, mianowicie dla UHC 1 i 2 nie mam sekcji _PRW, ani UPRW. Co mam zrobić w takim wypadku? Poniżej zamieszczam część kodu. Nie ma znaczenia, tak naprawdę chodzi o dodanie sekcji DSM do gałęzi urządzenia... Wstaw kod po: Name (_ADR, ..........) Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
barylatko Opublikowano 13 Października 2012 Zgłoś Udostępnij Opublikowano 13 Października 2012 Panowie czytam ten wątek po raz 20 i nie bardzo mogę zrozumieć OCB... Chipset jaki posiadam w laptopie to ICH-8M i nie mam pojęcia jak ogarnąć Device -id tzn wiem gdzie wstawić ale nie mam pojęcia w jakiej konfiguracji.. Nie wiem czy dobrze to rozumiem ale u Osawldiniego dev-id wyglada ta 0x3A, 0x3A, 0x00, 0x00 w takim razie jak ma wygladać u mnie bo tego nie mogę zrozumieć. Uprzedzając pytania byłem w watku podanym na samym dole tutka ale nadal dla mnie to czarna magia.... Mam ogromne przeczucie , że u mnie nie działa sleep przez to usb. reszta działa pieknie... tylko ten sleep Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Astarael Opublikowano 14 Października 2012 Zgłoś Udostępnij Opublikowano 14 Października 2012 Chipset jaki posiadam w laptopie to ICH-8M i nie mam pojęcia jak ogarnąć Device -id tzn wiem gdzie wstawić ale nie mam pojęcia w jakiej konfiguracji.. Nie ruszaj. ICH8-M było w macbookach. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
barylatko Opublikowano 14 Października 2012 Zgłoś Udostępnij Opublikowano 14 Października 2012 Rozumiem.. w takim razie w tym temaci nie ma co pisac o moich problemach.Astarael, amoze byś spojżał na moje dsdt? Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MKjanek32 Opublikowano 16 Października 2012 Zgłoś Udostępnij Opublikowano 16 Października 2012 Ale z czym jest problem? Jeżeli komputer się usypia, a później od razu wybudza, to trzeba zastosować inną poprawkę. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.