Jump to content

AppleALC — dynamic AppleHDA patching


vit9696
5,371 posts in this topic

Recommended Posts

Hello,


 


 Being a noob to Apple Dev, I am making this guide. I had to stop because it is late. I will continue with your feedback.


 


Thanks.


 


=====


 


AppleALCAn open source kernel extension enabling native OS X HD audio for unsupported codecs without any filesystem modifications


 


https://github.com/vit9696/AppleALC


 


Assumption:


- Working OSX Install, 10.8 - 10.11


- Audio chipset vendor and ID is known


- Clover boot loader


- no modding of /System/Library/Extensions/ audio kexts


*** QUESTION: What other assumptions?


 


Installing Binary


1) Browse to https://github.com/vit9696/AppleALC/releases


 


2) Download the version of your choice, preferably the latest release zip unless you are debugging .  e.g Version 1.0.11 -> 1.0.11.RELEASE.zip


    The download links are below each versions release notes.


   Open the zip file to get AppleALC.kext


 


3) (Assuming Clover boot loader) mount your EFI boot partition:


 


    Terminal:


    - diskutil 


 


/dev/disk0 (internal, physical):


   #:                       TYPE NAME                    SIZE       IDENTIFIER


   0:      GUID_partition_scheme                        *120.0 GB   disk0


   1:                        EFI EFI                     209.7 MB   disk0s1


   2:                  Apple_HFS MacOS                   119.2 GB   disk0s2


   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3


 


 


    - mkdir /Volumes/EFI && sudo mount_msdos /dev/disk0s1 /Volumes/EFI 


 


4) in Finder, drag the AppleALC.kext into /Volumes/EFI/EFI/CLOVER/kexts/Other


 


*** QUESTION: Do we need to enable a dev-mode or disable security? how? Do we need to do anything else to ‘activate AppleALC’?


 


5) Reboot your system and log in


 


6) Apple -> System Preferences  ->  Sound -> Input or Output tab ==> do you see your sound card? if yes,  enjoy.  if no. boo hoo.


 


 


Compiling From Source


 


A) Set Up Xcode


 


1) Register as a developer for free: developer.apple.com


 


2) Download and install  Xcode: developer.apple.com/download


 


3) Install and start Xcode 


 


4) Xcode -> Open Developer Tools -> More Developer Tools  to open web browser window to Apple Dev site


   - Download “Hardware IO Tools” for Xcode


   - Open zip archive to get “Hardware IO Tools” folder


   - Applications -> Xcode (Show Package Contents) -> Contents -> Applications


   - drag contents of “Hardware IO Tools” folder into above Xcode Applications folder


   - This will let you run IORegistryExplorer from Xcode’s  Open Developer Tools menu. You might need to restart Xcode.


   - Make alias of IORegisterExplorer by  right click -> Make Alias & copy file to your local Applications directory for conveniently starting this utility without Xcode


 


 


5) Download latest release source code of AppleALC from  https://github.com/vit9696/AppleALC/releases e.g. Version 1.0.11 -> 1.0.11.zip


 


6) open the zipped source code file to get AppleALC folder.  e.g AppleALC-1.0.11 folder


 


 


Link to comment
Share on other sites

Added a dirty 10.12 hack to trunk, no desire to look for a proper solution at the moment. Worked for me in a vm, hopefully works on real hardware as well. Good luck & happy testing :D

Also added denskop's patch.

 

Dirty hack works here! No more hang on the X79.

 

No audio though. I couldn't find denskop's patch in the 898 plist so I added it manually, rebuilt the kext and got working audio. Guess you missed that one ;)

Link to comment
Share on other sites

Dirty hack works here! No more hang on the X79.

 

No audio though. I couldn't find denskop's patch in the 898 plist so I added it manually, rebuilt the kext and got working audio. Guess you missed that one ;)

can you provide the kext with the dirty hack please? no xcode here. no space :/

Link to comment
Share on other sites

Here you go. Latest commit now seems to have all of the codecs updated for 10.12 now. Great work vit9696 :)

 

Actually, I've just gotten Sierra installed on the laptop and the ALC269 there isn't working (it is in El Cap). So maybe we need another fix.

 

Update: I've been getting some kernel panics referencing AppleALC when booting into Sierra on the X79 and laptop with this kext. Maybe the hack is a little dirty after all?

AppleALC.kext.zip

  • Like 3
Link to comment
Share on other sites

Here you go. Latest commit now seems to have all of the codecs updated for 10.12 now. Great work vit9696 :)

 

Actually, I've just gotten Sierra installed on the laptop and the ALC269 there isn't working (it is in El Cap). So maybe we need another fix.

 

Update: I've been getting some kernel panics referencing AppleALC when booting into Sierra on the X79 and laptop with this kext. Maybe the hack is a little dirty after all?

We need panic logs with keepsyms=1 in boot-args and as much info as possible to prove your words and have data to work with. I can/will not do anything based on speculation ;) Please understand that.
  • Like 4
Link to comment
Share on other sites

We need panic logs with keepsyms=1 in boot-args and as much info as possible to prove your words and have data to work with. I can/will not do anything based on speculation ;) Please understand that.

 

No worries. Just need to know the right process.

 

Hopefully this is what you need.

 

Update: added one from the X79 as well.

panic.zip

x79panic.zip

Link to comment
Share on other sites

on the original AppleALC, macOS booted up but no sound, now with the new build (from the last page) either i get a kp (on normal boot) or if it boots up, i get no sound at all (ALC275 Inject 3).

someone to check if it's only me (someone with the same codec), please.

thanks

 

eitherway ill try to compile mine if I could dl the Xcode 8

 

Or nah! too big and not so much space :/ too bad

Link to comment
Share on other sites

on the original AppleALC, macOS booted up but no sound, now with the new build (from the last page) either i get a kp (on normal boot) or if it boots up, i get no sound at all (ALC275 Inject 3).

someone to check if it's only me (someone with the same codec), please.

thanks

 

eitherway ill try to compile mine if I could dl the Xcode 8

Zeroing is missing for 275 ( i think) i just added it for alc887 not for other codec if you want i can do it??
Link to comment
Share on other sites

Zeroing is missing for 275 ( i think) i just added it for alc887 not for other codec if you want i can do it??

Yeah sure, but before doing that, shall I just test it by zeroing it from clover? if it works then it's good and I'll report back so that you add it too! 

Really appreciated! Thanks.

  • Like 1
Link to comment
Share on other sites

Definitely, confim it so dev can update source

Weirdly I get the AppleHDA loaded, but no audio, I added 8A19D411 zeroing but nothing happened. Either way, if you make the kext with that patch lemme try it too! Thanks

Link to comment
Share on other sites

Weirdly I get the AppleHDA loaded, but no audio, I added 8A19D411 zeroing but nothing happened. Either way, if you make the kext with that patch lemme try it too! Thanks

You should DISABLE this patch, cause it seems that on 272 analogue situatian as on 282. SO disable this zeroing and try using this one.

PS: stop , which codec you have? 272 or 275?

AppleALC.kext.zip

  • Like 2
Link to comment
Share on other sites

 

I am looking for an explanation for the various audio layout-ids and platforms.

 

I have not found an authoritative site or description.

 

If you have any information, it would be greatly appreciated.

 

Thanks.

 

 

I hope I understand what you want but here it is: 

 

To know what layout to use with a multilayout codec (like ALC269):

Open the kext (Show Contents) > Contents > Plugins > Open PinConfigs.kext (Show Contents) > Contents > Info.plist

You'll find there all supported Codecs and their layout IDs, and check the Name given, mostly it describes the patch used, like on ALC269 with many revisions, you'll see ALC269 VC v1 or VB v2 ... and so on, once you get the one that you use (*mostly* it should have the same name as the patch you used with Mirone or toleda or whatever you used) take note of the layout ID and use it in clover. If it works, it's good, if not try another

 

You should DISABLE this patch, cause it seems that on 272 analogue situatian as on 282. SO disable this zeroing and try using this one.

PS: stop , which codec you have? 272 or 275?

 

ALC275, will try your patch now anyway and btw, all clover patches are disabled now

Link to comment
Share on other sites

You should DISABLE this patch, cause it seems that on 272 analogue situatian as on 282. SO disable this zeroing and try using this one.

PS: stop , which codec you have? 272 or 275?

 

Disabling the 8A19D411 patch here has fixed ALC269 :)

Link to comment
Share on other sites

I hope I understand what you want but here it is: 

 

To know what layout to use with a multilayout codec (like ALC269):

Open the kext (Show Contents) > Contents > Plugins > Open PinConfigs.kext (Show Contents) > Contents > Info.plist

You'll find there all supported Codecs and their layout IDs, and check the Name given, mostly it describes the patch used, like on ALC269 with many revisions, you'll see ALC269 VC v1 or VB v2 ... and so on, once you get the one that you use (*mostly* it should have the same name as the patch you used with Mirone or toleda or whatever you used) take note of the layout ID and use it in clover. If it works, it's good, if not try another

 

 

 

For a new codec, how do you know it is multilayout?

 

If I have a linux codec dump, what word/term tells the layout that codec uses?

 

Where is the description for each layout?  e.g. "layout-id is this and this"

 

I already have "developer one says copy developer 2 and experiment"  but I don't have, "This is what a layout-id is and here is how it works".

 

if that makes sense.

 

Thanks :)

Link to comment
Share on other sites

For a new codec, how do you know it is multilayout?

 

If I have a linux codec dump, what word/term tells the layout that codec uses?

 

Where is the description for each layout?  e.g. "layout-id is this and this"

 

I already have "developer one says copy developer 2 and experiment"  but I don't have, "This is what a layout-id is and here is how it works".

 

if that makes sense.

 

Thanks :)

 

https://github.com/vit9696/AppleALC/wiki/Adding-codec-support#rules-to-add-resources

Link to comment
Share on other sites

×
×
  • Create New...