Skocz do zawartości

Asus K50IN-SX152 - Opis instalacji Mac OS X 10.6.8


Rekomendowane odpowiedzi

0.png

 

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...

 

:arrow: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)

 

:arrow: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)

 

:arrow: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.

 

:arrow: 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.

 

:arrow: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:

 

1.png

 

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

 

:arrow: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

Odnośnik do komentarza
Udostępnij na innych stronach

:arrow:5. Post-konfiguracja part II

Skoro 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, IOAudioFamily

Dlaczego 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ę ;-)

:arrow: 6. Pozbycie się komunikatu "Your device or computer could not be verified. Contact support for assistance" przy próbie zalogowania do App Store

Problem 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/SystemConfiguration

Nastę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

:arrow: 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.

:arrow: 8. Przypisanie wybranych skrótów klawiaturowych

Niestety, 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:



1.png


Zaznaczamy "Start Page", po czym w okienku "Palette", po prawej stronie, odnajdujemy "Apple Keyboard":
 

2.png


Klikamy na ikonę dwukrotnie, pojawia się taka oto lista:
 

3.png


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 - wyciszenie
F10 - zmniejszenie poziomu głośności
F11 - zwiększenie poziomu głośności

Zanim 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:
 

4.png


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.
 

5.png


Pozostaje więc finalne przyporządkowanie. Czynimy to przeciągając ikonę OFF od przycisku do funkcji. Efekt widoczny jest na poniższym zrzucie:
 

6.png


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ń)

:arrow: 9. Wyrażenie zadowolenia z powstania poradnika poprzez napisanie paru słów nt. efektów korzystania z owego
 

final.png

Klasycznie, będę wielce wdzięczny za wszelkie uwagi!

Niezbędne pliki:

https://mega.nz/#!3M01WZJR!sC2nGoh4vyCTlmQBiEv9sKsx6_9N6YDQzH0kvFqKiuY
Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 miesiące temu...

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:

 

ea7664558315t.jpg 954dc009f924t.jpg

(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:

 

e143f1e51968t.jpg

 

__________________

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ść.

Edytowane przez Kondor_PL
Odnośnik do komentarza
Udostępnij na innych stronach

  • 5 lat później...

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ą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie
 Udostępnij

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystanie z tej witryny, wymaga zakceptowanie naszych warunków Warunki użytkowania.