rob3r7o Posted April 17, 2010 Share Posted April 17, 2010 Ciao a tutti, visto i buoni risultati, i migliori che ho avuto da qualche anno a questa parte, provo a fare una piccola guida sperando possa essere di aiuto a chi ha un portatile come il mio. Il grosso delle modifiche sono state implementate direttamente dentro il file DSDT. Così facendo ho risolto diversi problemi: KP sul controller PATA Usb riconosciute senza errore Cpu riconosciuta Video senza kext modificati/aggiuntivi Inject Audio (richiede appleHDA Mod) PowerButton Altri piccoli fix e cosmetica varia Il risultato sarà avere Snow Leopard quasi totalmente funzionante: Video QE CI + Uscita VGA (TV e HDMI non testati) Audio, cuffie, mic interno con riduzione rumore ambientale Usb Bluetooth Webcam, via camtwist ma in bassa risoluzione Lettore SD. Attenzione, legge solo ed esclusivamente schedine SD! Touchpad, compreso scroll con 2 dita Spegnimento e riavvio Firewire Cpu Penryn e speedstep (frequenza da 800Mhz a 2500Mhz) Tastiera, compreso tasti Fn per attivare disattivare Bluetooth/wifi a caldo Tramite functionFlip inoltre è possibile avere risposta a video alzando o abbassando il volume. Pcmci-express: funzionante perfettamente Parzialmente funzionante: Sleep. Il pc va in sleep ma al risveglio bisogna ricaricare il kext audio da terminale col comando "kextload" Inoltre conviene disattivare prima dello sleep il bluetooth, altrimenti non risveglia. DeepSleep (tramite widget): finalmente anche questo funziona!!! Il risultato migliore l'ho avuto usando il bootloader di asere (allegato al pacchetto) DeepSleep funziona utilizzando il kext OpenHaltRestart Anche in questo caso (Fn+F2) spegnere il bluetooth prima di mandare in deepsleep e perdita di audio al risveglio (lo so è fastidioso ma non trovo ancora buone soluzioni al riguardo) Andiamo per ordine: Modifica per evitare il KP sul PATA Trascinare il file dsdt.aml sopra iaslme ed editare dsdt.dsl cercando il controller PATA nel mio caso 0x001F0001 aggiungere il codice seguente (thanks to TheKing) OperationRegion (IDET, PCI_Config, 0x40, 0x04) // IDE Timing Register Field (IDET, WordAcc, NoLock, Preserve) { Offset (0x00), M1, 8, Offset (0x01), M2, 8, Offset (0x02), M3, 8, Offset (0x03), M4, 8 } Method (_DSM, 4, NotSerialized) { Store (0x07, M1) Store (0xE3, M2) Store (Zero, M3) Store (0xC0, M4) Return (Zero) } Ricompilare il file dsdt, trascinandolo nuovamente sopra IaslMe, se non restituisce errori allora la modifica è andata a buon fine. Ora il sistema funzionerà con Ioatafamily.kext vanilla. Porte USB: ICH8-M EHCI Ownership bug Con questa modifica le porte usb saranno sempre viste, e si avrà la cam funzionante (via camtwist e solo a bassa risoluzione) Cercare EHC1, EHC2 e aggiungere questo codice ad entrambe: OperationRegion (U20P, PCI_Config, Zero, 0x0100) Field (U20P, ByteAcc, NoLock, Preserve) { Offset (0x04), , 1, MSPE, 1, Offset (0x06), Offset (0x10), MBAS, 32, Offset (0x54), PSTA, 2, Offset (0x55), PMEE, 1, , 6, PMES, 1, Offset (0x68), // EHCI Ownership Fix OOWS, 32 } Creare un nuovo Method Pini (per capire dove inserirlo confrontate il mio dsdt. Sarebbe difficile spiegare precisamente dove aggiungerlo) Method (PINI, 0, NotSerialized) // For PCI0/Wake INI { Store (One, \_SB.PCI0.EHC1.OOWS) Store (One, \_SB.PCI0.EHC2.OOWS) } Aggiungere la chiamata al PINI in Method (_WAK Method (_WAK, 1, NotSerialized) { PINI () // ....... // codice restante } Aggiungere la chiamata al PINI dentro Method (_INI, dentro Device (PCI0) Device (PCI0) { Method (_INI, 0, NotSerialized) { PINI () } // ....... // codice restante } Ricompilare per accertarsi che non ci siano errori Ancora grazie a TheKing Ulteriore modifiche alle porte Usb (rinominate in Uhc1-uhc4/ehc1-ehc2) ...in scrittura Modifica per avere scheda Video QE CI attivati Nvidia 9500M GS 512MB Aggiungere il seguente codice, all'inizio del dsdt, subito dopo il primo METHOD 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) } E poi cercare Device (GFX0) e aggiungere il codice seguente (potrebbe chiamarsi diversamente) Device (GFX0) { Name (_ADR, Zero) Name (_SUN, One) Method (_DSM, 4, NotSerialized) { Store (Package (0x2C) { "@0,AAPL,boot-display", Buffer (Zero) {}, "@0,backlight-control", Buffer (0x04) { 0x01, 0x00, 0x00, 0x00 }, "@0,built-in", Buffer (Zero) {}, "@0,compatible", Buffer (0x0B) { "NVDA,NVMac" }, "@0,device_type", Buffer (0x08) { "display" }, "@0,fboffset", Buffer (0x04) { 0x00, 0x00, 0x03, 0x00 }, "@0,name", Buffer (0x0F) { "NVDA,Display-A" }, "@0,use-backlight-blanking", Buffer (Zero) {}, "@1,can-hot-plug", Buffer (Zero) {}, "@1,compatible", Buffer (0x0B) { "NVDA,NVMac" }, "@1,device_type", Buffer (0x08) { "display" }, "@1,name", Buffer (0x0F) { "NVDA,Display-B" }, "AAPL,aux-power-connected", Buffer (0x04) { 0x01, 0x00, 0x00, 0x00 }, "AAPL,backlight-control", Buffer (0x04) { 0x01, 0x00, 0x00, 0x00 }, "AAPL00,blackscreen-preferences", Buffer (0x04) { 0x00, 0x00, 0x00, 0x08 }, "AAPL01,blackscreen-preferences", Buffer (0x04) { 0x00, 0x00, 0x00, 0x08 }, "NVCAP", Buffer (0x14) { /* 0000 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, /* 0008 */ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, /* 0010 */ 0x00, 0x00, 0x00, 0x00 }, "NVDA,Features", Buffer (0x04) { 0xFF, 0x02, 0xA0, 0x00 }, "VRAM,totalsize", Buffer (0x04) { 0x00, 0x00, 0x00, 0x20 }, "device_type", Buffer (0x0C) { "NVDA,Parent" }, "model", Buffer (0x15) { "GeForce 9500M GS " }, "rom-revision", Buffer (0x0F) { "60.84.6B.00.16" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } Se avete difficoltà a capire dove e come modificare confrontate col mio dsdt allegato Nel codice sopra è inserito anche NVCAP. Ho potuto testare solo la VGA con successo. Nel caso non funzionasse TV/Hdmi sarebbe da provare a modificare con un altro NVCAP Il valore inserito è stato ricavato estrapolandolo dal bios del mio portatile. Preciso inoltre che sto testando anche la scheda video via EFI String (inserita dentro com.apple.boot.plist) Per cui se si opta per la modifica sopra allora andrebbe cancellata l'efistring dal file Com.apple.boot.plist. Qualora invece si volesse provare ad andare via efistring, allora non occorre la modifica al dsdt sopra esposta. Attualmente L'efistring permette di avere il controllo (virtuale) della luminosità Nel senso che compare il controllo luminosità in preferenze monitor, ma purtroppo non funziona. Usare invece la modifica al dsdt risulta più comodo qualora si volessero provare NVCAP diversi dal mio Inject per scheda audio Alc660VD Questa procedura evita di caricare HDAEnabler.kext o injector simili, ma costringe comunque a modificare AppleHDA.kext Aggiungere il seguente codice al Device (HDEF) Potrebbe come al solito chiamarsi diversamente nel vostro dsdt. Device (HDEF) { Name (_ADR, 0x001B0000) Method (_DSM, 4, NotSerialized) { Store (Package (0x08) { "codec-id", Buffer (0x04) { 0x60, 0x06, 0xEC, 0x10 }, "layout-id", Buffer (0x04) { 0x0C, 0x00, 0x00, 0x00 }, "device-type", Buffer (0x11) { "Realtek ALC660VD" }, "PinConfigurations", Buffer (Zero) {} }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Installare il mio AppleHDA.Kext in Sistem/library/Extensions Modifica riguardante la scheda di rete LAN Puramente estetica in quanto richiede comunque il caricamento del kext, allegato al mio pacchetto Cercare Device (GLAN) e aggiungere il seguente codice: Method (_DSM, 4, NotSerialized) { Store (Package (0x10) { "built-in", Buffer (One) { 0x00 }, "subsystem-id", Buffer (0x04) { 0xE5, 0x14, 0x00, 0x00 }, "class-code", Buffer (0x04) { 0x00, 0x00, 0x02, 0x00 }, "device-id", Buffer (0x04) { 0x48, 0x10, 0x00, 0x00 }, "vendor-id", Buffer (0x04) { 0x69, 0x19, 0x00, 0x00 }, "subsystem-vendor-id", Buffer (0x04) { 0x43, 0x10, 0x00, 0x00 }, "name", Buffer (0x09) { "ethernet" }, "model", Buffer (0x21) { "ATTANSIC L1 Ethernet Gigabit LAN" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } Installazione del sistema, via chiavetta USB: Per tale procedura occorre avere, almeno una sola volta, un sistema Osx funzionante sul quale preparare il tutto. A chiavetta preparata, lo si può fare anche su un pc diverso dal proprio, non occorrerà più avere un sistema OSX di scorta qualora accada qualche pasticcio. Ovviamente per lavorare su un pc diverso dal proprio occorre aver già generato il file DSDT ...Continua Link to comment Share on other sites More sharing options...
rob3r7o Posted April 17, 2010 Author Share Posted April 17, 2010 Installazione Materiale occorrente: Snow Leopard retail (ma credo si possa provare anche qualche altra versione) Pacchetto in allegato Chiavetta Usb Aprire utility disco e posizionarsi sulla chiavetta da preparare Scegliere Ripristina Montare snow leopard retail e trascinarlo dal desktop su sorgente Trascinare la chiavetta Usb dal desktop in Destinazione Finito di ripristinare il sistema procediamo con installare il Chameleon sulla chiavetta Apriamo la chiavetta e portiamoci in Extra/Extensions Se chameleon avesse aggiunto kext cancelliamoli pure. Copiamo il contenuto della mia cartella Extra/Extensions nella chiavetta in Extra/extensions Saranno pochi file: Fakesmc Voodoobattery (per il controllo della batteria del portatile) VoodooSDHC (permetterà di far funzionare esclusivamente il lettore SD) OpenHaltRestart (senza questo si perde lo spegnimento del pc dopo lo sleep) 2 kext per tastiera/touchpad Sempre dentro la chiavetta, copiamo in Extra smbios.plist com.apple.boot.plist dsdt.aml Ora bisogna generare il file Extensions.mkext Per fare questo ci occorre il programma MkextMaker (allegato in Utility) Apriamo la chiavetta andiamo in Extra Prendiamo la cartella Extensions e trasciniamola sopra l'icona di MkextMaker Se abbiamo proceduto bene dovremmo ritrovarci un nuovo file dentro Chiavetta/Extra chiamato extensions.mkext Perfetto. Il lavoro maggiore è stato fatto. A questo punto la chiavetta è avviabile e permette l'installazione di snow leopard, ovviamente solo sul nostro portatile. Caso mai si provasse l'installazione di un altra distribuzione di Snow Leopard tenere in mente che all avvio chameleon carica il file dsdt e il contenuto della cartella Extra/extensione. Per cui se si stesse utilizzando il mio dsdt allora non occorre selezionare nessuna patch in fase di installazione di SL, essendo esse tutte contenute nel dsdt. Quindi riavviamo il pc e facciamo il Boot da chiavetta. Partirà chameleon che ci darà 5 secondi di tempo per decidere quale sistema avviare, mostrandoci le varie partizioni dell Hard disk, compreso la chiavetta USB Scegliamo di partire da chiavetta usb e procediamo con l'installazione Finita l'installazione il sistema si riavvierà ma ovviamente non potremo partire da HD dove abbiamo installato Snow Leopard in quanto manca Chameleon e la cartella Extra con tutto il suo contenuto. Quindi facciamo il boot nuovamente da chiavetta usb. Ora però, una volta caricato chameleon, spostiamoci con i tasti cursore sulla partizione dove abbiamo installato Snow Leopard. Se tutto è andato bene il sistema partirà regolarmente, con il video già funzionante. Ora dovremo ripetere la procedura che abbiamo fatto all'inizio sulla chiavetta, ma questa volta sull Hard disk dove abbiamo installato Snow Leopard, ossia: Installare Chameleon su HD Copiare i file in Extra e in Extensions sull HD (come abbiamo fatto prima) Copiare i Kext dal mio pacchetto in System/library/extensions Riguardano Audio, Lan e speedstep Finito il lavoro lanciare Kext Utility Bene. Il sistema è ora (quasi totalmente) funzionante e avviabile. La guida e sanza dubbio perfezionabile e come posso prevvederò ad aggiornarla, magari con spiegazioni più dettagliate. Aggiornato 05/05/2010 Il pacchetto è scaricabile qui M51sn DSDT Kext Aggiornamento importante 28/04/2010: Non ho finito ancora la guida perchè ho dovuto modificare ancora il dsdt (parte usb) per permettere lo sleep-deepsleep e cercare un bootloader che funzionasse bene. Ne ho provati diversi ma con tutti ho sempre avuto il problema del mancato spegnimento dopo deepsleep Quello allegato (asere) sembra funzionare egregiamente. Aggiornamento 05/05/2010 A quanto pare mi sono sbagliato. Dopo deppsleep continuo a perdere lo spegnimento del pc, risolvibile solo utilizzando kext utility. Il problema sembra risolto utilizzando il kext OpenHaltRestart, inserito nel pacchetto aggiornato. Piccola nota riguardante Bootloader e UUID: Ogni volta che si cambia UUID alla macchina consiglio di usare kext utility che cancellerà e ricreerà il file per lo sleep. Non facendo questo e provando a mandare il pc in sleep il risultato sarà il mancato riavvio, che personalmente non sono riuscito a risolvere se non installando nuovamente il bootloader. Va ricordato ancora che cambiando UUID al pc diviene inutilizzabile anche il backup fatto con time Machine ...continua Link to comment Share on other sites More sharing options...
Pippocannelunghe Posted July 26, 2010 Share Posted July 26, 2010 Ciao!! Ci sono novità a riguardo? Link to comment Share on other sites More sharing options...
Hunty Posted March 5, 2012 Share Posted March 5, 2012 Ciao Roberto, potresti postare di nuovo il download? multiupload non va più ed ho formattato da poco e volevo un sistema più snello e più veloce ad avviarsi.. Link to comment Share on other sites More sharing options...
Recommended Posts