Jump to content

Guide to patch AppleHDA for your codec


  • Please log in to reply
27 replies to this topic

#1
Mirone

Mirone

    InsanelyMac Legend

  • Local Moderators
  • 1,426 posts
  • Gender:Male
  • Location:Brazil

              140619020937263817.png

 

. CHAPTER 1: GETTING CODEC INFORMATION.

 

Intro: This guide is for those who want to use AppleHDA and / or trying to learn how it works. It is divided in to several steps and we will address each of them throughout the guide.

. STEP ONE: Getting Information from the codec. There are other ways but in this guide we will explain how to get to Linux. Using Ubuntu or another distro. (Note: Use the latest version of Linux and Alsa drivers)

in terminal type:

cat /proc/asound/card0/codec#1 > ~/Desktop/codec_dump.txt

or

cat /proc/asound/card0/codec#0 > ~/Desktop/codec_dump.txt

or if you prefer use zhell script:

cd ~/Desktop && mkdir CodecDump && for c in /proc/asound/card*/codec#*; do f="${c/\/*card/card}"; cat "$c" > CodecDump/${f//\//-}.txt; done && zip -r CodecDump.zip CodecDump

Save it in a safe place.

In OS X, we use the codec_dump for a graphical interface, convert it to decimal (I'll explain why later), get him codec verbs and correct them for OS X.

 

Download and install:Graphviz

Download CodecGraph:codecgraph , unzip it to desktop, copy the generated codec_dump.txt linux folder to CodeGraph then type in termainal:

cd ~/Desktop/codecgraph

and then:

./codecgraph codec_dump.txt 

. STEP TWO: Converting CodecGraph CodecDump and hexadecimal to decimal:

Download: convert_hex_to_dec Credits Munky . Unzip it in the same folder used previously (codecgraph) - In the terminal:

cd ~/Desktop/codecgraph 

chmod +x ./convert_hex_to_dec.rb

./convert_hex_to_dec.rb codec_dump.txt.svg > ~/Desktop/codecgraph/codec_dump_dec.txt.svg

* Replace "codec_dump.txt" with your user name and codec file (if you gave a specific name)

./convert_hex_to_dec.rb codec_dump.txt > ~/Desktop/codecgraph/codec_dump_dec.txt

* Replace "codec_dump.txt" with your user name and codec file (if you gave a specific name)

 

. STEP THREE: For our standard onboard sound card be recognized by OS X must add the device to our HDEF DSDT.aml. For this we use the following patches: HDEF or AZAL to HDEF in both DTGP method has to be present in our DSDT.aml. We use the DSDT Editor to apply the patches correctly http://olarila.com/f...c.php?f=7&t=646 The Patchs you find here http://olarila.com/forum/patches.php This is a Audio Injection standard and should work for all codecs:

Device (HDEF)
            {
                Name (_ADR, 0x001B0000)
                Method (_DSM, 4, NotSerialized)
                {
                    Store (Package (0x04)
                        {
                            "layout-id",
                            Buffer (0x04)
                            {
                                0x0C, 0x00, 0x00, 0x00
                            },

                            "PinConfigurations",
                            Buffer (Zero) {}

                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }
Method (DTGP, 5, NotSerialized)
    {
        If (LEqual (Arg0, Buffer (0x10)
                {
                    /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
                    /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                }))
        {
            If (LEqual (Arg1, One))
            {
                If (LEqual (Arg2, Zero))
                {
                    Store (Buffer (One)
                        {
                            0x03
                        }, Arg4)
                    Return (One)
                }

                If (LEqual (Arg2, One))
                {
                    Return (One)
                }
            }
        }

        Store (Buffer (One)
            {
                0x00
            }, Arg4)
        Return (Zero)
    }

. CHAPTER 2: CORRECTION APPLEHDA.KEXT

 

 For the AppleHDA Work correctly for our codec we make some modifications in the same plists.

 So what are these changes?

If you look at it (click the right mouse button / Show Package Contents), you will find in the Content folder of the main Info.plist (not touching it) and a folder plugins. There are plugins that we have to fix, but not all just Info.plist from this one:

1-AppleHDAHardwareConfigDriver.kext

2-platform.xml and layout12.xml or Layout1.xml (in Folder Resources)
3-BinPatch

 

1-AppleHDAHardwareConfigDriver.kext

To edit this kext need to get configdata / CodecVerbs. 
You can fix them in two ways, either manually or automatically using the script called Signal64 Verbit that performs the entire process automatically 
requiring a few adjustments you can download it here: Attached File  verbit.zip   2.65KB   119 downloads
Unzip it in the same folder codecgraph used previously. then Run this command in Terminal:

cd /Users/your_user_name/Desktop/codecgraph

and then:

./Verbit codec_dump.txt> verbs.txt 

. NOTE: You must delete the line codec_dump.txt: AFG Function Id: 0x1 (unsol 0) 
  Having done this codecgraph open the folder and you will see two files and another one called verbs.txt verbitdebug.txt. 
  verbit.texto is in our interest. For in him we find our configdata / CodecVerbs original and corrected tops underneath. 
  verbs.txt:

Verbs from Linux Codec Dump File: codec_dump.txt


Codec: Realtek ALC887-VD   Address: 0   DevID: 283904135 (0x10ec0887)

   Jack   Color  Description                  Node     PinDefault             Original Verbs
--------------------------------------------------------------------------------------------------------
  ATAPI Unknown  SPDIF Out at Int ATAPI      17 0x11   0x99430140   01171c40 01171d01 01171e43 01171f99
    1/8   Black  Speaker at Ext Rear         18 0x12   0x411111f0   01271cf0 01271d11 01271e11 01271f41
    1/8   Green  Line Out at Ext Rear        20 0x14   0x01014010   01471c10 01471d40 01471e01 01471f01
    1/8   Black  Line Out at Ext Rear        21 0x15   0x01011012   01571c12 01571d10 01571e01 01571f01
    1/8  Orange  Line Out at Ext Rear        22 0x16   0x01016011   01671c11 01671d60 01671e01 01671f01
    1/8    Grey  Line Out at Ext Rear        23 0x17   0x01012014   01771c14 01771d20 01771e01 01771f01
 Mic at Ext Rear                             24 0x18   27367504     01871c50 01871d98 01871ea1 01871f01  
 Mic at Ext Front                            25 0x19   44145760     01971c60 01971d9c 01971ea1 01971f02  
    1/8    Blue  Line In at Ext Rear         26 0x1a   0x0181305f   01a71c5f 01a71d30 01a71e81 01a71f01
 HP Out at Ext Front                         27 0x1b   35736608     01b71c20 01b71d4c 01b71e21 01b71f02  
    1/8   Black  Speaker at Ext Rear         28 0x1c   0x411111f0   01c71cf0 01c71d11 01c71e11 01c71f41
Optical   White  Line Out at Ext N/A         29 0x1d   0x4005e601   01d71c01 01d71de6 01d71e05 01d71f40
Optical  Orange  SPDIF Out at Ext Rear       30 0x1e   0x01456130   01e71c30 01e71d61 01e71e45 01e71f01
    1/8   Black  Speaker at Ext Rear         31 0x1f   0x411111f0   01f71cf0 01f71d11 01f71e11 01f71f41
--------------------------------------------------------------------------------------------------------


   Jack   Color  Description                  Node     PinDefault             Modified Verbs
--------------------------------------------------------------------------------------------------------
  ATAPI Unknown  SPDIF Out at Int ATAPI      17 0x11   0x99430140   01171c40 01171d00 01171e43 01171f90
    1/8   Green  Line Out at Ext Rear        20 0x14   0x01014010   01471c10 01471d40 01471e01 01471f01
    1/8   Black  Line Out at Ext Rear        21 0x15   0x01011012   01571c70 01571d10 01571e01 01571f01
    1/8  Orange  Line Out at Ext Rear        22 0x16   0x01016011   01671c80 01671d60 01671e01 01671f01
    1/8    Grey  Line Out at Ext Rear        23 0x17   0x01012014   01771c90 01771d20 01771e01 01771f01
 Mic at Ext Rear                             24 0x18   27367504     01871c50 01871d90 01871ea1 01871f01  
 Mic at Ext Front                            25 0x19   44145760     01971c60 01971d90 01971ea1 01971f01  
    1/8    Blue  Line In at Ext Rear         26 0x1a   0x0181305f   01a71ca0 01a71d30 01a71e81 01a71f01
 HP Out at Ext Front                         27 0x1b   35736608     01b71c20 01b71d40 01b71e21 01b71f01  
Optical   White  Line Out at Ext N/A         29 0x1d   0x4005e601   01d71cb0 01d71de0 01d71e05 01d71f40
Optical  Orange  SPDIF Out at Ext Rear       30 0x1e   0x01456130   01e71c30 01e71d60 01e71e45 01e71f01

verbitdebug.txt:

Blacklist:
411111f0 400000f0 CD at Int ATAPI
Removed Nodes: 0x12 0x1c 0x1f 
Checking 71c Associations

Current Associations
 01171c40 = 4 
 01471c10 = 1 
 01571c12 = 1 
 01671c11 = 1 
 01771c14 = 1 
 01871c50 = 5 
 01971c60 = 6 
 01a71c5f = 5 
 01b71c20 = 2 
 01d71c01 = 1  note: Changed 0 to 1
 01e71c30 = 3 

  Used associations = 4 1 1 1 1 5 6 5 2 1 3
Unused associations = 7 8 9 a b c d e

Correcting duplicate associations

Checking if 4 already exists in: 1 1 1 1 5 6 5 2 1 3 
   no duplicate found
Checking if 1 already exists in: 4 1 1 1 5 6 5 2 1 3 
   duplicate found - Is this the first time we've seen this association?
   yes - ignoring
Checking if 1 already exists in: 4 1 1 1 5 6 5 2 1 3 
   duplicate found - Is this the first time we've seen this association?
   no - replacing association with: 7
Checking if 1 already exists in: 4 1 7 1 5 6 5 2 1 3 
   duplicate found - Is this the first time we've seen this association?
   no - replacing association with: 8
Checking if 1 already exists in: 4 1 7 8 5 6 5 2 1 3 
   duplicate found - Is this the first time we've seen this association?
   no - replacing association with: 9
Checking if 5 already exists in: 4 1 7 8 9 6 5 2 1 3 
   duplicate found - Is this the first time we've seen this association?
   yes - ignoring
Checking if 6 already exists in: 4 1 7 8 9 5 5 2 1 3 
   no duplicate found
Checking if 5 already exists in: 4 1 7 8 9 5 6 2 1 3 
   duplicate found - Is this the first time we've seen this association?
   no - replacing association with: a
Checking if 2 already exists in: 4 1 7 8 9 5 6 a 1 3 
   no duplicate found
Checking if 1 already exists in: 4 1 7 8 9 5 6 a 2 3 
   duplicate found - Is this the first time we've seen this association?
   no - replacing association with: b
Checking if 3 already exists in: 4 1 7 8 9 5 6 a 2 b 
   no duplicate found

New 71c Associations
 Before      After
--------------------------------------------------
01171c40   01171c40  01171d01  01171e43  01171f99
01471c10   01471c10  01471d40  01471e01  01471f01
01571c12   01571c70  01571d10  01571e01  01571f01
01671c11   01671c80  01671d60  01671e01  01671f01
01771c14   01771c90  01771d20  01771e01  01771f01
01871c50   01871c50  01871d98  01871ea1  01871f01
01971c60   01971c60  01971d9c  01971ea1  01971f02
01a71c5f   01a71ca0  01a71d30  01a71e81  01a71f01
01b71c20   01b71c20  01b71d4c  01b71e21  01b71f02
01d71c01   01d71cb0  01d71de6  01d71e05  01d71f40
01e71c30   01e71c30  01e71d61  01e71e45  01e71f01

Reset 71d Misc to 0
New 71d Associations
 Before                After
--------------------------------------------------
01171d01   01171c40  01171d00  01171e43  01171f99
01471d40   01471c10  01471d40  01471e01  01471f01
01571d10   01571c70  01571d10  01571e01  01571f01
01671d60   01671c80  01671d60  01671e01  01671f01
01771d20   01771c90  01771d20  01771e01  01771f01
01871d98   01871c50  01871d90  01871ea1  01871f01
01971d9c   01971c60  01971d90  01971ea1  01971f02
01a71d30   01a71ca0  01a71d30  01a71e81  01a71f01
01b71d4c   01b71c20  01b71d40  01b71e21  01b71f02
01d71de6   01d71cb0  01d71de0  01d71e05  01d71f40
01e71d61   01e71c30  01e71d60  01e71e45  01e71f01

Correct 71f 02 FP to 01
New 71f Associations
 Before                                    After
--------------------------------------------------
01171d01   01171c40  01171d00  01171e43  01171f90
01471d40   01471c10  01471d40  01471e01  01471f01
01571d10   01571c70  01571d10  01571e01  01571f01
01671d60   01671c80  01671d60  01671e01  01671f01
01771d20   01771c90  01771d20  01771e01  01771f01
01871d98   01871c50  01871d90  01871ea1  01871f01
01971d9c   01971c60  01971d90  01971ea1  01971f01
01a71d30   01a71ca0  01a71d30  01a71e81  01a71f01
01b71d4c   01b71c20  01b71d40  01b71e21  01b71f01
01d71de6   01d71cb0  01d71de0  01d71e05  01d71f40
01e71d61   01e71c30  01e71d60  01e71e45  01e71f01

The codec used in the above example as you can see is a ALC887-VD was necessary to change only one of the external microphones. 
To understand how these changes are made we need to go deeper. 
So what is a codec verb?
For each input/output there is a sequence of 4 verbs.
Lets take an example from codec used before:

 

ts about NodeID(NID) 0x14 in hex, 20 in decimal:

The default verbs for it: 21471c10 21471d44 21471e01 21471f01
01471c10:
01471c10 = CAd (Codec Adress)
01471c10 = NID (NodeID)
01471c10 = Verb Commands like 71"c" then "d", "e" ,"f"
01471c10 = Verb Data
And the same for the rest.

I think Cad, NID and Verb Commands are pretty simple to figure out: first 2 you get them from linux dump, and commands are standard 71c, 71d, 71e, 71f.
Lets see about verb data:

- 71cXY X=Default Association Y=Sequence

. DEFAULT ASSOCIATION AND SEQUENCE: are used together by software to group Pin Complexes (and therefore jacks) together into functional blocks to support multichannel operation. Software may assume that all          jacks with the same association number are intended to be grouped together, for instance to provide six channel analog output. The Default Association can also be used by software to prioritize resource allocation in constrained situations. Lower Default Association values would be higher in priority for resources such as processing nodes or Input and Output Converters. Note that this is the default association only, and software can override this value if required, in particular if the user provides additional information about the particular system configuration. A value of 0000b is reserved and should not be used. Software may interpret this value to indicate that the Pin Configuration data has not been properly initialized. A value of 1111b is a special value indicating that the Association has the lowest priority. Multiple different Pin Complexes may share this value, and each is intended to be exposed as independent devices.

. SEQUENCE: indicates the order of the jacks in the association group. The lowest numbered jack in the association group should be assigned the lowest numbered channels in the stream, etc. The numbers need not    be sequential within the group, only the order matters. Sequence numbers within a set of Default Associations must be unique.

*My notes for this, if you look on the vanilla codec verb(no matter what codec) you will see that Sequence is always 0.
Why that, and why for us on our codec verbs is different? Simple b/c Apple dosen't have multichannel analog out! so you must change it to 0.

*About Default Association, Keep the default one, in order, and on those that are the same replace them with new one that dosen't exist already in the dump... the values you can use are: 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d and f.(see what does verbit if you still don't understand)

- 71dXY X=Color Y=Misc

. COLOR: indicates the color of the physical jack for use by software.

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 

. MISC: is a bit field used to indicate other information about the jack. Currently, only bit 0 is defined. If bit 0 is set, it indicates that the jack has no presence detect capability, so even if a Pin Complex indicates that the codec hardware supports the presence detect functionality on the jack, the external circuitry is not capable of supporting the functionality.
Reserved 3 
Reserved 2 
Reserved 1 
Jack Detect Override 0 

*Use 0 for Jack Detect - External Device(e.g. Headphones Mic etc)
Use 1 for Jack Detect Disabled - Internal Device(e.g. Internal speakers, Internal mic)

71eXY X=Default Device Y=Connection Type

. DEFAULT DEVICE: INDICATES: the intended use of the jack or device. This can indicate either the label on the jack or the device that is hardwired to the port, as with integrated speakers and the like.

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 

. CONNECTION TYPE: indicates the type of physical connection, such as a 1/8-inch stereo jack or an optical digital connector, etc. Software can use this information to provide helpful user interface descriptions to the user or to modify reported codec capabilities based on the capabilities of the physical transport external to the codec.

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

71fXY X=Port Connectivity Y=Location

. PORT CONNECTIVITY: indicates the external connectivity of the Pin Complex. Software can use this value to know what Pin Complexes are connected to jacks, internal devices, or not connected at all.
00b - The Port Complex is connected to a jack (1/8", ATAPI, etc.). 
01b - No physical connection for Port. 
10b - A fixed function device (integrated speaker, integrated mic, etc.) is attached. 
11b - Both a jack and an internal device are attached. The Information provided in all other fields refers to the integrated device. The PD pin will reflect the status of the jack; the user will need to be queried to figure out what it is.

. LOCATION: INDICATES the physical location of the jack or device to which the pin complex is connected. This allows software to indicate, for instance, that the device is the “Front Panel Headphone Jack” as opposed to rear panel connections.

*Details:
Convert the 2 digit hex number to binary.
Pad the front with zero's to make it 8 dgits. 
 

EXAMPLE:

0x02 = binary 10 = 00000010 8 digit binary

Reading the bits from left to right:

Port Connectivity bits 7:6 
-----------------------------------------------------------
00 - Port is connected to a Jack
01 - No External Port -or- No physical connection for Port  
10 - Fixed Function/Built In Device (integrated speaker, mic, etc)
11 - Jack and Internal device are attached 

Location Part 1 - bits 5:4
-----------------------------------------------------------
00 - External on primary chassis
01 - Internal
10 - Separate chassis
11 - Other

Location Part 2 - bits 3:0
-----------------------------------------------------------
The meaning depends on Location Part 1 

00 0000   N/A
00 0001   Rear
00 0010   Front
00 0011   Left
00 0100   Right
00 0101   Top
00 0110   Bottom
00 0111   Special (Rear panel)
00 1000   Special (Drive bay)

01 0000   N/A
01 0111   Special (Riser)
01 1000   HDMI
01 1001   ATAPI

10 0000   N/A
10 0001   Rear
10 0010   Front
10 0011   Left
10 0100   Right
10 0101   Top
10 0110   Bottom

11 0000   N/A
11 0110   ?
11 0111   Inside Mobile Lid (example: mic)
11 1000   Outside Mobile Lid

         Bits
Hex     76 54 3210
-------------------
71cf01 = 00 00 0001 - Port has a jack - It is External - Rear Location
71cf02 = 00 00 0010 - Port has a jack - It is External - Front Panel Location 
71cf59 = 01 01 1001 - No External Port - ATAPI 
71cf18 = 00 01 1000 - Port has a jack - External - HDMI
71cf90 = 10 01 0000 - Built In Device - Internal - N/A 
         |  |  ||||
         |  |  |--------- Location part 2
         |  |------------ Location part 1  
         |--------------- Port Connectivity
A good APP for you to test in practice
is this: PinConfigurator
Credits: sax-mmS
 
Thanks again to Signal64 for his VerbCheatSheet
*All info came from High Definition Audio Specification Read it for more details!
 
. CONCLUSION: 
 
The script does a great job, still not perfect as it does not know what are our options ... perhaps a GUI application may be added in the future. 
So that those options may be? 
- you may want to setup mic as internal to get ambient noise reduction for it. 
- some codecs have only line outs same trick can apply and you can set first output as speaker and get as an option software dsp for it. 
- for front panel support you may need to transform back mic in line in.
And so on ... 
Now that we got all necessary information about configdata / CodecVerbs we edit the info.plist of AppleHDAHardwareConfigDriver.kext. 

Editing AppleHDAHardwareConfigDriver.kext (Info.plist) 
(Click with the right mouse button / Show Package Contents) Open Plist with a Plist editor. 
Navigate to the key IOKitPersonalities / HDA Hardware Config ResourceHDAConfigDefault. 

1-CodecID: Put the ID of your codec in Numbers 0x10ec0887 Decimal (Hexadecimal) -> 283 904 135 (Decimal) 
2-configdata: Here we put our configdata / Verbs codec that previously corrected. 
3-FuncGroup: Must always be 1. 
4-LayoutID: By default is 12 but can be any other number provided that you also change the number of layout on your DSDT.aml 
* NOTE: In the Mountain/Mavericks Lion kexts so we can use a layout that already has in itself no kext and others like layout887.xml as was used in the Lion kexts.
o1dw.png
 
2- Editing and platform.xml layout12.xml or Layout1.xml (Folder Resources) 
This is the trickiest part. 
Within the Resources folder you will find several layouts.xml and a Platforms.xml. 
You'll edit both according to the previous corrections ie in AppleHDAHardwareConfigDriver.kext use the layout12 so let's make the necessary edits on this. 

1-CodecID: Put the ID of your codec in Numbers 0x10ec0887 Decimal (Hexadecimal) -> 283 904 135 (Decimal) 
2-PathMapID: Change to 1 
* Note: Exclude MuteGPIO, SignalProcessing of all keys.
 
uip7.png
 
What we had to fix in Layout12.xml is already completed. 

Now we edit the Platforms.xml is here that lies the pathmaps. Within Key Pathmaps there are other keys 
which are numbered and each corresponds to a specific layout.xml eg use within the same layout12.xml has a key with pathmap Id = 1. 
In the example we are using a codec ALC887-VD have 4 outputs and 2 audio inputs. Totaling 6 devices. 
For output devices, the PathMap follows this pattern: 
Pin Complex (NodeID) -> Audio Mixer-> Audio Output 
So we have to find a node Pin Complex (NodeID), a node Audio Mixer and finally an audio output node. 
For input devices, the PathMap follow this pattern: 
Pin-Complex (NodeID)> Selector/Mixer- Audio Input> Audio 
Here, we have to find a node Pin Complex (NodeID), an audio mixer / selector node and finally a node of audio input. 
Open the file in the folder generated codec_dump_dec.txt.svg codegraph you will see something like this: 

nxur.png
 
 
note 20 (Pin Complex) -> 12 (node ​​Audio Mixer) -> 2 (Audio output node) 
from there we have already formed our pathmap lineout to (in the case node20 is an internal speaker). 
We will do the same for the rest of our pathmaps. 
Note: Note that in the screenshot attached above you can see that the lines are continuous connections of nodes.
 
1jis.png
 
An example of Pathmaps to Mic (External): 

note 24 (Pin Complex) -> 35 (node ​​Audio Mixer) -> 9 (Audio output node) 
Note: Usually starts unlike 9 -> 34 -> 24

 

zsuy.png

 

The pathmaps codec for example were used as well: 

9-34-24 = External Mic 
9-34-25 = External Mic Front 
8-35-26 = Line Out 
2-12-20 = Internal Speakers 
27-38-37 = Headphone 
23-15-5 = Line Out 
22-14-4 = Line Out 
23-13-3 = Line Out 
30-6 = Digital Output

 

3-BinPatch: 

Starting with version 10.6.3 of Snow Leopard was also necessary to correct the binary file of Applehda.kext it is within the MacOs folder that sits inside the Kext to make this correction we will use the script done by bcc9.

patch-hda.zip

 

Copy the folder to your desktop and already with Applehda.kext edits and installed in S / L / E type the following commands in Terminal:

cd ~/desktop/patch-hda
./patch-hda.pl 10ec0887 

. NOTE: Open the folder hda-patch-hda-codecs.pl file inside it is all supported codecs for the script for more information: Script to patch AppleHDA binary for osx10.7/10.8/10.9

A tip if your codec is not supported by the script you can try to fix manually using a binary editor like HexFiend and replace one of the codecs used, by correction for you.
In the example above was corrected binary for ALC887-VD codec if you are correct for your codec is necessary to replace the 10ec0887 by the id of your codec.
In binary they are written from right to left ie 10ec0887 = 8708ec10.

. IMPORTANT: 

The Mountain Lion kext / Mavericks have a new structure and the files are compressed in. Zlib to unpack and edit these files will use zlib.
This application is based on RevoGirl script, it makes the process of files. Zlib from AppleHDA.kext to decompress / compress easier. Just drag the file zlib. The application and it will unzip or drag the xml file. And it will compress to. Zlib.
So if you own an old kext from Lion can compress files using this APP.Download Zlib.

 

Folder with all the necessary tools for editing and some kexts Applehda.kext several original versions of OS X: tools AppleHDA

 

. CREDITS: The King, bcc9, RevoGirl (RIP), EMlyDinEsH, Munky, TimeWalker and others.



#2
pokenguyen

pokenguyen

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 429 posts
  • Gender:Male

Very nice thread! I wonder if there is any difference if we use other layout files? I see most IDT AppleHDA use layout12, while Realtek AppleHDA use layout28.



#3
Mirone

Mirone

    InsanelyMac Legend

  • Local Moderators
  • 1,426 posts
  • Gender:Male
  • Location:Brazil

Very nice thread! I wonder if there is any difference if we use other layout files? I see most IDT AppleHDA use layout12, while Realtek AppleHDA use layout28.

I see no difference in the number of Layout.
I think the important thing is the content of LayiutID.
I use LayoutID = 4


#4
pokenguyen

pokenguyen

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 429 posts
  • Gender:Male

Hi Mirone, when I edit  Platforms.xml, I see some nodes have "Amp" and "Boost". Should I keep them or remove all?



#5
Mirone

Mirone

    InsanelyMac Legend

  • Local Moderators
  • 1,426 posts
  • Gender:Male
  • Location:Brazil

Hi Mirone, when I edit  Platforms.xml, I see some nodes have "Amp" and "Boost". Should I keep them or remove all?

boost for microphones and
AMP output and inputs for all
has a specific function is
for removing them should know why
to do this.


#6
pokenguyen

pokenguyen

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 429 posts
  • Gender:Male

boost for microphones and
AMP output and inputs for all
has a specific function is
for removing them should know why
to do this.
look here: High Definition Audio Specification


Thank you

#7
crump

crump

    InsanelyMac Protégé

  • Members
  • Pip
  • 10 posts

I got stuck reading there...

ts about NodeID(NID) 0x14 in hex, 20 in decimal:

The default verbs for it: 21471c10 21471d44 21471e01 21471f01
21471c10:
2471c10 = CAd (Codec Adress)
21471c10 = NID (NodeID)
21471c10 = Verb Commands like 71"c" then "d", "e" ,"f"
21471c10 = Verb Data
And the same for the rest.

 

would you mind explaining what is this coming from? Thank you.



#8
Mirone

Mirone

    InsanelyMac Legend

  • Local Moderators
  • 1,426 posts
  • Gender:Male
  • Location:Brazil

I got stuck reading there...

ts about NodeID(NID) 0x14 in hex, 20 in decimal:

The default verbs for it: 01471c10 01471d44 01471e01 01471f01

21471c10:
0471c10 = CAd (Codec Adress)
01471c10 = NID (NodeID)
01471c10 = Verb Commands like 71"c" then "d", "e" ,"f"
01471c10 = Verb Data
And the same for the rest.

 

would you mind explaining what is this coming from? Thank you.

what is your doubt?
since Verbit,
fixes
all verbs automatically for you.
Read the following below the part you
posted and will understand.


#9
uzmi

uzmi

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 252 posts

1-AppleHDAHardwareConfigDriver.kext

To edit this kext need to get configdata / CodecVerbs. 
You can fix them in two ways, either manually or automatically using the script called Signal64 Verbit that performs the entire process automatically 
requiring a few adjustments you can download it here: http://signal64.osx8...udio/verbit.zip 

 

Link not works

 

http://www.insanelym...ile/212-verbit/

 

Mirone,

Excelent works 

Thanks



#10
Mirone

Mirone

    InsanelyMac Legend

  • Local Moderators
  • 1,426 posts
  • Gender:Male
  • Location:Brazil

@uzmi

Broken link corrected. 
Thanks for reporting.


#11
realmadrid_cf

realmadrid_cf

    InsanelyMac Protégé

  • Members
  • Pip
  • 8 posts
  • Gender:Male
  • Location:Vietnam

i'm using clover bootloader, how to edit "config.plist"? 



#12
Mirone

Mirone

    InsanelyMac Legend

  • Local Moderators
  • 1,426 posts
  • Gender:Male
  • Location:Brazil
so if you go by injecting the audio clover. 
using a DSDT has no need to stir in 
config.plist. 
delete the flag NPCI = 0x2000/3000


#13
Mirone

Mirone

    InsanelyMac Legend

  • Local Moderators
  • 1,426 posts
  • Gender:Male
  • Location:Brazil

Mirone Can you help me to patch apple Hda for VIA VT2020 for Asus maximus III gene board

 

OFF TOPIC!

look here: http://www.insanelym...patch-requests/



#14
Revolutioner

Revolutioner

    InsanelyMac Protégé

  • Members
  • PipPip
  • 51 posts
  • Gender:Male

mirone getting this only 

 

cat: /proc/asound/card0/codec#0: No such file or directory

 

using linux mint Live USB ...



#15
eʍwe

eʍwe

    InsanelyMac Protégé

  • Members
  • PipPip
  • 55 posts
  • Gender:Male
  • Location:Jongen
  • Interests:Respect to the others

can i to apply this method into all kind of audio codec..? like cmedia, ess and etc..?!



#16
Mirone

Mirone

    InsanelyMac Legend

  • Local Moderators
  • 1,426 posts
  • Gender:Male
  • Location:Brazil
You can try, 
some codecs are not supported 
Via codecs eg 
some of them work and others do not.


#17
trik82

trik82

    InsanelyMac Protégé

  • Members
  • Pip
  • 20 posts

can't get internal mic working with ALC269 (VC2??)

 

ConfigData 01471C10 01471D00 01471E17 01471F99 01571C20 01571D10 01571E21 01571F02 01271C30 01271D00 01271EA6 01271F99 01871C40 01871D10 01871EA1 01871F02 

 

Paths

Line-in 8 - 35 - 24

Mic 9 - 34 - 18

Speaker 20 - 13 - 3

HDMI 21 - 12 - 2

Line-out 24 - 12 - 2

 

someone can help?

Attached Files



#18
Mirone

Mirone

    InsanelyMac Legend

  • Local Moderators
  • 1,426 posts
  • Gender:Male
  • Location:Brazil

@trik82

Try this:

01471C10 01471D00 01471E13 01471F99 01571C20 01571D10 01571E21 01571F02 01271C30 01271D00 01271EA0 01271F90 01871C40 01871D10 01871E81 01871F02  01470C02.



#19
trik82

trik82

    InsanelyMac Protégé

  • Members
  • Pip
  • 20 posts

@trik82

Try this:

01471C10 01471D00 01471E13 01471F99 01571C20 01571D10 01571E21 01571F02 01271C30 01271D00 01271EA0 01271F90 01871C40 01871D10 01871E81 01871F02  01470C02.

 

nope :( i still can see 2 output devices but no inputs



#20
Allaп

Allaп

    InsanelyMaestro

  • Local Moderators
  • 2,484 posts
  • Gender:Male
  • Location:Brazil

mirone getting this only 

using linux mint Live USB ...

 

try this: 

cat /proc/asound/card0/codec#1 > ~/Desktop/codec_dump.txt






0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy