Chameleon and High Sierra…

I helped the developers of Chameleon with previous OS upgrades and I am wondering what the current state is. Is Chameleon already patched and working with High Sierra? If not, then feel free to reply here with a link to the latest source code.

102 thoughts on “Chameleon and High Sierra…

    • I am waiting for some developer to contact me (here as I can not read my e-mail from here).

      The good news is that I have successfully installed High Sierra with RevoBoot, and I have done it with the Beta installer app from the Apple Store, so it should be easy.

      • It only worked for my P6TSE hackintosh after bootable by Clover r4078, and always failed for Z87 & Z97 hackintoshs. For Z87 hackintosh High Sierra beta can be booted with either Intel HD4600 alone (nv_disable=1) or GTX-680 alone (BIOS disable HD4600). I sincerely hope you can fix it to boot both Intel HD4600 & GTX-680 which is not possible by Clover bootlaoder yet in my hackintoshs.

      • I usually only look into new hardware. Like new motherboards for the new Intel Core i7 and Intel Core i9 processors. Going back is no option for me since I don’t have that much free time.

  1. Greetings Piker Alpha. Very grateful for all your wonderful work here – it is so awesome to read about the latest and greatest hardware/software happenings at Apple!! May I bother you for documentation on how to use the said RevoBoot? Do not see it in the github link. Thanks!

    • There is no documentation, but what I can tell you is that RevoBoot is a pain to compile and setup, for people who never used it, and it is mostly used as a testbed. Why not use Chameleon/Enoch or Clover?

      • Appreciate that PikerAlpha and agree. Used clover and getting KP in regards to the com.apple.driver.AppleACHIPlatform6.1. My guess is that it is in regards to a conflict with the MacPro System Definition? See a few other users with the same issue – but have not seen a solution.

      • The OSBundleLibraries in AppleSMC.kext has changed. This one is new:

        <key>com.apple.iokit.IOPCIFamily</key>
        <string>1.8</string>
        

        AppleACHIPlatform.kext now also relies on:

        <key>com.apple.driver.AppleSMCRTC</key>
        <string>1.0</string>
        

        AppleSMCRTC.kext is a new kext relying on:

        <key>com.apple.driver.AppleSMC</key>
        <string>3.1.9</string>
        

        Listen. I’m not saying that this is the case, but if AppleSMCRTC.kext isn’t loading (IONameMatch -> ACPI000E) then AppleSMC.kext may not get loaded (IONameMatch -> APP0001) and then AppleACHIPlatform.kext may also fail.

        We now also have a new property called IOPlatformPanicAction (Number) 89000 in AppleSMC.kext/Content/Info.plist and that may also be related.

        The only time that I had issues with AppleACHIPlatform.kext was when AppleSMCRTC.kext wasn’t loaded. And then only without a prelinkedkernel, but that was with the new iMaci9,1 which has a new Device for it:

        Device (ARTC)
        {
            Name (_HID, "ACPI000E")
            Method (_GCP, 0, NotSerialized)
            {
                Return (0x05)
            }
        
            Method (_GRT, 0, Serialized)
            {
                Name (BUFF, Buffer (0x10) {})
                Store (^^EC.YRLB, Index (BUFF, Zero))
                Store (^^EC.YRMB, Index (BUFF, One))
                Store (^^EC.MNTH, Index (BUFF, 0x02))
                Store (^^EC.DAYB, Index (BUFF, 0x03))
                Store (^^EC.HOUR, Index (BUFF, 0x04))
                Store (^^EC.MINT, Index (BUFF, 0x05))
                Store (^^EC.SECD, Index (BUFF, 0x06))
                Store (^^EC.PAD0, Index (BUFF, 0x07))
                Store (^^EC.MSLB, Index (BUFF, 0x08))
                Store (^^EC.MSMB, Index (BUFF, 0x09))
                Store (^^EC.TZLB, Index (BUFF, 0x0A))
                Store (^^EC.TZMB, Index (BUFF, 0x0B))
                Store (^^EC.DAYL, Index (BUFF, 0x0C))
                Store (^^EC.PAD1, Index (BUFF, 0x0D))
                Store (^^EC.PAD2, Index (BUFF, 0x0E))
                Store (^^EC.PAD3, Index (BUFF, 0x0F))
                Return (BUFF)
            }
        
            Method (_SRT, 1, Serialized)
            {
                Store (Index (Arg0, Zero), ^^EC.YRLB)
                Store (Index (Arg0, One), ^^EC.YRMB)
                Store (Index (Arg0, 0x02), ^^EC.MNTH)
                Store (Index (Arg0, 0x03), ^^EC.DAYB)
                Store (Index (Arg0, 0x04), ^^EC.HOUR)
                Store (Index (Arg0, 0x05), ^^EC.MINT)
                Store (Index (Arg0, 0x06), ^^EC.SECD)
                Store (Index (Arg0, 0x08), ^^EC.MSLB)
                Store (Index (Arg0, 0x09), ^^EC.MSMB)
                Store (Index (Arg0, 0x0A), ^^EC.TZLB)
                Store (Index (Arg0, 0x0B), ^^EC.TZMB)
                Store (Index (Arg0, 0x0C), ^^EC.DAYL)
                Return (Zero)
            }
        
            Method (_STV, 2, Serialized)
            {
                Store (And (Arg1, 0xFF), ^^EC.ALR0)
                Store (And (ShiftRight (Arg1, 0x08), 0xFF), ^^EC.ALR1)
                Store (And (ShiftRight (Arg1, 0x10), 0xFF), ^^EC.ALR2)
                Store (And (ShiftRight (Arg1, 0x18), 0xFF), ^^EC.ALR3)
                Return (Zero)
            }
        
            Method (_CWS, 1, Serialized)
            {
                Store (Zero, ^^EC.TMRF)
                Store (Zero, ^^EC.TMRW)
                Return (Zero)
            }
        }
        
      • Appreciate you PikerAlpha! No dice so far still getting the same KP even after latest clover and official HS beta release. It worked in 10.12 and 10.10 for the X79 UD5 mainboard like a charm. Will keep hacking away at it.

      • Hi John,

        Looks like the AppleACPIPlatform.kext has changed so that on some hardware it fails. Ricky (see comments here) replaced the AppleACPIPlatform.kext of 10.13 with the one of 10.12.6 (Beta 4) and that worked for him. Can you give that a try?

      • Appreciate your PikerAlpha! When I tried that I get this error: panic cpu -Unable to find driver for this platform/ilokit/Kernel/IOPlatformExpert.ccp:1731

      • Kernel CPU panics. Doesn’t matter if warm or cold. Check out Insanelymac.com at the Ozmosis forum. Lots of guys including myself having difficulty getting HS to boot with out dropping MATS tables in Clover with our Z87 boards. Even with that its a challenge. Ironic that Oz guys got to use Clover..

      • Oh the MATS table errors. Let’s see. Did you try to patch _isprint in the AppleACPIPLatform.kext binary:

        55 48 89 E5 48 8D 05 E5 77 05 00 F6 04 07 97 0F 95 C0 5D C3
        55 48 89 E5 48 8D 05 E5 77 05 00 F6 04 07 57 0F 95 C0 5D C3
        

        Now take a look at this code snippet and note that Apple is using a different value.

        #define isprint(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO) | _ACPI_UP | _ACPI_DI | _ACPI_XD | _ACPI_PU))

        instead of:

        #define isprint(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_XS | _ACPI_PU))

        So what Apple does, basically, is that they use 0x80 instead of 0x40 and thus they use 0x97 instead of 0x57.

  2. Unfortunately I do not know how to do that.. but I would love to learn! I gather I need to load up AppleACPLatform.kext in hex editor and change 97 to 57? Also curious about why is this necessary? You know the guys in the Oz forums are suggesting editing the acpi headers directly in the bios and flashing it back to the rom. Patching a kext sounds so much easier..

  3. I don’t think Oz has Kext patching. It has Kext Injection built in but the problem is that the main developer behind Oz just declared it EOL but not dead such that I’m not sure even kext injection is working. So there are some other guys picking up the mantle and recently HS support was patched but I had ACPIPlatform error and KP right at the start of the verbose errors along with a few others such that it was necessary to use Clover to install HS and by dropping MATS and using the iGpu was able to get through the install from USB but after the install and two reboots it still failed to load from the final install stuck on ‘Firewire 0000000000 guid is invalid’ endless messages. Hoping this patch or even your dp1 to dp2 upgrade script might fix the install though still just having fun experimenting so not the end of the world if it doesn’t work as I still have a functioning Sierra install. Thanks.

  4. thank you for all your generosity, huh..I got some appleacpiplatform panic when I install 10.13 on my haswell laptop..tried to drop MATS acpi but I find there is no such MATS….Just too upsetting..I tried patch _isprint in the AppleACPIPLatform.kext by kexttopatch of clover but it didnt work..could you help me with some adivice.. thanks a lot

      • thanks for your reply,i take a slow motion video,here is my dsdt and mov。https://my.pcloud.com/publink/show?code=XZ5VFvZlnhoSsNzyJShdSCRefujlSg4Cs77

      • I have installed successfully without dsdt ,no need prelinkedkernel,the dsdt is perfect in my 10.12.6 beta4,but 10.13 it causes AppleACPIPLatform error,i just want to make the dsdt worked without Extracting and modifying DSDT again…

  5. Piker,
    Do you know what could cause a ‘Firewire GUID 000000000000000 is invalid’ message in the HS verbose logs? This is driving me crazy trying to figure it out..

    Thanks

      • I think it uses prelinkedkernel, these values appear on my Enoch’s log:

        ===================================
        Kernel Cache file path (OS X 10.11 and newer): /System/Library/PrelinkedKernels/prelinkedkernel
        Loading Kernel Cache from: ‘macOS High Sierra’ (GPT HFS+)
        Booting on macOS 10.13 (17A291j)
        ===================================

      • Uhmmb, with “Kernel=/System/Library/Kernels/kernel” boot-arg?
        Oops, my bad.. I’ve converted my 10.13 Partition to APFS, I’ve no idea how it would be detected using Enoch / Chameleon w/o apfs.efi driver..

  6. I am having exactly the same panic with AppleSmcRtc.kext
    System : Supermicro x9dri-f, 2 x e5-2670 , nvidia gtx 1060
    Mac os 10.12 is working perfectly.

      • John,

        Can you please e-mail me your DSDT, or add a link to some public place here?

        Edit: Apple may call a Method that it didn’t call in 10.12 or now expects a certain value. AppleSMCRTC.kext is also still on the trouble radar.

      • Hi PikerAlpha, Would the Cloverconfig.plist be ok? 10.12 was happy with this one on the Gigabyte X79 UD5 mainboard….

        Edit by Pike: XML case cannot properly be displayed without sourcecode tags with language=”xml”

      • No. There is something in the DSDT, on some boards, that appears to be broken. We need to find and fix it. Pronto. All hands on deck. We need help from the community – I myself am still on holidays.

      • Latest error in verbose more “HID: Legacy shim 2” Did a search and said cure = ‘ -s single user mode’ however that does not work. Any thoughts? Will keep hacking away at this. Thanks!!

      • The picture that you provided earlier, looks like a typical USB problem; fails to locate the HDD/SDD/M2 drive and waits forever. May even hang there.

      • Appreciate you PikerAlpha!

        IMO it was the latest clover configurator 4.4.0 that had latest macpro EFI. Immediately after I used it and reselected macpro6.1 in SMBIOS section it booted. Belowe were the steps.

        1. Download new Clover configurator vibrant 4.44.0. Select your config.plist go to SMBIOS and with wizard reselect again your system. Last configurator has a new bios version.
        2. To speed troubleshooting allong unplug all disk from pc except one clean disk without any OS.

        Really happy and it seems fast super appreciate you selflessly sharing your wisdom. Now im working on fixing nvidia drivers for my 960 to get the 4k display working nice again.

  7. hi,piker,I replaced AppleACPLatform.kext of 10.13 by 10.12.6 beta4‘s,and I can use the dsdt which caused ACPI panic before…I used dsdt to enable latop hd4600 etc in 10.12..but showed Blurred screen in 10.13,must Click the sleep button then Press the power button and it will be normal.. and The Ethernet card driver RealtekRTL8111.kext is not valid after replacing AppleACPLatform.kext…so upsetitng

    • Hi Ricky,

      Ok. So you can boot with an older version of AppleACPIPlatform.kext Looks like something changed and it won’t work with your DSDT.

      What I would do in this case is to boot with the AppleACPIPlatform.kext of macOS High Sierra (with debug enabled) and after that failed, with the kext that works with your DSDT. Then I would check the log and compare the log output of the two boots.

      Do you see anything interesting?

      p.s. Don’t forget to enable ACPI logging (think boot args / Google for it).

      Edit: Can you please e-mail me your DSDT.aml so that I can have a look at it?

      • here is the verbose video..could you see it?https://my.pcloud.com/publink/show?code=XZ5VFvZlnhoSsNzyJShdSCRefujlSg4Cs77
        thanks for your help!

      • Ok so your BIOS is at fault. There is something wrong with Device (EC0) and you probably run into the same errors with Linux.

        1.) Are you using the latest BIOS version?

        2.) How old is this notebook?
        Note: If it isn’t too old, then I would contact Asus support and ask for a fixed BIOS.

        Ok. Let me try to explain the error messages. First. We are using a mod of https://acpica.org/node/131. Let’s now take a look at the errors.

        ACPI Error: No handler for Region [ERAM] (ffffff8021cb45a0) [EmbeddedControl] (20160930/evregion-252)
        ACPI Error: Region [EmbeddedControl] (ID=3) has no handler (20160930/exfldio-392)

        Note the (20160930/evregion-252) and (20160930/exfidio-392). The first part (20160930) is the ACPICA version number. The second part (evregion, exfldio) is the filename. The third part (-252, -392) is the line number in the file.

        If you download the ACPICA file from the above link and open the files then you get:
        evregion.c:

                ACPI_ERROR ((AE_INFO,
                    "No handler for Region [%4.4s] (%p) [%s]",
                    AcpiUtGetNodeName (RegionObj->Region.Node),
                    RegionObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId)));
        

        and:
        exfldio.c:

                    ACPI_ERROR ((AE_INFO,
                        "Region %s (ID=%u) has no handler",
                        AcpiUtGetRegionName (RgnDesc->Region.SpaceId),
                        RgnDesc->Region.SpaceId));
        

        Which is what we see in the video.

        Your DSDT has 3 of these:
        OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF)
        Field (ERAM, ByteAcc, NoLock, Preserve)

        But there is really no need for this. The methods RE1B (Read One Byte from EC) and WE1B (Write One Byte to EC) should use the one inside Device (EC0). A bit of sloppy programming.
        Your DSDT has 10 of these:
        Field (ERAM, ByteAcc, NoLock, Preserve)
        The Device (EC0) in your DSDT is missing a _PRW object.

        The Name (_GPE, 0x1D) in Device (EC0) doesn’t match with any object in the DSDT.

        The Method (_REG, 2, NotSerialized) may fail because you have no _OSI selector for “Darwin”.

        So what can you do?

        1.) Set Name (_GPE, 0x1D) to anything that is actually there.

        2.) Replace Name (_UID, One) with Name (_UID, Zero) in Device (EC0) and recompile/reboot. Is the ID=3 in the error now ID=2?
        Note: Clover should load the modified DSDT or it won’t work!

        3.) Add a Method (_PRW) to Device (EC0)

        4.) Search for

                            Field (ERAM, ByteAcc, NoLock, Preserve)
                            {
                                Offset (0x18), 
                                SMPR,   8, 
                                SMST,   8, 
                                SMAD,   8, 
                                SMCM,   8, 
                                SMD0,   256, 
                                BCNT,   8, 
                                SMAA,   8, 
                                BATD,   16
                            }
        

        Add this line right above it:

        OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF)
        

        Recompile and reboot.

        Does that help?

      • hi,piker,I am so sorry that I am not very familar with DSDT,and I tried to do as the tips,but alwalys occured some error and cannot saved,could you please recompile the dsdt and send me a public link? my latop is not ASUS,just some Quanta model,just the same as Hasee K610d i5 d1 and there is no new bios availiable..upsetting,thanks for your help!

    • I just figured out what was going on. Had FakeSMC in the wrong Clover Kext folder!

      For what ever reason Clover loaded FakeSMC just fine on the usb installer,
      but it needed to the crucial kexts inside the ‘Kexts/other’ folder such that this whole time FakeSMC wasn’t being loaded!

      Not in the 10.12 folder!

      Homer Simpson moment here!

      • Sorry. I lost track of your progress. Is this with or without the AppleACPIPlatform.kext from Sierra? You are now dropping the MATS table, or did you patch the kext?

      • This is with using the original AppleACPIPlatform.kext as my problem was related to Clover not loading the FakeSMC Kext from the 10.12 kext folder. Copying it to the Kext/Other folder fixed the problem. Now I need to hard mod the binary code of the MATS table in my bios but can’t find exactly its location. Its suppose to be in a raw freeform file but I can’t find it. Found redundant MATS table code in the OnOffCharge SMM+ DXE modules in my bios but they dont match 100% to what Clover F4 pulled. Do you know how to find the MATS table in a bios file?
        Thanks

  8. hi,piker,i just followed the tips you provide,but i am not familiar with DSDT,always occured some error and cannot fixed it,could you please recompile the dsdt and send me a public link for me?thanks very much,my latop is not ASUS but just a Quanta Model,the same as Hasee k610d i5-d1,so there is no any bios file availiable.. upsetiing,thanks your help again!

  9. Also wanted to make a correction. It wasn’t just that. Also needed the correct SSDT aml file from RampageDev such that copying the FakeSMC kext to ‘Kexts/other’ only opened the door.

  10. my friend who are familiar with dsdt correct my dsdt for me just as the tips you gived and I tried,also panic,but not appleacpiplatform panic

  11. hi, I have AppleACPIPlatform problem on X79 mobo maybe because my ACPI table is special.
    After decompiled AppleACPIPlatform i found the problem is about ACPI tables. The error is not on “isprint” function but on “isspace”, although the cause may be similar but drop any ACPI table or add “FixHeaders_20000000” won’t help.
    My boot video, error screen shot, original ACPI headers, BIOS ROM, fixed DSDT/SSDT is here: https://www.dropbox.com/sh/fdgkejormgaazfx/AABFxM9LPHjRqYS2MGJGdBAUa?dl=0
    Hardware specification: HUANAN X79 C602 chipset, e5-2670 V1 C2, ALC662, RTL8168/8111/8112. Thanks a lot 🙂

  12. Hello Piker

    Having the same problem as itmanbucv, Supermicro X9DAi board with dual Sandy Xeons…

    I’ve tested everything, the only way to boot High Sierra is to replace AppleACPIPlatform.kext and AppleAHCI with those from Sierra. No matter what I cannot get passed the KP with vanilla AppleACPI.

    Also, when booting with previous kexts, PM seems to be broken, even using the proper SSDT. Only one CPU gets the major load and the rest don’t move much which is strange.

    • In that case you know what you have to do:

      1.) Extract all ACPI tables.
      2.) Decompile ACPI tables.
      3.) Fix errors.
      4.) Let the boot loader load the fixed ACPI tables.
      5.) Replace broken ACPI tables in the BIOS.

      • Wish it was so simple… I wasn’t born with ACPI tables in my head 😀

        1) Extract tables – I did that using MacIASL.
        2) Decompile – Aren’t they already decompiled in MacIASL ? Or is there another step ?
        3) Fix errors – That I don’t know what to look for and by what replace it…
        4) Bootloader step – Guess this is to see if it works properly ?
        5) Replace ACPI in BIOS – Guess this implies flashing the motherboard with a modified BIOS ? Don’t have a clue how to patch the bios either.

        Sorry, not used to these things… I’m trying to do as much as I can, but I rather ask than doing stupid things. Thank you already for your input.

      • 1.) That may not include all tables.
        2.) Inside the GUI, yes, but not the files.
        3.) Start by decompiling the ACPI tables with iasl and then try to recompile them with iasl. No errors?
        4.) Yes.
        5.) You can skip this, but please note that loading tables from a boot loader takes time.

        Some more questions:

        1.) Do you know the name of the table that is broken?
        2.) Are you injecting a patched DSDT or any other SSDT table with help of the boot loader?
        If yes, try to boot without the injected tables.

  13. Hey Piker,

    Thank you for your reply.

    1.) Understood.
    2.) Understood.
    3.) Ok got it, will try to do that and report back.
    4.) Ok.
    5.) Got it, but I guess it will be my way since I’m somewhat reluctant to patch the bios with rogue code.

    More questions:

    1.) I do now, that’s why I was saying I didn’t knew what to look for, under clover dropping tables didn’t allowed me to boot or skip the KP. So if I know what to look for, I can then search the tables for it and find it. Altho I don’t know with what I have to replace it 😀 thus all my questions… but I already know a little bit more.
    2.) I’m injecting a SSDT for mainly fixing the USB, LAN, AUDIO. I’m also injecting a SSDT-1 for Power Management and states. I’ve already tried to boot without the SSDT-1 at least…

    • Quick reply: make sure that you don’t have two or more SSDT tables with the same name and decompiling and recompiling all of them may help when you let the boot loader load them. You did enabled ACPI debug output? Otherwise it is harder to spot errors.

    • hello, i finally solved this problem by deleting
      Store (“CPUSCK0”, CUU0)
      Store (“CPUSCK1”, CUU1)
      Store (“CPUSCK2”, CUU2)
      Store (“CPUSCK3”, CUU3)
      in dsdt

  14. Hey Piker, I’m currently booting without SSDT-1, using NullCPUPowerManagement.

    I got all the tables via Clover pressing F4, since I could find the right command under IASL. I have now decompressed all of them, I have 24 in total. Still I don’t know what to look for now… what is the offending line of code I should be watching for ?

    Also once that is done, how do I inject again THAT particular table ? Clover I guess 😉 but is it enough to put it into the patched directory ?

    • Here is my boot process with the original AppleACPIPlatform.kext and the KP:
      https://www.dropbox.com/s/b4dpc2eewre0znx/Vid%C3%A9o%2025-08-17%2015%2018%2002.mov?dl=0

      And here are the dumped tables with clover:
      https://www.dropbox.com/s/gldyay239ib8st5/ACPI_Tables.zip?dl=0

      I’ve tried te recompile them without touching them on MacIASL and two recurrent error in all of them are these ones:

      Line 13 / Code 4096 / Message: Invalid Character (0x5B), expecting ASL keyword or name.
      Line 13 / Code 4096 / Message: Syntax error, Unexpected PARSEOP_INTEGER, expecting PARSEOP_DEFINITIONBLOCK.

      And this generally happens on lines like this one:

      [000h 0000 4] Signature : “APIC” [Multiple APIC Description Table (MADT)]

      • Would like also to say that I’m sharing those so you can have a look and better understand, I’m not pretending that you fix it for me 😉 I just want to learn how to fix it myself, but I’m clueless at the moment and have asked everywhere… but you are the only one replying.

        Thank you for your help.

Leave a comment