jc84 Posted October 16, 2015 Share Posted October 16, 2015 Last Updated 2016-June-20 OSX 10.11.5 This is what i have done so far to get my SP3 i5 256 working. Booting from SSD in USB3 Case as I am testing I do not want to mess with my Internal SP3 SSD. The build in not perfect but works. still early days. chat with us and share https://gitter.im/julianjc84/jc84_SP3_hookups Updates Notes I require the use of USBInjectAll.kext to fix the USBports for USB wifi adapter. Seems to only effect me with USB booting. OS,s installed on internal SSD seem to not have usb issue. Issues: minor video artifacts once system is booted below menu bar. No Battery What work and work great Intel 4400HD QI QE, Accelerated Video SDcard Reader Front Camera Rear Camera Trim Support Sound build in. Touch, Single input http://monstersoft.com/sp3/VoodooI2C.kext.5ms.zip do not use DSDT Surface Pro 4 Touch Cover, Single Input Tools Must have applications, the ones I recommend are as follows. IORegistryExplorer 2.1- registry look up and because every other version saves corrupt files http://www.tonymacx86.com/attachments/audio/24086d1341545382-guide-how-make-copy-ioreg-ioregistryexplorer-slrid_v10.6.3.zip MaciASL - rehabman edition for editing DSDT and SSDT APCI https://bitbucket.org/RehabMan/acpica/downloads iasl - decomplie DSDT and SSDT's from .aml to .dsl https://bitbucket.org/RehabMan/acpica/downloads ssdtPGen - generate powermanagment https://github.com/Piker-Alpha/ssdtPRGen.sh Pacifist - extract .pkg files and pull out the files you require with out installing https://www.charlessoft.com/ Clover Configurator - to edit them clover.plist files http://mackie100projects.altervista.org/download/ TextWrangler - to view some plist files http://www.barebones.com/products/textwrangler/ Clover - Clover_v2.3k_r3424 Formatted the EFI as FAT32 - I don't know if you need to do this. diskutil list #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *120.0 GB disk8 1: EFI EFI 209.7 MB disk8s1 2: Apple_HFS SSD1 60.0 GB disk8s2 3: Apple_HFS SSD2-damagedOS 59.5 GB disk8s3 newfs_msdos -F 32 -v EFI /dev/disk8s1 #formats disk8s1 as fat32 Clover Installer Settings Install for UEFI booting Only Install Clover in the ESP Drivers64UEFI CsmVideoDxe-64.efi DataHubDxe-64.efi OsxAptioFixDrv-64.efi PartitionDxe-64.efi Clover Configuration .plist clover.plist text Key values used for Intel 4400 for video QI QE. used in conjunction with fake FakePCIID_HD4600_HD4400.kext, FakePCIID.kext <key>ig-platform-id</key> <string>0x0a260006</string> <key>IntelGFX</key> <string>0x04128086</string> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>ACPI</key> <dict> <key>DSDT</key> <dict> <key>Debug</key> <false/> <key>DropOEM_DSM</key> <false/> <key>Fixes</key> <dict> <key>FixRegions_10000000</key> <true/> <key>NewWay_80000000</key> <true/> </dict> <key>Name</key> <string>DSDT.aml</string> <key>ReuseFFFF</key> <false/> </dict> <key>SSDT</key> <dict> <key>DropOem</key> <false/> <key>Generate</key> <false/> </dict> </dict> <key>Boot</key> <dict> <key>Arguments</key> <string>-v dart=0 kext-dev-mode=1 rootless=0</string> <key>Debug</key> <false/> <key>DefaultLoader</key> <string>boot.efi</string> <key>DefaultVolume</key> <string>SSD1</string> <key>Legacy</key> <string>PBR</string> <key>Secure</key> <false/> <key>Timeout</key> <integer>5</integer> <key>XMPDetection</key> <false/> </dict> <key>Devices</key> <dict> <key>FakeID</key> <dict> <key>IntelGFX</key> <string>0x04128086</string> </dict> <key>USB</key> <dict> <key>AddClockID</key> <true/> <key>FixOwnership</key> <true/> <key>Inject</key> <true/> </dict> </dict> <key>GUI</key> <dict> <key>Language</key> <string>en:0</string> <key>Mouse</key> <dict> <key>DoubleClick</key> <integer>500</integer> <key>Enabled</key> <false/> <key>Mirror</key> <false/> <key>Speed</key> <integer>8</integer> </dict> <key>Scan</key> <true/> <key>ScreenResolution</key> <string>1920x1080</string> </dict> <key>Graphics</key> <dict> <key>Inject</key> <dict> <key>ATI</key> <false/> <key>Intel</key> <true/> <key>NVidia</key> <false/> </dict> <key>NvidiaSingle</key> <false/> <key>ig-platform-id</key> <string>0x0a260006</string> </dict> <key>KernelAndKextPatches</key> <dict> <key>AppleRTC</key> <true/> <key>AsusAICPUPM</key> <false/> <key>Debug</key> <false/> <key>KernelCpu</key> <false/> <key>KernelHaswellE</key> <false/> <key>KernelLapic</key> <false/> <key>KernelPm</key> <false/> <key>KextsToPatch</key> <array> <dict> <key>Comment</key> <string>Enable TRIM for SSD confirmed works 10.11</string> <key>Find</key> <data> QVBQTEUgU1NE </data> <key>Name</key> <string>IOAHCIBlockStorage</string> <key>Replace</key> <data> AAAAAAAAAAAA </data> </dict> </array> </dict> <key>RtVariables</key> <dict> <key>BooterConfig</key> <string>0x28</string> <key>CsrActiveConfig</key> <string>0x67</string> <key>MLB</key> <string>C02032109R5DC771H</string> <key>ROM</key> <string>UseMacAddr0</string> </dict> <key>SMBIOS</key> <dict> <key>BiosReleaseDate</key> <string>05/24/13</string> <key>BiosVendor</key> <string>Apple Inc.</string> <key>BiosVersion</key> <string>MBA61.88Z.0099.B04.1305241529</string> <key>Board-ID</key> <string>Mac-7DF21CB3ED6977E5</string> <key>BoardManufacturer</key> <string>Apple Inc.</string> <key>BoardType</key> <integer>10</integer> <key>ChassisAssetTag</key> <string>Air-Enclosure</string> <key>ChassisManufacturer</key> <string>Apple Inc.</string> <key>ChassisType</key> <string>10</string> <key>Family</key> <string>MacBook Air</string> <key>Manufacturer</key> <string>Apple Inc.</string> <key>Mobile</key> <true/> <key>ProductName</key> <string>MacBookAir6,2</string> <key>SerialNumber</key> <string>CK228A27F5V8</string> <key>Trust</key> <false/> <key>Version</key> <string>1.0</string> </dict> <key>SystemParameters</key> <dict> <key>InjectKexts</key> <string>Detect</string> <key>InjectSystemID</key> <true/> </dict> </dict> </plist> Clover as Images https://dl.dropboxusercontent.com/u/11501640/CloverAs_jpg.zip DSDT and ssdt's Using a DSDT.aml will break, SD card reader, touch voodooi2c, front camera, rear camera. , , Exported DSDT from Clover boot menu with F4 (there is no feed back when generated except you see the files in EFI/EFI/CLOVER/APCI/origin You will see a bunch of files. I only kept the following //---- DSDT.aml SSDT-0 sata.aml SSDT-1 USB.aml SSDT-2-custom CPU.aml SSDT-7 GFX0.aml SSDT-8-custom nullethernet.aml DSDT.aml - main table SSDT-0.aml - SATA SSDT-1.aml - USB SSDT-2.aml - cpu based - not used after the decompile SSDT-3.aml - cpu based - not used after the decompile SSDT-7.aml - graphics //----- Drop all in a folder and run iasl https://bitbucket.org/RehabMan/acpica/downloads on them from terminal to decompile copy iasl into /usr/bin authenticate cd to where the dsdt files are. iasl -da -dl *.aml still pumps out a few errors but over all good. i think only 3 unresolved. if only i could make ref.txt i don't know how many variables run maciAsl add the patch repo http://raw.github.com/RehabMan/Laptop-DSDT-Patch/master patches applied. [sys] fix the _DSM in DSDT.dsl & SSDT-7.dsl[igpu] Rename GFX0 to IGPU to the DSDT.dsl & SSDT-7.dsl [igpu] brightness fix to the DSDT.dsl file only brightness slider only works after I have change the display resolution. File Save as ACPI machine language binary makes .AML Copy to: EFI/EFI/CLOVER/APCI/patched CPU patch https://github.com/Piker-Alpha/ssdtPRGen.sh curl -o ~/Library/ssdtPRGen.zip https://codeload.github.com/Piker-Alpha/ssdtPRGen.sh/zip/master unzip -qu ~/Library/ssdtPRGen.zip -d ~/Library/ mv ~/Library/ssdtPRGen.sh-master ~/Library/ssdtPRGen rm ~/Library/ssdtPRGen.zip added a copy of dsdt.aml file to ~/Library/ssdtPRGen ran ~/ssdtPRGen.sh The only differences I noticed if you do not add the dsdt.aml Warnings will show and the cpu reference are \_SB instead of _PR_ WITH DSDT /* * Intel ACPI Component Architecture * AML Disassembler version 20140926-64 [Oct 24 2014] * Copyright © 2000 - 2014 Intel Corporation * * Disassembly of iASL1qT1JT.aml, Sat Oct 17 15:10:51 2015 * * Original Table Header: * Signature "SSDT" * Length 0x00000624 (1572) * Revision 0x01 * Checksum 0x77 * OEM ID "APPLE " * OEM Table ID "CpuPm" * OEM Revision 0x00015600 (87552) * Compiler ID "INTL" * Compiler Version 0x20141107 (538185991) */ DefinitionBlock ("iASL1qT1JT.aml", "SSDT", 1, "APPLE ", "CpuPm", 0x00015600) { External (_PR_.CPU0, DeviceObj) External (_PR_.CPU1, DeviceObj) External (_PR_.CPU2, DeviceObj) External (_PR_.CPU3, DeviceObj) Scope (\_PR.CPU0) { Method (_INI, 0, NotSerialized) // _INI: Initialize { Store ("ssdtPRGen version....: 15.6 / Mac OS X 10.11 (15A284)", Debug) Store ("target processor.....: i5-4300U", Debug) Store ("running processor....: Intel® Core i5-4300U CPU @ 1.90GHz", Debug) Store ("baseFrequency........: 800", Debug) Store ("frequency............: 1900", Debug) Store ("busFrequency.........: 100", Debug) Store ("logicalCPUs..........: 4", Debug) Store ("maximum TDP..........: 15", Debug) Store ("packageLength........: 22", Debug) Store ("turboStates..........: 10", Debug) Store ("maxTurboFrequency....: 2900", Debug) } Name (APLF, Zero) Name (APSN, 0x0A) Name (APSS, Package (0x16) { Package (0x06) { 0x0B54, 0x3A98, 0x0A, 0x0A, 0x1D00, 0x1D00 }, Package (0x06) { 0x0AF0, 0x3A98, 0x0A, 0x0A, 0x1C00, 0x1C00 }, Package (0x06) { 0x0A8C, 0x3A98, 0x0A, 0x0A, 0x1B00, 0x1B00 }, Package (0x06) { 0x0A28, 0x3A98, 0x0A, 0x0A, 0x1A00, 0x1A00 }, Package (0x06) { 0x09C4, 0x3A98, 0x0A, 0x0A, 0x1900, 0x1900 }, Package (0x06) { 0x0960, 0x3A98, 0x0A, 0x0A, 0x1800, 0x1800 }, Package (0x06) { 0x08FC, 0x3A98, 0x0A, 0x0A, 0x1700, 0x1700 }, Package (0x06) { 0x0898, 0x3A98, 0x0A, 0x0A, 0x1600, 0x1600 }, Package (0x06) { 0x0834, 0x3A98, 0x0A, 0x0A, 0x1500, 0x1500 }, Package (0x06) { 0x07D0, 0x3A98, 0x0A, 0x0A, 0x1400, 0x1400 }, Package (0x06) { 0x076C, 0x3A98, 0x0A, 0x0A, 0x1300, 0x1300 }, Package (0x06) { 0x0708, 0x36E1, 0x0A, 0x0A, 0x1200, 0x1200 }, Package (0x06) { 0x06A4, 0x333D, 0x0A, 0x0A, 0x1100, 0x1100 }, Package (0x06) { 0x0640, 0x2FAC, 0x0A, 0x0A, 0x1000, 0x1000 }, Package (0x06) { 0x05DC, 0x2C2D, 0x0A, 0x0A, 0x0F00, 0x0F00 }, Package (0x06) { 0x0578, 0x28C1, 0x0A, 0x0A, 0x0E00, 0x0E00 }, Package (0x06) { 0x0514, 0x2567, 0x0A, 0x0A, 0x0D00, 0x0D00 }, Package (0x06) { 0x04B0, 0x221F, 0x0A, 0x0A, 0x0C00, 0x0C00 }, Package (0x06) { 0x044C, 0x1EE8, 0x0A, 0x0A, 0x0B00, 0x0B00 }, Package (0x06) { 0x03E8, 0x1BC3, 0x0A, 0x0A, 0x0A00, 0x0A00 }, Package (0x06) { 0x0384, 0x18B0, 0x0A, 0x0A, 0x0900, 0x0900 }, Package (0x06) { 0x0320, 0x15AE, 0x0A, 0x0A, 0x0800, 0x0800 } }) Method (ACST, 0, NotSerialized) { Store ("Method CPU0.ACST Called", Debug) Store ("CPU0 C-States : 29", Debug) Return (Package (0x06) { One, 0x04, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000000, // Address 0x01, // Access Size ) }, One, Zero, 0x03E8 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000010, // Address 0x03, // Access Size ) }, 0x03, 0xCD, 0x01F4 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000020, // Address 0x03, // Access Size ) }, 0x06, 0xF5, 0x015E }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000030, // Address 0x03, // Access Size ) }, 0x07, 0xF5, 0xC8 } }) } Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Store ("Method CPU0._DSM Called", Debug) If (LEqual (Arg2, Zero)) { Return (Buffer (One) { 0x03 /* . */ }) } Return (Package (0x02) { "plugin-type", One }) } } Scope (\_PR.CPU1) { Method (APSS, 0, NotSerialized) { Store ("Method _PR_.CPU1.APSS Called", Debug) Return (\_PR.CPU0.APSS) } Method (ACST, 0, NotSerialized) { Store ("Method CPU1.ACST Called", Debug) Store ("CPU1 C-States : 7", Debug) Return (Package (0x05) { One, 0x03, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000000, // Address 0x01, // Access Size ) }, One, 0x03E8, 0x03E8 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000010, // Address 0x03, // Access Size ) }, 0x02, 0x94, 0x01F4 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000030, // Address 0x03, // Access Size ) }, 0x03, 0xC6, 0xC8 } }) } } Scope (\_PR.CPU2) { Method (APSS, 0, NotSerialized) { Store ("Method _PR_.CPU2.APSS Called", Debug) Return (\_PR.CPU0.APSS) } Method (ACST, 0, NotSerialized) { Return (\_PR.CPU1.ACST ()) } } Scope (\_PR.CPU3) { Method (APSS, 0, NotSerialized) { Store ("Method _PR_.CPU3.APSS Called", Debug) Return (\_PR.CPU0.APSS) } Method (ACST, 0, NotSerialized) { Return (\_PR.CPU1.ACST ()) } } } External (_PR_.CPU0, DeviceObj) External (_PR_.CPU1, DeviceObj) External (_PR_.CPU2, DeviceObj) External (_PR_.CPU3, DeviceObj) WITHOUT DSDT - and wont load or give you pwr management /* * Intel ACPI Component Architecture * AML Disassembler version 20140210-00 [Feb 10 2014] * Copyright © 2000 - 2014 Intel Corporation * * Original Table Header: * Signature "SSDT" * Length 0x0000036A (874) * Revision 0x01 * Checksum 0x00 * OEM ID "APPLE " * OEM Table ID "CpuPm" * OEM Revision 0x00015600 (87552) * Compiler ID "INTL" * Compiler Version 0x20140210 (538182160) */ DefinitionBlock ("ssdt.aml", "SSDT", 1, "APPLE ", "CpuPm", 0x00015600) { without External (\_SB.CPU0, DeviceObj) External (\_SB.CPU1, DeviceObj) External (\_SB.CPU2, DeviceObj) External (\_SB.CPU3, DeviceObj) Scope (\_SB.CPU0) { Method (_INI, 0, NotSerialized) { Store ("ssdtPRGen version....: 15.6 / Mac OS X 10.11 (15A284)", Debug) Store ("target processor.....: i5-4300U", Debug) Store ("running processor....: Intel® Core i5-4300U CPU @ 1.90GHz", Debug) Store ("baseFrequency........: 800", Debug) Store ("frequency............: 1900", Debug) Store ("busFrequency.........: 100", Debug) Store ("logicalCPUs..........: 4", Debug) Store ("maximum TDP..........: 15", Debug) Store ("packageLength........: 22", Debug) Store ("turboStates..........: 10", Debug) Store ("maxTurboFrequency....: 2900", Debug) } Name (APLF, Zero) Name (APSN, 0x0A) Name (APSS, Package (0x16) { /* High Frequency Modes (turbo) */ Package (0x06) { 0x0B54, 0x003A98, 0x0A, 0x0A, 0x1D00, 0x1D00 }, Package (0x06) { 0x0AF0, 0x003A98, 0x0A, 0x0A, 0x1C00, 0x1C00 }, Package (0x06) { 0x0A8C, 0x003A98, 0x0A, 0x0A, 0x1B00, 0x1B00 }, Package (0x06) { 0x0A28, 0x003A98, 0x0A, 0x0A, 0x1A00, 0x1A00 }, Package (0x06) { 0x09C4, 0x003A98, 0x0A, 0x0A, 0x1900, 0x1900 }, Package (0x06) { 0x0960, 0x003A98, 0x0A, 0x0A, 0x1800, 0x1800 }, Package (0x06) { 0x08FC, 0x003A98, 0x0A, 0x0A, 0x1700, 0x1700 }, Package (0x06) { 0x0898, 0x003A98, 0x0A, 0x0A, 0x1600, 0x1600 }, Package (0x06) { 0x0834, 0x003A98, 0x0A, 0x0A, 0x1500, 0x1500 }, Package (0x06) { 0x07D0, 0x003A98, 0x0A, 0x0A, 0x1400, 0x1400 }, /* High Frequency Modes (non-turbo) */ Package (0x06) { 0x076C, 0x003A98, 0x0A, 0x0A, 0x1300, 0x1300 }, Package (0x06) { 0x0708, 0x0036E1, 0x0A, 0x0A, 0x1200, 0x1200 }, Package (0x06) { 0x06A4, 0x00333D, 0x0A, 0x0A, 0x1100, 0x1100 }, Package (0x06) { 0x0640, 0x002FAC, 0x0A, 0x0A, 0x1000, 0x1000 }, Package (0x06) { 0x05DC, 0x002C2D, 0x0A, 0x0A, 0x0F00, 0x0F00 }, Package (0x06) { 0x0578, 0x0028C1, 0x0A, 0x0A, 0x0E00, 0x0E00 }, Package (0x06) { 0x0514, 0x002567, 0x0A, 0x0A, 0x0D00, 0x0D00 }, Package (0x06) { 0x04B0, 0x00221F, 0x0A, 0x0A, 0x0C00, 0x0C00 }, Package (0x06) { 0x044C, 0x001EE8, 0x0A, 0x0A, 0x0B00, 0x0B00 }, Package (0x06) { 0x03E8, 0x001BC3, 0x0A, 0x0A, 0x0A00, 0x0A00 }, Package (0x06) { 0x0384, 0x0018B0, 0x0A, 0x0A, 0x0900, 0x0900 }, /* Low Frequency Mode */ Package (0x06) { 0x0320, 0x0015AE, 0x0A, 0x0A, 0x0800, 0x0800 } }) Method (ACST, 0, NotSerialized) { Store ("Method CPU0.ACST Called", Debug) Store ("CPU0 C-States : 29", Debug) /* Low Power Modes for CPU0 */ Return (Package (0x06) { One, 0x04, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000000, // Address 0x01, // Access Size ) }, One, Zero, 0x03E8 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000010, // Address 0x03, // Access Size ) }, 0x03, 0xCD, 0x01F4 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000020, // Address 0x03, // Access Size ) }, 0x06, 0xF5, 0x015E }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000030, // Address 0x03, // Access Size ) }, 0x07, 0xF5, 0xC8 } }) } Method (_DSM, 4, NotSerialized) { Store ("Method CPU0._DSM Called", Debug) If (LEqual (Arg2, Zero)) { Return (Buffer (One) { 0x03 }) } Return (Package (0x02) { "plugin-type", One }) } } Scope (\_SB.CPU1) { Method (APSS, 0, NotSerialized) { Store ("Method _SB.CPU1.APSS Called", Debug) Return (\_SB.CPU0.APSS) } Method (ACST, 0, NotSerialized) { Store ("Method CPU1.ACST Called", Debug) Store ("CPU1 C-States : 7", Debug) /* Low Power Modes for CPU1 */ Return (Package (0x05) { One, 0x03, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000000, // Address 0x01, // Access Size ) }, One, 0x03E8, 0x03E8 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000010, // Address 0x03, // Access Size ) }, 0x02, 0x94, 0x01F4 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000030, // Address 0x03, // Access Size ) }, 0x03, 0xC6, 0xC8 } }) } } Scope (\_SB.CPU2) { Method (APSS, 0, NotSerialized) { Store ("Method _SB.CPU2.APSS Called", Debug) Return (\_SB.CPU0.APSS) } Method (ACST, 0, NotSerialized) { Return (\_SB.CPU1.ACST ()) } } Scope (\_SB.CPU3) { Method (APSS, 0, NotSerialized) { Store ("Method _SB.CPU3.APSS Called", Debug) Return (\_SB.CPU0.APSS) } Method (ACST, 0, NotSerialized) { Return (\_SB.CPU1.ACST ()) } } } External (\_SB.CPU0, DeviceObj) External (\_SB.CPU1, DeviceObj) External (\_SB.CPU2, DeviceObj) External (\_SB.CPU3, DeviceObj) DSDTs used and how they came about. //----- DSDT.aml - from the clover f4 export SSDT-0.aml - sata SSDT-2.aml - cpu saved output generated with ssdtPRGen.sh script in conjunction with the above dsdt SSDT-7.aml - graphics from clover f4 export with igup patched above SSDT-8.aml - added for en0 Ethernet ID used with NullEthernet.kext (more info in kext section) //----- .kext used Kext installed EFI/EFI/CLOVER/kext/10.11 FakePCIID_Intel_HD_Graphics.kext - video from https://bitbucket.org/RehabMan/os-x-fake-pci-id/downloads FakePCIID.kext - link above FakeSMC.kext - version 6.16.1372 was it http://sourceforge.net/projects/hwsensors/ NullEthernet.kext - required for iMessage(not tested yet). NullEthernet requires injection: using SSDTmethod add with ssdt-rmne.aml renamed to SSDT-8.aml for loading the en0. The physical mac address supplied in the SSDT!. https://github.com/RehabMan/OS-X-Null-Ethernethttps://bitbucket.org/RehabMan/os-x-null-ethernet/downloads check that en0 is en0 with IORegistryExplorer, You may need to delete networkinginterfaces.plist from /Library/Preferences/SystemConfiguration and reboot, I had to delete as it was en2 will all the testing and changes i have been doing. Interesting. when I use NullEthernet I get video artifacts, applying the 9mb azul patch seems to have no effect. VoodooHDA.kext - audio, built in. -- // for wifi to work i need to use RehabMan-USBInjectAll USBInjectAll.kext else i get usb crashes. RtWlanU.kext - USB wifi for the EW-7811un wifi dongle http://www.edimax.us/html/english/frames/b-download.htm SurFacePro 4 Type Cover works out of the box on SurfacePro 3, however single touch only on track pad. Touch - Single Input User Environment as the DSDT file is messy, I2C only seems to pick up the touch with out a dsdt, the underdevelopment kext work pretty good. read more at: http://www.insanelymac.com/forum/topic/304487-i2c-hid-touchscreens-trackpads-and-more/ https://www.youtube.com/watch?v=1eSbTCgJP24 - this video is dated and old 100ms delay. You should really try the kext bellow. http://monstersoft.com/sp3/VoodooI2C.kext.5ms.zip Touch has never been so good in so long. Single Input only. Battery Fixes - incomplete, HELP learn more here: https://github.com/RehabMan/OS-X-ACPI-Battery-Driver too complex, maybe you can help? ? ? some background reading here to assist http://www.tonymacx86.com/el-capitan-laptop-support/116102-guide-how-patch-dsdt-working-battery-status.html The Code so far with so many errors and very incomplete. totally wrong *(*Y&^%& #Maintained by: RehabMan for: Laptop Patches #battery_Surface-Pro-v3.txt # created by JULIANJC84 2015-10-25 # works for: # Microsoft Surface Pro 3 into method label B1B2 remove_entry; into definitionblock code_regex . insert begin Method (B1B2, 2, NotSerialized)\n {\n Return(Or(Arg0, ShiftLeft(Arg1, 8)))\n }\n end; into method label B1B4 remove_entry; into definitionblock code_regex . insert begin Method (B1B4, 4, NotSerialized)\n {\n Store(Arg3, Local0)\n Or(Arg2, ShiftLeft(Local0, 8), Local0)\n Or(Arg1, ShiftLeft(Local0, 8), Local0)\n Or(Arg0, ShiftLeft(Local0, 8), Local0)\n Return(Local0)\n }\n end; # RECB READ EC BUFFER # utility methods to read/write buffers from/to EC into method label RE1B parent_label EC0 remove_entry; into method label RECB parent_label EC0 remove_entry; into device label EC0 insert begin Method (RE1B, 1, NotSerialized)\n {\n OperationRegion(ERAM, EmbeddedControl, Arg0, 1)\n Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }\n Return(BYTE)\n }\n Method (RECB, 2, Serialized)\n {\n ShiftRight(Arg1, 3, Arg1)\n Name(TEMP, Buffer(Arg1) { })\n Add(Arg0, Arg1, Arg1)\n Store(0, Local0)\n While (LLess(Arg0, Arg1))\n {\n Store(RE1B(Arg0), Index(TEMP, Local0))\n Increment(Arg0)\n Increment(Local0)\n }\n Return(TEMP)\n }\n end; into method label WE1B parent_label EC0 remove_entry; into method label WECB parent_label EC0 remove_entry; into device label EC0 insert begin Method (WE1B, 2, NotSerialized)\n {\n OperationRegion(ERAM, EmbeddedControl, Arg0, 1)\n Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }\n Store(Arg1, BYTE)\n }\n Method (WECB, 3, Serialized)\n // Arg0 - offset in bytes from zero-based EC\n // Arg1 - size of buffer in bits\n // Arg2 - value to write\n {\n ShiftRight(Arg1, 3, Arg1)\n Name(TEMP, Buffer(Arg1) { })\n Store(Arg2, TEMP)\n Add(Arg0, Arg1, Arg1)\n Store(0, Local0)\n While (LLess(Arg0, Arg1))\n {\n WE1B(Arg0, DerefOf(Index(TEMP, Local0)))\n Increment(Arg0)\n Increment(Local0)\n }\n }\n end; # 32-bit REGISTERS BATTERY 0 # ONLY ONE USED BY FBIF into device label EC0 code_regex (B0SN),(\s+32) replace_matched begin 0SN0,8, 0SN1,8, 0SN2,8, 0SN3,8//%1%2 end; # VERIFIED # FIX 32-bit METHODS into method label FBIF code_regex \(\^\^SBRG\.EC0\.B0SN, replaceall_matched begin B1B4(^^SBRG.EC0.0SN0,^^SBRG.EC0.0SN1,^^SBRG.EC0.0SN2,^^SBRG.EC0.0SN3), end; # VERIFIED # FIX 64,48,96 METHODS into device label EC0 code_regex (B0DN,)\s+(64) replace_matched begin 0DNX,%2,//%1%2 end; #VERIFIED into device label EC0 code_regex (B0CM,)\s+(48) replace_matched begin 0CMX,%2,//%1%2 end; #VERIFIED into device label EC0 code_regex (B0MN,)\s+(96) replace_matched begin 0MNX,%2,//%1%2 end; #VERIFIED # FIX REGISTERS 64,48,96 into method label FBIF code_regex B0DN\), replace_matched begin WECB(0x81,64,0DNX), end; # 64 BIT VERIFIED into method label FBIF code_regex B0CM\), replace_matched begin WECB(0x89,48,0CMX), end; # 48 BIT VERIFIED into method label FBIF code_regex B0MN, replace_matched begin WECB(0x75,96,0MNX), end; # 96 BIT VERIFIED # 16-BIT REGISTERS BAT0 into device label EC0 code_regex (B0VL,)\s+(16,) replace_matched begin 0VL0,8,0VL1,8,//%1%2 end; # BVO1 VERIFIED into device label EC0 code_regex (B0CR,)\s+(16,) replace_matched begin 0CR0,8,0CR1,8,//%1%2 end; # BCR1 VERIFIED into device label EC0 code_regex (B0RC,)\s+(16,) replace_matched begin 0RC0,8,0RC1,8,//%1%2 end; # BRC1 FBIF VERIFIED into device label EC0 code_regex (B0FC,)\s+(16,) replace_matched begin 0FC0,8,0FC1,8,//%1%2 end; # BIF2 VERIFIED into device label EC0 code_regex (B0CC,)\s+(16,) replace_matched begin 0CC0,8,0CC1,8,//%1%2 end; # FBIF VERIFIED into device label EC0 code_regex (B0DC,)\s+(16,) replace_matched begin 0DC0,8,0DC1,8,//%1%2 end; # BIF1 VERIFIED into device label EC0 code_regex (B0DV,)\s+(16,) replace_matched begin 0DV0,8,0DV1,8,//%1%2 end; # BIF4 VERIFIED into device label EC0 code_regex (B0AH,)\s+(16,) replace_matched begin 0AH0,8,0AH1,8,//%1%2 end; # BIF4 VERIFIED # FIX 16-bit METHODS BAT0 into method label BVO1 code_regex \(B0VL, replaceall_matched begin (B1B2(0VL0,0VL1), end; # VERIFIED into method label BCR1 code_regex \(B0CR, replaceall_matched begin (B1B2(0CR0,0CR1), end; # VERIFIED into method label BRC1 code_regex \(B0RC, replaceall_matched begin (B1B2(0RC0,0RC1), end; # VERIFIED into method parent_label BAT0 code_regex \(\^\^SBRG\.EC0\.B0RC, replace_matched begin (B1B2(^^SBRG.EC0.0RC0,^^SBRG.EC0.0RC1), end; # VERIFIED 16 BIT into method parent_label BAT0 code_regex \(\^\^SBRG\.EC0\.B0CC, replace_matched begin (B1B2(^^SBRG.EC0.0CC0,^^SBRG.EC0.0CC1), end; # VERIFIED 16 BIT into method label BIF1 code_regex \(B0DC, replaceall_matched begin (B1B2(0DC0,0DC1), end; into method label BIF2 code_regex \(B0FC, replaceall_matched begin (B1B2(0FC0,0FC1), end; into method label BIF4 code_regex \(B0DV, replaceall_matched begin (B1B2(0DV0,0DV1), end; into method label _BTP code_regex \(Arg0,\s+\^\^SBRG\.EC0\.B0AH\) replace_matched begin (Arg0, B1B2(^^SBRG.EC0.0AH0,^^SBRG.EC0.0AH1)) end; into method label _BTP code_regex \(0x05,\s+\^\^SBRG\.EC0\.B0AH\) replace_matched begin (0x05, B1B2(^^SBRG.EC0.0AH0,^^SBRG.EC0.0AH1)) end; # disable BAT1 device into method label _STA parent_label BAT1 replace_content begin Return (Zero) end; # // - - Surface Pro 3 Hex Offset Calculation - - \\ #Offsets are in bytes (8bits make 1 Byte) #Offset then written in hex16 #Convert all lines to bits then to bytes then to hex #Offset (0x53), 83bytes 83*8 = 664bits staring point (now we are in bits) #B0TP, 16, 83bytes 83*8 = 664bits staring point (now we are in bits) #B0VL, 16, 664+16 = 680bits #B0CR, 16, 680+16 = 696bits #B0AC, 16, 696+16 = 712bits #B0ME, 16, 712+16 = 728bits #B0RS, 16, 728+16=744bits #B0RC, 16, 774+16=760bits #B0FC, 16, 760+16=776bits #B0MC, 16, 776+16=792bits #B0MV, 16, 792+16=808bits #B0ST, 16, 808+16=824bits #B0CC, 16, 824+16=840bits #B0DC, 16, 840+16=856bits #B0DV, 16, 856+16=872bits #B0SI, 16, 872+16=888bits #B0SN, 32, 888+16=904bits #B0MN, 96, 904+32=936/8 = 0x75 #B0DN, 64, 936+96=1032/8 = 129 = 0x81 #B0CM, 48, 1032+64=1096/8 = 137 = 0x89 #B0MA, 8, 1096+48=1144/8 = 143 =0x8f 2 Link to comment Share on other sites More sharing options...
hkoivuneva Posted October 16, 2015 Share Posted October 16, 2015 Awesome stuff. Especially that DSDT info! Thank you! Here's the Type Cover kext for 10.11, works at least for me on i3 SP3! IOUSBFamily.kext.zip Link to comment Share on other sites More sharing options...
ashwin1996 Posted August 4, 2016 Share Posted August 4, 2016 Last Updated 2016-June-20 OSX 10.11.5 This is what i have done so far to get my SP3 i5 256 working. Booting from SSD in USB3 Case as I am testing I do not want to mess with my Internal SP3 SSD. The build in not perfect but works. still early days. chat with us and share https://gitter.im/julianjc84/jc84_SP3_hookups Updates Notes I require the use of USBInjectAll.kext to fix the USBports for USB wifi adapter. Seems to only effect me with USB booting. OS,s installed on internal SSD seem to not have usb issue. Issues: minor video artifacts once system is booted below menu bar. No Battery What work and work great Intel 4400HD QI QE, Accelerated Video SDcard Reader Front Camera Rear Camera Trim Support Sound build in. Touch, Single input http://monstersoft.com/sp3/VoodooI2C.kext.5ms.zip do not use DSDT Surface Pro 4 Touch Cover, Single Input Tools Must have applications, the ones I recommend are as follows. IORegistryExplorer 2.1- registry look up and because every other version saves corrupt files http://www.tonymacx86.com/attachments/audio/24086d1341545382-guide-how-make-copy-ioreg-ioregistryexplorer-slrid_v10.6.3.zip MaciASL - rehabman edition for editing DSDT and SSDT APCI https://bitbucket.org/RehabMan/acpica/downloads iasl - decomplie DSDT and SSDT's from .aml to .dsl https://bitbucket.org/RehabMan/acpica/downloads ssdtPGen - generate powermanagment https://github.com/Piker-Alpha/ssdtPRGen.sh Pacifist - extract .pkg files and pull out the files you require with out installing https://www.charlessoft.com/ Clover Configurator - to edit them clover.plist files http://mackie100projects.altervista.org/download/ TextWrangler - to view some plist files http://www.barebones.com/products/textwrangler/ Clover - Clover_v2.3k_r3424 Formatted the EFI as FAT32 - I don't know if you need to do this. diskutil list #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *120.0 GB disk8 1: EFI EFI 209.7 MB disk8s1 2: Apple_HFS SSD1 60.0 GB disk8s2 3: Apple_HFS SSD2-damagedOS 59.5 GB disk8s3 newfs_msdos -F 32 -v EFI /dev/disk8s1 #formats disk8s1 as fat32 Clover Installer Settings Install for UEFI booting Only Install Clover in the ESP Drivers64UEFI CsmVideoDxe-64.efi DataHubDxe-64.efi OsxAptioFixDrv-64.efi PartitionDxe-64.efi Clover Configuration .plist clover.plist text Key values used for Intel 4400 for video QI QE. used in conjunction with fake FakePCIID_HD4600_HD4400.kext, FakePCIID.kext <key>ig-platform-id</key> <string>0x0a260006</string> <key>IntelGFX</key> <string>0x04128086</string> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>ACPI</key> <dict> <key>DSDT</key> <dict> <key>Debug</key> <false/> <key>DropOEM_DSM</key> <false/> <key>Fixes</key> <dict> <key>FixRegions_10000000</key> <true/> <key>NewWay_80000000</key> <true/> </dict> <key>Name</key> <string>DSDT.aml</string> <key>ReuseFFFF</key> <false/> </dict> <key>SSDT</key> <dict> <key>DropOem</key> <false/> <key>Generate</key> <false/> </dict> </dict> <key>Boot</key> <dict> <key>Arguments</key> <string>-v dart=0 kext-dev-mode=1 rootless=0</string> <key>Debug</key> <false/> <key>DefaultLoader</key> <string>boot.efi</string> <key>DefaultVolume</key> <string>SSD1</string> <key>Legacy</key> <string>PBR</string> <key>Secure</key> <false/> <key>Timeout</key> <integer>5</integer> <key>XMPDetection</key> <false/> </dict> <key>Devices</key> <dict> <key>FakeID</key> <dict> <key>IntelGFX</key> <string>0x04128086</string> </dict> <key>USB</key> <dict> <key>AddClockID</key> <true/> <key>FixOwnership</key> <true/> <key>Inject</key> <true/> </dict> </dict> <key>GUI</key> <dict> <key>Language</key> <string>en:0</string> <key>Mouse</key> <dict> <key>DoubleClick</key> <integer>500</integer> <key>Enabled</key> <false/> <key>Mirror</key> <false/> <key>Speed</key> <integer>8</integer> </dict> <key>Scan</key> <true/> <key>ScreenResolution</key> <string>1920x1080</string> </dict> <key>Graphics</key> <dict> <key>Inject</key> <dict> <key>ATI</key> <false/> <key>Intel</key> <true/> <key>NVidia</key> <false/> </dict> <key>NvidiaSingle</key> <false/> <key>ig-platform-id</key> <string>0x0a260006</string> </dict> <key>KernelAndKextPatches</key> <dict> <key>AppleRTC</key> <true/> <key>AsusAICPUPM</key> <false/> <key>Debug</key> <false/> <key>KernelCpu</key> <false/> <key>KernelHaswellE</key> <false/> <key>KernelLapic</key> <false/> <key>KernelPm</key> <false/> <key>KextsToPatch</key> <array> <dict> <key>Comment</key> <string>Enable TRIM for SSD confirmed works 10.11</string> <key>Find</key> <data> QVBQTEUgU1NE </data> <key>Name</key> <string>IOAHCIBlockStorage</string> <key>Replace</key> <data> AAAAAAAAAAAA </data> </dict> </array> </dict> <key>RtVariables</key> <dict> <key>BooterConfig</key> <string>0x28</string> <key>CsrActiveConfig</key> <string>0x67</string> <key>MLB</key> <string>C02032109R5DC771H</string> <key>ROM</key> <string>UseMacAddr0</string> </dict> <key>SMBIOS</key> <dict> <key>BiosReleaseDate</key> <string>05/24/13</string> <key>BiosVendor</key> <string>Apple Inc.</string> <key>BiosVersion</key> <string>MBA61.88Z.0099.B04.1305241529</string> <key>Board-ID</key> <string>Mac-7DF21CB3ED6977E5</string> <key>BoardManufacturer</key> <string>Apple Inc.</string> <key>BoardType</key> <integer>10</integer> <key>ChassisAssetTag</key> <string>Air-Enclosure</string> <key>ChassisManufacturer</key> <string>Apple Inc.</string> <key>ChassisType</key> <string>10</string> <key>Family</key> <string>MacBook Air</string> <key>Manufacturer</key> <string>Apple Inc.</string> <key>Mobile</key> <true/> <key>ProductName</key> <string>MacBookAir6,2</string> <key>SerialNumber</key> <string>CK228A27F5V8</string> <key>Trust</key> <false/> <key>Version</key> <string>1.0</string> </dict> <key>SystemParameters</key> <dict> <key>InjectKexts</key> <string>Detect</string> <key>InjectSystemID</key> <true/> </dict> </dict> </plist> Clover as Images https://dl.dropboxusercontent.com/u/11501640/CloverAs_jpg.zip DSDT and ssdt's Using a DSDT.aml will break, SD card reader, touch voodooi2c, front camera, rear camera. , , Exported DSDT from Clover boot menu with F4 (there is no feed back when generated except you see the files in EFI/EFI/CLOVER/APCI/origin You will see a bunch of files. I only kept the following //---- DSDT.aml SSDT-0 sata.aml SSDT-1 USB.aml SSDT-2-custom CPU.aml SSDT-7 GFX0.aml SSDT-8-custom nullethernet.aml DSDT.aml - main table SSDT-0.aml - SATA SSDT-1.aml - USB SSDT-2.aml - cpu based - not used after the decompile SSDT-3.aml - cpu based - not used after the decompile SSDT-7.aml - graphics //----- Drop all in a folder and run iasl https://bitbucket.org/RehabMan/acpica/downloads on them from terminal to decompile copy iasl into /usr/bin authenticate cd to where the dsdt files are. iasl -da -dl *.aml still pumps out a few errors but over all good. i think only 3 unresolved. if only i could make ref.txt i don't know how many variables run maciAsl add the patch repo http://raw.github.com/RehabMan/Laptop-DSDT-Patch/master patches applied. [sys] fix the _DSM in DSDT.dsl & SSDT-7.dsl[igpu] Rename GFX0 to IGPU to the DSDT.dsl & SSDT-7.dsl [igpu] brightness fix to the DSDT.dsl file only brightness slider only works after I have change the display resolution. File Save as ACPI machine language binary makes .AML Copy to: EFI/EFI/CLOVER/APCI/patched CPU patch https://github.com/Piker-Alpha/ssdtPRGen.sh curl -o ~/Library/ssdtPRGen.zip https://codeload.github.com/Piker-Alpha/ssdtPRGen.sh/zip/master unzip -qu ~/Library/ssdtPRGen.zip -d ~/Library/ mv ~/Library/ssdtPRGen.sh-master ~/Library/ssdtPRGen rm ~/Library/ssdtPRGen.zip added a copy of dsdt.aml file to ~/Library/ssdtPRGen ran ~/ssdtPRGen.sh The only differences I noticed if you do not add the dsdt.aml Warnings will show and the cpu reference are \_SB instead of _PR_ WITH DSDT /* * Intel ACPI Component Architecture * AML Disassembler version 20140926-64 [Oct 24 2014] * Copyright © 2000 - 2014 Intel Corporation * * Disassembly of iASL1qT1JT.aml, Sat Oct 17 15:10:51 2015 * * Original Table Header: * Signature "SSDT" * Length 0x00000624 (1572) * Revision 0x01 * Checksum 0x77 * OEM ID "APPLE " * OEM Table ID "CpuPm" * OEM Revision 0x00015600 (87552) * Compiler ID "INTL" * Compiler Version 0x20141107 (538185991) */ DefinitionBlock ("iASL1qT1JT.aml", "SSDT", 1, "APPLE ", "CpuPm", 0x00015600) { External (_PR_.CPU0, DeviceObj) External (_PR_.CPU1, DeviceObj) External (_PR_.CPU2, DeviceObj) External (_PR_.CPU3, DeviceObj) Scope (\_PR.CPU0) { Method (_INI, 0, NotSerialized) // _INI: Initialize { Store ("ssdtPRGen version....: 15.6 / Mac OS X 10.11 (15A284)", Debug) Store ("target processor.....: i5-4300U", Debug) Store ("running processor....: Intel® Core i5-4300U CPU @ 1.90GHz", Debug) Store ("baseFrequency........: 800", Debug) Store ("frequency............: 1900", Debug) Store ("busFrequency.........: 100", Debug) Store ("logicalCPUs..........: 4", Debug) Store ("maximum TDP..........: 15", Debug) Store ("packageLength........: 22", Debug) Store ("turboStates..........: 10", Debug) Store ("maxTurboFrequency....: 2900", Debug) } Name (APLF, Zero) Name (APSN, 0x0A) Name (APSS, Package (0x16) { Package (0x06) { 0x0B54, 0x3A98, 0x0A, 0x0A, 0x1D00, 0x1D00 }, Package (0x06) { 0x0AF0, 0x3A98, 0x0A, 0x0A, 0x1C00, 0x1C00 }, Package (0x06) { 0x0A8C, 0x3A98, 0x0A, 0x0A, 0x1B00, 0x1B00 }, Package (0x06) { 0x0A28, 0x3A98, 0x0A, 0x0A, 0x1A00, 0x1A00 }, Package (0x06) { 0x09C4, 0x3A98, 0x0A, 0x0A, 0x1900, 0x1900 }, Package (0x06) { 0x0960, 0x3A98, 0x0A, 0x0A, 0x1800, 0x1800 }, Package (0x06) { 0x08FC, 0x3A98, 0x0A, 0x0A, 0x1700, 0x1700 }, Package (0x06) { 0x0898, 0x3A98, 0x0A, 0x0A, 0x1600, 0x1600 }, Package (0x06) { 0x0834, 0x3A98, 0x0A, 0x0A, 0x1500, 0x1500 }, Package (0x06) { 0x07D0, 0x3A98, 0x0A, 0x0A, 0x1400, 0x1400 }, Package (0x06) { 0x076C, 0x3A98, 0x0A, 0x0A, 0x1300, 0x1300 }, Package (0x06) { 0x0708, 0x36E1, 0x0A, 0x0A, 0x1200, 0x1200 }, Package (0x06) { 0x06A4, 0x333D, 0x0A, 0x0A, 0x1100, 0x1100 }, Package (0x06) { 0x0640, 0x2FAC, 0x0A, 0x0A, 0x1000, 0x1000 }, Package (0x06) { 0x05DC, 0x2C2D, 0x0A, 0x0A, 0x0F00, 0x0F00 }, Package (0x06) { 0x0578, 0x28C1, 0x0A, 0x0A, 0x0E00, 0x0E00 }, Package (0x06) { 0x0514, 0x2567, 0x0A, 0x0A, 0x0D00, 0x0D00 }, Package (0x06) { 0x04B0, 0x221F, 0x0A, 0x0A, 0x0C00, 0x0C00 }, Package (0x06) { 0x044C, 0x1EE8, 0x0A, 0x0A, 0x0B00, 0x0B00 }, Package (0x06) { 0x03E8, 0x1BC3, 0x0A, 0x0A, 0x0A00, 0x0A00 }, Package (0x06) { 0x0384, 0x18B0, 0x0A, 0x0A, 0x0900, 0x0900 }, Package (0x06) { 0x0320, 0x15AE, 0x0A, 0x0A, 0x0800, 0x0800 } }) Method (ACST, 0, NotSerialized) { Store ("Method CPU0.ACST Called", Debug) Store ("CPU0 C-States : 29", Debug) Return (Package (0x06) { One, 0x04, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000000, // Address 0x01, // Access Size ) }, One, Zero, 0x03E8 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000010, // Address 0x03, // Access Size ) }, 0x03, 0xCD, 0x01F4 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000020, // Address 0x03, // Access Size ) }, 0x06, 0xF5, 0x015E }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000030, // Address 0x03, // Access Size ) }, 0x07, 0xF5, 0xC8 } }) } Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Store ("Method CPU0._DSM Called", Debug) If (LEqual (Arg2, Zero)) { Return (Buffer (One) { 0x03 /* . */ }) } Return (Package (0x02) { "plugin-type", One }) } } Scope (\_PR.CPU1) { Method (APSS, 0, NotSerialized) { Store ("Method _PR_.CPU1.APSS Called", Debug) Return (\_PR.CPU0.APSS) } Method (ACST, 0, NotSerialized) { Store ("Method CPU1.ACST Called", Debug) Store ("CPU1 C-States : 7", Debug) Return (Package (0x05) { One, 0x03, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000000, // Address 0x01, // Access Size ) }, One, 0x03E8, 0x03E8 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000010, // Address 0x03, // Access Size ) }, 0x02, 0x94, 0x01F4 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000030, // Address 0x03, // Access Size ) }, 0x03, 0xC6, 0xC8 } }) } } Scope (\_PR.CPU2) { Method (APSS, 0, NotSerialized) { Store ("Method _PR_.CPU2.APSS Called", Debug) Return (\_PR.CPU0.APSS) } Method (ACST, 0, NotSerialized) { Return (\_PR.CPU1.ACST ()) } } Scope (\_PR.CPU3) { Method (APSS, 0, NotSerialized) { Store ("Method _PR_.CPU3.APSS Called", Debug) Return (\_PR.CPU0.APSS) } Method (ACST, 0, NotSerialized) { Return (\_PR.CPU1.ACST ()) } } } External (_PR_.CPU0, DeviceObj) External (_PR_.CPU1, DeviceObj) External (_PR_.CPU2, DeviceObj) External (_PR_.CPU3, DeviceObj) WITHOUT DSDT - and wont load or give you pwr management /* * Intel ACPI Component Architecture * AML Disassembler version 20140210-00 [Feb 10 2014] * Copyright © 2000 - 2014 Intel Corporation * * Original Table Header: * Signature "SSDT" * Length 0x0000036A (874) * Revision 0x01 * Checksum 0x00 * OEM ID "APPLE " * OEM Table ID "CpuPm" * OEM Revision 0x00015600 (87552) * Compiler ID "INTL" * Compiler Version 0x20140210 (538182160) */ DefinitionBlock ("ssdt.aml", "SSDT", 1, "APPLE ", "CpuPm", 0x00015600) { without External (\_SB.CPU0, DeviceObj) External (\_SB.CPU1, DeviceObj) External (\_SB.CPU2, DeviceObj) External (\_SB.CPU3, DeviceObj) Scope (\_SB.CPU0) { Method (_INI, 0, NotSerialized) { Store ("ssdtPRGen version....: 15.6 / Mac OS X 10.11 (15A284)", Debug) Store ("target processor.....: i5-4300U", Debug) Store ("running processor....: Intel® Core i5-4300U CPU @ 1.90GHz", Debug) Store ("baseFrequency........: 800", Debug) Store ("frequency............: 1900", Debug) Store ("busFrequency.........: 100", Debug) Store ("logicalCPUs..........: 4", Debug) Store ("maximum TDP..........: 15", Debug) Store ("packageLength........: 22", Debug) Store ("turboStates..........: 10", Debug) Store ("maxTurboFrequency....: 2900", Debug) } Name (APLF, Zero) Name (APSN, 0x0A) Name (APSS, Package (0x16) { /* High Frequency Modes (turbo) */ Package (0x06) { 0x0B54, 0x003A98, 0x0A, 0x0A, 0x1D00, 0x1D00 }, Package (0x06) { 0x0AF0, 0x003A98, 0x0A, 0x0A, 0x1C00, 0x1C00 }, Package (0x06) { 0x0A8C, 0x003A98, 0x0A, 0x0A, 0x1B00, 0x1B00 }, Package (0x06) { 0x0A28, 0x003A98, 0x0A, 0x0A, 0x1A00, 0x1A00 }, Package (0x06) { 0x09C4, 0x003A98, 0x0A, 0x0A, 0x1900, 0x1900 }, Package (0x06) { 0x0960, 0x003A98, 0x0A, 0x0A, 0x1800, 0x1800 }, Package (0x06) { 0x08FC, 0x003A98, 0x0A, 0x0A, 0x1700, 0x1700 }, Package (0x06) { 0x0898, 0x003A98, 0x0A, 0x0A, 0x1600, 0x1600 }, Package (0x06) { 0x0834, 0x003A98, 0x0A, 0x0A, 0x1500, 0x1500 }, Package (0x06) { 0x07D0, 0x003A98, 0x0A, 0x0A, 0x1400, 0x1400 }, /* High Frequency Modes (non-turbo) */ Package (0x06) { 0x076C, 0x003A98, 0x0A, 0x0A, 0x1300, 0x1300 }, Package (0x06) { 0x0708, 0x0036E1, 0x0A, 0x0A, 0x1200, 0x1200 }, Package (0x06) { 0x06A4, 0x00333D, 0x0A, 0x0A, 0x1100, 0x1100 }, Package (0x06) { 0x0640, 0x002FAC, 0x0A, 0x0A, 0x1000, 0x1000 }, Package (0x06) { 0x05DC, 0x002C2D, 0x0A, 0x0A, 0x0F00, 0x0F00 }, Package (0x06) { 0x0578, 0x0028C1, 0x0A, 0x0A, 0x0E00, 0x0E00 }, Package (0x06) { 0x0514, 0x002567, 0x0A, 0x0A, 0x0D00, 0x0D00 }, Package (0x06) { 0x04B0, 0x00221F, 0x0A, 0x0A, 0x0C00, 0x0C00 }, Package (0x06) { 0x044C, 0x001EE8, 0x0A, 0x0A, 0x0B00, 0x0B00 }, Package (0x06) { 0x03E8, 0x001BC3, 0x0A, 0x0A, 0x0A00, 0x0A00 }, Package (0x06) { 0x0384, 0x0018B0, 0x0A, 0x0A, 0x0900, 0x0900 }, /* Low Frequency Mode */ Package (0x06) { 0x0320, 0x0015AE, 0x0A, 0x0A, 0x0800, 0x0800 } }) Method (ACST, 0, NotSerialized) { Store ("Method CPU0.ACST Called", Debug) Store ("CPU0 C-States : 29", Debug) /* Low Power Modes for CPU0 */ Return (Package (0x06) { One, 0x04, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000000, // Address 0x01, // Access Size ) }, One, Zero, 0x03E8 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000010, // Address 0x03, // Access Size ) }, 0x03, 0xCD, 0x01F4 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000020, // Address 0x03, // Access Size ) }, 0x06, 0xF5, 0x015E }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000030, // Address 0x03, // Access Size ) }, 0x07, 0xF5, 0xC8 } }) } Method (_DSM, 4, NotSerialized) { Store ("Method CPU0._DSM Called", Debug) If (LEqual (Arg2, Zero)) { Return (Buffer (One) { 0x03 }) } Return (Package (0x02) { "plugin-type", One }) } } Scope (\_SB.CPU1) { Method (APSS, 0, NotSerialized) { Store ("Method _SB.CPU1.APSS Called", Debug) Return (\_SB.CPU0.APSS) } Method (ACST, 0, NotSerialized) { Store ("Method CPU1.ACST Called", Debug) Store ("CPU1 C-States : 7", Debug) /* Low Power Modes for CPU1 */ Return (Package (0x05) { One, 0x03, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000000, // Address 0x01, // Access Size ) }, One, 0x03E8, 0x03E8 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000010, // Address 0x03, // Access Size ) }, 0x02, 0x94, 0x01F4 }, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000030, // Address 0x03, // Access Size ) }, 0x03, 0xC6, 0xC8 } }) } } Scope (\_SB.CPU2) { Method (APSS, 0, NotSerialized) { Store ("Method _SB.CPU2.APSS Called", Debug) Return (\_SB.CPU0.APSS) } Method (ACST, 0, NotSerialized) { Return (\_SB.CPU1.ACST ()) } } Scope (\_SB.CPU3) { Method (APSS, 0, NotSerialized) { Store ("Method _SB.CPU3.APSS Called", Debug) Return (\_SB.CPU0.APSS) } Method (ACST, 0, NotSerialized) { Return (\_SB.CPU1.ACST ()) } } } External (\_SB.CPU0, DeviceObj) External (\_SB.CPU1, DeviceObj) External (\_SB.CPU2, DeviceObj) External (\_SB.CPU3, DeviceObj) DSDTs used and how they came about. //----- DSDT.aml - from the clover f4 export SSDT-0.aml - sata SSDT-2.aml - cpu saved output generated with ssdtPRGen.sh script in conjunction with the above dsdt SSDT-7.aml - graphics from clover f4 export with igup patched above SSDT-8.aml - added for en0 Ethernet ID used with NullEthernet.kext (more info in kext section) //----- .kext used Kext installed EFI/EFI/CLOVER/kext/10.11 FakePCIID_Intel_HD_Graphics.kext - video from https://bitbucket.org/RehabMan/os-x-fake-pci-id/downloads FakePCIID.kext - link above FakeSMC.kext - version 6.16.1372 was it http://sourceforge.net/projects/hwsensors/ NullEthernet.kext - required for iMessage(not tested yet). NullEthernet requires injection: using SSDTmethod add with ssdt-rmne.aml renamed to SSDT-8.aml for loading the en0. The physical mac address supplied in the SSDT!. https://github.com/RehabMan/OS-X-Null-Ethernethttps://bitbucket.org/RehabMan/os-x-null-ethernet/downloads check that en0 is en0 with IORegistryExplorer, You may need to delete networkinginterfaces.plist from /Library/Preferences/SystemConfiguration and reboot, I had to delete as it was en2 will all the testing and changes i have been doing. Interesting. when I use NullEthernet I get video artifacts, applying the 9mb azul patch seems to have no effect. VoodooHDA.kext - audio, built in. -- // for wifi to work i need to use RehabMan-USBInjectAll USBInjectAll.kext else i get usb crashes. RtWlanU.kext - USB wifi for the EW-7811un wifi dongle http://www.edimax.us/html/english/frames/b-download.htm SurFacePro 4 Type Cover works out of the box on SurfacePro 3, however single touch only on track pad. Touch - Single Input User Environment as the DSDT file is messy, I2C only seems to pick up the touch with out a dsdt, the underdevelopment kext work pretty good. read more at: http://www.insanelymac.com/forum/topic/304487-i2c-hid-touchscreens-trackpads-and-more/ https://www.youtube.com/watch?v=1eSbTCgJP24 - this video is dated and old 100ms delay. You should really try the kext bellow. http://monstersoft.com/sp3/VoodooI2C.kext.5ms.zip Touch has never been so good in so long. Single Input only. Battery Fixes - incomplete, HELP learn more here: https://github.com/RehabMan/OS-X-ACPI-Battery-Driver too complex, maybe you can help? ? ? some background reading here to assist http://www.tonymacx86.com/el-capitan-laptop-support/116102-guide-how-patch-dsdt-working-battery-status.html The Code so far with so many errors and very incomplete. totally wrong *(*Y&^%& #Maintained by: RehabMan for: Laptop Patches #battery_Surface-Pro-v3.txt # created by JULIANJC84 2015-10-25 # works for: # Microsoft Surface Pro 3 into method label B1B2 remove_entry; into definitionblock code_regex . insert begin Method (B1B2, 2, NotSerialized)\n {\n Return(Or(Arg0, ShiftLeft(Arg1, 8)))\n }\n end; into method label B1B4 remove_entry; into definitionblock code_regex . insert begin Method (B1B4, 4, NotSerialized)\n {\n Store(Arg3, Local0)\n Or(Arg2, ShiftLeft(Local0, 8), Local0)\n Or(Arg1, ShiftLeft(Local0, 8), Local0)\n Or(Arg0, ShiftLeft(Local0, 8), Local0)\n Return(Local0)\n }\n end; # RECB READ EC BUFFER # utility methods to read/write buffers from/to EC into method label RE1B parent_label EC0 remove_entry; into method label RECB parent_label EC0 remove_entry; into device label EC0 insert begin Method (RE1B, 1, NotSerialized)\n {\n OperationRegion(ERAM, EmbeddedControl, Arg0, 1)\n Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }\n Return(BYTE)\n }\n Method (RECB, 2, Serialized)\n {\n ShiftRight(Arg1, 3, Arg1)\n Name(TEMP, Buffer(Arg1) { })\n Add(Arg0, Arg1, Arg1)\n Store(0, Local0)\n While (LLess(Arg0, Arg1))\n {\n Store(RE1B(Arg0), Index(TEMP, Local0))\n Increment(Arg0)\n Increment(Local0)\n }\n Return(TEMP)\n }\n end; into method label WE1B parent_label EC0 remove_entry; into method label WECB parent_label EC0 remove_entry; into device label EC0 insert begin Method (WE1B, 2, NotSerialized)\n {\n OperationRegion(ERAM, EmbeddedControl, Arg0, 1)\n Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }\n Store(Arg1, BYTE)\n }\n Method (WECB, 3, Serialized)\n // Arg0 - offset in bytes from zero-based EC\n // Arg1 - size of buffer in bits\n // Arg2 - value to write\n {\n ShiftRight(Arg1, 3, Arg1)\n Name(TEMP, Buffer(Arg1) { })\n Store(Arg2, TEMP)\n Add(Arg0, Arg1, Arg1)\n Store(0, Local0)\n While (LLess(Arg0, Arg1))\n {\n WE1B(Arg0, DerefOf(Index(TEMP, Local0)))\n Increment(Arg0)\n Increment(Local0)\n }\n }\n end; # 32-bit REGISTERS BATTERY 0 # ONLY ONE USED BY FBIF into device label EC0 code_regex (B0SN),(\s+32) replace_matched begin 0SN0,8, 0SN1,8, 0SN2,8, 0SN3,8//%1%2 end; # VERIFIED # FIX 32-bit METHODS into method label FBIF code_regex \(\^\^SBRG\.EC0\.B0SN, replaceall_matched begin B1B4(^^SBRG.EC0.0SN0,^^SBRG.EC0.0SN1,^^SBRG.EC0.0SN2,^^SBRG.EC0.0SN3), end; # VERIFIED # FIX 64,48,96 METHODS into device label EC0 code_regex (B0DN,)\s+(64) replace_matched begin 0DNX,%2,//%1%2 end; #VERIFIED into device label EC0 code_regex (B0CM,)\s+(48) replace_matched begin 0CMX,%2,//%1%2 end; #VERIFIED into device label EC0 code_regex (B0MN,)\s+(96) replace_matched begin 0MNX,%2,//%1%2 end; #VERIFIED # FIX REGISTERS 64,48,96 into method label FBIF code_regex B0DN\), replace_matched begin WECB(0x81,64,0DNX), end; # 64 BIT VERIFIED into method label FBIF code_regex B0CM\), replace_matched begin WECB(0x89,48,0CMX), end; # 48 BIT VERIFIED into method label FBIF code_regex B0MN, replace_matched begin WECB(0x75,96,0MNX), end; # 96 BIT VERIFIED # 16-BIT REGISTERS BAT0 into device label EC0 code_regex (B0VL,)\s+(16,) replace_matched begin 0VL0,8,0VL1,8,//%1%2 end; # BVO1 VERIFIED into device label EC0 code_regex (B0CR,)\s+(16,) replace_matched begin 0CR0,8,0CR1,8,//%1%2 end; # BCR1 VERIFIED into device label EC0 code_regex (B0RC,)\s+(16,) replace_matched begin 0RC0,8,0RC1,8,//%1%2 end; # BRC1 FBIF VERIFIED into device label EC0 code_regex (B0FC,)\s+(16,) replace_matched begin 0FC0,8,0FC1,8,//%1%2 end; # BIF2 VERIFIED into device label EC0 code_regex (B0CC,)\s+(16,) replace_matched begin 0CC0,8,0CC1,8,//%1%2 end; # FBIF VERIFIED into device label EC0 code_regex (B0DC,)\s+(16,) replace_matched begin 0DC0,8,0DC1,8,//%1%2 end; # BIF1 VERIFIED into device label EC0 code_regex (B0DV,)\s+(16,) replace_matched begin 0DV0,8,0DV1,8,//%1%2 end; # BIF4 VERIFIED into device label EC0 code_regex (B0AH,)\s+(16,) replace_matched begin 0AH0,8,0AH1,8,//%1%2 end; # BIF4 VERIFIED # FIX 16-bit METHODS BAT0 into method label BVO1 code_regex \(B0VL, replaceall_matched begin (B1B2(0VL0,0VL1), end; # VERIFIED into method label BCR1 code_regex \(B0CR, replaceall_matched begin (B1B2(0CR0,0CR1), end; # VERIFIED into method label BRC1 code_regex \(B0RC, replaceall_matched begin (B1B2(0RC0,0RC1), end; # VERIFIED into method parent_label BAT0 code_regex \(\^\^SBRG\.EC0\.B0RC, replace_matched begin (B1B2(^^SBRG.EC0.0RC0,^^SBRG.EC0.0RC1), end; # VERIFIED 16 BIT into method parent_label BAT0 code_regex \(\^\^SBRG\.EC0\.B0CC, replace_matched begin (B1B2(^^SBRG.EC0.0CC0,^^SBRG.EC0.0CC1), end; # VERIFIED 16 BIT into method label BIF1 code_regex \(B0DC, replaceall_matched begin (B1B2(0DC0,0DC1), end; into method label BIF2 code_regex \(B0FC, replaceall_matched begin (B1B2(0FC0,0FC1), end; into method label BIF4 code_regex \(B0DV, replaceall_matched begin (B1B2(0DV0,0DV1), end; into method label _BTP code_regex \(Arg0,\s+\^\^SBRG\.EC0\.B0AH\) replace_matched begin (Arg0, B1B2(^^SBRG.EC0.0AH0,^^SBRG.EC0.0AH1)) end; into method label _BTP code_regex \(0x05,\s+\^\^SBRG\.EC0\.B0AH\) replace_matched begin (0x05, B1B2(^^SBRG.EC0.0AH0,^^SBRG.EC0.0AH1)) end; # disable BAT1 device into method label _STA parent_label BAT1 replace_content begin Return (Zero) end; # // - - Surface Pro 3 Hex Offset Calculation - - \\ #Offsets are in bytes (8bits make 1 Byte) #Offset then written in hex16 #Convert all lines to bits then to bytes then to hex #Offset (0x53), 83bytes 83*8 = 664bits staring point (now we are in bits) #B0TP, 16, 83bytes 83*8 = 664bits staring point (now we are in bits) #B0VL, 16, 664+16 = 680bits #B0CR, 16, 680+16 = 696bits #B0AC, 16, 696+16 = 712bits #B0ME, 16, 712+16 = 728bits #B0RS, 16, 728+16=744bits #B0RC, 16, 774+16=760bits #B0FC, 16, 760+16=776bits #B0MC, 16, 776+16=792bits #B0MV, 16, 792+16=808bits #B0ST, 16, 808+16=824bits #B0CC, 16, 824+16=840bits #B0DC, 16, 840+16=856bits #B0DV, 16, 856+16=872bits #B0SI, 16, 872+16=888bits #B0SN, 32, 888+16=904bits #B0MN, 96, 904+32=936/8 = 0x75 #B0DN, 64, 936+96=1032/8 = 129 = 0x81 #B0CM, 48, 1032+64=1096/8 = 137 = 0x89 #B0MA, 8, 1096+48=1144/8 = 143 =0x8f can you please tell me how to install touch driver when i try to load VoodooI2C.kext with terminal by sudo kextload VoodooI2C.kext i get this error(it is present in the location) /Users/ashwin/VoodooI2C.kext failed to load - (libkern/kext) authentication failure (file ownership/permissions); check the system/kernel logs for errors or try kextutil(8). also is there a way to have scrolling with touchpad like on windows thank you Link to comment Share on other sites More sharing options...
Recommended Posts