Jump to content
Welcome to InsanelyMac Forum

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

Alex Auditore

How to patch AppleHDA with the help of Bootloader.

15 posts in this topic

Recommended Posts

Today I want to say about new method which allow to not take care of loss of sound after each update.

Let's recollect what AppleHDA demand from us.
1) To create device of HDEF in DSDT in which made necessary Layout
2) Binary patch of AppleHDA
3) Entry of PinConfig in plist of AppleHDAHardwareConfigDriver
4) Entry of description of input/output to layoutXX.xml.zlib
5) Entry of necessary nodes to Platform.xml.zlib.

And of course all of these parts are changed while updating is going on.

Here we go.
Patch is made by bootloader. And three or four patches are necessary for it.
Let's look at my case for ALC670 from Mavericks(use Property Plist Editor to see correct values). For the case of Clover(XPC and bareBoot also should do so)


8408ec10 -> 00000000 without it my codec doesn't work at Mavericks at least
786d6c2e7a6c -> 7a6d6c2e7a6c bin-patch to change ApppleHDA xml->zml(This idea was suggested by abxite)
8419d411 -> 7006ec10 bin-patch for my ALC670.
After that we go to the /System/Library/Extensions/AppleHDA.kext/Contents/Resources
and make so
And what we have. Bin patch, Invariable layout and Platform.
And what about PinConfig which is disposed in AppleHDAHardwareConfigDriver.
It is also not hard.
1) We should create simple kext ALCXXX.kext
which should contain plist like AppleHDAHardwareConfigDriver(See sample of ALC670)
My pinconfig is placed at  thirteenth array of AppleHDAHardwareConfigDriver(ALC885->ALC670)

2) Or you can add necessary information to the plist of FakeCMS

Here is sample of it



Property List Editor.zip

Edited by Alex Auditore

Share this post

Link to post
Share on other sites

also if you do not want to make extra ALCXXX.kext you can put stuff from AppleHDAHardwareConfigDriver to FackeSMC Info.plist

Share this post

Link to post
Share on other sites


786d6c2e7a6c -> 7a6d6c2e7a6c pin patch to change ApppleHDA xml->zml


After that we go to the /System/Library/Extensions/AppleHDA.kext/Contents/Resources

and make so





Most interesting.  How did you determine 786d6c2e 7a6c and 7a6d6c2e 7a6c?

Share this post

Link to post
Share on other sites

Most interesting.  How did you determine 786d6c2e 7a6c and 7a6d6c2e 7a6c?


hex: 786D6C2E7A6C = Ascii: xml.zl


7a6d6c2e7a6c = zml.zl

Share this post

Link to post
Share on other sites


Nope, I did it here. About XPC, There is only one English-forum which exists Today, and TheGeniusIAm doesn't oppose.

With bareboot, the same story. And my topic about patch for AppleHDAdiffer differ enough from ones where I took some information

Still, you were asked by toleda how have YOU determined the unicode string patch, which you actually haven't (no credit - everyone assumes it was you) as you didn't do a thing but bug everyone around to fix your sound for you. The fact that you have bothered to credit someone "somewhere there ..." doesn't actually matter as this is a new thread, be sure to repeat yourself when you need to! 


With XPC the first message in the thread you have created was "Are you the developer?". Same case for bareBoot - artur-pt has asked you if you were a developer of a given bootloader and in case you weren't (as everyone knew at this point that the thread you've created for XPC wasn't meant to be) why do you post in in the development section of the forum?


All this happens when you don't give credit where credit is due! And by the looks of it you'd rather see your name everywhere but give proper credit.

Share this post

Link to post
Share on other sites

I'm much tired with your continual questions. Why.why why. And plus 100500 why-ones.

The reason because I've created the topic with XPC is to show people something that I found. To have been drawn to more people to both bootloaders. Explain all of the features. To gather all of the knowledge and experience to one spot. Now iPhoneTom's forum is closed. And he released his last build at insanelymac. And again.

Neither Sunki, nor iPhoneTom have anything against it. They don't mind.

I can put an end to all my topics which created by me at any point when developers ask me to do it. However I don't think that it will happen.

But don't have butterflies in your stomach and failure of nerve. I will give a credit to abxite though I did iit at another topic.

And I will now carry this plea to you. Do not spam this thread, please, I very ask you about it.

Share this post

Link to post
Share on other sites

I've tried the procedure on my ProBook 4340s (Clover r2445), but it didn't worked for me. It seems the layout ID is being injected correctly and I have no idea if the zml.zlib patch works, but the PinConfigurations property is empty. Tried both the FakeSMC way and an external injector kext, but the result was one and the same. Any ideas what might be the cause?

Share this post

Link to post
Share on other sites

786d6c2e7a6c -> 7a6d6c2e7a6c bin-patch to change ApppleHDA xml->zml(This idea was suggested by abxite)

After that we go to the /System/Library/Extensions/AppleHDA.kext/Contents/Resources

and make so



Bin Patching and ConfigData working,  Layouts and Platforms are not working

Installed custom layout1.zml.zlib and Platforms.zml.zlib to Resources folder.

Installed KextsToPatch/Find xml.zl, Replace zml.zl from your example Info,plist


Not working.  I understanding the zml files survive a Software Update due to the name change.

I also understand Clover renames the zml files back to xml files to be loaded.

However, the patch is looking for xml files and renames those to zml files resulting in no audio.

What am I missing?

Share this post

Link to post
Share on other sites

The patch is not looking for anything, it makes the binary read your custom zml files instead of stock XML files and uncompress resources with zml extension.

Thanks for the explanation, now working.

Share this post

Link to post
Share on other sites

This guide is awesome and working fine on my ALC898 with clover hda patching and custom zlib layout and platform.

Anyone tried to patch zlib files via clover? it is possible? 

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By wizzord
      How is the order the different operating systems are shown in at startup decided upon ?
      Can it be changed ?
    • By gengik84
      Uno dei tre Requisiti:
      Hack funzionante Mac vero Macchina virtuale Impostazioni Bios per il boot:
      Cercate una voce  del tipo “Sata Mode”e settatela  in AHCI
      Secure Boot: disabilitare o altri sistemi operativi
      CSM: UEFI o LEGACY, oppure a secondo del tipo di installazione
      VT-x / VT-d disable
      *Nota: Secure boot e csm valido solo per bios UEFI
      Materiale Occorrente 
      "OS X (Versione App.Store)”
      USB 8GB  *nota: nel caso di usb superiori dovrà essere partizionata, in modo da avere una partizione su cui "lavoreremo,di questa dimensione
      kext Wizard 
      Bootloader Clover_2.3k_r xxx:                   http: //sourceforge.n.../cloverefiboot/
      Clover Configurator:                                    http: //mackie100proj...a.org/download/
      FakeSmc.kext:                                             http://www.hwsensors.com/releases 
      In allegato,a fondo pagina troverete un "pacchetto" contenente : ShowAllfiles, Kext Wizard, FakeSmc.kext: 
      App alternative:
      ESP Mounter Pro: per montare la partizione EFI
      Vi illustrerò tre metodi per creare la usb, ma sono ben distinti… quindi usatene soltanto uno
      Metodo 1: “Install Mac_OS_X.command” Metodo 2: “Create Install Media di Apple” Metodo 3:  Metodo Manuale Alla fine delle preparazione dell’installer, tutti i metodi necessitano l’installazione del Bootloader Clover sulla a vostra USB.
      PUNTO 1: che la vostra usb sia stata preventivamente nominata USB (caratteri maiuscoli) Tabella di partizione GUID e la formattazione in  Mac esteso Journaled.
      PUNTO 2: che l’installer di OSX si trovi in Applicazioni
      Utility Disco 
      Selezionate la pendrive, andate su “partizione”, selezionate “1 partizione”, impostate Mac OS esteso journaled e date il nome USB, poi in basso cliccate su opzioni e scegliete Tabella partizione (GUID), poi “applica”.

      Riporto nuovamente l’operazione sopra citata adoperando dal nuovo Utility Disco introdotto su El Capitan.
      Rimane ovviamente invariato nome della usb in ==>> USB (maiuscolo), la formattazione in Mac esteso Journaled e sia la mappa partizione in GUID
      Da utility disco selezionate la usb, cliccate su inizializza.
      dal menù a tendina scegliete la relative impostazioni

      Procedura effettua da High Sierra è la stessa della precedente, l'unica attenzione e operazione da aggiungere in primis  è cliccare nel menù a tendina in alto sulla sinistra di utility disco e selezionare "mostra tutti i dispositivi"

        METODO 1: "Install_Mac_OS_X.Command" Lo script che trovate allegato in fondo alla guida permette la creazione dell’installer in maniera automatica
      Include la possibilità di scelta di tre versioni di osx
      Yosemite El Capitan Sierra Il risultato finale è come quello del metodo "manuale" descritto nella guida, per cui l'installazione avverrà in un solo passaggio, non in due come con il metodo createinstallmedia. 
      Offre inoltre la possibilità di inserire un kernel patchato, utile, per esempio, per chi usa AMD.
      Rimane invariato il nome dato alla usb in USB, mappa partizione e tipo di formattazione
      Se la vostra usb non sarà rinominata nel modo corretto, verrete avvisati dal terminale, quindi non dovrete far altro che apportare la relativa modifica e rilanciare nuovamente lo script

      Nel caso che la usb fosse ok, avrete allo stesso modo conferma dal terminale, quindi non dovrete far altro che selezionare la relativa opzione a seconda dell’installer che vorrete creare

      L'installer una volta completato è nominato "Install Mac_OS_X"

      Potete adesso passare ad installare il bootloader Clover bella vostra usb 
      Metodo 2 
      L'intento è quello di usare la procedura fornitaci direttamente da Apple, "createinstallmedia", introdotta  con Mavericks. 
      Tale metodo prevede l’uso del terminale che via via se ne sta perdendo il “valore e l’uso”
      Inizialmente per i neofiti potrà sembrare problematico ma alla fine non è così.
      Durante il post installazione alcune operazioni ne richiedono l’ uso.
      Perciò mi sono chiesto perchè, qualora uno volesse, non far conoscere da subito un po’ questo “strumento”???
      Per favorirvi vi ho allegato i comandi già  “pronti”, i quali li potrete copiare ed incollare sul terminale.
      A questo punto aprite il terminale, copiate ed incollate il comando sottostante e premete invio, digitate la vostra password e premete nuovamente invio.
      Comando per creare USB con Yosemite:
      sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ OS\ X\ Yosemite.app --nointeraction  
      Comando per creare USB con El Capitan
      sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app --nointeraction Comando per creare USB con Sierra 
      sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ macOS\ Sierra.app/ --nointeraction Per creare USB con Hight Sierra usate --> C_I_M
      Alternativa: potete usare anche lo script che ho fatto --> C_I_M.zip
      Funziona con il drag & drop sul terminale, in questo caso non vi è necessità che la usb sia nominata in un determinato modo ed essendo basato su create install media ovviamente funziona da 10.9 a 10.13.... 

      Potete adesso passare ad installare il bootloader Clover sulla vostra usb.
      Avendo usato questo metodo l'installazione si dividerà in due fasi, perciò dopo il primo riavvio e necessario far partire nuovamente l'installer, selezionare lo stesso disco senza formattarlo.
      Finita questa ulteriore fase , l'installazione sarà terminata
      METODO "MANUALE"....  (lascio per futura memoria)
      Copiate OS X  sulla scrivania
      Aprite ShowAllfiles per visualizzare i file nascosti. 
      Doppio click su SHOW
      Senza questa operazione non vedrete i file nascosti.

      OS X  tasto destro - Mostra contenuto pacchetto - Contenuti - Shared Support - InstallESD.dmg
      Doppio click su InstallESD.dmg
      Tasto destro del mouse sopra BaseSystem.dmg, apri.

      Tramite Utily Disco, da sinistra selezionate BaseSystem.dmg e cliccate su ripristina: 
      su Sorgente mettete "OS X BaseSystem" e su Destinazione la penna usb.
      Cliccate su Ripristina.

      Stessa procedura Fatta da EL Capitan
      Selezionate OS X Base System, poi in alto su File, modifica e poi su ripristina.
      Selezionate successivamente come destinazione USB

      Finito il processo la vostra usb sarà nominata OS X BaseSystem , per praticità rinominatela USB o comunque un nome diverso  a vostro piacimento.
      Recatevi in InstallESD.dmg” (all’ interno della app) selezionate e copiate la cartella Packages in System/Installation della USB, eliminando il collegamento esistente.
      Copiate BaseSystem.dmg e BaseSystem.chunklist, che trovate in InstallESD.dmg,  nella root  (radice)della USB. 

      **Nota:** Installazione in UEFI  dipenderà dalla scheda madre in vostro possesso, quindi se non supporta tale opzione , il bootloader dovrà essere installato in  modalità Legacy.
       Vi invito, qualora non sapeste questa informazione, a recarvi nel sito ufficiale del produttore e controllare le informazioni a riguardo
      Fatto questo dobbiamo installare  Clover sulla usb.
      A seconda del tipo di Bios o al tipo di installazione che vogliamo fare UEFI o Legacy avremo ovviamente configurazioni diverse in questa fase.
      Lanciate il pkg.

      Cambiate la destinazione di installazione ad USB oppure Install Mac_OS_X (a secondo del tipo di creazione eseguita)
      Successivamente clicchiamo su "Ad Hoc"
      Per Installazione UEFI
      Mettete i flag   : Installazione solo per avvio UEFI
                               : installare Clover nella ESP
                               : Driver64UEFI  selezionate OsxAptioFixDrv-64
                             *  :Se nel vostro sistema è presente una scheda grafica (discreta) della serie 9xx nVidia selezionate OsxAptioFix2Drv-64 al posto di  OsxAptioFixDrv-64 *
      ** OsxAptioFix2Drv :E' necessario per poter impostare CsrActiveConfig= 0x3 **
      ***OsxAptioFix3Drv oppure AptioMemory devono essere usati su hardware Skylake o successivi perché permettono alla nvram di lavorare correttamente
           (mi raccomando o uno o l'altro)
      Proseguite con l’installazione.


      ** Ricordate che avrete accesso a questa cartella dopo aver montato la partizione EFI**
      Per installazione Legacy
      Mettete i vari Flag come da foto.

      ** Ricordate che avrete accesso a questa cartella dopo aver montato la partizione EFI**
      Impostazione per config.plist:
      Con clover configurator “montate” la partizione EFI della usb.
      1) Per fare questo nel menù di sinistra, cliccate su “Mount EFI”
      2) individuate la partizione relativa alla vostra usb, a questo punto montiamo la relativa partizione EFI  selezionando l’apposito pulsante “Mount Partition”

      3) Successivamente cliccate su “Open Partition”.. recatevi in EFI/Clover ed aprite il config.plist
      4) Sezione ACPI: Disabilitate tutti i fix sia del menù 1 che del menù 2

      5) Sezione BOOT: Sole se si sta installando Yosemite mettete il flag su kext-dev-mode=1
      *Nota: potete inserire anche il flag verbose che servirà per vedere possibili blocchi in fase di boot.
      Risulta utile quando si chiede aiuto sul forum postando la foto di tale schermata.
      Avremo la stessa funzione premendo la barra spaziatrice al boot di Clover, selezionando avvio in verbose mode.
      6) Sezione RT Variables: Se si sta installando El Capitan oppure Sierra, aggiungere i valori: BooterConfig= 0x28, CsrActiveConfig= 0x67

      7) Sezione System Parameters: Su inject kext mettete YES
      Nota: Su El Capitan, è stato introdotto SIP (System Integrity Protection)
      L’aggiunta di  righe sopra citate comporta la totale disattivazione di questa sicurezza.
      Questo ci permette di installare, far caricare kext di terze parti e riparare permessi.
      Se volete sapere di più a riguardo vi rimetto a questo topic: http://www.insanelymac.com/forum/topic/307398-info-considerazioni-sulla-sicurezza-di-1011/
      Una volta installato e configurato il nostro osx, giusta operazione da fare sarà quella di riabilitare tale protezione.
      Impostando il valore CsrActiveConfig su 0x1 si avrà questo risultato
      Questo valore così messo, ha la stessa funzione di kext-dev-mode=1 nei precedenti osx, ma ormai obsoleto in questa versione.
      SIP parzialmente abilitata: Impostando il valore CsrActiveConfig su 0x3 si  avrà questo risultato
             Apple Internal: disabled
             Kext Signing: disabled
             Filesystem Protections: disabled
             Debugging Restrictions: enabled
             DTrace Restrictions: enabled
             NVRAM Protections: enabled
             BaseSystem Verification: enabled
      SIP parzialmente abilitata
      Apple Internal: disabled
             Kext Signing: disabled
             Filesystem Protections: disabled
             Debugging Restrictions: enabled
             DTrace Restrictions: enabled
             NVRAM Protections: enabled
             BaseSystem Verification: enabled
      SIP Disabilitata Impostando il valore CsrActiveConfig su 0x67

      Apple Internal: disabled
             Kext Signing: disabled
             Filesystem Protections: disabled
             Debugging Restrictions: disable
             DTrace Restrictions: disable
             NVRAM Protections: disable
             BaseSystem Verification: disable
      Impostando il valore CsrActiveConfig su 0x0 avremo questo risultato e SIP totalmente abilitata
      Per controllare ad installazione fatta lo stato di SIP, recarsi sul terminale e digitare questo comando: csrutil status
      Recatevi in EFI/Clover/kext/10.x 
      X= alla versione di osx che state installando. Per esempio se installerete Yosemite dovrete recarvi nella cartella 10.10, con El Capitan in 10.11….ecc
      Se non ci fosse tale cartella, createla e nominatela voi a “modo”.
      Copiatevi all’interno FakeSmc.kext
      *Nota se venite già da altre vostre configurazioni, oltre kext sopra citato ,potete mettere gli altri necessari per il vostro hardware
      Stessa cosa se avete DSDT e/o SSDT potete copiarli in EFI/Clover/Acpi/Patched
      Per High Sierra:
      scaricare il driver apfs.efi a fine guida,collocarlo:
      EFI/clover/Driver64UEFI se stiamo usando UEFI
      EFI/Clover/Driver64 se stiamo usando Legacy
      Per chi volesse continuare ad usare HFS vi rimando a questo post:
        Come installare High Sierra in HFS direttamente dalla usb  
      Utenti Laptop:  Nel 99% è obbligatorio disattivare la grafica discreta Nvidia/Amd per installare questo nuovo osx
                                     Quindi aggiungete --> SSDT-Disable_DGPU.aml.zip
                                     in EFI/Clover/acpi/Patched della usb
      Fatto questo avrete la vostra USB bootable per installare OSX.
      ………Non scordatevi Fakesmc.kext da mettere nella relativa cartella…. senza il quale non farete mai il Boot......
      *NOTA: se usato il terminale per la creazione della usb, l'installazione si dividerà in due fasi, perciò dopo il primo riavvio e necessario far partire nuovamente l'installer, selezionare lo stesso disco senza formattarlo.
      Finita questa ulteriore fase , l'installazione sarà terminata
      **NOTA** Se avete processori Broadwell,Skylake o Kabylake...usate FakeSmc.kext e relativi sensors che trovate all'interno del secondo pacchetto.. (potete usarlo anche sui precedenti senza problemi, essendo una versione più aggiornata ha ulteriore supporto per le cpu più recenti)
      Update: Fakesmc e sensors versione 6.26
      Post installazione... post #2           
       Buon Hack….. 
      Aggiornamento:Install_Mac_OS_X.command.zip (compatibile da 10.10 a 10.12)
      le info le trovate a questo post
      Ringrazio @Ciro82 che mi ha aiutato nel preparare questa guida.
      Pacchetto-Fake+Sensors 6.26.1440.zip
    • By cvad
      Boot Disk Utility
      v2.1.2018 rev. 023b
      © cVad 2012-2018
      Latest update is always here.
      You can
      Make bootable USB Flash Disk for macOS with Latest Clover bootloader revision
      Download(with resuming) Latest! Apple Recovery HD package,
      Extract HFS-Image and Restore it with BDU.
      Automatically Check/Download the Latest Clover Rev.
      and Use existing Zip and LZMA Clover archives from Local Repository,
      Download files from User Download List
      and BDU Additional Download List,
      build FreeDos bootable drive
      with Volkov Commander.
      Feel free to click "like"

      - Make bootable USB Flash Disk for MAC OS X with Latest Clover bootloader revision fast and easy by one click! under OS Windows 7 and later.
      Not supported  WinPE and Wine. -
      Special utility from cvad & russian MAC community for new hackintosh users.


      BootDisk Utility is intended to make a external bootable USB Flash Disk by installing to it special Data set (MBR, PBR sectors and Data files) of EFI-based Clover bootloader (and may be Chameleon bootloader).
      BDU was created for new hackintosh users to simplify the installation
      of a EFI bootloader Clover to the flash drive.
      More information can be found in the appropriate forum topic:
      - Clover General discussion -
      Feel free to click "like"

    • By cvad
      Small tool to download, compile and build the latest Clover X64 package,
      possible include HFSPlus.efi, HFSPlus-64.efi.

      The script inside is editable.

      Many thanks to the comrade SunKi for help with creating the script.


      Best thanks - click "Rate File".

    • By safar
      Hi   Clover limits the number of gpus to 4 :   from Clover source code : rEFIt_UEFI/Platform/Settings.c :   GFX_PROPERTIES                  gGraphics[4]; //no more then 4 graphics cards   Anybody knows why?   This number is limiting for me : - 1x gpu is AMD display GPU - 1x gpu is Supermicro's built-in vga IKVM output (Matrox 0x532102B)  
      - 3x gpus Nvidia for Cuda   I At present, I have to take off one Nvidia (but I'm trying to disable the build-in vga IKVM output through software, so that it's available for other operating systems : I'll make another post on that topic, to keep things clean)