AppleHDA.kext (Alpha)

About:

This guide will explain how to edit AppleHDA to properly enable audio support for Mac. Many of you have asked for this and feel free to ask any questions. Please do not ask me to modify your AppleHDA. This is why I have provided the guide to do so. This is not a complete guide but will be in the next few days.

Accreditation:

The King’s post found here
DiaboliK’s Vista HDA Verb Converter found here
Hex conversion tool found here
EMlyDinEsH post found here

Preface:

Prior to attempting to begin patching AppleHDA for your configuration read the guide in its entirety. Doing so should allow you to see what parts or sections that you may not understand which will allow you to do research so that you are able to understand in your own way. Also this guide does not use any Terminal applications to convert any of the verbs. Every step will be done manually.

Guide:

Part 1: Getting Information From Windows

1. Boot into Windows

2. Go to the Start Menu:

1

3. Locate the search bar:

2

4. In the search bar type in the following:

Regedit

5. Press Enter

6. The following screen should appear:

win2

7. Go to:

3

8. Then Type in the following:

PinConfig

9. Click:

Find

10. The following screen should appear:

4

11. Locate the following on the left side:

5

12. Right Click on PinConfigOverrideVerbs:

6

13. Click Export and then save the file to your Desktop as:

AppleHDA

14. Locate the following file on your Desktop:

7

15. Right Click on AppleHDA:

8

16. Click on Edit

17. The following screen should appear:

9

18. Copy the following from your AppleHDA file:

“0000”=hex:20,1c,17,01 “0001”=hex:01,1d,17,01 “0002”=hex:46,1e,17,01 “0003”=hex:90,1f,17,01 “0004”=hex:f0,1c,27,01 “0005”=hex:11,1d,27,01 “0006”=hex:11,1e,27,01 “0007”=hex:41,1f,27,01 “0008”=hex:10,1c,47,01 “0009”=hex:44,1d,47,01 “0010”=hex:01,1e,47,01 “0011”=hex:01,1f,47,01 “0012”=hex:12,1c,57,01 “0013”=hex:10,1d,57,01 “0014”=hex:01,1e,57,01 “0015”=hex:01,1f,57,01 “0016”=hex:11,1c,67,01 “0017”=hex:60,1d,67,01 “0018”=hex:01,1e,67,01 “0019”=hex:01,1f,67,01 “0020”=hex:f0,1c,77,01 “0021”=hex:11,1d,77,01 “0022”=hex:11,1e,77,01 “0023”=hex:41,1f,77,01 “0024”=hex:40,1c,87,01 “0025”=hex:98,1d,87,01 “0026”=hex:a1,1e,87,01 “0027”=hex:01,1f,87,01 “0028”=hex:50,1c,97,01 “0029”=hex:9c,1d,97,01 “0030”=hex:a1,1e,97,01 “0031”=hex:02,1f,97,01 “0032”=hex:4f,1c,a7,01 “0033”=hex:34,1d,a7,01 “0034”=hex:81,1e,a7,01 “0035”=hex:01,1f,a7,01 “0036”=hex:1f,1c,b7,01 “0037”=hex:4c,1d,b7,01 “0038”=hex:21,1e,b7,01 “0039”=hex:02,1f,b7,01 “0040”=hex:f0,1c,c7,01 “0041”=hex:11,1d,c7,01 “0042”=hex:11,1e,c7,01 “0043”=hex:41,1f,c7,01 “0044”=hex:29,1c,d7,01 “0045”=hex:e6,1d,d7,01 “0046”=hex:07,1e,d7,01 “0047”=hex:40,1f,d7,01 “0048”=hex:30,1c,e7,01 “0049”=hex:11,1d,e7,01 “0050”=hex:45,1e,e7,01 “0051”=hex:01,1f,e7,01 “0052”=hex:f0,1c,f7,01 “0053”=hex:11,1d,f7,01 “0054”=hex:11,1e,f7,01 “0055”=hex:41,1f,f7,01

11. Go to Vista HDA Verb Converter here

20. The following screen should appear:

Screen Shot 2012-12-15 at 8.34.52 PM

21. Paste your PinConfig into the converter:

Screen Shot 2012-12-16 at 5.51.08 AM

22. Click convert and the following conversion should appear:

Screen Shot 2012-12-16 at 5.51.55 AM

21. Copy the conversion into Note Pad:

<01171C20 01171D01 01171E46 01171F90 01271CF0 01271D11 01271E11 01271F41 01471C10 01471D44 01471E01 01471F01 01571C12 01571D10 01571E01 01571F01 01671C11 01671D60 01671E01 01671F01 01771CF0 01771D11 01771E11 01771F41 01871C40 01871D98 01871EA1 01871F01 01971C50 01971D9C 01971EA1 01971F02 01A71C4F 01A71D34 01A71E81 01A71F01 01B71C1F 01B71D4C 01B71E21 01B71F02 01C71CF0 01C71D11 01C71E11 01C71F41 01D71C29 01D71DE6 01D71E07 01D71F40 01E71C30 01E71D11 01E71E45 01E71F01 01F71CF0 01F71D11 01F71E11 01F71F41>

11.  Save your file as PinConfig onto a Flash Drive

12. Reboot back into Mac OS X

Part 2: Converting HDA Verbs

1. Open textedit:

2. Copy the conversion from Vista HDA Verb Converter into textedit

3. Breakdown the conversion from Vista HDA Verb Converter four values per line respectively:

01171C20 01171D01 01171E46 01171F90
01271CF0 01271D11 01271E11 01271F41
01471C10 01471D44 01471E01 01471F01
01571C12 01571D10 01571E01 01571F01
01671C11 01671D60 01671E01 01671F01
01771CF0 01771D11 01771E11 01771F41
01871C40 01871D98 01871EA1 01871F01
01971C50 01971D9C 01971EA1 01971F02
01A71C4F 01A71D34 01A71E81 01A71F01
01B71C1F 01B71D4C 01B71E21 01B71F02
01C71CF0 01C71D11 01C71E11 01C71F41
01D71C29 01D71DE6 01D71E07 01D71F40
01E71C30 01E71D11 01E71E45 01E71F01

01F71CF0 01F71D11 01F71E11 01F71F41

4. Copy the following formulas into textedit:

0+Node #+71C+1st #
0+Node #+71D+2nd #
0+Node #+71E+3rd #
0+Node #+71F+4th #

5. Convert each line into the following format:

0+11+71C+20
0+11+71D+01
0+11+71E+46
0+11+71F+90

6. Then put the node together for each line:

Node 11 = 20 01 46 90
Node 12 = F0 11 11 41
Node 13 = Not Used
Node 14 = 10 44 01 01
Node 15 = 12 10 01 01
Node 16 = 11 60 01 01
Node 17 = F0 11 11 41
Node 18 = 40 98 A1 01
Node 19 = 50 9C A1 02
Node 20 = 4F 34 81 01
Node 21 = 1F 4C 21 02
Node 22 = F0 11 11 41
Node 23 = 29 E6 07 40
Node 24 = 30 11 45 01
Node 25 = F0 11 11 41

Part 3: Fixing HDA Verbs

1. The Association and Sequence is the first two numbers in the node. This value must be unique to each verb and can not be repeated. A value that is repeated must be changed and can not be used. Values that can be used are the following:

10
20
30
40
50
60
70
80
90
A0
B0
C0
D0
E0
F0

2. Create a list of the first two numbers from each node and then compare them to the list in the prior step. Change the values as needed for example:

20 = Ok
F0 = E0
10 = Ok
12 = 60
11 = 70
F0 = 80
40 = Ok
50 = Ok
4F = 90
1F = A0
F0 = B0
29 = C0
30  = Ok
F0 = D0

3. Add the edits to the nodes:

Node 11 = 20 01 46 90 = 20 01 46 90
Node 12 = F0 11 11 41 = E0 11 11 41
Node 13 = Not Used
Node 14 = 1044 01 01 = 10 44 01 01
Node 15 = 12 10 01 01 =  60 10 01 01
Node 16 = 11 60 01 01 = 70 60 01 01
Node 17 = F0 11 11 41 = 80 11 11 41
Node 18 = 40 98 A1 01 = 40 98 A1 01
Node 19 = 50 9C A1 02 = 50 9C A1 02
Node 20 = 4F 34 81 01 = 90 34 81 01
Node 21 = 1F 4C 21 02 = A0 4C 21 02
Node 22 = F0 11 11 41 = B0 11 11 41
Node 23 = 29 E6 07 40 = C0 E6 07 40
Node 24 = 30 11 45 01 = 30 11 45 01
Node 25 = F0 11 11 41 = D0 01 11 41

4. Next change the second number in the second value to 0:

Node 11 = 20 01 46 90 = 20 00 46 90
Node 12 = E0 11 11 41= E0 10 11 41
Node 13 = Not Used
Node 14 = 10 44 01 01 = 10 40 01 01
Node 15 = 60 10 01 01 = 60 10 01 01
Node 16 = 70 60 01 01 = 70 60 01 01
Node 17 = 80 11 11 41  = 80 10 11 41
Node 18 = 40 98 A1 01 = 40 90 A1 01
Node 19 = 50 9C A1 02 = 50 90 A1 02
Node 20 = 90 34 81 01 = 90 30 81 01
Node 21 = A0 4C 21 02 = A0 40 21 02
Node 22 = B0 11 11 41 = B0 10 11 41
Node 23 = C0 E6 07 40 = C0 E0 07 40
Node 24 = 30 11 45 01 = 30 10 45 01
Node 25 = D0 11 11 41 = D0 00 11 41

5. Giving us:

Node 11 = 20 00 46 90
Node 12 = E0 10 11 41
Node 13 = Not Used
Node 14 = 10 40 01 01
Node 15 = 60 10 01 01
Node 16 = 70 60 01 01
Node 17 = 80 10 11 41
Node 18 = 40 90 A1 01
Node 19 = 50 90 A1 02
Node 20 = 90 30 81 01
Node 21 = A0 40 21 02
Node 22 = B0 10 11 41
Node 23 = C0 E0 07 40
Node 24 = 30 10 45 01
Node 25 = D0 10 11 41

Part 4: Decoding HDA Verbs Additional Info

1. The Port Color identifier is the first number of the second value of the node. Values corresponding colors are the following:

Unknown = 0
Black = 1
Grey = 2
Blue = 3
Green = 4
Red = 5
Orange = 6
Yellow = 7
Purple = 8
Pink = 9
Reserved A-D
White E
Other F

2. Identify the ports colors:

Node 11 = 20 00 46 90 = Unknown
Node 12 = E0 10 11 41 = Black
Node 13 = Not Used
Node 14 = 10 40 01 01 =Green
Node 15 = 60 10 01 01 = Black
Node 16 = 70 60 01 01 = Orange
Node 17 = 80 10 11 41 = Black
Node 18 = 40 90 A1 01 = Pink
Node 19 = 50 90 A1 02 = Pink
Node 20 = 90 30 81 01 = Blue
Node 21 = A0 40 21 02 = Green
Node 22 = B0 10 11 41 = Black
Node 23 = C0 E0 07 40 = White
Node 24 = 30 10 45 01 = Black
Node 25 = D0 10 11 41 = Black

3. The Port Type identifier is the first number of the third value of the node. Values corresponding types are the following:

Line Out = 0
Speaker  = 1
HP Out = 2
CD = 3
SPDIF Out = 4
Digital Other Out = 5
Modem Line Side = 6
Modem Handset Side = 7
Line In = 8
AUX = 9
Mic In = A
Telephony = B
SPDIF In = C
Digital Other In = D
Reserved = E
Other = F

4. Identify the ports type:

Node 11 = 20 00 46 90 = SPDIF Out
Node 12 = E0 10 11 41 = Speaker
Node 13 = Not Used
Node 14 = 10 40 01 01 = Line Out
Node 15 = 60 10 01 01 = Line Out
Node 16 = 70 60 01 01 = Line Out
Node 17 = 80 10 11 41 = Speaker
Node 18 = 40 90 A1 01 = Mic In
Node 19 = 50 90 A1 02 = Mic In
Node 20 = 90 30 81 01 = Line In
Node 21 = A0 40 21 02 = HP Out
Node 22 = B0 10 11 41 = Speaker
Node 23 = C0 E0 07 40 = Line Out
Node 24 = 30 10 45 01 = SPDIF Out
Node 25 = D0 10 11 41 = Speaker

5. The Port Connection Type identifier is the second number of the third value of the node. Values corresponding connection types are the following:

Unknown = 0
1/8″ stereo/mono = 1
1/4″ stereo/mono = 2
ATAPI internal = 3
RCA = 4
Optical = 5
Other Digital = 6
Other Analog = 7
Multichannel Analog (DIN) = 8
XLR/Professional = 9
RJ-11 (Modem) = A
Combination = B
Other = F

6. Identify the ports connection type:

Node 11 = 20 00 46 90 = Other Digital
Node 12 = E0 10 11 41 = 1/8″ stereo/mono
Node 13 = Not Used
Node 14 = 10 40 01 01 = 1/8″ stereo/mono
Node 15 = 60 10 01 01 = 1/8″ stereo/mono
Node 16 = 70 60 01 01 = 1/8″ stereo/mono
Node 17 = 80 10 11 41 = 1/8″ stereo/mono
Node 18 = 40 90 A1 01 = 1/8″ stereo/mono
Node 19 = 50 90 A1 02 = 1/8″ stereo/mono
Node 20 = 90 30 81 01 = 1/8″ stereo/mono
Node 21 = A0 40 21 02 = 1/8″ stereo/mono
Node 22 = B0 10 11 41 = 1/8″ stereo/mono
Node 23 = C0 E0 07 40 = Other Analog
Node 24 = 30 10 45 01 = Optical
Node 25 = D0 10 11 41 = 1/8″ stereo/mono

Part 5: Editing AppleHDA

More to come soon

Advertisements

19 Responses to AppleHDA.kext (Alpha)

  1. Geoff says:

    Looking forward to the next installment.

  2. Mac says:

    Great guide.
    Some clarification regarding Part 3, Step 2.
    You did the following:
    20=OK
    F0=E0
    10=OK
    12=60
    etc

    Can you please explain the logic behind the choice of the numbers you used ?
    E.g. why F0 changed to E0 ?
    Why not F0=F0 and change the next non-unique number ?

    That is, would this sequence still be valid :

    20 = OK
    F0 = OK
    10 = OK
    12 = 60
    11 = 70
    F0 = 80
    40 = Ok
    50 = Ok
    4F = 90
    1F = A0
    F0 = B0
    29 = C0
    30 = Ok
    F0 = D0

    Looking forward to the rest.
    Thx
    Mac

  3. Hack says:

    Hi there,

    Great tutorial!! When are you gonna post the rest of it?

    Thanks 😀

  4. Sam says:

    Great work! Unfortunately the link to the verb converter seems to be broken. I mean it’s not a big deal flipping hex around, but it’s a time safer.

    Anyhow just wanted to say thanks.

  5. Me_and_my_other_one says:

    Vista Converter are still down… 😦

  6. ACS79 says:

    Rampagedev if send you my informations about my notebook DELL1564 with ALC269, you can generate my AppleHDA, because by 4 month i tried make it and no obtained results. Thanks for your attention, ACS79.

  7. terramir says:

    Hey rampagedev, I am hoping you could continue the guide, because honestly I’ve been looking at king’s guide for years and honestly it is poorly written and hard to understand, because it assumes previous knowledge. Also while at this time I am using voodoo loader (to eliminate kernel panics) on my lappy honestly I rather actually create a decent appleHDA file. I really would like to be able to contribute at least this for the hardware I own. i.e. do the work for those among us that can’t even understand your guide. I know there are a few peeps that would like to have a decent apple HDA, My particular laptop is sort of popular even though it’s a few years old samsung i3 princeton. Everything works, including qe/ci except for perfect audio. and the brightness settings, turns out a lot of sandy bridge laptops are in the same boat.
    terramir

    • rampagedev says:

      Never had time to finish it. Been so long since I myself modded AppleHDA.. not sure I will ever finish it to be honest.

      • terramir says:

        I know it might be a chore, but you could help a great part of the community, if you did. Because honestly voodooHDA is so buggy, it causes problems beyond kernel panics. furthermore this may also be a great help to those among us that have to sink their teeth into other kext, mods, because it can help people get their feet wet. A full complete guide by someone who has skills, like you, but written directed towards the newb, could help alot of people to be encouraged to do more research afterwards.
        Hope you find the time because it would be a great service to the community as a whole.
        terramir

      • rampagedev says:

        VoodooHDA never causes Kernel Panics IF the end user reads the documentation. I use VoodooHDA and AppleHDA together on my AMD system. I can do this because I can read… so considering people won’t read the official documentation a write up on VoodooHDA would be pointless. Also I never support it officially unless the audio codex does not follow intels spec.

  8. terramir says:

    I read what docs are there but in several systems it just won’t make it pass the boot process reliably. Thing is of those kernel panics it blames the processor 99% of the time, however if you remove voodooHDA from the boot process and use voodoo loader that kernel panic stops happening all together.
    And I read the docs I could find on it still could not find a solution. Not asking for a voodooHDA write-up keeping our systems as vanilla as possible is the goal, and if we can patch the appleHDA we push more and more towards that goal.

  9. philipp says:

    How hard do you think would it be to mod the kext so I could use my sound card (creative sb recon3d) ? I have a good bit of experience in programming in some languages and would like to know if it’s worth it to get into it or if I would just waste my time trying to get it up and running because it’s not possible.

  10. naidb says:

    thank guys rampagecdev

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s