man_of_the_oak Posted August 21, 2011 Report Share Posted August 21, 2011 Pragnę zaznaczyć, iż nie oferuję pomocy w przypadku dystrybucji, które uważam za kompletną stratę czasu Tym razem zdecydowałem się przygotować tutorial dotyczący mojego pierwszego Hackintosha - laptopa Asus K50IN-SX152. W momencie, kiedy rozpoczynałem mą bitwę z tą konfiguracją, moja wiedza była praktycznie zerowa, w związku z tym - nie zauważałem wielu nieprawidłowości obecnych w zagranicznych poradnikach, z których korzystałem. Po dwóch latach, gdy sprzęt należy już do mojej siostry, zdecydowałem się spróbować ponownie, tym razem dopracowując wszystko samodzielnie, od podstaw. Liczę, iż informacje zawarte w tym tekście oszczędzą Wam wiele czasu, który ja musiałem poświęcić na rozpracowanie paru aspektów instalacji Mac OS X na tym sprzęcie. Pragnę zaznaczyć, iż wskazówki zawarte w poradniku mogą znaleźć zastosowanie w przypadku innych laptopów o podobnych podzespołach (chociażby notebooku Asus K70IO). Na początek specyfikacja: 1. Model laptopa: Asus K50IN-SX152 2. Procesor: Intel® Core2 Duo CPU T6600 (SSE 2, SSE 3) 3. Mostek południowy: MCP79 4. Karta graficzna: NVIDIA GeForce G102M 5. Kodek dźwięku: ALC662 6. Karta sieciowa LAN: RTL8111/8168B 7. Karta sieciowa WLAN: Atheros AR9285 8. Dysk twardy oraz napęd optyczny podłączone poprzez interfejs SATA 9. Klawiatura oraz touchpad na PS/2 10. Kamera internetowa: Chicony CNF7129 11. Czytnik kart pamięci: Alcor AU6433 Pora na podsumowanie efektów... Funkcjonuje: - SpeedStep (P-States oraz C-States) - Karta graficzna (QE/CI) - Karta muzyczna (mikrofon wewnętrzny, mikrofon zewnętrzny jako wejście liniowe, głośniki, wyjście słuchawkowe) - Karta sieciowa LAN - Karta sieciowa WLAN - Touchpad (obsługa tap-to-click, przewijanie dwoma palcami w pionie itd. - jeśli decydujesz się na dual boot z Windows, przy użyciu Chameleona - unikaj ponownego uruchamiania z poziomu systemu Microsoftu, jeśli planujesz następnie pracować na Mac OS X - touchpad nie funkcjonuje wtedy poprawnie, jest to znany problem, a jedynym rozwiązaniem, o którym wiem jest użycie chociażby Acronis OS Selector) - Rozpoznawanie statusu baterii - Shutdown/Restart - Sleep - Kamera internetowa - Czytnik kart pamięci (rozpoznawany jako wbudowany czytnik Apple) Nie funkcjonuje bez wątpienia: - Restart po wybudzeniu komputera - Hibernacja (system jest poprawnie przywrócony do stanu sprzed hibernacji, lecz z niewiadomych przyczyn na wstępie atakuje nas nieprzerwany dźwięk ostrzeżenia) 1. Instalacja Przed rozpoczęciem kroków opisanych w poradniku warto przeprowadzić aktualizację biosu. Na ten moment najnowsza wersja to: 223. Proponuję również pobrać załączone do postu archiwum, zawiera ono niezbędne pliki. Zapiszmy je chociażby na pendrive, aby mieć do nich łatwy dostęp. Pozwolę sobie nie opisywać samego procesu instalacji, proponuję posłużyć się istniejącym poradnikiem witucha0, musicie jednak pamiętać, aby korzystając z XBootera zawsze dopisywać flagę GraphicsEnabler=No, a wszelkie czynności post-konfiguracyjne wykonywać na wersji 10.6 lub 10.6.3 – na 10.6.7 nie byłem w stanie uruchomić systemu z płyty bootującej (informacje jak obchodzić się z flagami odnajdziecie w następnym kroku): http://hamac.pl/topics15/instalacja-mac ... vt2646.htm Gdy Mac OS X zostanie zainstalowany (wersja 10.6 lub 10.6.3) i po raz pierwszy uruchomiony, możemy przejść do post-konfiguracji. 2. Post-konfiguracja Na początek proponuję zaopatrzyć się w Combo Update 10.6.8 oraz zainstalować je (nie uruchamiając ponownie komputera!). Możemy teraz wgrać bootloader, który umożliwi nam bezproblemowe uruchomienie systemu bez konieczności korzystania z Boot CD, znajdziemy go w paczcie dołączonej do poradnika. Zwie się Chameleon-2.0-RC5-r828.pkg. Jeśli instalator nie uruchomi się poprawnie za pierwszym razem – próbujemy do skutku. Instalujemy go na partycji z systemem (nie wylogowujemy się!). Kolejnym krokiem jest utworzenie folderu Extra wraz z KextStore. Uruchamiamy terminal (Programy->Narzędzia->Terminal), a następnie po kolei wpisujemy komendy, zatwierdzając każdą "Enterem": sudo -s (podajemy hasło administratora, nie martwmy się, iż go nie widać - jest to normalne) mkdir /Extra mkdir /Extra/KextStore Skoro już utworzyliśmy potrzebne foldery, warto je zapełnić zawartością, czyż nie? Przechodzimy więc do partycji z systemem, po czym otwieramy utworzony przed chwilą folder Extra. Umieszczamy w nim smbios.plist oraz com.apple.boot.plist. Zawierają one następujące informacje: smbios.plist: <?xml version="1.0" encoding="UTF-8"?> SMbiosversion MBP51.88Z.007E.B05.0905051508 SMboardproduct Mac-F42D86C8 SMfamily MacBook Pro SMmanufacter Apple Inc. SMproductname MacBookPro5,1 SMcputype 769 SMexternalclock 200 SMmaximalclock 2200 SMmemspeed 800 SMmemtype 19 SMserial W884094J1GA SMsystemversion 1.0 com.apple.boot.plist: <?xml version="1.0" encoding="UTF-8"?> Kernel mach_kernel Kernel Flags npci=0x2000 GraphicsEnabler Yes GraphicsMode 1366x768x32@60 Legacy Logo Yes DSDT /Extra/DSDT.aml SMBIOS /Extra/smbios.plist SystemType 2 Theme LoginToLion Boot Banner No Kolejnym krokiem jest instalacja Kext Wizard (znajduje się w paczce z niezbędnymi do post-konfiguracji plikami). Przy użyciu owego programu (stosowny opis odnajdziesz w poradniku instalacji, który podałem powyżej) instalujemy w Extra następujące kexty (również znajdują się w archiwum dołączonym do postu): AppleACPIBatteryManager, AppleACPIPS2Nub, ApplePS2Controller, EvOreboot, FakeSMC, NullCPUPowerManagement Ten zestaw pozwoli na pierwsze zbootowanie systemu bez użycia płyty. Uruchamiamy ponownie komputer dzięki opcji w menu systemu (na tym etapie trzeba jeszcze popchnąć tę czynność manualnie - przytrzymując przycisk power, po chwili, gdy na ekranie wyświetli się MACH reboot), tym razem już bez obecności XBootera w napędzie. Proponuję, na wszelki wypadek, dodać flagi -v -f przed wybraniem partycji z systemem po restarcie. Wystarczy po prostu wpisać je na wyświetlającym się przy uruchamianiu komputera ekranie Chameleona i wcisnąć "Enter". Gdy system włączy się bez problemów (a tak stać się powinno) przechodzimy do kolejnego kroku. 3. Przygotowanie DSDT do modyfikacji Instrukcję jak wydobyć DSDT z naszego komputera odnajdziesz tutaj: http://hamac.pl/topics27/czesc-1-wydoby ... vt1651.htm Osobiście polecam metodę z Live CD Ubuntu w wersji 9.04. Jako, iż ostatnio ze strony ubuntu.pl zniknął odnośnik do tego obrazu ISO, podaję go tutaj: http://old-releases.ubuntu.com/releases/9.04/ Zatem, zakładając, iż wyciągnęliśmy już swoje DSDT (plik znajduje się w ACPI-Tables.zip, rozpoznasz go po początku nazwy ), pozwolę sobie poprowadzić Cię za rączkę poprzez cały proces poprawiania owego. Na początek zaopatrzmy się w najnowszą wersję TextWrangler oraz iASLMe. http://www.barebones.com/products/textwrangler/ http://www.insanelymac.com/forum/index.php?showtopic=189272 Aktualnego iASLMe szukamy na ostatnich stronach tematu (załączniki w pierwszym poście nie są aktualizowane). Ja korzystam w tym momencie z iASLMe_UB_23_06_2011. Oba programy instalujemy, a następnie na ikonę iASLMe przeciągamy nasze DSDT. Czynimy to, aby jego zawartość stała się "czytelna" dla zwykłego edytora tekstu. Otrzymany plik, z rozszerzeniem .dsl, otwieramy przy użyciu TextWrangler. Kod stanie się bardziej przejrzysty, jeśli z menu wybierzemy "Edit->Text options..." i ustawimy jak na zamieszczonym poniżej screenshocie: Aby, przed przystąpieniem do poważniejszych modyfikacji, sprawdzić poprawność naszego DSDT, przeciągamy otrzymany plik .dsl na iASLMe. Jeśli kompilacja przebiegnie bezbłędnie (czyt. uzyskamy na koniec "Compilation complete. 0 Errors, 0 Warnings, 0 Remarks...") - możemy przejść do następnego punktu. W przeciwnym razie warto "uciszyć" kompilator. Nie jestem w stanie przewidzieć jak dokładnie będzie wyglądać Twoje DSDT, podam więc rozwiązania, które zastosowałem w moim przypadku. Czyste DSDT, po dekompilacji i ponownemu skompilowaniu prezentowało się w następujący sposób: Compilation complete. 2 Errors, 42 Warnings, 1 Remarks... Nie jest to nic strasznego, tak naprawdę ostrzeżeniami nie musimy się przejmować, lecz ma natura pedanta nie pozwala mi na pozostawienie DSDT w takim stanie. Proponuję skopiować cały log kompilacji, aby mieć wygodny wgląd do informacji dot. błędów i ostrzeżeń. Taki oto log wklejamy chociażby do otwartego już TextWranglera i poszukujemy wyrażenia "error". W mym przypadku pierwszy błąd wyglądał tak: /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5071: Return (Zero) Error 4080 - Invalid object type for reserved name ^ (found ZERO, requires Buffer) 5071 to linijka, której dotyczy, zatem, korzystając z opcji "Search->Go to line", właśnie tam przechodzimy. Method (_CRS, 0, NotSerialized) { If (OSFL ()) { Return (Zero) } Else { Return (LCRO (^^PCI0.IMAP.PR0E)) } } Kompilator skarży się na niepoprawny rodzaj obiektu: znajduje się tam ZERO, wymagany zaś jest Buffer. Skoro tego oczekuje... czemu nie spełnić jego pragnienia? Zmieniamy zatem Zero na Buffer (Zero) {}. Tak oto wyglądać będzie ten fragment po wprowadzeniu zmian: Method (_CRS, 0, NotSerialized) { If (OSFL ()) { Return (Buffer (Zero) {}) } Else { Return (LCRO (^^PCI0.IMAP.PR0E)) } } Gotowe! Jeden błąd za nami, pora zatem skompilować DSDT, przeciągając plik .dsl na ikonę iASLMe, a następnie skopiować log i ponownie poszukać wyrażenia "error", w mym przypadku drugi, ostatni błąd wyglądał tak: /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 6265: Name (_HID, "pnp0c14") Error 4124 - Non-hex letters must be upper case ^ (pnp0c14) Znowu odnajdujemy linijkę, do której się odnosi: Name (_HID, "pnp0c14") Tym razem sprawa jest jeszcze prostsza - fragment "pnp0c14" musi składać się tylko z wielkich liter. Pozostaje zatem zmienić go na "PNP0C14". Finalnie będzie to wyglądać tak: Name (_HID, "PNP0C14") Gotowe! Nasze DSDT jest wolne od błędów. Jeśli nie masz ochoty poświęcać swego cennego czasu na pozbycie się również ostrzeżeń itp. - możesz przejść do kolejnego punktu. W przeciwnym razie zapraszam do dalszej lektury... Do pełnego szczęścia pozostało nam usunięcie 42 warnings oraz 1 remark. Zerknijmy najpierw o jakie ostrzeżenia chodzi: /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 2980: Method (ADVD, 0, NotSerialized) Warning 1088 - Not all control paths return a value ^ (ADVD) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5709: If (LOr (MP0P (Local6), MP1P (Local6))) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5709: If (LOr (MP0P (Local6), MP1P (Local6))) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5711: Multiply (MCRS (Local6), 0x08000000, BF0F) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5713: If (MPCR (Local6)) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5715: If (MP0P (Local6)) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5717: If (MP1P (Local6)) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5728: If (MP0P (Local6)) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5730: Store (MP0N (Local6), Local5) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5734: If (MP1P (Local6)) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5736: Store (MP1N (Local6), Local5) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5740: If (LGreater (BNKN, MCDB (Local5))) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5742: Store (MCDB (Local5), BNKN) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5745: If (LLess (BNKX, MCDB (Local5))) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5747: Store (MCDB (Local5), BNKX) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5750: If (LGreater (COLN, MCDC (Local5))) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5752: Store (MCDC (Local5), COLN) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5755: If (LLess (COLX, MCDC (Local5))) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5757: Store (MCDC (Local5), COLX) Warning 1093 - Called method may not always return a value ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5798: Method (MP0P, 1, NotSerialized) Warning 1088 - Not all control paths return a value ^ (MP0P) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5826: Method (MP1P, 1, NotSerialized) Warning 1088 - Not all control paths return a value ^ (MP1P) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5854: Method (MPCR, 1, NotSerialized) Warning 1088 - Not all control paths return a value ^ (MPCR) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5882: Method (MP0N, 1, NotSerialized) Warning 1088 - Not all control paths return a value ^ (MP0N) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5910: Method (MP1N, 1, NotSerialized) Warning 1088 - Not all control paths return a value ^ (MP1N) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5938: Method (MCRB, 1, NotSerialized) Warning 1088 - Not all control paths return a value ^ (MCRB) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5966: Method (MCRS, 1, NotSerialized) Warning 1088 - Not all control paths return a value ^ (MCRS) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 5994: Method (MCDB, 1, NotSerialized) Warning 1088 - Not all control paths return a value ^ (MCDB) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 6017: Method (MCDC, 1, NotSerialized) Warning 1088 - Not all control paths return a value ^ (MCDC) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 6295: Method (WMNV, 3, NotSerialized) Warning 1088 - Not all control paths return a value ^ (WMNV) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 7136: Acquire (MUTE, 0x03E8) Warning 1105 - Result is not used, possible operator timeout will be missed ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 7150: Acquire (MUTE, 0x03E8) Warning 1105 - Result is not used, possible operator timeout will be missed ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 7165: Acquire (MUTE, 0x03E8) Warning 1105 - Result is not used, possible operator timeout will be missed ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 7180: Acquire (MUTE, 0x0FFF) Warning 1105 - Result is not used, possible operator timeout will be missed ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 7194: Acquire (MUTE, 0x03E8) Warning 1105 - Result is not used, possible operator timeout will be missed ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 7209: Acquire (MUTE, 0x03E8) Warning 1105 - Result is not used, possible operator timeout will be missed ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 7224: Acquire (MUTE, 0x03E8) Warning 1105 - Result is not used, possible operator timeout will be missed ^ /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 8970: Return (One) Warning 1128 - Reserved method should not return a value ^ (_Q0E) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 9001: Return (One) Warning 1128 - Reserved method should not return a value ^ (_Q0F) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 10256: Method (GMLE, 1, Serialized) Warning 1088 - Not all control paths return a value ^ (GMLE) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 10269: Method (SMLE, 1, Serialized) Warning 1088 - Not all control paths return a value ^ (SMLE) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 10289: Method (WLLC, 1, NotSerialized) Warning 1088 - Not all control paths return a value ^ (WLLC) /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 10946: Return (\_SB.PCI0.IXVE.IGPU.ADVD ()) Warning 1093 - Called method may not always return a value ^ Najpierw musimy zająć się wszystkimi ostrzeżeniami z serii Not all control paths return a value. Sposób rozwiązania tego problemu przedstawię na przykładzie: Method (MP0P, 1, NotSerialized) { If (LEqual (Arg0, Zero)) { Return (P0P0) } If (LEqual (Arg0, One)) { Return (P0P1) } If (LEqual (Arg0, 0x02)) { Return (P0P2) } If (LEqual (Arg0, 0x03)) { Return (P0P3) } If (LEqual (Arg0, 0x04)) { Return (P0P4) } } Ogólna zasada jest taka - na końcu fragmentu, do którego odnosi się warning, dodajemy "Return (Zero)". Tak oto wyglądać będzie fragment z poprawką: Method (MP0P, 1, NotSerialized) { If (LEqual (Arg0, Zero)) { Return (P0P0) } If (LEqual (Arg0, One)) { Return (P0P1) } If (LEqual (Arg0, 0x02)) { Return (P0P2) } If (LEqual (Arg0, 0x03)) { Return (P0P3) } If (LEqual (Arg0, 0x04)) { Return (P0P4) } Return (Zero) } Gdy już rozprawimy się ze wszystkimi ostrzeżeniami tego typu, przechodzimy do "Reserved method should not return a value". I tym razem posłużę się przykładem: /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 8970: Return (One) Warning 1128 - Reserved method should not return a value ^ (_Q0E) Return (One) Jedno z ostrzeżeń odnosi się właśnie do powyższego fragmentu. Jeśli znamy angielski, łatwo zauważymy czego oczekuje kompilator: dana metoda ma nic nie zwracać. Logicznym rozwiązaniem będzie zatem po prostu pozbycie się "Return (One)". W analogiczny sposób zajmujemy się resztą Aby finalnie zakończyć sprawę z warnings, musimy odnieść się do ostrzeżeń typu: Acquire (MUTE, 0x03E8) Warning 1105 - Result is not used, possible operator timeout will be missed ^ Rozwiązanie jest bardzo proste, zmieniamy Acquire (MUTE, 0x03E8), których dotyczą na Acquire (MUTE, 0xFFFF). Na koniec można wyeliminować remark. /Users/man_of_the_oak/Desktop/Asus K50IN/Brudactwo/DSDT_K50IN_K50IN000.dsl 159: Name (_T_0, Zero) Remark 5111 - Use of compiler reserved name ^ (_T_0) Odnajdujemy wszelkie wyrażenia (w całym DSDT) "_T_0" i zmieniamy je na "T_0". Gratuluję, w tym momencie Twoje DSDT powinno zwrócić przy kompilacji następującą informację: Compilation complete. 0 Errors, 0 Warnings, 0 Remarks 4. Modyfikacja DSDT Metoda DTGP Przed: (...) DefinitionBlock ("DSDT.aml", "DSDT", 1, "K50IN", "K50IN000", 0x00000000) { Scope (_PR) { Processor (P001, 0x01, 0x00004010, 0x06) {} Alias (P001, CPU0) } Scope (_PR) { Processor (P002, 0x02, 0x00004010, 0x06) {} Alias (P002, CPU1) } Scope (_PR) { Processor (P003, 0x03, 0x00004010, 0x06) {} Alias (P003, CPU2) } (...) Po: (...) DefinitionBlock ("DSDT.aml", "DSDT", 1, "K50IN", "K50IN000", 0x00000000) { 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) } Scope (_PR) { Processor (P001, 0x01, 0x00004010, 0x06) {} Alias (P001, CPU0) } Scope (_PR) { Processor (P002, 0x02, 0x00004010, 0x06) {} Alias (P002, CPU1) } Scope (_PR) { Processor (P003, 0x03, 0x00004010, 0x06) {} Alias (P003, CPU2) } (...) Pozbycie się aliasów: Przed: (...) Scope (_PR) { Processor (P001, 0x01, 0x00004010, 0x06) {} Alias (P001, CPU0) } Scope (_PR) { Processor (P002, 0x02, 0x00004010, 0x06) {} Alias (P002, CPU1) } Scope (_PR) { Processor (P003, 0x03, 0x00004010, 0x06) {} Alias (P003, CPU2) } Scope (_PR) { Processor (P004, 0x04, 0x00004010, 0x06) {} Alias (P004, CPU3) } (...) Po: (...) Scope (_PR) { Processor (P001, 0x01, 0x00004010, 0x06) {} Processor (P002, 0x02, 0x00004010, 0x06) {} Processor (P003, 0x03, 0x00004010, 0x06) {} Processor (P004, 0x04, 0x00004010, 0x06) {} }(...) Następnie musimy pamiętać, aby w całym DSDT zmienić CPU0 na P001, CPU1 na P002, CPU2 na P003 oraz CPU3 na P004! Rozpoznawanie systemów operacyjnych Przed: (...) Method (OSYS, 0, NotSerialized) { Store (0x10, Local0) If (CondRefOf (_OSI, Local1)) { If (_OSI ("Windows 2000")) { Store (0x12, Local0) } If (_OSI ("Windows 2001")) { Store (0x13, Local0) } If (_OSI ("Windows 2001 SP1")) { Store (0x13, Local0) } If (_OSI ("Windows 2001 SP2")) { Store (0x13, Local0) } If (_OSI ("Windows 2001.1")) { Store (0x14, Local0) } If (_OSI ("Windows 2001.1 SP1")) { Store (0x14, Local0) } If (_OSI ("Windows 2006")) { Store (0x15, Local0) } }(...) Po: (...) Method (OSYS, 0, NotSerialized) { Store (0x10, Local0) If (CondRefOf (_OSI, Local1)) { If (_OSI ("Windows 2000")) { Store (0x12, Local0) } If (_OSI ("Windows 2001")) { Store (0x13, Local0) } If (_OSI ("Windows 2001 SP1")) { Store (0x13, Local0) } If (_OSI ("Windows 2001 SP2")) { Store (0x13, Local0) } If (_OSI ("Windows 2001.1")) { Store (0x14, Local0) } If (_OSI ("Windows 2001.1 SP1")) { Store (0x14, Local0) } If (_OSI ("Windows 2006")) { Store (0x15, Local0) } If (_OSI ("Darwin")) { Store (0x15, Local0) } }(...) PIC Przed: (...) Device (PIC) { Name (_HID, EisaId ("PNP0000")) Name (_CRS, ResourceTemplate () { IO (Decode16, 0x0020, // Range Minimum 0x0020, // Range Maximum 0x00, // Alignment 0x02, // Length ) IO (Decode16, 0x00A0, // Range Minimum 0x00A0, // Range Maximum 0x00, // Alignment 0x02, // Length ) IRQNoFlags () {2} }) }(...) Po: (...) Device (PIC) { Name (_HID, EisaId ("PNP0000")) Name (_CRS, ResourceTemplate () { IO (Decode16, 0x0020, // Range Minimum 0x0020, // Range Maximum 0x00, // Alignment 0x02, // Length ) IO (Decode16, 0x00A0, // Range Minimum 0x00A0, // Range Maximum 0x00, // Alignment 0x02, // Length ) }) }(...) Uruchomienie SMBus Przed: (...) Device (SMB0) { Name (_ADR, 0x00030002) OperationRegion (SMAD, PCI_Config, 0x20, 0x08) Field (SMAD, DWordAcc, NoLock, Preserve) { SB1, 32, SB2, 32 } OperationRegion (SMCF, PCI_Config, 0x48, 0x10) Field (SMCF, DWordAcc, NoLock, Preserve) { SMPM, 4, SMT1, 28, SMT2, 32 }(...) Po: (...) Device (SMB0) { Name (_ADR, 0x00030002) Device (BUS0) { Name (_CID, "smbus") Name (_ADR, Zero) Device (DVL0) { Name (_ADR, 0x57) Name (_CID, "diagsvault") } } OperationRegion (SMAD, PCI_Config, 0x20, 0x08) Field (SMAD, DWordAcc, NoLock, Preserve) { SB1, 32, SB2, 32 } OperationRegion (SMCF, PCI_Config, 0x48, 0x10) Field (SMCF, DWordAcc, NoLock, Preserve) { SMPM, 4, SMT1, 28, SMT2, 32 }(...) Sekcja audio Przed: (...) Device (HDAC) { Name (_ADR, 0x00080000) Name (SCID, Zero) Name (SACW, Zero) Method (_PS0, 0, NotSerialized) { If (SCID) { Store (Zero, PMDS) Store (Zero, PMEN) Store (SCID, CDID) Store (SACW, AOCW) } } Method (_PS3, 0, NotSerialized) { Store (AOCW, SACW) Store (CDID, SCID) Store (One, PMST) Store (0x03, PMDS) Store (One, PMEN) }(...) Po: (...) Device (HDEF) { Name (_ADR, 0x00080000) Method (_DSM, 4, NotSerialized) { Store (Package (0x08) { "subsystem-id", Buffer (0x04) { 0xF3, 0x16, 0x00, 0x00 }, "subsystem-vendor-id", Buffer (0x04) { 0x43, 0x10, 0x00, 0x00 }, "layout-id", Buffer (0x04) { 0x0C, 0x00, 0x00, 0x00 }, "PinConfigurations", Buffer (Zero) {} }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } Name (SCID, Zero) Name (SACW, Zero) Method (_PS0, 0, NotSerialized) { If (SCID) { Store (Zero, PMDS) Store (Zero, PMEN) Store (SCID, CDID) Store (SACW, AOCW) } } Method (_PS3, 0, NotSerialized) { Store (AOCW, SACW) Store (CDID, SCID) Store (One, PMST) Store (0x03, PMDS) Store (One, PMEN) }(...) Kosmetyczny wpis dotyczący informacji o karcie graficznej (bez niego w System Profiler będzie widnieć "Unknown", problem rozwiązuje nowsza wersja Chameleona, lecz do tej pory jedyną, która wyświetlała informacje o obecnej pamięci RAM była ta dołączona do paczki, proponuję zatem wprowadzić jednak tę poprawkę do DSDT): Przed: (...) Name (DONE, Zero) Name (DOSF, One) Name (BRNC, Zero) Method (_INI, 0, NotSerialized) { GETD () } Method (_DOS, 1, NotSerialized) { And (Arg0, 0x03, DOSF) Store (ShiftRight (Arg0, 0x02), BRNC) And (BRNC, One, BRNC) }(...) Po: (...) Name (DONE, Zero) Name (DOSF, One) Name (BRNC, Zero) Method (_DSM, 4, NotSerialized) { Store (Package () { "@0,compatible", Buffer (0x0B) { "NVDA,NVMac" }, "@0,device_type", Buffer (0x08) { "display" }, "@0,name", Buffer (0x0F) { "NVDA,Display-A" }, "@1,compatible", Buffer (0x0B) { "NVDA,NVMac" }, "@1,device_type", Buffer (0x08) { "display" }, "@1,name", Buffer (0x0F) { "NVDA,Display-B" }, "device_type", Buffer (0x0C) { "NVDA,Parent" }, "model", Buffer () { "NVIDIA GeForce G102M" }, "rom-revision", Buffer () { "62.79.78.00.06" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } Method (_INI, 0, NotSerialized) { GETD () } Method (_DOS, 1, NotSerialized) { And (Arg0, 0x03, DOSF) Store (ShiftRight (Arg0, 0x02), BRNC) And (BRNC, One, BRNC) }(...) Time Machine fix Przed: (...) Device (P0P6) { Name (_ADR, 0x00150000) Method (_PRW, 0, NotSerialized) { Return (GPRW (0x11, 0x04)) }(...) Po: (...) Device (P0P6) { Name (_ADR, 0x00150000) Device (LAN) { Name (_ADR, Zero) Method (_DSM, 4, NotSerialized) { Store (Package (0x04) { "built-in", Buffer (One) { 0x01 }, "name", Buffer (0x24) { "Realtek RTL8111/8168B PCI-E Gigabit" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Method (_PRW, 0, NotSerialized) { Return (GPRW (0x11, 0x04)) }(...) Rozpoznawanie systemów operacyjnych 2 Przed: (...) Method (MSOS, 0, NotSerialized) { If (CondRefOf (_OSI, Local0)) { If (_OSI ("Windows 2001")) { Store (OSXP, OSFG) } If (_OSI ("Windows 2001 SP1")) { Store (OSXP, OSFG) } If (_OSI ("Windows 2001 SP2")) { Store (OSXP, OSFG) } If (_OSI ("Windows 2006")) { Store (OSVT, OSFG) } If (_OSI ("Linux")) { Store (OSEG, OSFG) } If (_OSI ("Windows 2009")) { Store (OSW7, OSFG) } Return (OSFG) }(...) Po: (...) Method (MSOS, 0, NotSerialized) { If (CondRefOf (_OSI, Local0)) { If (_OSI ("Windows 2001")) { Store (OSXP, OSFG) } If (_OSI ("Windows 2001 SP1")) { Store (OSXP, OSFG) } If (_OSI ("Windows 2001 SP2")) { Store (OSXP, OSFG) } If (_OSI ("Windows 2006")) { Store (OSVT, OSFG) } If (_OSI ("Darwin")) { Store (OSVT, OSFG) } If (_OSI ("Linux")) { Store (OSEG, OSFG) } If (_OSI ("Windows 2009")) { Store (OSW7, OSFG) } Return (OSFG) }(...) Fix uaktywniający zasypianie po zamknięciu klapy: Przed: (...) Device (LID) { Name (_HID, EisaId ("PNP0C0D")) Method (_LID, 0, NotSerialized) { Store (One, Local0) ^^PCI0.SBRG.EC0.DL9F () Store (^^PCI0.SBRG.EC0.RPIN (0x06), Local0) ^^PCI0.SBRG.EC0.DL9F () If (LEqual (Local0, Ones)) { Store (One, Local0) } Return (Local0) } }(...) Po: (...) Device (LID) { Name (_HID, EisaId ("PNP0C0D")) Name (LIDS, One) Method (_LID, 0, NotSerialized) { Store (^^PCI0.SBRG.EC0.RPIN (0x06), LIDS) XOr (LIDS, One, Local0) If (Local0) { Notify (SLPB, 0x80) } Return (LIDS) } }(...) Uruchomienie wbudowanej karty sieciowej WLAN Przed: (...) Device (P0P7) { Name (_ADR, 0x00160000) Method (_PRW, 0, NotSerialized) { Return (GPRW (0x11, 0x04)) } Method (_PRT, 0, NotSerialized) { If (PICM) { Return (AR07) } Return (PR07) } }(...) Po: (...) Device (P0P7) { Name (_ADR, 0x00160000) Method (_PRW, 0, NotSerialized) { Return (GPRW (0x11, 0x04)) } Device (ARPT) { Name (_ADR, Zero) Name (_PRW, Package (0x02) { 0x0B, 0x05 }) Method (_DSM, 4, NotSerialized) { Store (Package (0x0C) { "AAPL,slot-name", Buffer (0x08) { "AirPort" }, "device-id", Unicode ("*"), "device_type", Buffer (0x08) { "AirPort" }, "model", Buffer (0x34) { "Atheros 9285 8802.11 b/g/n Wireless Network Adapter" }, "subsystem-id", Buffer (0x04) { 0x89, 0x10, 0x00, 0x00 }, "subsystem-vendor-id", Buffer (0x04) { 0x3B, 0x1A, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Method (_PRT, 0, NotSerialized) { If (PICM) { Return (AR07) } Return (PR07) } }(...) W moim DSDT zastosowałem również następującą zmianę nazewnictwa, aby upodobnić je do tego z MacBooka Pro 5,1. Pragnę przypomnieć, iż nie działa to na zasadzie "zmień wszystko", np. APIC to nie to samo co PIC!: PIC -> IPIC DMAD -> DMAC TMR -> TIMR RTC0 -> RTC COPR -> MATH OMSC -> LDRC SBRG -> LPCB USB0 -> OHC1 USB2 -> EHC1 RHUB -> HUB1 Quote Link to comment Share on other sites More sharing options...
man_of_the_oak Posted August 21, 2011 Author Report Share Posted August 21, 2011 5. Post-konfiguracja part IISkoro przygotowaliśmy już nasze własne DSDT, wykorzystajmy jego potencjał i pozbądźmy się wreszcie NullCPUPowerManagement z naszego Extra. Do głównego katalogu (obok smbios.plist itd.) wklejamy skompilowane DSDT, o rozszerzeniu .aml, a następnie wzbogacamy nasz zbiór kextów o LegacyHDA_ALC662-v.1, mego autorstwa oraz AnyCardReader Kolejnym krokiem jest podmiana 3 plików w S/L/E (jeden to kwestia kosmetyki - o ile do wersji 10.6.7 włącznie kontroler AHCI w System Profiler był poprawnie wyświetlany, o tyle po aktualizacji do 10.6.8 mym oczom ukazał się Unknown AHCI Standard Controller. Część dotycząca MCP79 w AppleAHCIPort nie została zmieniona, identyfikatory naszego sprzętu nadal tam są… nie byłem w stanie odnaleźć innej metody uruchomienia poprawnego rozpoznania kontrolera, zatem - skoro i tak system nie będzie już rozwijany - zdecydowałem się na rollback do AppleAHCIPort z Mac OS X w wersji 10.6.7):AppleAHCIPort, AppleHDA, IOAudioFamilyDlaczego podmieniamy AppleHDA? Otóż, po wybudzeniu ze snu - głośniki cichły… problem rozwiązuje spatchowane IOAudioFamily, które niestety nie było rozwijane od czasów Mac OS X 10.6.2 i nie funkcjonuje nie tylko z Mac OS X w wersji 10.6.8 (co wydaje się oczywiste ze względu na zmienioną strukturę AppleHDA), ale także i 10.6.7. Sam niestety nie posiadam kompetencji, aby spatchować wersję aktualną, zatem - przynajmniej do czasu, gdy ktoś się tego podejmie - jesteśmy skazani na rollback.Teraz możemy wreszcie upiększyć nieco wygląd naszego ekranu bootowania. Wgrywamy folder Themes (obecny w paczce dołączonej do poradnika) do Extra, po czym zaznaczamy wszelkie opcje w zakładce "Konserwacja" w Kext Wizard, upewniamy się, iż dyskiem docelowym jest partycja z zainstalowanym Mac OS X, a następnie wybieramy "Wykonaj" i idziemy zrobić sobie kawy/herbaty, gdyż chwilkę to zajmie - czekamy cierpliwie!Uruchamiamy ponownie system, na wszelki wypadek z flagą -v - już ostatni raz, obiecuję 6. Pozbycie się komunikatu "Your device or computer could not be verified. Contact support for assistance" przy próbie zalogowania do App StoreProblem stanowi automatyczne przyporządkowanie karty sieciowej WLAN pod en0, podczas gdy znajdować tam powinna się karta LAN. Aby ustawić poprawną kolejność musimy usunąć plik NetworkInterfaces.plist, który odnajdziemy w następującej lokalizacji:/Library/Preferences/SystemConfigurationNastępnie restartujemy komputer, przechodzimy do preferencji sieci i usuwamy oba obecne tam interfejsy sieciowe, po czym dodajemy ponownie, w następującej kolejności:- Ethernet- AirPort 7. Rozwiązanie problemu z kamerą internetowąJak pewnie zauważyliście - kamera internetowa działa OOTB, lecz obraz wyświetlany jest do góry nogami. Nie ma się czym przejmować, rozwiązanie tego problemu jest bardzo proste - wystarczy zaopatrzyć się w program iGlasses, a następnie po uruchomieniu chociażby PhotoBooth, za pomocą opcji "Rotate" ustawić obraz w odpowiedniej pozycji, po czym wybrać "Default", aby ustawienia były wczytywane automatycznie.Program funkcjonuje z większością znanych mi aplikacji wykorzystujących kamerę internetową, pośród nich znajdują się chociażby: Skype, Messenger for Mac, PhotoBooth. 8. Przypisanie wybranych skrótów klawiaturowychNiestety, w przypadku klawiatury zastosowanej w tym laptopie, nie możliwe jest korzystanie z klawiszy funkcyjnych przy użyciu obecnych w tym momencie kextów. Dzięki programowi ControllerMate możemy jednak stworzyć własne skróty do takich funkcji systemowych jak chociażby regulacja głośności. Pozwolę sobie zaprezentować ten proces właśnie na tym przykładzie.Po pierwszym uruchomieniu aplikacji, naszym oczom ukazuje się następujący widok: Zaznaczamy "Start Page", po czym w okienku "Palette", po prawej stronie, odnajdujemy "Apple Keyboard": Klikamy na ikonę dwukrotnie, pojawia się taka oto lista: Gdy naciśniemy jakikolwiek klawisz na klawiaturze, na powyższej liście zaczyna się świecić zielona "dioda" przy nim. W tym przykładzie przyporządkujemy skróty regulacji głośności w następującym schemacie:F9 - wyciszenieF10 - zmniejszenie poziomu głośnościF11 - zwiększenie poziomu głośnościZanim jednak to zrobimy, musimy się upewnić, iż nie są one już używane przez system (np. F12 po dłuższym przytrzymaniu odpowiada za wysuwanie napędu, dlatego właśnie wybrałem inne klawisze). Przechodzimy zatem do "Preferencje systemowe->Klawiatura->Skróty klawiszowe" i odznaczamy skróty przyporządkowane do F9, F10 oraz F11: Następnie wracamy do ControllerMate i przeciągamy z "Palette" każdy z przycisków do głównego okna.Kolejnym krokiem jest wybranie "Window->Keystrokes Palette". Z wyświetlonej klawiatury przeciągamy do głównego okna ControllerMate symbolizujące pożądane przez nas funkcje ikony. Pozostaje więc finalne przyporządkowanie. Czynimy to przeciągając ikonę OFF od przycisku do funkcji. Efekt widoczny jest na poniższym zrzucie: Wybieramy "File->Save", a następnie wyłączamy program - skróty powinny już funkcjonować (ControllerMate nie musi pracować w tle, posiada on małą aplikację, która odpowiada za działanie zapisanych ustawień) 9. Wyrażenie zadowolenia z powstania poradnika poprzez napisanie paru słów nt. efektów korzystania z owego Klasycznie, będę wielce wdzięczny za wszelkie uwagi!Niezbędne pliki: https://mega.nz/#!3M01WZJR!sC2nGoh4vyCTlmQBiEv9sKsx6_9N6YDQzH0kvFqKiuY Quote Link to comment Share on other sites More sharing options...
rzooff Posted August 22, 2011 Report Share Posted August 22, 2011 Super poradnik! Opis Controller Mate, w zasadzie mógłby stanowić osobny poradnik, bo może przydać się także posiadaczom wielu innych laptopów. Quote Link to comment Share on other sites More sharing options...
man_of_the_oak Posted August 22, 2011 Author Report Share Posted August 22, 2011 Bardzo dziękuję! W sumie, mogę w wolnej chwili nieco przysiąść i przygotować go w takiej formie, aby mógł stanowić oddzielny poradnik, masz rację~ Quote Link to comment Share on other sites More sharing options...
Kondor_PL Posted December 27, 2011 Report Share Posted December 27, 2011 (edited) Cześć! Przede wszystkim wielkie dziękujęi za Twój ogromny wkład w dopracowanie instalacji SL na tym ASUSOWYM laptopku. Osobiście miałem już zainstalowanego SL wcześniej (inna metoda). Trochę rzeczy "kulało": nie działał Atheros. Zastąpiłem go kartą WiFi od Broadcom'a, która działa OTB. Problem był też z wybudzaniem audio po wcześniejszym uśpieniu lapka. Z tym ostatnim błędem sobie nie poradziłem. Po opublikowaniu przez Ciebie tutoriala, postanowiłem przeinstalować SL wg zamieszczonej instrukcji. Wszystko przebiegło sprawnie. Niestety miałem problem z podłączeniem zewnętrznego monitora przez złącze D-SUB VGA. Nie było mi to koniecznie potrzebne, także nic z tym nie zrobiłem. Instalowałem kolejno: Instalacyjne DVD 10.6.3 (Boot z karty SD, a instalka na USB) >>> MacOSXUpdCombo10.6.7.dmg >>> Update 10.6.8 W takiej konfiguracji lapek śmigał bez większych problemów prawie 4 miesiące. Przy próbie bezpośredniego updatu z 10.6.3 do 10.6.8 za pomocą MacOSXUpdCombo10.6.8.dmg dochodziło niestety do dziwnych zachowań komputera podczas updatu - łącznie z zawieszeniem. Ostatnio postanowiłem ponownie przeinstalować SL, ponieważ system był już bardzo zaśmiecony różnego rodzaju softem. Oczywiście zastosowałem Twoją metodę. Zauważyłem jednak pewną dość istotną różnicę. Na stronie Apple jest nowa wersja (1.1) updatu 10.6.8 (zarówno Combo - 1GB, jak i MacOSXUpd10.6.8.dmg - 400MB) Zmiana polega na tym, że po updacie do 10.6.8, prawidłowo rozpoznawana jest karta graficzna. Ma to miejsce zarówno po updacie ze starej 10.6.7 za pomocą MacOSXUpd10.6.8.dmg (w ver. 1.1), jak i bezpośrednio 10.6.3 za pomocą MacOSXUpdCombo10.6.8.dmg (w ver. 1.1) (tym razem nie było problemów, aby instalować tą drugą). Tak wygląda w Profilu systemu: (w razie niewyraźnego obrazu po kliknięciu na miniaturce, kliknąć jeszcze raz na wyświetlanej grafice - - może być skalowany, jeśli ekran ma niższą rozdzielczość niż wielkość wyświetlanego obrazka) Dzięki temu, nie zachodzi już potrzeba dokonywania "kosmetycznych" zmian w pliku DSDT! =D> Co ciekawe - w tym przypadku nie występują problemy z podłączeniem zewnętrznego monitora. Jest poprawnie rozpoznawany, a jego obsługa przebiega sprawnie i bezbłędnie. Możliwe, że poprzednie problemy spowodowane były tzw. czynnikiem ludzkim (oczywiście z mojej strony). Lapka sprawdzałem pod TV LCD Samsung L40C650 - wejście PC w postaci D-SUB VGA 15-pin. Tak wygląda ekran po podłączeniu drugiego monitora: __________________ Edit: Kondor_PL napisał: Niestety w moim przypadku występuje inny problem. Co jakiś czas pojawiają się błędy dotyczące inicjowania USB podczas uruchamiania systemu... @314TeR - na razie testuję drugi dzień. Wygląda na to, że diagnoza była trafna i wszystko będzie Ok. Dziękuję za pomoc! P.S. Przydałaby się możliwość zastosowania w postach tagów, które pozwoliłyby na ukrycie treści długich logów. Coś na podobieństwo list, które po kliknięciu pokazywałyby niewidoczną normalnie zawartość. Edited March 19, 2022 by Kondor_PL Quote Link to comment Share on other sites More sharing options...
314TeR Posted December 27, 2011 Report Share Posted December 27, 2011 Na problemy z USB, spróbuj flagę "USB Legacy Off" z Chameleon'a - najszybciej włączysz ją w Chameleon Wizardem. Quote Link to comment Share on other sites More sharing options...
man_of_the_oak Posted September 9, 2017 Author Report Share Posted September 9, 2017 Na prośbę kilku osób - zaktualizowałem odnośnik do plików koniecznych do wykonania poszczególnych kroków poradnika. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.