I will try to explain how to patch and modify a new AppleHDA.kext and hopefully help others in making their one. I believe that here are guys/girls ho want to work on this. I don't know perfect solution, U will need to try and test a bit. Learn and stuff...
This tutorial will be based on AppleHDA 10.5.5 kext coz it is latest one
Things that we need:
HexEditor: HexEdit_220.dmg 525.8KB 6452 downloads
Plist Editor: Property_List_Editor.zip 89.09KB 4089 downloads
AppleHDA.kext: AppleHDA.kext.zip 516.61KB 6999 downloads
And this generic plist files for PlatformPlugin and Controler plugins.
Platform_Controler.zip 3.78KB 3910 downloads
And your own codec dump from Linux, (U can get your codec dump information from Taruga HDAudio.kext, but I never had time to test that)
These are codecs we have in AppleHDA binary
codecs.rtf 573bytes 6913 downloads
And this is a test codec:
Decimal : 283904128
We need to patch AppleHDA binary with Hexedit
Binary is inside AppleHDA.kext (~/AppleHDA.kext/Contenst/MacOS/AppleHDA)
Open AppleHDA in HexEdit and find a codec dump that is close to yours.
Best way of knowing your card is reading patch_realtek.c from ALSA source: patch_realtek.c.txt 534.95KB 5420 downloads
(Or if U are lucky it is the one from original AppleHDA and all that U need to do is create plist files)
I will edit AppleHDA binary with 8008EC10. what is backward of 10EC0880
So I searched for ALC0262 what is in hex 10EC0262 and changed to 8008EC10
P.S: Try different codecs, for this card 10ec0880, sigmatel codec works too, so U have to make some test, don't stuck on first one. Give it a try.
After U patched your AppleHDA next it is to create a working PlatformDriver.plist
I made(hopefully) a generic one with all thing that U could have.
How to Platform: Platform.zip 489.86KB 2797 downloads
Change CodecID to your codec in decimal number and put a LayoutID to 12.
Under PinConfigDefault put nothing.
(It would be best to know your own exact PinConfigDefault numbers, U can obtain them from Vista Registry Explorer, or obtain them thru linux dump(thx Kabyl and The King on this one).
Swap Contorler.plist with Info.plist inside Controler plugin
RENAME Controler.plist to Info.plist!
controler.jpg 182.52KB 6926 downloads
With this U can hopefully boot and have sound.
P.P.S: Change in Controler plist are crucial,but U can boot with your AppleHDA.kext with only this informations in HDAController plist file, but System profiler will not show your inputs.
To change from HEX to DECIMAL use Calculator in Applications.
And U have to use HDAEneabler(If U have Intel chipset) or EFI string for your HDA to load, it is better to use HDAEneabler, coz it sets ClassMatch HDA value for Controler.plist.
After all this U have a working latest HDAkext for alc880:
AppleHDA880.zip 481.72KB 1713 downloads
How to read your codec dump
I will Use a codec dump from user adat6 and try to explane how to find
a pins inside codec dump. And hopefully U will find yours inside your dump
atad6.txt 8.07KB 1791 downloads
How to codec dump: Codecdump.zip 4.28KB 1715 downloads
How to PinConfig, PinConfigDefault or PinConfigOverRides
U can obtain this PinConfig thru Vista registry explorer.
and write: regedit (this will start registry explorer)
Search for PinConfig, and U will get something like this:
VistaRegEdit.rtf 1.51KB 1523 downloads
Then as user idoc said: "strip out the junk!"
f01c2701 111d2701 111e2701 411f2701 f01c3701 111d3701 111e3701 411f3701 1f1c4701 101d4701 211e4701 021f4701 101c5701 011d5701 131e5701 991f5701 f01c6701111d6701 111e6701411f6701 401c8701981d8701 a11e8701021f8701 411c9701091d9701 a31e9701991f9701 4e1ca701301da701 811ea701021fa701 f01cc701111dc701 111ec701411fc701 2d1cd701951dd701 171ed701401fd701 301ce701111de701 451ee701021fe701
then you have to byte flip each double word;
<01271CF0 01271D11 01271E11 01271F41 01371CF0 01371D11 01371E11 01371F41 01471C1F 01471D10 01471E21 01471F02 01571C10 01571D01 01571E13 01571F99 01671D11 01671CF0 01671F41 01671E11 01871D98 01871C40 01871F02 01871EA1 01971D09 01971C41 01971F99 01971EA3 01A71D30 01A71C4E 01A71F02 01A71E81 01C71D11 01C71CF0 01C71F41 01C71E11 01D71D95 01D71C2D 01D71F40 01D71E17 01E71D11 01E71C30 01E71F02 01E71E45>
And after U done this go here so The King can tell U what to do with PinConfig:
PinConfig How to; The King aka XyZ:
Next... how to overide your BIOS with HDAVerbs... and get any card to work
A made this guide for people who cards are not supported by HDA patcher from Taruga, like mine card ALC880, this guide could be alternative. I don't know what cards are working U will have to try on your one.
If U found this guide useful, I am glad.
If U ask for help, and want to post a codec dump or registry dump from windows, please post them in text format as atachment. It is easier for every one.
AppleHDA collection and knowledge base from The King aka XyZ:
Anemic sound from limini: