
******** 28/9/2009 Aggiornamento ********
Finalmente aggiunta la guida per l'editing del DSDT.
Come aggiungere manulmente le varie fix trovate e adattate
per questa scheda madre.
******** 28/8/2009 Aggiornamento ********
Corrette imprecisioni all'interno della guida.
Aggiunto metodo per visualizzare la corretta CPU in system profiler.
******** 26/8/2009 Aggiornamento ********
e corrette alcune imprecisioni all'interno della guida.
************************************
PREMESSA
Ho tradotto la guida originale di MJ che potete trovare qui
alla quale ho aggiunto le esperienze e prove che ho fatto su questa scheda madre, non mi prendo nessun merito per quello che segue, i ringraziamenti vanno all'autore originale di questa guida a tutto il forum di insanelymac.
Con questo procedimento sara' possibile installare la versione Retail di Leopard, sara' anche possibile scegliere se utilizzare una versione patchata del kernel(voodoo) oppure usare il kernel originale(Vanilla).
SPECIFICHE
CPU Intel Socket 1366 Core i7 (920/940/950/965/975)
Chipset Intel X58 / ICH10R (pienamente riconosciuto)
LAN Dual Gigabit LAN controllers 2 x Marvell 88E8056 (funziona aggiungendo il LegacyAppleYukon2.kext oppure editando AppleYukon2.kext)
Audio ADI AD2000B (funziona rimpiazzando AppleHDA.kext)
IEEE 1394 VIA VT6308P (Firewire riconosciuta ma non funziona)
Storage Southbridge 6 xSATA 3 (pienamente riconosciuto)
Marvell 88SE6320 2 x SAS (RAID 0 and 1) (non l'ho testato)
Marvell 88SE6111 1 xUltraDMA 133/100/66 for up to 2 PATA devices (non l'ho testato)
1 xExternal SATA 3.0 Gb/s port (SATA On-the-Go) (non l'ho testato)
USB 14 Porte USB 2.0 (pienamente riconosciuto)
Expansion Slots
3 x PCIe 2.0 x16 (at x16/x16/x1 or x16/x8/x8 mode)
1 x PCIe x4
2 x PCI
INDICE
A. [Iniziamo]
B. [Settaggi del BIOS]
C. [Avviare il DVD di Leopard]
D. [Avviare il sistema]
E. [patchare il DSDT]
F. [Bootloader] Chameleon 2 RC3 +PCEFI 10.3
G. [aggiornamento a 10.5.6 --> 10.5.7 --> 10.5.8]
H. [installare la scheda grafica]
I. [settare la LAN e l'Audio]
J. [riavvio!]
K. [sbarazzarsi del Darwin prompt boot]
L. [INSTALLAZIONE LEOPARD FINITA]
M. [TUNING & MOD]
N. [DSDT FIX]
O. [Installare Snow Leopard]
A. [Iniziamo]
1. Acquistate una copia originale di OS X Leopard, oppure cercate una copia nei soliti posti (necessariamente Double Layer (DL) da 6,66 GB chiamata osx-leopard105.dmg, perche' le versioni presenti in rete Single Layer non funzionano o sono le beta). Ma acquistate una licenza da Apple!!
1a. Oppurre scaricate iDeneb v1.3 10.5.5 e installatelo, e' veloce e funziona. Ma non otterrete gli aggiornamenti dalla Apple!
SUGGERIMENTO 1: Vi suggerisco di scollegare tutti i vostri HDD dal tuo computer, ad eccezione di quello in cui andrete ad installare Leo, questo facilitera' le cose durante l'installazione.
Ad installazione effettuata potrete ricollegare i vostri HD, rispettando SATA1 come HD di leopard e SATA2 come lettore ottico, ma e' una scelta facoltativa (con un boot-loader risolverete tutto).
SUGGERIMENTO 2: Vi consiglio di scaricare l'aggiornamento combo 10.5.8 (per averlo pronto senza doversi collegare alla rete).
Potete tranquillamente salvarlo su di una chiavetta USB e succesivamente copiarlo in Leopard.
IMPORTANTE:
Configurare fisicamente
SATA Port1 il vostro Disco Rigido
SATA Port2 il vostro lettore cd / DVD / Blu Ray
(Il resto per il momento scollegatelo facilitera' l'installazione).
B. [Settaggi del BIOS]
1. Aggiorna il tuo BIOS. ASUS (P6T Deluxe 1701 BIOS <-- questo e' il BIOS piu' recente per la V.1xx )
Ci sono mille modi per farlo, scegli quello che preferisci.
2. Modifica le impostazioni del BIOS come segue:
CODE
- Main
- Storage Configuration
+ Configure SATA as [AHCI]
- Advanced
- CPU coonfiguration
+ Intel HT Technology [Disabled]
+ Active Processor Cores [1]
+ A20M [Disabled]
+ tutto il resto [Enabled]
- Onboard Devices Configuration
+ High Definition Audio [Enabled]
+ Front Panel Audio [HD Audio]
+ Marvell Storage Controller [Enabled]
+ Marvell Storage Boot ROM [Enabled]
+ Marvell LAN1 [Enabled]
+ Marvell LAN2 [Enabled]
+ LAN Boot ROM [Enabled]
+ Onboard 1394 Controller [Enabled]
- USB Configuration
+ USB Function [Enabled]
+ USB 2.0 Controller [Enabled]
+ USB Controller Mode [HiSpeed]
+ BIOS EHCI Hand-OFF [Enabled]
+ Legacy USB Support [AUTO]
- Power
+ Suspend Mode [Auto]
+ Repost Video on S3 Resume [Yes]
+ ACPI 2.0 Support [Enabled]
+ ACPI APIC Support [Enabled]
- APM Configuration
+ Restore on AC Power Loss [Last State]
- Boot
- Boot Device Priority
+ 1st Boot Device [ATAPI CD-ROM]
+ 2nd Boot Device [Hard Drive]
+ 3rd Boot Device [Disabled]
- Storage Configuration
+ Configure SATA as [AHCI]
- Advanced
- CPU coonfiguration
+ Intel HT Technology [Disabled]
+ Active Processor Cores [1]
+ A20M [Disabled]
+ tutto il resto [Enabled]
- Onboard Devices Configuration
+ High Definition Audio [Enabled]
+ Front Panel Audio [HD Audio]
+ Marvell Storage Controller [Enabled]
+ Marvell Storage Boot ROM [Enabled]
+ Marvell LAN1 [Enabled]
+ Marvell LAN2 [Enabled]
+ LAN Boot ROM [Enabled]
+ Onboard 1394 Controller [Enabled]
- USB Configuration
+ USB Function [Enabled]
+ USB 2.0 Controller [Enabled]
+ USB Controller Mode [HiSpeed]
+ BIOS EHCI Hand-OFF [Enabled]
+ Legacy USB Support [AUTO]
- Power
+ Suspend Mode [Auto]
+ Repost Video on S3 Resume [Yes]
+ ACPI 2.0 Support [Enabled]
+ ACPI APIC Support [Enabled]
- APM Configuration
+ Restore on AC Power Loss [Last State]
- Boot
- Boot Device Priority
+ 1st Boot Device [ATAPI CD-ROM]
+ 2nd Boot Device [Hard Drive]
+ 3rd Boot Device [Disabled]
C. [Avviare il DVD di Leopard]
1. Masterizzare il file. Iso che si trova in allegato in fondo alla guida su un CD (anche un cd riscrivibile va bene).e avviare il PC con quello. NOTA: Il file. Iso non ha il supporto grafico.
2. Se vi viene chiesto di premere [F8] (questo non succede a tutti). Quando appare il prompt di Darwin, premere [ESC], estrarre il CD e mettere Mac OS X Leopard Retail DVD, attendere circa 10 secondi (fino alla luce verde smette di lampeggiare), premere [ENTER] e poi [F8]
3. Scrivere:
i7 920 --> rd(0,1)/mach_kernel.voodoo busratio=20 -v -f rd=disk1s3
i7 940 --> rd(0,1)/mach_kernel.voodoo busratio=22 -v -f rd=disk1s3
i7 950 --> rd(0,1)/mach_kernel.voodoo busratio=23 -v -f rd=disk1s3
i7 965 --> rd(0,1)/mach_kernel.voodoo busratio=24 -v -f rd=disk1s3
i7 975 --> rd(0,1)/mach_kernel.voodoo busratio=25 -v -f rd=disk1s3
e premere [ENTER]. L'installazione dovrebbe caricarsi ora.
4. Installiamo Leopard!
NOTA: E' probabile che esca un errore che dica qualcosa di simile:
Attempting to Determine CPU multiplier
Determined CPU: FSB multiplier to be 0
Says 0 but makes no sense... the kernel as shipped by apple will not support this and will cause the machine to reboot immediatly... Press y to continue or crt, alt, del to reboot.
Press y and keep going.
Premete y. non vi preoccupate.
NOTA 2: Durante l'avvio dell'installazione a volte il sistema sembra bloccarsi... lasciatelo continuare, si riprendera' in pochi minuti (7-10 minuti in genere).
D. [Avviare il sistema]
1. Quando il sistema viene riavviato al termine del processo di installazione, inserire il CD anche in questo caso, se viene chiesto premere [F8]. Al prompt di Darwin premere [ESC], scrivere 80 e premere [ENTER]. Quindi digitare:
i7 920 --> rd(0,1)/mach_kernel.voodoo busratio=20 -v -f rd=disk0s2
i7 940 --> rd(0,1)/mach_kernel.voodoo busratio=22 -v -f rd=disk0s2
i7 950 --> rd(0,1)/mach_kernel.voodoo busratio=23 -v -f rd=disk0s2
i7 965 --> rd(0,1)/mach_kernel.voodoo busratio=24 -v -f rd=disk0s2
i7 975 --> rd(0,1)/mach_kernel.voodoo busratio=25 -v -f rd=disk0s2
2. Seguire il processo di configurazione e avviare Leopard appena installato.
NOTA 1: Il vostro sistema probabilmente sembrera' arenarsi ad un certo punto durante l'avvio, lascialo li', si puo' prendere dai 7 ai 10 minuti per andare oltre quel punto, ma alla fine si avvia.
NOTA 2: Si potrebbero incontrare durante l'avvio dei kernel panic. Se si tratta di qualcosa di grafica, aggiungere il flag -x alla linea di comando vista prima (avvio in modalita' provvisoria).
NOTA 3: Se si blocca in " Do you already own a Mac ? " dovete aggiungere -s al prompt quindi:
i7 920 --> rd(0,1)/mach_kernel.voodoo busratio=20 -v -f -s rd=disk0s2
i7 940 --> rd(0,1)/mach_kernel.voodoo busratio=22 -v -f -s rd=disk0s2
i7 950 --> rd(0,1)/mach_kernel.voodoo busratio=23 -v -f -s rd=disk0s2
i7 965 --> rd(0,1)/mach_kernel.voodoo busratio=24 -v -f -s rd=disk0s2
i7 975 --> rd(0,1)/mach_kernel.voodoo busratio=25 -v -f -s rd=disk0s2
inserendo la giusta dicitura che corrispondente al vostro processore al successivo prompt scrivete:
CODE
/sbin/mount -uw /
CODE
passwd root
digitare una password che userete per l'account root
CODE
touch /var/db/.AppleSetupDone
CODE
reboot
in questo modo riavviamo il sistema
Dopo il riavvio entrare con l'account di root e da li configurate/create un account utente.
Cercate di non utilizzare l'account di root se non strettamente necessario!
E. [patchare il DSDT]
---------------------------------------------------------------------------------------------------------------------------------------------------------
SE VOLETE UNA MAGGIORE OTTIMIZZAZIONE VI INVITO A LEGGERE DIRETTAMENTE IL PUNTO N. [DSDT FIX]
---------------------------------------------------------------------------------------------------------------------------------------------------------
Questo vi permettera' di avere 4 processori (4 core) + l'HyperTrading, evita che si ferma a quelle fastidiose pause bootup, e vi dara' una DSDT pronto per l'aggiornamento. Che bello!
NOTA: E' presente sul forum internazionale (link) un pacher per DSDT/BIOS da usare in ambiente windows NON FUNZIONA. Il BIOS AMI della nostra scheda madre sembra che non riesce a digerirlo. sad.gif
1. Scaricare l'ottimo DSDT Patcher di fassl, e scompattatelo sul desktop e fate doppio clic sul file DSDT Patcher. (La cartella decompressa sul desktop si chiamera' DSDT_Patcher1 , assicuratevi che il nome corrisponda con la medesima dicitura usata nel terminale).
Quando richiesto, digitare 0 (zero) per emulare OS Darwin.
2. Apri il terminale e digitare:
CODE
cd Desktop/DSDT_Patcher1
CODE
nano Debug/dsdt.dsl
aprire e modificare il dsdt eliminando le linee che iniziano con Alias
CODE
Scope (_PR)
{
Processor (P001, 0x01, 0x00000810, 0x06) {}
Alias (P001, CPU1)
Processor (P002, 0x02, 0x00000000, 0x00) {}
Alias (P002, CPU2)
Processor (P003, 0x03, 0x00000000, 0x00) {}
Alias (P003, CPU3)
Processor (P004, 0x04, 0x00000000, 0x00) {}
Alias (P004, CPU4)
Processor (P005, 0x05, 0x00000000, 0x00) {}
Alias (P005, CPU5)
Processor (P006, 0x06, 0x00000000, 0x00) {}
Alias (P006, CPU6)
Processor (P007, 0x07, 0x00000000, 0x00) {}
Alias (P007, CPU7)
Processor (P008, 0x08, 0x00000000, 0x00) {}
Alias (P008, CPU8)
Processor (P009, 0x09, 0x00000000, 0x00) {}
Alias (P009, CPU9)
Processor (P010, 0x0A, 0x00000000, 0x00) {}
Processor (P011, 0x0B, 0x00000000, 0x00) {}
Processor (P012, 0x0C, 0x00000000, 0x00) {}
Processor (P013, 0x0D, 0x00000000, 0x00) {}
Processor (P014, 0x0E, 0x00000000, 0x00) {}
Processor (P015, 0x0F, 0x00000000, 0x00) {}
Processor (P016, 0x10, 0x00000000, 0x00) {}
}
{
Processor (P001, 0x01, 0x00000810, 0x06) {}
Alias (P001, CPU1)
Processor (P002, 0x02, 0x00000000, 0x00) {}
Alias (P002, CPU2)
Processor (P003, 0x03, 0x00000000, 0x00) {}
Alias (P003, CPU3)
Processor (P004, 0x04, 0x00000000, 0x00) {}
Alias (P004, CPU4)
Processor (P005, 0x05, 0x00000000, 0x00) {}
Alias (P005, CPU5)
Processor (P006, 0x06, 0x00000000, 0x00) {}
Alias (P006, CPU6)
Processor (P007, 0x07, 0x00000000, 0x00) {}
Alias (P007, CPU7)
Processor (P008, 0x08, 0x00000000, 0x00) {}
Alias (P008, CPU8)
Processor (P009, 0x09, 0x00000000, 0x00) {}
Alias (P009, CPU9)
Processor (P010, 0x0A, 0x00000000, 0x00) {}
Processor (P011, 0x0B, 0x00000000, 0x00) {}
Processor (P012, 0x0C, 0x00000000, 0x00) {}
Processor (P013, 0x0D, 0x00000000, 0x00) {}
Processor (P014, 0x0E, 0x00000000, 0x00) {}
Processor (P015, 0x0F, 0x00000000, 0x00) {}
Processor (P016, 0x10, 0x00000000, 0x00) {}
}
con questo:
CODE
Scope (_PR)
{
Processor (P001, 0x01, 0x00000810, 0x06) {}
Processor (P002, 0x02, 0x00000000, 0x00) {}
Processor (P003, 0x03, 0x00000000, 0x00) {}
Processor (P004, 0x04, 0x00000000, 0x00) {}
Processor (P005, 0x05, 0x00000000, 0x00) {}
Processor (P006, 0x06, 0x00000000, 0x00) {}
Processor (P007, 0x07, 0x00000000, 0x00) {}
Processor (P008, 0x08, 0x00000000, 0x00) {}
Processor (P009, 0x09, 0x00000000, 0x00) {}
Processor (P010, 0x0A, 0x00000000, 0x00) {}
Processor (P011, 0x0B, 0x00000000, 0x00) {}
Processor (P012, 0x0C, 0x00000000, 0x00) {}
Processor (P013, 0x0D, 0x00000000, 0x00) {}
Processor (P014, 0x0E, 0x00000000, 0x00) {}
Processor (P015, 0x0F, 0x00000000, 0x00) {}
Processor (P016, 0x10, 0x00000000, 0x00) {}
}
{
Processor (P001, 0x01, 0x00000810, 0x06) {}
Processor (P002, 0x02, 0x00000000, 0x00) {}
Processor (P003, 0x03, 0x00000000, 0x00) {}
Processor (P004, 0x04, 0x00000000, 0x00) {}
Processor (P005, 0x05, 0x00000000, 0x00) {}
Processor (P006, 0x06, 0x00000000, 0x00) {}
Processor (P007, 0x07, 0x00000000, 0x00) {}
Processor (P008, 0x08, 0x00000000, 0x00) {}
Processor (P009, 0x09, 0x00000000, 0x00) {}
Processor (P010, 0x0A, 0x00000000, 0x00) {}
Processor (P011, 0x0B, 0x00000000, 0x00) {}
Processor (P012, 0x0C, 0x00000000, 0x00) {}
Processor (P013, 0x0D, 0x00000000, 0x00) {}
Processor (P014, 0x0E, 0x00000000, 0x00) {}
Processor (P015, 0x0F, 0x00000000, 0x00) {}
Processor (P016, 0x10, 0x00000000, 0x00) {}
}
Premere Ctrl + O ( lettera "O") e [ENTER] per salvare il file, quindi premere Ctrl + X per chiudere nano.
Dobbiamo nuovamente patchare quindi da terminale
CODE
./DSDT\ Patcher Debug/dsdt.dsl
(si otterranno circa 3 errori di file non esistenti o gia' esistenti, questo va bene, non preoccupatevi).
sempre da terminale copiamo (e rinominiamo in maiuscolo) il file nella directory principale.
CODE
cp dsdt.aml /DSDT.aml
SUGGERIMENTO: E' possibile aggiungere altre "features" non ancora presenti nel DSDT Pacher...
al momento bisognera' aggiungerle manualmente.
F. [Bootloader Chameleon 2 RC3 + PCEFI 10.5
G. [aggiornamento a 10.5.8]
1. Scaricare la combo update 10.5.8 e installarla.(Essa contiene tutti gli aggiornamenti, e' cumulativa).
H. [installare la scheda grafica]
Dal momento che ognuno ha una scheda grafica diversa, non vi è alcun modo unico per farla funzionare. Cerca il tuo dispositivo e segui le istruzioni. Se possibile, utilizza una Sringa EFI.
I. [settare la LAN e l'Audio]
Per la LAN:
Scaricare e aggiungere il LegacyAppleYukon2.kext nella cartella /Volume/EFI/Extensions se usate il metodo munky,
oppure /Volume/EFI/Extra/Extension o /Extra/Extension se usate il Chameleon.
Per l'audio:
Backup e eliminare l'attuale AppleHDA.kext nel sistema cartella Extensions, quindi installare l'allegato AppleHDA.kext. Questo vi dara' pannello posteriore Line Out, SPDIF Out, il pannello frontale e uscita cuffie-microfono pannello anteriore-In.
Si potrebbe avere un kernel panic quando si spegnere il computer se avete precedentemente usato lo STOP. Un po 'noioso, ma non rappresenta un grosso problema a tutti.
NOTA : Dovrete ripetere questa procedura quando effettuate un aggiornamento combo.
J. [riavvio!]
Riavviare (senza disco di boot-132 questa volta)
nel BIOS attivare l'HT e i processori.
CODE
- Advanced
- CPU coonfiguration
+ Intel HT Technology [Enabled]
+ Active Processor Cores [All]
+ A20M [Enabled]
- CPU coonfiguration
+ Intel HT Technology [Enabled]
+ Active Processor Cores [All]
+ A20M [Enabled]
Al prompt di darwin scrivere -v -f e premere invio. Se fate un avvio in un sistema completo e funzionante, e' il momento per il passo finale:
K. [sbarazzarsi del Darwin prompt boot]
Montare la partizione EFI e editare il file com.apple.Boot.plist con un qualsiasi editor di testo. Impostare questo:
CODE
<key>Quiet Boot</key>
<string>No</string>
<string>No</string>
con questo:
CODE
<key>Quiet Boot</key>
<string>Yes</string>
<string>Yes</string>
L. [INSTALLAZIONE FINITA]
Ora e' possibile riavviare e utilizzare l'Apple Update per eventuali aggiornamenti!
M. [TUNING & MOD]
1. E' possibile visualizzare le corrette informazioni sulla nostra CPU editando
CODE
/System/Library/CoreServices/loginwindow.app/Contents/Resources/Italian.lproj/AboutThisMac.strings
allinterno del file cerchiamo questa stringa
CODE
"ABOUT_BOX_SINGLE_PROCESSOR_FIELD_FORMAT" = "%@".
a questo punto apriamo il terminale e scriviamo
CODE
sysctl -n machdep.cpu.brand_string
la "risposta" che ci verra data rappresenta la stringa che andremo a sostituire nel file precedentemente aperto.
nel mio caso i7 940 avro'
CODE
Intel(R) Core(TM) i7 CPU 940 @ 2.93GHz
quindi copiamo e incolliamo eliminando successimavente gli spazi tra CPU e 940 (nel mio caso).
CODE
"ABOUT_BOX_SINGLE_PROCESSOR_FIELD_FORMAT" = "Intel(R) Core(TM) i7 CPU 940 @ 2.93GHz".
Salviamo e facciamo il LOG out la procedura va ripetuta se avete piu' account multilingua
esempio per l'inglese dovrete aprire
CODE
/System/Library/CoreServices/loginwindow.app/Contents/Resources/English.lproj/AboutThisMac.strings
CURIOSITA' : Se cliccate in About This Mac sulla scritta in grigio della versione visualizzerete la versione della "build" e se cliccate un'altra volta visualizzerete il "Serial Number" di Leo
CURIOSITA' :
CODE
ioreg -l | grep -15 AppleACPIPCI | grep UID
Questo vi servira' se la vostra idea e' quella di voler usare l'enable grafico del Chameleon PC-EFI 10.3 e scegliere quale bootloader installare.Nel mio caso ho installato una versione patchata del PC-EFI il quale prima cercava di avviare la mia scheda crafica dal PCI1 mentre con questa versione mi riconosce che si trova sul PCI0.
Allegati:
N. [DSDT FIX]
Rieccomi.
Come promesso ho iniziato a stilare una guida per la P6T Deluxe ed e' espressamente indirizzata all'edit e ottimizzazione del nostro DSDT.
Do per scontato che abbiate familiarita' con iasl e tools vari BIOS ecc.
Non garantisco la funzionalita' , e non mi assumo la responsabilita' se qualcosa non funziona a dovere...
Strumenti necessari:
- Windows (XP/Vista/Seven)
- Leopard 10.5.x (Se avete una virtual machine vi agevola molto il trasferimento)
- DSDT Patcher (il patcher di Fassl) Versione 1.0.1e
- iasl per Windows (iasl-win-20090903.zip)
- iasl per OSX (iasl_osx_20090903.zip) FACOLTATIVO
- Lavalys EVEREST Corporate Edition (Vi serve per Dumpare le tabelle ACPI Windows)
- MMTOOL (Estrarre/Inserire la tabella DSDT nel BIOS Windows)
- DSDTSE (Raccolta di FIX da aggiungere/modificare sul nostro DSDT.dsl per OSX)
Incomincicamo:
Estraiamo il DSDT lo decompiliamo con iasl -d acpi_apic.bin (io l'ho estratto con Everest in Windows)
Otterremo un file con estensione .dsl
Ora passiamo il file ottenuto al pacher, avremo questo risultato
CODE
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20090903 [Sep 3 2009]
Copyright (C) 2000 - 2009 Intel Corporation
Supports ACPI Specification Revision 4.0
./dsdt_fixed.txt 11939: Method (VGET, 1, NotSerialized)
Warning 1087 - ^ Not all control paths return a value (VGET)
./dsdt_fixed.txt 11984: Method (TGET, 1, NotSerialized)
Warning 1087 - ^ Not all control paths return a value (TGET)
./dsdt_fixed.txt 12046: Method (FGET, 1, NotSerialized)
Warning 1087 - ^ Not all control paths return a value (FGET)
./dsdt_fixed.txt 12082: Store (VGET (Local0), Local1)
Warning 1092 - ^ Called method may not always return a value
./dsdt_fixed.txt 12124: Store (TGET (Local0), Local1)
Warning 1092 - ^ Called method may not always return a value
./dsdt_fixed.txt 12157: Store (FGET (Local0), Local1)
Warning 1092 - ^ Called method may not always return a value
ASL Input: ./dsdt_fixed.txt - 12894 lines, 424300 bytes, 5699 keywords
AML Output: ./DSDT.aml - 46506 bytes, 1142 named objects, 4557 executable opcodes
Compilation complete. 0 Errors, 6 Warnings, 0 Remarks, 73 Optimizations
ASL Optimizing Compiler version 20090903 [Sep 3 2009]
Copyright (C) 2000 - 2009 Intel Corporation
Supports ACPI Specification Revision 4.0
./dsdt_fixed.txt 11939: Method (VGET, 1, NotSerialized)
Warning 1087 - ^ Not all control paths return a value (VGET)
./dsdt_fixed.txt 11984: Method (TGET, 1, NotSerialized)
Warning 1087 - ^ Not all control paths return a value (TGET)
./dsdt_fixed.txt 12046: Method (FGET, 1, NotSerialized)
Warning 1087 - ^ Not all control paths return a value (FGET)
./dsdt_fixed.txt 12082: Store (VGET (Local0), Local1)
Warning 1092 - ^ Called method may not always return a value
./dsdt_fixed.txt 12124: Store (TGET (Local0), Local1)
Warning 1092 - ^ Called method may not always return a value
./dsdt_fixed.txt 12157: Store (FGET (Local0), Local1)
Warning 1092 - ^ Called method may not always return a value
ASL Input: ./dsdt_fixed.txt - 12894 lines, 424300 bytes, 5699 keywords
AML Output: ./DSDT.aml - 46506 bytes, 1142 named objects, 4557 executable opcodes
Compilation complete. 0 Errors, 6 Warnings, 0 Remarks, 73 Optimizations
Uhummm 6 avvisi... facciamo i perfezionisti e andiamo a googgolare e troviamo come correggere questi
warnings
Fatta la dovuta ricerca ho scoperto che devo aggiungere
CODE
Return (Zero)
Apriamo il nostro file con un editor di testo e con la funzione di ricerca ci spostiamo nelle varie zone del file
Cerchiamo all'interno del file la parola VGET
PRIMA
CODE
...
Method (VGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWV0 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWV3 ())
}
If (LEqual (Arg0, 0x02))
{
Return (^^SIOR.HWV4 ())
}
If (LEqual (Arg0, 0x03))
{
Return (^^SIOR.HWV1 ())
}
}
...
Method (VGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWV0 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWV3 ())
}
If (LEqual (Arg0, 0x02))
{
Return (^^SIOR.HWV4 ())
}
If (LEqual (Arg0, 0x03))
{
Return (^^SIOR.HWV1 ())
}
}
...
DOPO
CODE
...
Method (VGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWV0 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWV3 ())
}
If (LEqual (Arg0, 0x02))
{
Return (^^SIOR.HWV4 ())
}
If (LEqual (Arg0, 0x03))
{
Return (^^SIOR.HWV1 ())
}
Return (Zero)
}
...
Method (VGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWV0 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWV3 ())
}
If (LEqual (Arg0, 0x02))
{
Return (^^SIOR.HWV4 ())
}
If (LEqual (Arg0, 0x03))
{
Return (^^SIOR.HWV1 ())
}
Return (Zero)
}
...
Cerchiamo la parola TGET
PRIMA
CODE
...
Method (TGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWT1 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWT0 ())
}
}
...
Method (TGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWT1 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWT0 ())
}
}
...
DOPO
CODE
...
Method (TGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWT1 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWT0 ())
}
Return (Zero)
}
...
Method (TGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWT1 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWT0 ())
}
Return (Zero)
}
...
Cerchiamo la parola FGET
PRIMA
CODE
...
Method (FGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWF1 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWF0 ())
}
If (LEqual (Arg0, 0x02))
{
Return (^^SIOR.HWF3 ())
}
If (LEqual (Arg0, 0x03))
{
Return (^^SIOR.HWF4 ())
}
If (LEqual (Arg0, 0x04))
{
Return (^^SIOR.HWF2 ())
}
}
...
Method (FGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWF1 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWF0 ())
}
If (LEqual (Arg0, 0x02))
{
Return (^^SIOR.HWF3 ())
}
If (LEqual (Arg0, 0x03))
{
Return (^^SIOR.HWF4 ())
}
If (LEqual (Arg0, 0x04))
{
Return (^^SIOR.HWF2 ())
}
}
...
DOPO
CODE
...
Method (FGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWF1 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWF0 ())
}
If (LEqual (Arg0, 0x02))
{
Return (^^SIOR.HWF3 ())
}
If (LEqual (Arg0, 0x03))
{
Return (^^SIOR.HWF4 ())
}
If (LEqual (Arg0, 0x04))
{
Return (^^SIOR.HWF2 ())
}
Return (Zero)
}
...
Method (FGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWF1 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWF0 ())
}
If (LEqual (Arg0, 0x02))
{
Return (^^SIOR.HWF3 ())
}
If (LEqual (Arg0, 0x03))
{
Return (^^SIOR.HWF4 ())
}
If (LEqual (Arg0, 0x04))
{
Return (^^SIOR.HWF2 ())
}
Return (Zero)
}
...
Aggiungiamo un'altra fix
La FIX riguarda l'eliminazione delle linee ALIAS nella parte riguardante i processori.
(ho anche rinominato la parte dell'intestazione... acpi_dsdt.aml in DSDT.aml)
PRIMA
CODE
...
DefinitionBlock ("acpi_dsdt.aml", "DSDT", 1, "A1087", "A1087001", 0x00000001)
{
Scope (_PR)
{
Processor (P001, 0x01, 0x00000810, 0x06) {}
Alias (P001, CPU1)
Processor (P002, 0x02, 0x00000000, 0x00) {}
Alias (P002, CPU2)
Processor (P003, 0x03, 0x00000000, 0x00) {}
Alias (P003, CPU3)
Processor (P004, 0x04, 0x00000000, 0x00) {}
Alias (P004, CPU4)
Processor (P005, 0x05, 0x00000000, 0x00) {}
Alias (P005, CPU5)
Processor (P006, 0x06, 0x00000000, 0x00) {}
Alias (P006, CPU6)
Processor (P007, 0x07, 0x00000000, 0x00) {}
Alias (P007, CPU7)
Processor (P008, 0x08, 0x00000000, 0x00) {}
Alias (P008, CPU8)
Processor (P009, 0x09, 0x00000000, 0x00) {}
Alias (P009, CPU9)
Processor (P010, 0x0A, 0x00000000, 0x00) {}
Processor (P011, 0x0B, 0x00000000, 0x00) {}
Processor (P012, 0x0C, 0x00000000, 0x00) {}
Processor (P013, 0x0D, 0x00000000, 0x00) {}
Processor (P014, 0x0E, 0x00000000, 0x00) {}
Processor (P015, 0x0F, 0x00000000, 0x00) {}
Processor (P016, 0x10, 0x00000000, 0x00) {}
}
...
DefinitionBlock ("acpi_dsdt.aml", "DSDT", 1, "A1087", "A1087001", 0x00000001)
{
Scope (_PR)
{
Processor (P001, 0x01, 0x00000810, 0x06) {}
Alias (P001, CPU1)
Processor (P002, 0x02, 0x00000000, 0x00) {}
Alias (P002, CPU2)
Processor (P003, 0x03, 0x00000000, 0x00) {}
Alias (P003, CPU3)
Processor (P004, 0x04, 0x00000000, 0x00) {}
Alias (P004, CPU4)
Processor (P005, 0x05, 0x00000000, 0x00) {}
Alias (P005, CPU5)
Processor (P006, 0x06, 0x00000000, 0x00) {}
Alias (P006, CPU6)
Processor (P007, 0x07, 0x00000000, 0x00) {}
Alias (P007, CPU7)
Processor (P008, 0x08, 0x00000000, 0x00) {}
Alias (P008, CPU8)
Processor (P009, 0x09, 0x00000000, 0x00) {}
Alias (P009, CPU9)
Processor (P010, 0x0A, 0x00000000, 0x00) {}
Processor (P011, 0x0B, 0x00000000, 0x00) {}
Processor (P012, 0x0C, 0x00000000, 0x00) {}
Processor (P013, 0x0D, 0x00000000, 0x00) {}
Processor (P014, 0x0E, 0x00000000, 0x00) {}
Processor (P015, 0x0F, 0x00000000, 0x00) {}
Processor (P016, 0x10, 0x00000000, 0x00) {}
}
...
DOPO
CODE
...
DefinitionBlock ("DSDT.aml", "DSDT", 1, "A1087", "A1087001", 0x00000001)
{
Scope (_PR)
{
Processor (P001, 0x01, 0x00000810, 0x06) {}
Processor (P002, 0x02, 0x00000000, 0x00) {}
Processor (P003, 0x03, 0x00000000, 0x00) {}
Processor (P004, 0x04, 0x00000000, 0x00) {}
Processor (P005, 0x05, 0x00000000, 0x00) {}
Processor (P006, 0x06, 0x00000000, 0x00) {}
Processor (P007, 0x07, 0x00000000, 0x00) {}
Processor (P008, 0x08, 0x00000000, 0x00) {}
Processor (P009, 0x09, 0x00000000, 0x00) {}
Processor (P010, 0x0A, 0x00000000, 0x00) {}
Processor (P011, 0x0B, 0x00000000, 0x00) {}
Processor (P012, 0x0C, 0x00000000, 0x00) {}
Processor (P013, 0x0D, 0x00000000, 0x00) {}
Processor (P014, 0x0E, 0x00000000, 0x00) {}
Processor (P015, 0x0F, 0x00000000, 0x00) {}
Processor (P016, 0x10, 0x00000000, 0x00) {}
}
...
DefinitionBlock ("DSDT.aml", "DSDT", 1, "A1087", "A1087001", 0x00000001)
{
Scope (_PR)
{
Processor (P001, 0x01, 0x00000810, 0x06) {}
Processor (P002, 0x02, 0x00000000, 0x00) {}
Processor (P003, 0x03, 0x00000000, 0x00) {}
Processor (P004, 0x04, 0x00000000, 0x00) {}
Processor (P005, 0x05, 0x00000000, 0x00) {}
Processor (P006, 0x06, 0x00000000, 0x00) {}
Processor (P007, 0x07, 0x00000000, 0x00) {}
Processor (P008, 0x08, 0x00000000, 0x00) {}
Processor (P009, 0x09, 0x00000000, 0x00) {}
Processor (P010, 0x0A, 0x00000000, 0x00) {}
Processor (P011, 0x0B, 0x00000000, 0x00) {}
Processor (P012, 0x0C, 0x00000000, 0x00) {}
Processor (P013, 0x0D, 0x00000000, 0x00) {}
Processor (P014, 0x0E, 0x00000000, 0x00) {}
Processor (P015, 0x0F, 0x00000000, 0x00) {}
Processor (P016, 0x10, 0x00000000, 0x00) {}
}
...
Bene ora ritorniamo al terminale e ripetiamo la compilazione
CODE
./DSDT\ Patcher Debug/DSDT.dsl
CODE
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20090903 [Sep 3 2009]
Copyright (C) 2000 - 2009 Intel Corporation
Supports ACPI Specification Revision 4.0
ASL Input: ./dsdt_fixed.txt - 12897 lines, 424376 bytes, 5702 keywords
AML Output: ./DSDT.aml - 46512 bytes, 1142 named objects, 4560 executable opcodes
Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 73 Optimizations
ASL Optimizing Compiler version 20090903 [Sep 3 2009]
Copyright (C) 2000 - 2009 Intel Corporation
Supports ACPI Specification Revision 4.0
ASL Input: ./dsdt_fixed.txt - 12897 lines, 424376 bytes, 5702 keywords
AML Output: ./DSDT.aml - 46512 bytes, 1142 named objects, 4560 executable opcodes
Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 73 Optimizations
Perfetto era il risultato che volevamo...:-)
Ora prendiamo il file dsdt_fixed.txt che si trova dentro la cartella Debug della cartella DSDT_Patcher
Ovvero il file DSDT_Patcher/Debug/dsdt_fixed.txt (sara' questo il file che contiene le ultime fix applicate).
Da questo punto avrete (se compilato) un DSDT.aml funzionante e senza warnings o errori.
FACOLTATIVO E MOLTO RISCHIOSO
Io ho personalmente inserito il file appena creato direttamente nel BIOS della mia scheda madre con lo strumento MMTOOL in Windows
ho scelto di inserirlo con queste poche fix, perche' aggiungendo troppi cambiamenti rischiamo che Windows si rifiuti avviarsi con
un messaggio che ci invita a contattare il produttore della nostra scheda e aggiornare il BIOS blablabla... non conforme agli standar ACPI 4.blablabla...
Quindi se scegliete questa possibilita' tenete in conto di non esagerare con l'aggiunta di FIX direttamente nel DSDT del BIOS.
Direte... Che vantaggi ho a inserire questo file direttamente nel BIOS?
Il vantaggio che avete sara' ad esempio quello di avviare Leopard o Snow direttamente con i 4 cuori e l'Hyper attivi,
E se vogliamo fare i fighi sappiamo che abbiamo una tabella DSDT all'interno della nostra macchina ripulita e senza errori.
MA RIBADISCO E' UNA OPERAZIONE DELICATA E NON E' OBBLIGATORIA
Ma andiamo avanti e aggiungiamo a manina altri FIX, io per comodita' (Anche dovuto ai TOOLS che uso) mi sono spostato in ambiente WINDOWS ma nessuno vi vieta di continuare su Leo.
Vi do un consiglio... quando aggiungete una FIX salvate le modifiche fatte (Anche una copia del file .dsl funzionante), eprovate a fare la compliazione per vedere se sono presenti errori.
DTGP Questa non e' una fix ma una parte di codice che useremo per injectare altro codice all'interno del nostro DSDT
Io l'ho inserito immediatamente dopo la prima parentesi graffa di apertura dopo l'intestazione
PRIMA
CODE
...
DefinitionBlock ("DSDT.aml", "DSDT", 1, "A1087", "A1087001", 0x00000001)
{
Scope (_PR)
{
Processor (P001, 0x01, 0x00000810, 0x06) {}
...
DefinitionBlock ("DSDT.aml", "DSDT", 1, "A1087", "A1087001", 0x00000001)
{
Scope (_PR)
{
Processor (P001, 0x01, 0x00000810, 0x06) {}
...
DOPO
CODE
...
DefinitionBlock ("DSDT.aml", "DSDT", 1, "APPLE", "MacPro", 0x00010001)
{
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, 0x00000810, 0x06) {}
...
DefinitionBlock ("DSDT.aml", "DSDT", 1, "APPLE", "MacPro", 0x00010001)
{
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, 0x00000810, 0x06) {}
...
Piccola verifica
CODE
Microsoft Windows [Versione 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.
C:\Documents and Settings\Administrator\Desktop\iasl>iasl.exe dsdt.dsl
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20090903 [Sep 3 2009]
Copyright (C) 2000 - 2009 Intel Corporation
Supports ACPI Specification Revision 4.0
ASL Input: dsdt.dsl - 12931 lines, 412332 bytes, 5716 keywords
AML Output: DSDT.aml - 46576 bytes, 1143 named objects, 4573 executable opcodes
Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 73 Optimizations
C:\Documents and Settings\Administrator\Desktop\iasl>
(C) Copyright 1985-2003 Microsoft Corp.
C:\Documents and Settings\Administrator\Desktop\iasl>iasl.exe dsdt.dsl
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20090903 [Sep 3 2009]
Copyright (C) 2000 - 2009 Intel Corporation
Supports ACPI Specification Revision 4.0
ASL Input: dsdt.dsl - 12931 lines, 412332 bytes, 5716 keywords
AML Output: DSDT.aml - 46576 bytes, 1143 named objects, 4573 executable opcodes
Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 73 Optimizations
C:\Documents and Settings\Administrator\Desktop\iasl>
Ok tutto bene.
Continuiamo.
HDEF FIX(Ci servira' per l'audio)
Questa fix l'ho inserita giusto prima del Device (HPET)
PRIMA
CODE
...
Divide (Local0, Local1, Local1, Local0)
Return (Local0)
}
}
}
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
...
Divide (Local0, Local1, Local1, Local0)
Return (Local0)
}
}
}
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
...
DOPO
CODE
...
Divide (Local0, Local1, Local1, Local0)
Return (Local0)
}
}
}
Device (HDEF)
{
Name (_ADR, 0x001B0000)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x04)
{
"layout-id",
Buffer (0x04)
{
0x0C, 0x00, 0x00, 0x00
},
"PinConfigurations",
Buffer (Zero) {}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
...
Divide (Local0, Local1, Local1, Local0)
Return (Local0)
}
}
}
Device (HDEF)
{
Name (_ADR, 0x001B0000)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x04)
{
"layout-id",
Buffer (0x04)
{
0x0C, 0x00, 0x00, 0x00
},
"PinConfigurations",
Buffer (Zero) {}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
...
SATA (Intel ESB2 AHCI )
Con questa FIX avremo i dispositivi SATA
come Intel ESB2 AHCI e i dischi verranno visti come interni.
Cerchiamo il Device (SATA)
PRIMA
CODE
...
Device (SATA)
{
Name (_ADR, 0x001F0002)
Name (^NATA, Package (0x01)
{
0x001F0002
})
Name (\FZTF, Buffer (0x07)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5
})
Name (REGF, One)
Method (_REG, 2, NotSerialized)
{
If (LEqual (Arg0, 0x02))
{
Store (Arg1, REGF)
}
}
Name (TIM0, Package (0x08)
{
...
Device (SATA)
{
Name (_ADR, 0x001F0002)
Name (^NATA, Package (0x01)
{
0x001F0002
})
Name (\FZTF, Buffer (0x07)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5
})
Name (REGF, One)
Method (_REG, 2, NotSerialized)
{
If (LEqual (Arg0, 0x02))
{
Store (Arg1, REGF)
}
}
Name (TIM0, Package (0x08)
{
...
DOPO
CODE
...
Device (SATA)
{
Name (_ADR, 0x001F0002)
Name (^NATA, Package (0x01)
{
0x001F0002
})
Name (\FZTF, Buffer (0x07)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5
})
Name (REGF, One)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x81, 0x26, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
Method (_REG, 2, NotSerialized)
{
If (LEqual (Arg0, 0x02))
{
Store (Arg1, REGF)
}
}
Name (TIM0, Package (0x08)
{
...
Device (SATA)
{
Name (_ADR, 0x001F0002)
Name (^NATA, Package (0x01)
{
0x001F0002
})
Name (\FZTF, Buffer (0x07)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5
})
Name (REGF, One)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x81, 0x26, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
Method (_REG, 2, NotSerialized)
{
If (LEqual (Arg0, 0x02))
{
Store (Arg1, REGF)
}
}
Name (TIM0, Package (0x08)
{
...
Slow SATA issue FIX (Ringraziamenti a THe KiNG)
Questa FIX richiede di editare 4 Device che sono
(HPET) (RTC0) (TMR) (PIC)
Cerchiamo il Device (HPET)
PRIMA
CODE
...
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
Name (CRS, ResourceTemplate ()
{
Memory32Fixed (ReadOnly,
0xFED00000, // Address Base
0x00000400, // Address Length
_Y0F)
})
OperationRegion (^LPCR, SystemMemory, 0xFED1F404, 0x04)
Field (LPCR, AnyAcc, NoLock, Preserve)
{
HPTS, 2,
, 5,
HPTE, 1,
Offset (0x04)
}
Method (_STA, 0, NotSerialized)
{
If (LEqual (OSFL (), Zero))
{
If (HPTE)
{
Return (0x0F)
}
}
Else
{
If (HPTE)
{
Return (0x0B)
}
}
Return (Zero)
}
Method (_CRS, 0, NotSerialized)
{
CreateDWordField (CRS, \_SB.PCI0.SBRG.HPET._Y0F._BAS, HPT)
Multiply (HPTS, 0x1000, Local0)
Add (Local0, 0xFED00000, HPT)
Return (CRS)
}
}
...
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
Name (CRS, ResourceTemplate ()
{
Memory32Fixed (ReadOnly,
0xFED00000, // Address Base
0x00000400, // Address Length
_Y0F)
})
OperationRegion (^LPCR, SystemMemory, 0xFED1F404, 0x04)
Field (LPCR, AnyAcc, NoLock, Preserve)
{
HPTS, 2,
, 5,
HPTE, 1,
Offset (0x04)
}
Method (_STA, 0, NotSerialized)
{
If (LEqual (OSFL (), Zero))
{
If (HPTE)
{
Return (0x0F)
}
}
Else
{
If (HPTE)
{
Return (0x0B)
}
}
Return (Zero)
}
Method (_CRS, 0, NotSerialized)
{
CreateDWordField (CRS, \_SB.PCI0.SBRG.HPET._Y0F._BAS, HPT)
Multiply (HPTS, 0x1000, Local0)
Add (Local0, 0xFED00000, HPT)
Return (CRS)
}
}
...
DOPO
CODE
...
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
Name (CRS, ResourceTemplate ()
{
IRQNoFlags ()
{0}
IRQNoFlags ()
{8}
Memory32Fixed (ReadOnly,
0xFED00000, // Address Base
0x00000400, // Address Length
_Y0F)
})
OperationRegion (^LPCR, SystemMemory, 0xFED1F404, 0x04)
Field (LPCR, AnyAcc, NoLock, Preserve)
{
HPTS, 2,
, 5,
HPTE, 1,
Offset (0x04)
}
Method (_STA, 0, NotSerialized)
{
If (LEqual (OSFL (), Zero))
{
If (HPTE)
{
Return (0x0F)
}
}
Else
{
If (HPTE)
{
Return (0x0B)
}
}
Return (Zero)
}
Method (_CRS, 0, NotSerialized)
{
CreateDWordField (CRS, \_SB.PCI0.SBRG.HPET._Y0F._BAS, HPT)
Multiply (HPTS, 0x1000, Local0)
Add (Local0, 0xFED00000, HPT)
Return (CRS)
}
}
...
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
Name (CRS, ResourceTemplate ()
{
IRQNoFlags ()
{0}
IRQNoFlags ()
{8}
Memory32Fixed (ReadOnly,
0xFED00000, // Address Base
0x00000400, // Address Length
_Y0F)
})
OperationRegion (^LPCR, SystemMemory, 0xFED1F404, 0x04)
Field (LPCR, AnyAcc, NoLock, Preserve)
{
HPTS, 2,
, 5,
HPTE, 1,
Offset (0x04)
}
Method (_STA, 0, NotSerialized)
{
If (LEqual (OSFL (), Zero))
{
If (HPTE)
{
Return (0x0F)
}
}
Else
{
If (HPTE)
{
Return (0x0B)
}
}
Return (Zero)
}
Method (_CRS, 0, NotSerialized)
{
CreateDWordField (CRS, \_SB.PCI0.SBRG.HPET._Y0F._BAS, HPT)
Multiply (HPTS, 0x1000, Local0)
Add (Local0, 0xFED00000, HPT)
Return (CRS)
}
}
...
Cerchiamo Device (RTC0)
PRIMA
CODE
...
Device (RTC0)
{
Name (_HID, EisaId ("PNP0B00"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x02, // Length
)
IRQNoFlags ()
{8}
})
}
...
Device (RTC0)
{
Name (_HID, EisaId ("PNP0B00"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x02, // Length
)
IRQNoFlags ()
{8}
})
}
...
DOPO
CODE
...
Device (RTC0)
{
Name (_HID, EisaId ("PNP0B00"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x02, // Length
)
})
}
...
Device (RTC0)
{
Name (_HID, EisaId ("PNP0B00"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x00, // Alignment
0x02, // Length
)
})
}
...
Cerchiamo Device (TMR)
PRIMA
CODE
...
Device (TMR)
{
Name (_HID, EisaId ("PNP0100"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x00, // Alignment
0x04, // Length
)
IRQNoFlags ()
{0}
})
}
...
Device (TMR)
{
Name (_HID, EisaId ("PNP0100"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x00, // Alignment
0x04, // Length
)
IRQNoFlags ()
{0}
})
}
...
DOPO
CODE
...
Device (TMR)
{
Name (_HID, EisaId ("PNP0100"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x01, // Alignment
0x04, // Length
)
IO (Decode16,
0x0050, // Range Minimum
0x0050, // Range Maximum
0x01, // Alignment
0x04, // Length
)
})
}
...
Device (TMR)
{
Name (_HID, EisaId ("PNP0100"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x01, // Alignment
0x04, // Length
)
IO (Decode16,
0x0050, // Range Minimum
0x0050, // Range Maximum
0x01, // Alignment
0x04, // Length
)
})
}
...
Appartenente sempre alla stessa FIX
Ora cerchiamo il Device (PIC)
PRIMA
CODE
...
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}
})
}
...
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}
})
}
...
DOPO
CODE
...
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
)
})
}
...
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
)
})
}
...
UHCI/EHCI Built-in FIX
Ad aggiungere questa fix dobbiamo stare molto attenti.
Potete tranquillamente copiare ed incollare l'unica "USB" che non dobbiamo toccare ha l'ADDRESS 0x001D0003
Nel mio caso corrisponde al Device (USB5)
CODE
HO ELIMINATO DA QUESTA GUIDA LA FIX IN QUANTO NON NECESSARIA OSX RICONOSCE LE PORTE USB COME BUILT-IN LASCIO LA TABELLA SOTTOSTANTE COME RIFERIMENTO
Device (USB0)
Name (_ADR, 0x001D0000)
0x34, 0x3A, 0x00, 0x00
B00 D1D F00: 8086-3A34: Intel 82801JB ICH10 - USB Universal Host Controller
Device (USB1)
Name (_ADR, 0x001D0001)
0x35, 0x3A, 0x00, 0x00
B00 D1D F01: 8086-3A35: Intel 82801JB ICH10 - USB Universal Host Controller
Device (USB2)
Name (_ADR, 0x001D0002)
0x36, 0x3A, 0x00, 0x00
B00 D1D F02: 8086-3A36: Intel 82801JB ICH10 - USB Universal Host Controller
Device (USB5)
Name (_ADR, 0x001D0003)
Device (EUSB)
Name (_ADR, 0x001D0007)
0x3A, 0x3A, 0x00, 0x00
B00 D1D F07: 8086-3A3A: Intel 82801JB ICH10 - USB2 Enhanced Host Controller
Device (USB3)
Name (_ADR, 0x001A0000)
0x37, 0x3A, 0x00, 0x00
B00 D1A F00: 8086-3A37: Intel 82801JB ICH10 - USB Universal Host Controller
Device (USB4)
Name (_ADR, 0x001A0001)
0x38, 0x3A, 0x00, 0x00
B00 D1A F01: 8086-3A38: Intel 82801JB ICH10 - USB Universal Host Controller
Device (USB6)
Name (_ADR, 0x001A0002)
0x39, 0x3A, 0x00, 0x00
B00 D1A F02: 8086-3A39: Intel 82801JB ICH10 - USB Universal Host Controller
Device (USBE)
Name (_ADR, 0x001A0007)
0x3C, 0x3A, 0x00, 0x00
B00 D1A F07: 8086-3A3C: Intel 82801JB ICH10 - USB2 Enhanced Host Controller
Device (USB0)
Name (_ADR, 0x001D0000)
0x34, 0x3A, 0x00, 0x00
B00 D1D F00: 8086-3A34: Intel 82801JB ICH10 - USB Universal Host Controller
Device (USB1)
Name (_ADR, 0x001D0001)
0x35, 0x3A, 0x00, 0x00
B00 D1D F01: 8086-3A35: Intel 82801JB ICH10 - USB Universal Host Controller
Device (USB2)
Name (_ADR, 0x001D0002)
0x36, 0x3A, 0x00, 0x00
B00 D1D F02: 8086-3A36: Intel 82801JB ICH10 - USB Universal Host Controller
Device (USB5)
Name (_ADR, 0x001D0003)
Device (EUSB)
Name (_ADR, 0x001D0007)
0x3A, 0x3A, 0x00, 0x00
B00 D1D F07: 8086-3A3A: Intel 82801JB ICH10 - USB2 Enhanced Host Controller
Device (USB3)
Name (_ADR, 0x001A0000)
0x37, 0x3A, 0x00, 0x00
B00 D1A F00: 8086-3A37: Intel 82801JB ICH10 - USB Universal Host Controller
Device (USB4)
Name (_ADR, 0x001A0001)
0x38, 0x3A, 0x00, 0x00
B00 D1A F01: 8086-3A38: Intel 82801JB ICH10 - USB Universal Host Controller
Device (USB6)
Name (_ADR, 0x001A0002)
0x39, 0x3A, 0x00, 0x00
B00 D1A F02: 8086-3A39: Intel 82801JB ICH10 - USB Universal Host Controller
Device (USBE)
Name (_ADR, 0x001A0007)
0x3C, 0x3A, 0x00, 0x00
B00 D1A F07: 8086-3A3C: Intel 82801JB ICH10 - USB2 Enhanced Host Controller
Time Machine/Ethernet Buil-in/Device ETH0 FIX (Grazie a Krabuzu)
Questa e' la fix che preferisco... Time machine funziona benissimo
- Ricordate di aggiungere ed editare il UUID.KEXT nella cartella E/E
e di reperire l'indirizzo macchina che verra'aggiunto.
Questa aggiunta in conbinazione con la FIX nel DSDT vi eliminera' l'errore 35 che vedevate constantemente nella console
- La particolarita' e' che la P6T ha 2 LAN integrate, quindi il metodo lo inseriremo 2 volte,
Sbirciando con IORegistryExplorer ho visto che le mie LAN sono associate al Device P0P6@1C,2 e P0P9@1C,5
Ovvero P0P6 e P0P9
PRIMA
CODE
...
Device (P0P6)
{
Name (_ADR, 0x001C0002)
Method (_PRW, 0, NotSerialized)
{
Return (GPRW (0x09, 0x04))
}
Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR06)
}
Return (PR06)
}
}
... parte del codice .... parte del codice ....
Device (P0P9)
{
Name (_ADR, 0x001C0005)
Method (_PRW, 0, NotSerialized)
{
Return (GPRW (0x09, 0x04))
}
Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR09)
}
Return (PR09)
}
}
...
Device (P0P6)
{
Name (_ADR, 0x001C0002)
Method (_PRW, 0, NotSerialized)
{
Return (GPRW (0x09, 0x04))
}
Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR06)
}
Return (PR06)
}
}
... parte del codice .... parte del codice ....
Device (P0P9)
{
Name (_ADR, 0x001C0005)
Method (_PRW, 0, NotSerialized)
{
Return (GPRW (0x09, 0x04))
}
Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR09)
}
Return (PR09)
}
}
...
DOPO
CODE
...
Device (P0P6)
{
Name (_ADR, 0x001C0002)
Method (_PRW, 0, NotSerialized)
{
Return (GPRW (0x09, 0x04))
}
Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR06)
}
Return (PR06)
}
Device (ETH0)
{
Name (_ADR, Zero)
OperationRegion (GPIO, SystemIO, 0x0800, 0x06)
Field (GPIO, ByteAcc, NoLock, Preserve)
{
GO01, 8,
GO02, 8,
GO03, 8,
GO04, 8,
GO05, 8,
GP9, 1
}
Name (_PRW, Package (0x02)
{
0x09,
0x03
})
Method (EWOL, 1, NotSerialized)
{
If (LEqual (Arg0, One))
{
Or (GP9, One, GP9)
}
Else
{
And (GP9, Zero, GP9)
}
If (LEqual (Arg0, GP9))
{
Return (Zero)
}
Else
{
Return (One)
}
}
}
}
... parte del codice .... parte del codice ....
Device (P0P9)
{
Name (_ADR, 0x001C0005)
Method (_PRW, 0, NotSerialized)
{
Return (GPRW (0x09, 0x04))
}
Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR09)
}
Return (PR09)
}
Device (ETH1)
{
Name (_ADR, Zero)
OperationRegion (GPIO, SystemIO, 0x0800, 0x06)
Field (GPIO, ByteAcc, NoLock, Preserve)
{
GO01, 8,
GO02, 8,
GO03, 8,
GO04, 8,
GO05, 8,
GP9, 1
}
Name (_PRW, Package (0x02)
{
0x09,
0x03
})
Method (EWOL, 1, NotSerialized)
{
If (LEqual (Arg0, One))
{
Or (GP9, One, GP9)
}
Else
{
And (GP9, Zero, GP9)
}
If (LEqual (Arg0, GP9))
{
Return (Zero)
}
Else
{
Return (One)
}
}
}
}
...
Device (P0P6)
{
Name (_ADR, 0x001C0002)
Method (_PRW, 0, NotSerialized)
{
Return (GPRW (0x09, 0x04))
}
Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR06)
}
Return (PR06)
}
Device (ETH0)
{
Name (_ADR, Zero)
OperationRegion (GPIO, SystemIO, 0x0800, 0x06)
Field (GPIO, ByteAcc, NoLock, Preserve)
{
GO01, 8,
GO02, 8,
GO03, 8,
GO04, 8,
GO05, 8,
GP9, 1
}
Name (_PRW, Package (0x02)
{
0x09,
0x03
})
Method (EWOL, 1, NotSerialized)
{
If (LEqual (Arg0, One))
{
Or (GP9, One, GP9)
}
Else
{
And (GP9, Zero, GP9)
}
If (LEqual (Arg0, GP9))
{
Return (Zero)
}
Else
{
Return (One)
}
}
}
}
... parte del codice .... parte del codice ....
Device (P0P9)
{
Name (_ADR, 0x001C0005)
Method (_PRW, 0, NotSerialized)
{
Return (GPRW (0x09, 0x04))
}
Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR09)
}
Return (PR09)
}
Device (ETH1)
{
Name (_ADR, Zero)
OperationRegion (GPIO, SystemIO, 0x0800, 0x06)
Field (GPIO, ByteAcc, NoLock, Preserve)
{
GO01, 8,
GO02, 8,
GO03, 8,
GO04, 8,
GO05, 8,
GP9, 1
}
Name (_PRW, Package (0x02)
{
0x09,
0x03
})
Method (EWOL, 1, NotSerialized)
{
If (LEqual (Arg0, One))
{
Or (GP9, One, GP9)
}
Else
{
And (GP9, Zero, GP9)
}
If (LEqual (Arg0, GP9))
{
Return (Zero)
}
Else
{
Return (One)
}
}
}
}
...
Aggiungo anche Info.plist dell'UUID.kext(Leopard) PlatformUUID.kext(SNOW) (La parte che dovrete editare inserendo l'Address MAC)
CODE
...
<string>SMBIOS</string>
<key>UUID-key</key>
<string>00000000-0000-1000-8000-00xxxxxxxxxx</string>
</dict>
</dict>
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.kernel.iokit</key>
...
<string>SMBIOS</string>
<key>UUID-key</key>
<string>00000000-0000-1000-8000-00xxxxxxxxxx</string>
</dict>
</dict>
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.kernel.iokit</key>
...
Naturalmente le xxx vanno sostituite con il vostri dati (Ci sono una infinita' di guide al riguardo).
OSYS FIX questa FIX consiste nell'aggiungere il riconoscimento del Sistema operativo Darwin (OSX)
(Ringraziamenti vanno a UgoKing.)
PRIMA
CODE
...
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)
}
}
Else
{
If (MCTH (_OS, "Microsoft Windows NT"))
{
Store (0x12, Local0)
}
Else
{
If (MCTH (_OS, "Microsoft WindowsME: Millennium Edition"))
{
Store (0x11, Local0)
}
If (MCTH (_OS, "Linux"))
{
Store (One, Local0)
}
}
}
Return (Local0)
}
...
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)
}
}
Else
{
If (MCTH (_OS, "Microsoft Windows NT"))
{
Store (0x12, Local0)
}
Else
{
If (MCTH (_OS, "Microsoft WindowsME: Millennium Edition"))
{
Store (0x11, Local0)
}
If (MCTH (_OS, "Linux"))
{
Store (One, Local0)
}
}
}
Return (Local0)
}
...
DOPO
CODE
...
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)
}
}
Else
{
If (MCTH (_OS, "Microsoft Windows NT"))
{
Store (0x12, Local0)
}
Else
{
If (MCTH (_OS, "Microsoft WindowsME: Millennium Edition"))
{
Store (0x11, Local0)
}
If (MCTH (_OS, "Linux"))
{
Store (One, Local0)
}
}
}
...
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)
}
}
Else
{
If (MCTH (_OS, "Microsoft Windows NT"))
{
Store (0x12, Local0)
}
Else
{
If (MCTH (_OS, "Microsoft WindowsME: Millennium Edition"))
{
Store (0x11, Local0)
}
If (MCTH (_OS, "Linux"))
{
Store (One, Local0)
}
}
}
...
---> More coming
O. [Installare Snow Leopard]
A breve...
