Jump to content

[Guide] Yosemite on Acer Aspire V5-171-6675 Using Clover


shinzon

Recommended Posts

V5-171-6675 Post Install

This post assumes you've installed Yosemite and are booting with the latest version of Clover. This post assumes a certain level of experience, and is meant more as a collection of solutions than a step-by-step guide. By the end of this post, all your hardware should work flawlessly, and OSX maintenance upgrades (e.g. 10.10.2 > 10.10.3) should install without trashing your system.

Since there are different V5-171-* variants, my system specs are as follows:

Acer Aspire V5-171-6675
Intel Core i3-2377M
HM77 chipset (this is a mixed system, a sandy bridge processor on a Series 7, Ivy Bridge board)
Intel HD3000 graphics, 1366x768
Elantech Touchpad with v4 hardware
Anatel Atheros AR5B22
InsydeH20 EFI 3.7
System BIOS Version 2.10
Clover Bootloader r3193 (as of the time of this writing) [booting in EFI mode]
OSx 10.10.2 Yosemite (as of the time of this writing)

Information/Resources
 

  • The MacBookPro8,1 uses a Sandy Bridge Core i5 with HD3000 graphics on an Intel Series 6 board. You can referene this model for anything CPU or graphics related.
  • The MacBookPro9,2 uses an Ivy Bridge Core i5 with HD4000 graphics on an Intel Series 7 board. It's useful to emulate this model if you want working native USB3. If you can live with using a third-party USB driver, stick wtih MacBookPro8,1.
  • The Retina MacBookPro10,1 uses an Ivy Bridge Core i7 with both HD4000 and Nvidia GeForce GT 650M graphics. While the processor and graphics package on this mac are wrong, it uses the exact same HM77 chipset that the V5-171-6675 does, and is thus useful to refence for anything chipset (USB, SATA, etc.) related. Also, since, in theory, Power Nap is supported by our hardware, it may be useful to emulate this model to gain access to that feature. More on that to follow in the future.

 

One can find dumps (DSDT, IOReg, etc.) for real Mac hardware at the following link:
http://tdev.me/2010/12/apple-hardware-dumps/

Hardware status:
[Working] Wireless (swapped to Dell DW1510)
[Working] Ethernet
[Working] Audio (including Internal Microphone, Line In/Out)
[Working] USB2/3 (using native Apple kexts)
[Working] Backlight
[Working] Battery
[Working] HD3000 Graphics (with full acceleration)
[Working] VGA port [buggy]
[Working] HDMI port (including audio over HDMI)
[Working] SDCard Reader [Works OOTB]
[Working] Webcam [Works OOTB]
[Working] Keyboard/Trackpad (including Fn keys)

[Working] Sleep/Wake
[Working] Hibernate
[Working] Facetime/iMessage

Basic kexts you'll need. Install all kexts to ../Clover/kexts/10.10/ unless otherwise specified:
FakeSMC
https://bitbucket.org/RehabMan/os-x-fakesmc-kozlek/downloads
ElanTouchpad Driver
https://osxlatitude.com/index.php?/topic/1948-elan-and-focaltech-smart-touchpad-driver-mac-os-x/

Clover Configuration

My clover config is attached to this post, and can likely be used as is (generate your own SMBIOS), but in general:
 

  • Disable all ACPI DSDT edits except for New Way and Fix Regions
  • Use the wizard to generate an smbios of MacBookPro8,1
  • Nearly everything clover offers should be disabled (graphics, USB, etc.). We'll fix things in other ways.


My Bootflags: -v kext-dev-mode=1 slide=0 dart=0

Clover Drivers:

Drivers present in ../Clover/drivers64UEFI/

FSInject-64.efi
HFSPlus.efi - Needed for Clover to read HFS+ formatted partitions.
NTFS.efi - Needed for Clover to read NTFS formatted partitions (if you're dual-booting with windows).
OsxAptioFix2Drv-64.efi - Needed to enable hibernation when booted in UEFI mode, to fix the persistence of the hardware NVRam, and to allow use of slide=0, which fixes random graphical glitch issues with the HD3000 graphics, without breaking sleep.
OsxFatBinaryDrv-64.efi - Needed for Clover to read Fat32 formatted partitions.

DSDT

Get the stock ACPI tables. I booted into Ubuntu Linux for this.

You should now have your stock DSDT and SSDTs.

The first step is to correct any errors (Patch at end of section). Mine had a single error:
 

Result is not used. Operator has no effect: line 6114

[I]Original:[/I]

    Method (_L1F, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
    {
        Not (LPDL, LPDL)
        If (LEqual (\_SB.PCI0.LPCB.EC0.IOAC, Zero))
        {
            Store (\_SB.PCI0.LPCB.EC0.LIDF, Local0)
            Not (Local0, Local0)
            If (LGreaterEqual (OSYS, 0x07D6))
            {
                [B]Add (Local0, 0x02)[/B]
                \_SB.PCI0.GFX0.GLID (Local0)
            }

            Notify (\_SB.PCI0.LPCB.LID0, 0x80)
        }
        Else
        {
            If (LEqual (\_SB.PCI0.LPCB.EC0.LIDF, One))
            {
                \_SB.PCI0.GFX0.GLID (0x03)
            }
        }
    }
}

[I]Corrected: [deleted bolded line][/I]

    Method (_L1F, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
    {
        Not (LPDL, LPDL)
        If (LEqual (\_SB.PCI0.LPCB.EC0.IOAC, Zero))
        {
            Store (\_SB.PCI0.LPCB.EC0.LIDF, Local0)
            Not (Local0, Local0)
            If (LGreaterEqual (OSYS, 0x07D6))
            {
                \_SB.PCI0.GFX0.GLID (Local0)
            }

            Notify (\_SB.PCI0.LPCB.LID0, 0x80)
        }
        Else
        {
            If (LEqual (\_SB.PCI0.LPCB.EC0.LIDF, One))
            {
                \_SB.PCI0.GFX0.GLID (0x03)
            }
        }
    }
}

I also fixed two warnings:
 

Not all control paths return a value WM00: line 4783
[I]original:[/I]

Method (WM00, 3, NotSerialized)
{
    Store ("00", CTID)
    If (LEqual (Arg1, 0x06))
    {
        CSMI (Arg1, Arg2)
        Return (DI00)
    }
    
[I]edited: [added the bold][/I]

Method (WM00, 3, NotSerialized)
    {
        Store ("00", CTID)
        If (LEqual (Arg1, 0x06))
        {
            CSMI (Arg1, Arg2)
            Return (DI00)
        }
        [B]Return (Buffer (One)
        {
            0x00
        })[/B]
    }
Resource tag larger than feild 64bit tag, 32bit feild: line 1488

[I]Original:[/I]

If (LOr (LEqual (MM64, Zero), LLessEqual (OSYS, 0x07D3)))
{
    [B]CreateDWordField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN)[/B]  // _LEN: Length
    Store (Zero, MSLN)
}

[I]Edited: [changed CreateDWordField to CreateQWordField][/I]

If (LOr (LEqual (MM64, Zero), LLessEqual (OSYS, 0x07D3)))
{
    [B]CreateQWordField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN)[/B]  // _LEN: Length
    Store (Zero, MSLN)
}

I also created a patch that automates the above changes, taking care of the error, and both warnings, and also addresses the vast majority of the remarks:

# Fix Error "Result is not used, operator has no effect" Line 5690
into method label _L1F parent_label _GPE code_regex Add\s\(Local0\,\s0x02\) remove_matched;

# Fix Warning "ResourceTag larger than Field (Size mismatch, Tag: 64 bits, Field: 32 bits)" Line 1488
into method label _CRS parent_hid PNP0A08 code_regex CreateDWordField\s\(BUF0\,\s\\\_SB\.PCI0\.\_Y0F replace_matched begin CreateQWordField (BUF0, \\_SB.PCI0._Y0F end;

# Fix Warning "Not all control paths return a value (WM00)" Line 4783
into method label WM00 parent_hid PNP0C14 insert begin
                    Return (Buffer (One)\n
                    {\n
                        0x00\n
                    })\n
end;

# Fix Remark "Use of compiler reserved name (_T_0)"
into_all all code_regex _T_([0-9]) replaceall_matched begin T_%1 end;

DSDT should now compile without any errors or warnings. Save a virgin copy so you can backtrack if you make any mistakes.

Now we begin patching. Nearly all of the patches I used are from RehabMan's laptop patch repo:

https://github.com/RehabMan/Laptop-DSDT-Patch

Basic Recommended Patches

Add MCHC
https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/system/system_MCHC.txt
Fix Mutex
https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/system/system_Mutex.txt
Masquerade OSX ("Darwin") as Windows 8 ("Windows 2012")
https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/system/system_OSYS_win8.txt
SMBus Fix
https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/system/system_SMBUS.txt

HD3000 Graphics

Apply following patches from the repo to your DSDT:

Rename GFX0 to IGPU (apply first)
https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/graphics/graphics_Rename-GFX0.txt
Enable HD3000 on a Series 7 board
https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/graphics/graphics_MEI_sandy.txt
Inject HDMI info
https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/graphics/graphics_HD3K_low.txt

Must have MacBookPro8,1 SMBios.

Power Management

This is accomplished through Clover, or a custom SSDT.

I use a custom generated SSDT.aml placed into ../Clover/ACPI/patched/ to handle my power management.

USB

USB can be enabled in two ways: the easy way, and (slightly) more difficult way.

The easy way is to install GenericUSBXHCI.kext
https://github.com/RehabMan/OS-X-Generic-USB3

The harder way is to enable USB using the stock Apple kexts (the method I use). I'll cover that later in the post.

Audio

Audio required much fiddling. The V5-171-6675 uses an ALC271x codec. One can find a working kext here:
http://www.insanelymac.com/forum/topic/298663-applehda-for-yosemite/
that will give you functioning internal speakers, and headphone jack after applying the following DSDT layout patch:

# Maintained by: toleda for: github.com/toleda/audio_alc8xx
# File: hdef3-alc8xx_audio-3.txt_v2.0
# Credit: PikeRAlpha
#
# Add_HDEF, for dsdts with no HDEF, set Audio_ID: 3
#
# 1. Enable Audio ID: 3, Add HDEF/layout-id=3
into method label _DSM parent_adr 0x001B0000 remove_entry;
into device name_adr 0x001B0000 insert
begin
    Method (_DSM, 4, NotSerialized)\n
    {\n
        If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
        Return (Package()\n
        {\n
            "layout-id", Buffer() { 0x03, 0x00, 0x00, 0x00 },\n
            "PinConfigurations", Buffer(Zero) {},\n
              "hda-gfx", Buffer() { "onboard-1" },\n
        })\n
    }\n
end;

but to get the internal microphone working, and to make sound survive OSX upgrades, some further work is needed.

To make sound update-proof, you need to have Clover patch AppleHDA.kext on the fly, and use an injector kext to supply the stock AppleHDA.kext with information about our codec. Starting with the above kext for ALC271x, I followed this guide:
http://www.insanelymac.com/forum/topic/298027-guide-aio-guides-for-hackintosh/page-2#entry2030060

to create a DummyHDA.kext. If installed to /System/Library/Extensions along side the untouched AppleHDA.kext, and Clover has the following patches applied (an explanation of how to generate your Clover patches with a script is in the thread linked above), the system should now have sound (but no mic).

            <dict>
                <key>Comment</key>
                <string>Expect 2 matches</string>
                <key>Find</key>
                <data>
                hAjsEA==
                </data>
                <key>Name</key>
                <string>AppleHDA</string>
                <key>Replace</key>
                <data>
                AAAAAA==
                </data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Expect 2 matches</string>
                <key>Find</key>
                <data>
                hQjsEA==
                </data>
                <key>Name</key>
                <string>AppleHDA</string>
                <key>Replace</key>
                <data>
                AAAAAA==
                </data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Expect 2 matches</string>
                <key>Find</key>
                <data>
                hBnUEQ==
                </data>
                <key>Name</key>
                <string>AppleHDA</string>
                <key>Replace</key>
                <data>
                aQLsEA==
                </data>
            </dict>

To fix the internal microphone, you'll need to edit the pathmaps and codec information you added to DummyHDA.kext. My DummyHDA.kext with these edits already made is attached to this post, and can likely be used without modification on another V5-171-6675.

Relevant Tutorial Thread:
http://www.insanelymac.com/forum/topic/295001-guide-to-patch-applehda-for-your-codec/

The ALC271x kext from which we took the files uses layout 3, and pathmap id 269 (under path 48 in platforms.xml).

Structure of pathmaps.xml from downloaded ALC271x kext in PlistEdit Pro:

PathMaps
     |
     [0-47]
     |
     48-[Contains PathMapID for our codec used by ALC271x pathced kext, 269]
         |
         [B]PathMapID: 269[/B]
         |
         PathMap
              |
              0-INPUT
              |    |
              |    0—Line In
              |    |    |
              |    |    0 Input NodeID
              |    |    |
              |    |    1 Mixer/Selector NodeID
              |    |    |
              |    |    2 Pin Complex NodeID
              |    |
              |    [B]1—Internal Microphone[/B]
              |         [B]|[/B]
              |         [B]0 Input NodeID[/B]
              |         [B]|[/B]
              |         [B]1 Mixer/Selector NodeID[/B]
              |         [B]|[/B]
              |         [B]2 Pin Complex NodeID[/B]
              |
              1—OUTPUT
                   |
                   0—Internal Speakers
                   |    |
                   |    0 Pin Complex NodeID
                   |    |
                   |    1 Mixer/Selector NodeID
                   |    |
                   |    2 Output NodeID
                   |
                   1—Headphone Jack
                        |
                        0 Pin Complex NodeID
                        |
                        1 Mixer/Selector NodeID
                        |
                        2 Output NodeID

NodeIDs for V5-171-6675:

Line in
Input 9
Selector 34
Complex 18

Microphone
Input 8
Mixer 35
Complex 27


Internal Speaker
Pin Complex 20
Mixer 13
Output 3

Headphone
Pin Complex 33
Mixer 12
Output 2

In the pathmap.xml we took from the ALC271x's kext and placed into DummyHDA.kext, it was only necessary to change the mic’s pin complex from 24 to 27, all the other nodes were correct already.

The next step is to edit the codec verbs for the microphone as follows:

Original:
01471c10 01471d00 01471e17 01471f90 [B]01b71c20 01b71d00 01b71ea7 01b71f90[/B] 01d71c30 01d71d90 01d71e18 01d71f40 02171c40 02171d10 02171e21 02171f00

Corrected:
01471c10 01471d00 01471e17 01471f90 [B]01471c10 01471d00 01471e17 01471f90[/B] 01d71c30 01d71d90 01d71e18 01d71f40 02171c40 02171d10 02171e21 02171f00

As you can see I changed the second set of four verbs (bold) from:
01b71c20 01b71d00 01b71ea7 01b71f90
to:
01471c10 01471d00 01471e17 01471f90

as per bcc9’s script. Everything else in this kext matches the verbs provided by the script.

If you edit the info.plist file in a text editor, you’ll need to convert the codec verb string from hex to base64.

The info.plist edits should look like this:

Original:
        <key>CodecID</key>
        <integer>283902569</integer>
        <key>ConfigData</key>
        <data>
        AUccEAFHHQABRx4XAUcfkAG3HCABtx0AAbce
        pwG3H5AB1xwwAdcdkAHXHhgB1x9AAhccQAIX
        HRACFx4hAhcfAA==
        </data>

Corrected:
        <key>CodecID</key>
        <integer>283902569</integer>
        <key>ConfigData</key>
        <data>
        AYccMAGHHRABhx6BAYcfAAGXHEABlx0AAZce
        oAGXH5ABtxwQAbcdAAG3HhMBtx+QAhccYAIX
        HRACFx4hAhcfAAG3DAI=
        </data>
                    

Install the edited dummy kext to /System/Library/Extensions, rebuild the kext cache, reboot, and sound should work (make sure you have the stock, untouched AppleHDA.kext in /System/Library/Extensions, not the downloaded ALC271x kext).

With these changes, the files taken from the modified ALC271x AppleHDA and placed into DummyHDA will allow the stock AppleHDA.kext to load, provide sound/mic, and sound will survive OSX upgrades.

Wireless

Not possible. Replace the card with a Dell 1510, or similar OSX compatible card. Note that the DW1510 does not have Bluetooth, and the V5-171-6675's Bluetooth chip is integrated on the stock wireless card. If Bluetooth is important to you, you'll have to use a different card.

Ethernet

The V5-171-6675 has a Netlink BCM57785. To ensure that ethernet survives OSX upgrades, I used FakePCID and an injector to load the stock Apple network kext.
https://github.com/RehabMan/OS-X-Fake-PCI-ID

Add FakePCID.kext and FakePCIID_BCM57XX_as_BCM57765.kext to ../Clover/kext/10.10, reboot, and ethernet works.

Battery

Done with Rehabman's ACPI Battery Driver:
https://github.com/RehabMan/OS-X-ACPI-Battery-Driver
and a DSDT edit, utilizing this patch from the repo:
https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/battery/battery_Acer-Aspire-E1-571.txt

HDMI Audio & VGA

I followed this guide:
https://osxlatitude.com/index.php?/topic/1969-guide-for-enabling-vga-and-hdmi-in-intel-hd3000-gpu/

which resulted in the following Clover kext Patch:

            <dict>
                <key>Comment</key>
                <string>VGA HDMI Audio</string>
                <key>Find</key>
                <data>
                AQIEABAHAAAQBwAABQMAAAIAAAAwAAAAAgUAAAAEAAAH
                AAAAAwQAAAAEAAAJAAAABAYAAAAEAAAJAAAA
                </data>
                <key>Name</key>
                <string>AppleIntelSNBGraphicsFB</string>
                <key>Replace</key>
                <data>
                AQIDABAHAAAQBwAABQMAAAIAAAAwAAAAAgUAAAAIAAAH
                AAAABgIAAAABAAAIAAAAAAAAAAAAAAAAAAAA
                </data>
            </dict>

Brightness Control

Apply following patch from the repo to your DSDT:
https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/graphics/graphics_PNLF_ivy_sandy.txt

That patch will get rudimentary brightness controls working, but for full control, in conjunction with that patch, you'll either need to install Rehabman's Backlight kext:
https://github.com/RehabMan/OS-X-ACPI-Backlight

Follow the steps in that thread to use PatchAppleBacklight_v2.zip to create an injector kext. Install the kext in /System/Library/Extensions (doesn't load from ../Clover/kexts/10.10), rebuild the kext cache, reboot and you should have full backlight control. My injector kext with this work done is attached.

Brightness Keys

Fn+LArrow for brightness down
Fn+RArrow for brightness up

The V5-171-6675 uses DSDT ec query method _Q11 for brightness down, and _Q12 for brightness up.

As of version 4.3 of the Elantech driver, there is native support for ACPI brightness keys, releaving us of the need to use a middleman kext to enable them. With this new version, you only need to apply this simple DSDT patch to get the keys working:

#Edit methods _Q11 and _Q12 to interface with KBC0
into method label _Q11 replace_content
begin
// Brightness Down\n
Notify (KBC0, 0x20)\n
end;

into method label _Q12 replace_content
begin
// Brightness Up\n
Notify (KBC0, 0x10)\n
end;

Note that by default the driver has FinerBrightnessControl set to true in it's info.plist, breaking brightness control into 64 steps, as opposed to the normal 16 that OS X uses. See this thread for more information on how to configure the Elantech driver:

https://osxlatitude.com/index.php?/topic/5969-details-about-the-enhanced-keyboard-for-elan-touchpad-driver/

Hibernation, Hardware NVRam, Facetime & iMessage

When booting in UEFI mode, Hibernation can be enabled by including the OsxAptioFix2Drv-64.efi Clover driver when you install. With this driver included, hibernation, set to mode 3 (safe sleep) by default, will work with no other changes. To test this, sleep the laptop with the A/C cable disconnected, and then pull the battery. With the battery reattached, when the laptop is powered on, Clover should say (Hibernated) next to your OSX partition, and when selected, your computer should return to the state it was in when you put it to sleep.

Including OsxAptioFix2Drv-64.efi also fixes the hardware NVRam, allowing one to forgo including Clover's NVRam emulator, EmuVariableUefi-64.efi. Without either driver installed, NVRam contents does not persist across reboots.

Functional NVRram, whether Clover's emulator, or the hardware NVRam, is required for Facetime & Messages to work. 

In short, it is necessary to go through the steps of ensuring a unique serial number, to ensure NVRam works, and to call Apple.

Optional: Trim Support (for those with SSDs)

As of 10.10.4, one only needs to run the below command in terminal to enable trim on 3rd party ssds.

$ sudo trimforce enable

DEPRECATED AS OF 10.10.4: Done with a Clover kext patch:
http://clover-wiki.zetam.org/Configuration/KernelAndKextPatches

            <dict>
                <key>Comment</key>
                <string>Trim Enabler</string>
                <key>Find</key>
                <data>
                AEFQUExFIFNTRAA=
                </data>
                <key>Name</key>
                <string>IOAHCIBlockStorage</string>
                <key>Replace</key>
                <data>
                AAAAAAAAAAAAAAA=
                </data>
            </dict>

Optional: Use Native Apple Kexts for USB2/3

Generally, for computers like ours that use an Intel Series 7 board, the application of these two patches enables USB3.0 and USB multiplexing.

https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/usb/usb_7-series.txt'>https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/usb/usb_7-series.txt
https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/usb/usb_7-series-multiplex.txt'>https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/usb/usb_7-series-multiplex.txt

If you've been following this guide, this will not work on your V5-171-6675. The root of this problem is that the -6675 is a mixed system, a Series 6 (Sandy Bridge) processor on a Series 7 (Ivy Bridge) motherboard. Due to the Sandy Bridge processor, to enable graphics and power management, it is necessary to set a MacBookPro8,1 (late-2011 Mac Book Pro) SMBios.

The problem with using that particular SMBios on our laptop is that the late 2011 Mac Book Pro did not come with USB3.0. Because of that, while using the MacBookPro8,1 SMBios, it is not possible to enable the USB3.0 ports using the native Apple USB kexts.

To get around this, it is necessary to switch to a MacBookPro9,2 (mid-2012 Mac Book Pro) SMBios in Clover. The Mid 2012 Mac Book Pro came with an Ivy Bridge processor on an Series 7 board, and had USB3.0. To use this system definition with the V5-171-6675's Sandy Bridge processor and graphics package, it is necessary to use kexts to inject the relevant MacBookPro8,1 values into the MacBookPro9,2 system definition.

Fortunately, the people that contribute to ProBook Installer have already figured this out for us. This can be done with ACPI_SMC_PlatformPlugin_MacBookPro9_2.kext, and AppleGraphicsPowerManagement_MacBookPro9_2.kext. The sourcecode for both can be found here:
https://bitbucket.org/dhnguyenit/hp-probook-installer-clover-edition/src/7a3537896c5466d911a6e0b9feabe5e5e3364693/OSX%20Support%20Files/CommonKexts/Extensions/ACPI_SMC_PlatformPlugin_MacBookPro9_2.kext/Contents/?at=master

Since from Ivy Bridge forward OSX uses X86PlatformPlugin instead of ACPI_SMC_PlatformPlugin, the first injector kext loads the correct PlatformPlugin to handle our Sandy Bridge processor. Since we are now using an SMBios with HD4000 graphics, it is also necessary to install an injector kext to make AppleGraphicsPowerManagement load with HD3000 values.

You can either get this kext from ProBook Installer, or checkout the above linked code with Xcode (I've also included my build, current as of this writing, as an attachment to this post). After using the Clover wizard to generate a MacBookPro9,2 SMBios, install those extensions to /System/Library/Extensions, rebuild the kernel cache, and patch your DSDT with these patches:

https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/usb/usb_7-series.txt (apply first)
https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/usb/usb_7-series-multiplex.txt

Multiplex patch needs a couple of minor edits to work with this laptop. First, our bios uses Name not Method for USB _PWR. Find the line that reads:


Method (_PRW, 0, NotSerialized) { Return (GPRW (0x0D, 0x04)) }\n

and edit it to read:

Name (_PRW, Package () { 0x0D, 0x03 })\n

Also in the multiplex patch, find the line that reads:

"AAPL,device-internal", 0x02,\n

and edit it to read:

"AAPL,device-internal", Zero,\n

to match what the MacBookPro9,2, and the MacBookPro10,1 (same chipset) uses. It uses "AAPL,device-internal", 0x02, for ECH1 and ECH2, and 0x00 (Zero) for XHC1.

Now, reboot (MAKE SURE YOU UNINSTALL GenericUSBXHCI.kext!), and USB should be fully functional using native Apple kexts.

Optional: Rename Devices in DSDT to Match Apple Conventions

I created a patch that renames all relevant devices in the DSDT to match what OSX expects. This patch is purely cosmetic; apply at your own risk.

Renames:
EC0 > EC
SAT0 > SATA
ACAD > ADP1
BAT1 > SMB0
PXSX@RP02 > ARPT
PXSX@RP03 > GIGE
CRF1 > SDXC
XHC > XHC1

# Rename EC0 to EC (embedded controller) to be more Apple-like
into device label EC0 set_label begin EC end;
into scope label EC0 set_label begin EC end;
into_all all code_regex \.EC0\. replaceall_matched begin \.EC\. end;
into_all all code_regex \^EC0\. replaceall_matched begin \^EC\. end;

# Rename SAT0 to SATA (serial ata) to be more Apple-like
into device label SAT0 set_label begin SATA end;

# Rename ACAD (ac adapter) to ADP1 to be more Apple-like
into device label ACAD set_label begin ADP1 end;
into method label _Q37 parent_hid PNP0C09 code_regex ACAD replaceall_matched begin ADP1 end;
into method label _Q38 parent_hid PNP0C09 code_regex ACAD replaceall_matched begin ADP1 end;

# Rename BAT1 (battery) to SMB0 to be more Apple-like
into device label BAT1 parent_label _SB.PCI0.LPCB set_label begin SMB0 end;
into_all all code_regex Notify\s\(BAT1 replaceall_matched begin Notify (SMB0 end;

# Rename PXSX at RP02 (wireless) to ARPT to be more Apple-like
into device label PXSX parent_adr 0x001C0001 set_label begin ARPT end;
into method label HPME parent_adr 0x001C0001 code_regex PXSX replaceall_matched begin ARPT end;

# Rename PXSX at RP03 (ethernet) to GIGE to be more Apple-like
into device label PXSX parent_adr 0x001C0002 set_label begin GIGE end;
into method label HPME parent_adr 0x001C0002 code_regex PXSX replaceall_matched begin GIGE end;

# Rename CRF1 at RP03 (sdcard reader) to SDXC to be more Apple-like
into device label CRF1 parent_adr 0x001C0002 set_label begin SDXC end;

# Rename XHC to XHC1 (usb3.0) to be more Apple-like
into device label XHC set_label begin XHC1 end;
into_all all code_regex \^XHC\. replaceall_matched begin \^XHC1\. end;

Optional: Implement Compiler Recommended DSDT Optimizations

I created a patch that addresses the vast majority of the optimizations the compiler suggests. Again, use at your own risk.

# Optimization Change \_SB.PCI0._Y0* to ^_Y0*
into_all all code_regex \\_SB\.PCI0\._Y0([0-9]) replaceall_matched begin \^_Y0%1 end;
into_all all code_regex \\_SB\.PCI0\._Y0([A-F]) replaceall_matched begin \^_Y0%1 end;

# Optimization: Change \_SB.PCI0.LPCB.HPET.Y1* to ^_Y1*
into_all all code_regex \\_SB\.PCI0\.LPCB\.HPET\._Y1([0-9]) replaceall_matched begin \^_Y1%1 end;

# Optimization: Change \_SB.PCI0.PDRC._Y1* to ^_Y1*
into_all all code_regex \\_SB\.PCI0\.PDRC\._Y1([0-9]) replaceall_matched begin \^_Y1%1 end;

# Optimization: (0x00000000 to Zero
into_all all code_regex \(0x00000000 replaceall_matched begin \(Zero end;

# Optimization: Package (0x01) to Package (One)
into_all all code_regex Package\s\(0x01\) replaceall_matched begin Package (One) end;

In the attached zip you'll find my Clover config.plist; my DummyHDA.kext; my AppleBacklightInjector.kext; my native, untouched DSDT; and my patched DSDT, and . If you can diff my untouched DSDT with yours and have only trivial differences, then you can use my patched DSDT as is. I've also included a config.plist for the 9,2 SMBIOS setup, and my build of the MacBookPro9,2 injector kexts, current as of this writing.
 

V5-171-6675 Post-Install.zip

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...