Jump to content
InsanelyMac Forum
Micky1979

Patched AppleHDA.kext for codecs IDT 92HD81B1X5, 92HD91BXX, 92HD87B1/3, 92HD87B2/4, 92HD87XX etc.

Recommended Posts

Volume-bassissimo-Lion.jpg10.7.x, 10.8.x AppleHDA.kext codec IDT 92HD91BXX, 92HD81B1X5 and 92HD87B2/4 specified for HP DV 6xxx, DV 7xxx and ProBook 45xx

IDT 92HD91BXX = 111d:76e0
IDT 92HD81B1X5 = 111d:7605
IDT 92HD87B2/4 = 111d76d9 by
zoltankr

IDT 92HD87B1/3 = 111d76d1 by TheEnthusiast

IDT 92HD87XX = 111d76dF by TUX FIRE

 


I admit I've created this kext for *native audio on Laptop HP DV6/7 6000 and the new 7000 series, but below there are minimal instructions of how to change the pinconfig, if you need to adapt it to other configurations.

Credits for this work to the respective topic that I followed:

bcc9
THe KiNG Signal 64, and Munky
ages_sabres18
Samantha (R.I.P)
Andy Vandijck
Master Chief
Intel® HD Audio


* Of course, the "native" is a kext that works without modification on your hardware, but call it for convenience, mostly because we can work with the same kext version of the Os (no more Roll Back)!

Share this post


Link to post
Share on other sites
Advertisement

Stuff needed:

 

- Ubuntu live cd

- Codec_Dump (made by you :weight_lift: )

- patch_hda (thanks bcc9 for adding 111d76e0 codec)

- graphviz (download according to your osx version)

- codecgraph-20120114.tar (see for update version, and rename it to "codecgraph" for convenience)

- convert_hex_to_dec.rb.zip

- verbit.zip

- Plist Editor (search for free on Google)

- zlib.pl.zip by Samantha

- layout12.xml.zlib and Platforms.xml.zlib (You can take in AppleHDA.kext, and edit it)

 

all rights to their respective creators, as in the above Topic

Share this post


Link to post
Share on other sites

Find a codec id:

 

Simply, If you have done the codec dump with Ubuntu, find into it... written in Hex.

 

In Windows, go to "Device Manager" and look for "Sound, Video and game"

Under, choice "codec" (not the controller) and see for hardware vendor ID in the tab.

something like this:

idtdevmgr.jpg

 

Now you know your codec audio!

 

Mine is vendor ID/111d (IDT) Product ID/76e0 (codec id product ) complete=111d76e0

 

Usage of codec id:

 

the codec id is repeatedly used in several places in AppleHDA.kext, but in different ways like Hex byte flipped and decimal

 

Normal Hex__________11 1d 76 e0

 

decimal_____________287143648

Hex byte flipped_______e0 76 1d 11

 

easy do the conversion with Calculator.app included in Osx

 

 

calc1y.pngcalc2.pngcalc3.png

 

Share this post


Link to post
Share on other sites

AppleHDA structure:

 

 

kext, is a package container, if you change or remove extension, he becomes a folder.

To display the contents, click with the right mouse button and then "show package contents", or as mentioned above.

 

structure is as follows:

Contents:

 

 

AppleHDA.kext:

 

Contents

 

./Contents:

Info.plist PlugIns _CodeSignature

MacOS Resources version.plist

 

./Contents/MacOS:

AppleHDA

 

./Contents/PlugIns:

AppleHDAController.kext AppleMikeyDriver.kext

AppleHDAHALPlugIn.bundle DspFuncLib.kext

AppleHDAHardwareConfigDriver.kext IOHDAFamily.kext

 

./Contents/PlugIns/AppleHDAController.kext:

Contents

 

./Contents/PlugIns/AppleHDAController.kext/Contents:

Info.plist MacOS _CodeSignature version.plist

 

./Contents/PlugIns/AppleHDAController.kext/Contents/MacOS:

AppleHDAController

 

./Contents/PlugIns/AppleHDAController.kext/Contents/_CodeSignature:

CodeDirectory CodeResources

CodeRequirements CodeSignature

 

./Contents/PlugIns/AppleHDAHALPlugIn.bundle:

Contents

 

./Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents:

Info.plist MacOS _CodeSignature version.plist

 

./Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS:

AppleHDAHALPlugIn

 

./Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/_CodeSignature:

CodeResources

 

./Contents/PlugIns/AppleHDAHardwareConfigDriver.kext:

Contents

 

./Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents:

Info.plist MacOS _CodeSignature version.plist

 

./Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/MacOS:

AppleHDAHardwareConfigDriver

 

./Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/_CodeSignature:

CodeDirectory CodeResources

CodeRequirements CodeSignature

 

./Contents/PlugIns/AppleMikeyDriver.kext:

Contents

 

./Contents/PlugIns/AppleMikeyDriver.kext/Contents:

Info.plist MacOS _CodeSignature version.plist

 

./Contents/PlugIns/AppleMikeyDriver.kext/Contents/MacOS:

AppleMikeyDriver

 

./Contents/PlugIns/AppleMikeyDriver.kext/Contents/_CodeSignature:

CodeDirectory CodeResources

CodeRequirements CodeSignature

 

./Contents/PlugIns/DspFuncLib.kext:

Contents

 

./Contents/PlugIns/DspFuncLib.kext/Contents:

Info.plist MacOS _CodeSignature version.plist

 

./Contents/PlugIns/DspFuncLib.kext/Contents/MacOS:

DspFuncLib

 

./Contents/PlugIns/DspFuncLib.kext/Contents/_CodeSignature:

CodeDirectory CodeResources

CodeRequirements CodeSignature

 

./Contents/PlugIns/IOHDAFamily.kext:

Contents

 

./Contents/PlugIns/IOHDAFamily.kext/Contents:

Info.plist MacOS _CodeSignature version.plist

 

./Contents/PlugIns/IOHDAFamily.kext/Contents/MacOS:

IOHDAFamily

 

./Contents/PlugIns/IOHDAFamily.kext/Contents/_CodeSignature:

CodeDirectory CodeResources

CodeRequirements CodeSignature

 

./Contents/Resources:

Dutch.lproj layout29.xml.zlib layout75.xml.zlib

English.lproj layout3.xml.zlib layout76.xml.zlib

French.lproj layout31.xml.zlib layout77.xml.zlib

German.lproj layout32.xml.zlib layout78.xml.zlib

Italian.lproj layout33.xml.zlib layout79.xml.zlib

Japanese.lproj layout35.xml.zlib layout80.xml.zlib

Platforms.xml.zlib layout36.xml.zlib layout81.xml.zlib

Spanish.lproj layout38.xml.zlib layout82.xml.zlib

ar.lproj layout39.xml.zlib layout83.xml.zlib

ca.lproj layout4.xml.zlib l ayout84.xml.zlib

cs.lproj layout40.xml.zlib layout85.xml.zlib

da.lproj layout42.xml.zlib layout86.xml.zlib

el.lproj layout44.xml.zlib layout88.xml.zlib

fi.lproj layout46.xml.zlib layout9.xml.zlib

he.lproj layout48.xml.zlib layout90.xml.zlib

hr.lproj layout5.xml.zlib layout91.xml.zlib

hu.lproj layout50.xml.zlib layout92.xml.zlib

ko.lproj layout53.xml.zlib layout95.xml.zlib

layout0.xml.zlib layout56.xml.zlib layout98.xml.zlib

layout1.xml.zlib layout58.xml.zlib layout99.xml.zlib

layout10.xml.zlib layout59.xml.zlib no.lproj

layout11.xml.zlib layout60.xml.zlib pl.lproj

layout12.xml.zlib layout61.xml.zlib pt.lproj

layout13.xml.zlib layout62.xml.zlib pt_PT.lproj

layout16392.xml.zlib layout63.xml.zlib ro.lproj

layout16394.xml.zlib layout64.xml.zlib ru.lproj

layout17.xml.zlib layout65.xml.zlib sk.lproj

layout18.xml.zlib layout66.xml.zlib sv.lproj

layout19.xml.zlib layout67.xml.zlib th.lproj

layout2.xml.zlib layout69.xml.zlib tr.lproj

layout20.xml.zlib layout70.xml.zlib uk.lproj

layout21.xml.zlib layout71.xml.zlib zh_CN.lproj

layout24.xml.zlib layout72.xml.zlib zh_TW.lproj

layout27.xml.zlib layout73.xml.zlib

layout28.xml.zlib layout74.xml.zlib

 

./Contents/Resources/Dutch.lproj:

Localizable.strings

 

./Contents/Resources/English.lproj:

Localizable.strings

 

./Contents/Resources/French.lproj:

Localizable.strings

 

./Contents/Resources/German.lproj:

Localizable.strings

 

./Contents/Resources/Italian.lproj:

Localizable.strings

 

./Contents/Resources/Japanese.lproj:

Localizable.strings

 

./Contents/Resources/Spanish.lproj:

Localizable.strings

 

./Contents/Resources/ar.lproj:

Localizable.strings

 

./Contents/Resources/ca.lproj:

Localizable.strings

 

./Contents/Resources/cs.lproj:

Localizable.strings

 

./Contents/Resources/da.lproj:

Localizable.strings

 

./Contents/Resources/el.lproj:

Localizable.strings

 

./Contents/Resources/fi.lproj:

Localizable.strings

 

./Contents/Resources/he.lproj:

Localizable.strings

 

./Contents/Resources/hr.lproj:

Localizable.strings

 

./Contents/Resources/hu.lproj:

Localizable.strings

 

./Contents/Resources/ko.lproj:

Localizable.strings

 

./Contents/Resources/no.lproj:

Localizable.strings

 

./Contents/Resources/pl.lproj:

Localizable.strings

 

./Contents/Resources/pt.lproj:

Localizable.strings

 

./Contents/Resources/pt_PT.lproj:

Localizable.strings

 

./Contents/Resources/ro.lproj:

Localizable.strings

 

./Contents/Resources/ru.lproj:

Localizable.strings

 

./Contents/Resources/sk.lproj:

Localizable.strings

 

./Contents/Resources/sv.lproj:

Localizable.strings

 

./Contents/Resources/th.lproj:

Localizable.strings

 

./Contents/Resources/tr.lproj:

Localizable.strings

 

./Contents/Resources/uk.lproj:

Localizable.strings

 

./Contents/Resources/zh_CN.lproj:

Localizable.strings

 

./Contents/Resources/zh_TW.lproj:

Localizable.strings

 

./Contents/_CodeSignature:

CodeDirectory CodeResources

CodeRequirementsCodeSignature

 

Marked in red color our Target files!!

 

desktopxr.png

 

 

Targhet files:

 

AppleHDA.kext/Contents/MacOS/AppleHDA

 

AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist

 

AppleHDA.kext/Contents/Resources/layout12.xml.zlib

 

AppleHDA.kext/Contents/Resources/Platforms.xml.zlib

Share this post


Link to post
Share on other sites

Discover our pinconfig

 

OK, now we have everything we need, so let's start:

 

Boot with Ubuntu, and seek the Terminal and give these commands:

 

 

sudo -s

 

then

 

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

 

if it does not work, you probably need to have to get the codec "0", as follows:

 

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

(This happens if your codec is not 1 but is 0, otherwise it is not found, and generates an empty codec_dump.txt, so check it out!)

 

 

On the Ubuntu desktop you will find the codec_dump.txt, save on a USB Stick or send it to you by email.... if Ubuntu is attached to your network!

Let's go back in OSX, and put the folder "codecgraph" on the desktop and copy into these things:

 

- codec_dump.txt

- convert_hex_to_dec.rb

- verbit

 

Now install graphviz.pkg (which you have previously chosen for your OS)

 

Reopen Terminal.app, and now take possession of the folder "codecgraph", first decompressed/renamed and placed on the desktop:

(you can copy/paste the blu lines)

 

cd ~/Desktop/codecgraph

then

./codecgraph codec_dump.txt

then

chmod +x ./convert_hex_to_dec.rb

then

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

then

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

then *(wait trouble!!!....plese check this first)

./verbit codec_dump.txt > verbs.txt

 

 

 

Note

 

* open codec_dump.txt (into codecgraph folder), and if you find on the first three lines this invalid like "AFG Function Id: 0x1 (unsol 1)",

please delete, verbit else fails!!

 

 

 

Well, now we have the necessary, take the generated files and set aside:

 

- codec_dump.txt //original codec dump from Linux in Hex

- codec_dump_dec.txt //codec dump from Linux in decimal, this will be useful for Platforms.xml

- codec_dump.txt.svg //Graphical rappresentation in Hex

- codec_dump_dec.txt.svg //Graphical rappresentation in decimal, this will be useful for Platforms.xml

- verbitdebug.txt //debugging the verbs.... see what verbit has changed

- verbs.txt //fixed verbs, here we will find our fixed pinconfig

 

text files and graphics svg files are now "human readable", in Hex and decimal, this will help us to compile layoutXX.xml and Platforms.xml.....

 

 

Credit @THe KiNG, Signal64 and Munky

Share this post


Link to post
Share on other sites

verbs? what's that?

 

look the explanation on http://www.projectos...wtopic=465&st=0

 

 

verbs.png

 

 

 

"Verb Data" are part of pinconfig:

 

pinconfig is the means by which the audio codec tells our Intel controller, uniquely, the presence of the inputs and outputs audio, whether headphones, speakers, microphones etc..

To do this they must be arranged according to specific of Intel Higth Definition Audio.

 

If desired, the Pinconfig, can also be extracted from Windows in this way:

open regedit.exe, and then open the search-box from the menu "Edit=>Find" and type "pinconfig"...

well found the key "PinConfigOverrideVerbs", now we can extract it from "File => Export" save as "pinconfig.reg"

 

 

88138904.png93437796.png17488011.png19755705.png thanks to @simconti for the photos

opening the file .reg in Osx looks like this:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\PinConfigOverrideVerbs]
"0000"=hex:20,1c,a7,00
"0001"=hex:10,1d,a7,00
"0002"=hex:a1,1e,a7,00
"0003"=hex:04,1f,a7,00
"0004"=hex:1f,1c,b7,00
"0005"=hex:10,1d,b7,00
"0006"=hex:21,1e,b7,00
"0007"=hex:04,1f,b7,00
"0008"=hex:f0,1c,c7,00
"0009"=hex:00,1d,c7,00
"0010"=hex:f0,1e,c7,00
"0011"=hex:40,1f,c7,00
"0012"=hex:10,1c,d7,00
"0013"=hex:01,1d,d7,00
"0014"=hex:17,1e,d7,00
"0015"=hex:92,1f,d7,00
"0016"=hex:f0,1c,e7,00
"0017"=hex:00,1d,e7,00
"0018"=hex:f0,1e,e7,00
"0019"=hex:40,1f,e7,00
"0020"=hex:f0,1c,f7,00
"0021"=hex:00,1d,f7,00
"0022"=hex:f0,1e,f7,00
"0023"=hex:40,1f,f7,00
"0024"=hex:f0,1c,07,01
"0025"=hex:00,1d,07,01
"0026"=hex:f0,1e,07,01
"0027"=hex:40,1f,07,01
"0028"=hex:30,1c,17,01
"0029"=hex:01,1d,17,01
"0030"=hex:a3,1e,17,01
"0031"=hex:d5,1f,17,01
"0032"=hex:f0,1c,f7,01
"0033"=hex:00,1d,f7,01
"0034"=hex:f0,1e,f7,01
"0035"=hex:40,1f,f7,01
"0036"=hex:f0,1c,07,02
"0037"=hex:00,1d,07,02
"0038"=hex:f0,1e,07,02
"0039"=hex:40,1f,07,02
"NumVerbs"=hex:28,00,00,00

in practice Windows uses the value inverted, so now they have to be converted in this way:

20,1c,a7,00 must be 00a71c20

 

so for all verbs. To save time, select all the verbs from the log file in Windows, and copy/paste here:

 

http://www.ipwn.me/HDA/

 

the result now looks like:

00A71C20 00A71D10 00A71EA1 00A71F04 00B71C1F 00B71D10 00B71E21 00B71F04 00C71CF0 00C71D00 00C71EF0 00C71F40 00D71C10 00D71D01 00D71E17 00D71F92 00E71CF0 00E71D00 00E71EF0 00E71F40 00F71CF0 00F71D00 00F71EF0 00F71F40 01071CF0 01071D00 01071EF0 01071F40 01171C30 01171D01 01171EA3 01171FD5 01F71CF0 01F71D00 01F71EF0 01F71F40 02071CF0 02071D00 02071EF0 02071F40

 

 

But, the pinconfig just converted is the same you can find in "verbit.txt" in its original condition, except that you now need to interpret and modify:

Custom pinconfig

pratically in verb.txt you can find the work already done and fixed, according to what is actually used by our codec, and how it should be used by Osx.

See the difference between the original and fixed verbs:

 

Verbs from Linux Codec Dump File: codec_dump.txt
Codec: IDT 92HD91BXX Address: 0 DevID: 287143648 (0x111d76e0)
Jack		 Color				 Description				 Node			 PinDefault			 Original Verbs
--------------------------------------------------------------------------------------------------------
Mic at Ext Right														 0x0a 0x0a	 77664288 00a71c20 00a71d10 00a71ea1 00a71f04
1/8					 Black	 HP Out at Ext Right			 11 0x0b 0x0421101f	 00b71c1f 00b71d10 00b71e21 00b71f04
Unknown	 Unknown	 Other at Ext N/A				 12 0x0c	 0x40f000f0	 00c71cf0 00c71d00 00c71ef0 00c71f40
Analog		 Unknown	 Speaker at Int Front		 13 0x0d 0x92170110 00d71c10 00d71d01 00d71e17 00d71f92
Unknown	 Unknown	 Other at Ext N/A				 14 0x0e	 0x40f000f0	 00e71cf0 00e71d00 00e71ef0 00e71f40
Unknown	 Unknown	 Other at Ext N/A				 15 0x0f	 0x40f000f0	 00f71cf0 00f71d00 00f71ef0 00f71f40
Unknown	 Unknown	 Other at Ext N/A				 16 0x10	 0x40f000f0	 01071cf0 01071d00 01071ef0 01071f40
ATAPI		 Unknown	 Mic at Int Top					 17 0x11 0xd5a30130 01171c30 01171d01 01171ea3 01171fd5
Unknown	 Unknown	 Other at Ext N/A				 31 0x1f	 0x40f000f0	 01f71cf0 01f71d00 01f71ef0 01f71f40
Unknown	 Unknown	 Other at Ext N/A				 32 0x20	 0x40f000f0	 02071cf0 02071d00 02071ef0 02071f40
--------------------------------------------------------------------------------------------------------

Jack Color Description				 Node	 PinDefault			 Modified Verbs
--------------------------------------------------------------------------------------------------------
Mic at Ext Right 0x0a 0x0a						 77664288	 00a71c20 00a71d10 00a71ea1 00a71f00
1/8 Black HP Out at Ext Right		 11 0x0b 0x0421101f 00b71c10 00b71d10 00b71e21 00b71f00
Unknown Unknown Other at Ext N/A		 12 0x0c 0x40f000f0 00c71cf0 00c71d00 00c71ef0 00c71f40
Analog Unknown Speaker at Int Front	 13 0x0d 0x92170110 00d71c40 00d71d00 00d71e17 00d71f91
Unknown Unknown Other at Ext N/A		 14 0x0e 0x40f000f0 00e71c50 00e71d00 00e71ef0 00e71f40
Unknown Unknown Other at Ext N/A		 15 0x0f 0x40f000f0 00f71c60 00f71d00 00f71ef0 00f71f40
Unknown Unknown Other at Ext N/A		 16 0x10 0x40f000f0 01071c70 01071d00 01071ef0 01071f40
ATAPI Unknown Mic at Int Top			 17 0x11 0xd5a30130 01171c30 01171d00 01171ea3 01171fd0
Unknown Unknown Other at Ext N/A		 31 0x1f 0x40f000f0 01f71c80 01f71d00 01f71ef0 01f71f40
Unknown Unknown Other at Ext N/A		 32 0x20 0x40f000f0 02071c90 02071d00 02071ef0 02071f40

 

Better using verbit!!!!

 

However, for educational purposes, here the representation of a verb:

 

00a71c20

 

0 = Connection Port

0 = Address

a = Default Device

7 = Connection type

1 = Port Colour (unknown in my laptop, because no color exist)

c = other function

2 = Default Association

0 = Sequence

 

 

 

 

 

 

 

 

Credit @THe KiNG, Signal64 and Munky, Master Chief

 

 

 

 

See the speaker at Node 13 :thumbsup_anim:

111d76e0 example

 

codecdumpdectxt.png

 

 

Legend of symbols:

barradeisimboli.png

Share this post


Link to post
Share on other sites

Kext patching:

 

AppleHDA.kext/Contents/MacOS/AppleHDA

 

 

Patching the binary with bcc9' script

 

Open the folder "patch-hda" and again click "patch-hda"

the terminal will pop up asking for our codec, showing an example of what we write (codec in Hex or name), then go ahead and ask us our password, we give!

 

Last login: Tue Oct 30 14:08:36 on ttys000
localhost:~ micky1979$ /Users/micky1979/Desktop/patch-hda/patch-hda ; exit;
Codec-id or codec-name to patch (eg 111d7675 or IDT 7675)?

 

Once finished, recommend taking AppleHDA.kext, just modified and copy it to the desktop for convenience, to continue with the other patch!

Credit to @bcc9

 

AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist

 

Ok, find an array, and delete all other (not really necessary, just to have only one),

 

infoplist1.png

 

 

and edit with our data, which are:

 

- our codec ID in decimal

- Our pinconfig (ConfigData)

- FuncGrup set to 1 (as we shall see later, in the same xml files)

- LayoutID set to 12 (you can have a different, but must comply with xml files, and dsdt):

 

info2z.png

 

 

example with codec ITD 111d76e0 = 287143648,

then change to 287143429 for IDT 111d7605, also the pinconfig

 

 

 

 

 

 

Layout12.xml and Platforms.xlm (zlib)

AppleHDA.kext/Contents/Resources/layout12.xml.zlib

 

I state that the files I'm talking about, they contain a lot of information that I do not speak, simply because I do not have full knowledge, but that does not stop me from having the sound on my speakers. Only trust you now have some insight on what to do.

 

 

In Snow Leopard, these two files are located within a single plist, by Lion onwards are divided into two distinct files, and are placed at this path:

 

AppleHDA.kext/Contents/Resources

 

the difference between Lion and Moutain Lion, is that in 10.8 are zlib compressed, for which the method of patching these files is almost identical, with the only difference that in Lion files are decompressed (Layoutxx.xml and Platforms.xlm), while in Mountain Lion are compressed (Layoutxx.xml.zlib and Platforms.xml . zlib)....so if you have a working 10.7 AppleHDA.kext, most likely you can recover these files, compress it and use them to Mountain Lion!

 

From this, then comes the need to decompress these files in Mountain Lion, and thanks to the script "zlib.pl" by Samantha, we are able to compress and decompress those files.

 

Decompress/Compress

 

 

These the instructions for zlib.pl:

 

place the zlib.pl script into AppleHDA.kext/Contents/Resources for convenience (we can leave here throughout the course of all our test).

Now open the Terminal.app and write cd (followed by a space) then drag the Resource folder into the Terminal window, like this:

 

Last login: Fri Oct 26 17:18:47 on ttys000
localhost:~ micky1979$ cd /Users/micky1979/Desktop/AppleHDA.kext/Contents/Resources
localhost:Resources micky1979$

 

layoutxx:

 

decompress

perl zlib.pl inflate layout12.xml.zlib > layout12.xml

 

 

compress

perl zlib.pl deflate layout12.xml > layout12.xml.zlib

 

 

 

Platforms:

decompress

perl zlib.pl inflate Platforms.xml.zlib > Platforms.xml

 

 

compress

perl zlib.pl deflate Platforms.xml > Platforms.xml.zlib

 

Credit to: Samantha AKA Revogirl

 

 

 

 

 

Layout12.xml

 

Layoutxx files, seems to be an inventory of audio inputs and outputs, we declare that we have, and how they are arranged. Platforms.xml obviously, there are the paths of the nodes, for all that we have in the Layout12.xml.

Failure to comply with what you wrote in one, generates assertions (will not be only reason).

 

 

Example of names:

 

Mic=Internal microphone

ExtMic=External microphone

IntSpeaker=Internal Speaker

Headphone=Headphone

LineIn=input line

etc...

 

 

You can use the names you think?

IMHO No!

I'm sure this has to get along with our pin config, where we have already stated what type of inputs and outputs have.

That said, we can do differently:

if "ExtMic" do not like for external mic, you can get him as "LineIn", but now you have to change the "Default Association" around the node that want to modify in pinconfig.

 

 

 

00a71c20

 

0 = Connection Port

0 = Address

a = Default Device

7 = Connection type

1 = Port Colour

c = other function

2 = Default Association

0 = Sequence

 

 

In help to do this, @Andy Vandijck has created a tool to check well the changes we make to our pinconfig (just put it in a file as plain text to debug it):

 

AnalyseVerbs

 

 

 

 

 

 

layout121.png

 

 

Platforms.xml

AppleHDA.kext/Contents/Resources/Platforms.xml.zlib

 

Looking at the graph above, we have to decide how to build/modify our Platforms.xml. How to do it?

I think first you need the PinComplex we are interested in, such as headphones, microphone and speaker, and then see which path to follow: the Pathmaps

 

so I have to bring to work Node 11 (Headphones), Node 17 (Microphone) and Node 13 ( Internal Speaker (in 111d76e0 codec)), all in decimal, this is also according with verbs.txt.

So now to clean up the plist, and we take what we do not need (optional), and we set the "PathMapID" as in Layout12.xml, ie 1

 

 

 

platforms1e.png

 

 

 

platforms2.png

 

 

platforms3.png

 

oops...missing external port for microphone........I do not have an external microphone to be tested,....... I never do Karaoke! (No one will stop you if you want to add it...22-24-10)

 

platforms4.png

Fortunately for Speaker and headphone, no audio mixer or selector in the middle... direct, but there may be in other configurations.

 

 

 

As already mentioned "how to edit AppleHDA.kext" is very similar for both 10.7 and 10.8, so now you can use the Layout12.xml and Platforms.xml "as they are" for Lion, or compress in zlib for Mountain Lion!

 

DSDT Editing:

 

 

 

is required, in order to activate AppleHDA in a Hackintosh, the addition of the layout-id into the DSDT.aml.

In practice, if we decided to use the layout12.xml, the layout-id must match the dsdt written in Hex:

 

12 in decimal = C in Hex

 

in DSDT should be 0x0C 0x00 0x00 0x00

 

if you want to call your file layout885.xml:

 

885 in decimal = 375

 

in the DSDT must be 0x75 0x03 0x00 0x00 in Hex bytes flipped

 

"layout-id",
				 Buffer (0x04)
				 {
						 0x0C, 0x00, 0x00, 0x00
				 },

 

 

example of complete section in my case:

 

Device (HDEF)
 {
	 Name (_ADR, 0x001B0000)
	 Method (_DSM, 4, NotSerialized)
	 {
		 Store (Package (0x0A)
			 {
				 "built-in",
				 Buffer (One)
				 {
						 0x01
				 },
				 "device-type",
				 Buffer (0x0F)
				 {
					 "IDT 92HD91BXX"
				 },
				 "hda-gfx",
				 Buffer (0x0A)
				 {
					 "onboard-1"
				 },
				 "layout-id",
				 Buffer (0x04)
				 {
						 0x0C, 0x00, 0x00, 0x00
				 },
				 "PinConfigurations",
				 Buffer (Zero) {}
			 }, Local0)
		 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
		 Return (Local0)
	 }

 

 

 

Course is required as a global method DTGP (most likely you will already have put, to use other patches), and then you have to insert the patch under your Audio device.

Enclosed, is a small example (AUDIO.dsl), from where you can copy the patch and put it on vs dsdt.

Obviously this is an example, and must be deepened, if you have HDMI audio to other audio devices, as often happens on NVIDIA cards (HDAU section), but try this on your own.

 

AUDIO.dsl.zip

 

Share this post


Link to post
Share on other sites

Download

kit with internal speaker, internal microphone and headphone.

 

 

Sorry, no complete AppleHDA.kext here, only. xml files and pinconfig!

It makes no sense, especially since AppleUpdate seem to get frequent, then have fun with the patches!

 

I apologize if everything is not perfect, and if I said the wrong things, but we are here to discuss...

if anyone gets better results, I'd be happy to hang here the work of others (as long as they tried).

 

Micky

 

 

DV6:7 6XXX.zip codec 111d 7605

 

DV6:7 7XXX.zip codec 111d 760e0

 

Kit IDT 111d76d9.zip for HP Probook Ivy Bridge by zoltankr

Share this post


Link to post
Share on other sites

Thank you for your nice post. Trying to do it my self now :D . I am stuck on decompress command of layout12.post-775552-0-96439800-1351842426_thumb.jpg

Otherhands platform decompress command seems ok.

Share this post


Link to post
Share on other sites

user palash? Now I remember you in another place ....

 

the problem I'm not sure I understand: "Can not create a inflation stream", ......the script, seems to invoke the zlib library ....... You are in Mountain Lion?

 

For me it's all right trying the script.

 

Have you tried the latest AppleHDA which I had posted on the other topic?

 

Micky

Share this post


Link to post
Share on other sites

user palash? Now I remember you in another place ....

 

the problem I'm not sure I understand: "Can not create a inflation stream", ......the script, seems to invoke the zlib library ....... You are in Mountain Lion?

 

For me it's all right trying the script.

 

Have you tried the latest AppleHDA which I had posted on the other topic?

 

Micky

Yes... You remember me? Using mountain lion 10.8.2.

 

Somehow, I am looking for a solution of IDT. able to patch graphics kexts - http://www.insanelym...n/#entry1862310 :D . Changed wifi ;). All device working nice except audio.

 

Waited long time for a proper guide to patch IDT. Hope will find a solution & you people let me this :guitar: .

 

N.B.-Tested your both kexts,output ok input not working :( . Don't know what's going wrong.

Share this post


Link to post
Share on other sites

Yes... You remember me? Using mountain lion 10.8.2.

 

Somehow, I am looking for a solution of IDT. able to patch graphics kexts - http://www.insanelym...n/#entry1862310 :D . Changed wifi ;). All device working nice except audio.

 

Waited long time for a proper guide to patch IDT. Hope will find a solution & you people let me this :guitar: .

 

N.B.-Tested your both kexts not working :( . Don't know what's going wrong.

 

Then, ... same codecs operate differently in different Pc. This seems to be normal, because, for example, IDT provides a product to manufacturers of motherboards, with different options in Laptop and Desktop. Your audio work, with pinconfig of my old Pavilion DV7-6190sl that has a pinconfig certainly different from yours (HDA with your not working), which therefore have different nodes for some things.

My advice is to make the pin config manually, following the guidance of Master Chief (see the 1st post). In this case, you can decide what to do and decide which verbs, what they are, how they are recognized and what are associated etc. From what I understand the problem is on your microphone, so you can work around this and keep what works for you.

 

Micky

 

 

Micky

Share this post


Link to post
Share on other sites

Finally its time to give up :( , caz don't have more options left before me.

 

1st: Prepared pinconfig from win.7, verbs are same as previous verbs from linux codec_dump, added pincinfig data on

your AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/info.plist

Got sound working ...

 

and changed pathmap of int.mic as follows - 22>24>12 :Result-device found, no input.

- 21>23>12:Result-device found, no input.

tried ext.mic as follows - 22>24>10 :Result-device not found.

- 21>23>10:Result-device not found.

post-775552-0-38962500-1352142292_thumb.png

 

2nd: As from OS X 10.8.2 can't decompress layout12, so back to OS X 10.7.5

:D for searching progress.

post-775552-0-85908700-1352142877_thumb.png

 

post-775552-0-98671800-1352142893_thumb.png

 

And got such(on pic) errors.

 

Seems it is more difficult than patch graphics kexts for me

;) .

Anyway if you got something for me, please feel free

:P .

Thank you.

Share this post


Link to post
Share on other sites

Finally its time to give up :( , caz don't have more options left before me.

 

1st: Prepared pinconfig from win.7, verbs are same as previous verbs from linux codec_dump, added pincinfig data on

your AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/info.plist

Got sound working ...

 

 

and changed pathmap of int.mic as follows - 22>24>12 :Result-device found, no input.

- 21>23>12:Result-device found, no input.

tried ext.mic as follows - 22>24>10 :Result-device not found.

- 21>23>10:Result-device not found.

path.png

 

2nd: As from OS X 10.8.2 can't decompress layout12, so back to OS X 10.7.5

:D for searching progress.

111d7605.png

 

IDT 7605.png

 

And got such(on pic) errors.

 

Seems it is more difficult than patch graphics kexts for me

;) .

Anyway if you got something for me, please feel free .

:P

Thank you.

I do not see very well, but your "IntMic" is the node 12, input Node is 23, I do not see what's just above on your photo ....

21

23

12

or

22

24

12

 

patched binary for your codec? you can take one of those that I posted on the topic (10.8.2 version) :P

 

Micky

 

 

EDIT

 

Have you tried if it works after sleep?

Share this post


Link to post
Share on other sites

 

My advice is to make the pin config manually, following the guidance of Master Chief (see the 1st post). In this case, you can decide what to do and decide which verbs, what they are, how they are recognized and what are associated etc. From what I understand the problem is on your microphone, so you can work around this and keep what works for you.

 

Micky

 

 

Micky

 

 

patched binary for your codec? you can take one of those that I posted on the topic (10.8.2 version)

:P

Micky

 

 

EDIT

 

 

Have you tried if it works after sleep?

 

To patch IDT i think you have presented a nice and easy method (including your quote).

 

As your suggestion i have tried to make pin config manually as

the guidance of Master Chief, Which is same as make from windows 7 and the verbs from command output of codec_dump. Take one patched HDA of yours (one of Lion's). And worked around this.

Got audio working but no input/mic.

Every time stuck on one stop. So guess in my case need some extra additional edit (don't know what :P ) .

 

Thank you

Palash

Share this post


Link to post
Share on other sites

To patch IDT i think you have presented a nice and easy method (including your quote).

 

As your suggestion i have tried to make pin config manually as

the guidance of Master Chief, Which is same as make from windows 7 and the verbs from command output of codec_dump. Take one patched HDA of yours (one of Lion's). And worked around this.

Got audio working but no input/mic.

Every time stuck on one stop. So guess in my case need some extra additional edit (don't know what :P ) .

 

Thank you

Palash

 

Ok, but I'm encouraged to try to change ExtMic as LineIn (in Layout.xlm), to do this I think you should manually edit also the nodes around what is now ExtMic.

 

if pinconfig says that this is a ExtMic, and you want to become LineIn, you must change verbs (Default Association), .......looks like he did here for example:

 

http://www.insanelym...-inspiron-1464/

 

Micky

Share this post


Link to post
Share on other sites

Ok, but I'm encouraged to try to change ExtMic as LineIn (in Layout.xlm), to do this I think you should manually edit also the nodes around what is now ExtMic.

 

if pinconfig says that this is a ExtMic, and you want to become LineIn, you must change verbs (Default Association), .......looks like he did here for example:

 

http://www.insanelym...-inspiron-1464/

 

Micky

 

As i understand I tried to find out muteGPIO, in addition don't know to which have to change.What I have to put in replace of that (Checked without change verbs result same, no mic).

Hope you can give me a solution of this ;D .

post-775552-0-36542400-1352496736_thumb.png

 

After words if put the MuteGPIO values corresponding place (on pic.), is that ok?

 

Thank you

Palash

Share this post


Link to post
Share on other sites

As i understand I tried to find out muteGPIO, in addition don't know to which have to change.What I have to put in replace of that (Checked without change verbs result same, no mic).

Hope you can give me a solution of this ;D .

2012-11-09_22-30-50.png

 

After words if put the MuteGPIO values corresponding place (on pic.), is that ok?

 

Thank you

Palash

 

verbs may be as follows:

 

00a71c20 00a71d10 00a71e81 00a71f03 ???

 

 

muteGPIO?

if you are using in Platforms

 

22

24

10 Pin complex ExtMic

 

IN VREF_80, according to your codec_dump:

 

80 + 0100 + NID 10

 

in Hex:

 

50 + 0100 + 0a = 5001000a in decimal= muteGPIO 1342242826

 

...seem

 

 

Micky

 

 

EDIT

 

when/if

"VREF _HIZ" is present MuteGPIO must be 0

Share this post


Link to post
Share on other sites

Ok...

Thank you

So,

00A71C(2)0 00A71D10 00A71EA1 00A71F00 convert to 00A71C20 00A71D10 00A71E81 00A71F03

00b71C10 00B71D10 00B71E21 00B71F03

00C71C30 00C71D01 00C71EA7 00C71F90

00D71C40 00D71D01 00D71E17 00D71F90

 

Do I have to add a new verb- 00C70C02 (where as 0x0C is int. speaker node) ?

 

Layouts -> PathmapRef

ExtMic MuteGPIO=1342242826

IntMic MuteGPIP=1342242828

 

Is that ok if I put the values on indicated places?

post-775552-0-30979400-1352556742_thumb.png

Share this post


Link to post
Share on other sites

verbs may be as follows:

 

00a71c20 00a71d10 00a71e81 00a71f03 ???

 

 

muteGPIO?

if you are using in Platforms

 

22

24

10 Pin complex ExtMic

 

IN VREF_80, according to your codec_dump:

 

80 + 0100 + NID 10

 

in Hex:

 

50 + 0100 + 0a = 5001000a in decimal= muteGPIO 1342242826

 

...seem

 

 

Micky

 

Where to put the muteGPIO value?

Under Headphone or IntSpeaker ... ?

 

and

Do I have to add a new verb- 00C70C020.

Ok, Done!!!!!

Device found, but no input controls

:(

 

post-775552-0-53404100-1352575997_thumb.png

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.



×