toleda
Moderator
- Joined
- May 19, 2010
- Messages
- 22,830
- Motherboard
- Asus Maximus VII Impact
- CPU
- i7-4770K
- Graphics
- RX 560 + HD4600
- Mac
- Classic Mac
- Mobile Phone
Lion HDMI Audio
Part 3c: Lion HDMI Audio Kext Edits - Intel HD3000 Integrated Graphics
Revised 10.7.2
This guide replaces the original Part 3c: Lion HDMI Audio Kext Edits - Intel HD3000 Integrated Graphics. Standard on board audio does not work in HD3000 HDMI audio systems. New versions of AppleHDA.kext enable on board audio and HDMI audio on HD3000 systems. Currently, HD3000 systems with ALC 889 and ALC 892 audio codecs are supported.
Even with a successfully configured DSDT, more work is required. *Specifically, your system must be enabled for Intel HD3000 integrated graphics. *This means editing particular software components in your system for compatibility.*
This guide assumes the Part 2b: Lion HDMI Audio DSDT Edits/Integrated Graphics - HD3000 edits have been made successfully. The following processors; i3-2105, i3-2125, i5-2405S, i5-2500K, i7-2600K are supported in this guide.
This guide applies to 10.7.2, 64 bit only. System on earlier versions of Lion must update to 10.7.2 before proceeding with audio kext editing.
What you will need:
1. IORegistryExplorer - available with Xcode for Lion download from the Mac App Store/Developer Tools/Xcode
2. Property List Editor - included in Xcode
or PlistEdit Pro - http://www.fatcatsoftware.com/plisteditpro/
3. DSDTSE v1.4.3 - http://www.osx86.es/?p=610
4. HexEdit v220 - http://hexedit.sourceforge.net/
or Hex Fiend - http://ridiculousfish.com/hexfiend/
5. Kext Beast - http://www.tonymacx86.com/viewforum.php?f=125
or Kext Wizard - http://www.insanlynac.com/forum/index.php?showtopic=253395
6. DSDT-HDMI_Audio_Edits_v3 - DSDT-HDMI_Audio_Edits_v3.dsl
For HD3000 HDMI audio to work, the proper dsdt, framebuffer and audio edits are required. The AppleIntelSNBGraphicsFB.kext provides the framebuffer while AppleHDA.kext provides high definition audio processing. Some systems can enable the correct framebuffer with the native kext. All the other systems will need an edit of the AppleIntelSNBGraphicsFB binary to work properly. Several components of AppleHDA are relevant to enabling on board and HDMI audio on your motherboard.* They are 1. AppleHDA binary and 2. AppleHDAHarwareConfigDriver info.plist and two files in AppleHDA Resources; Platforms.xml and layoutXXX.xml.* Hex Fiend or HexEdit is the tool used to edit the binaries and Property List Editor or PlistEditPro is used edit the .plist and .xml files.
Now, is a good time to back up your system. Preferably, you have a bootable backup. Time Machine is not a good choice for the primary backup.
Credit: tonymacx86
Credit: bcc9: http://www.insanlynac.com/forum/index.php?showtopic=259705
Note: The CustoMac Mini Tuneup Kit download is available at http://www.tonymacx86.com/viewtopic.php?p=209915#p209915 This kit includes edited AppleHDA.kext for macbookpro8,1 and macmini5,1. (10.7.2 - v4)
Part 3c: Lion HDMI Audio Kext Edits Table of Contents
1. Intel HD3000 Integrated Graphics
a. Additional DSDT Edits
Layout_ID
Device_ID
Name
b. Audio Kext Edits
AppleIntelSNBGraphicsFB.kext - Framebuffers for macbookpro8,1 and macmini5,1
AppleHDA.kext - ALC889 or ALC892 on board Audio and HDMI audio
1. Intel HD3000 Integrated Graphics
Note: Assumes Part 2b: Lion HDMI Audio DSDT Edits/Integrated Graphics - HD3000 Successful.
a. *Additional DSDT edits
1. Layout_ID
This dsdt edit is mandatory for HD3000 HDMI audio
Audio ID: 389, layout-id: 389 (dec), 185 (hex)
Audio ID: 392, layout-id: 392 (dec), 188 (hex)
The remaining dsdt edits are optional for HD3000 HDMI audio
2. Device_ID: The macmini5,1 smbios expects an HD3000 device_id of 0126. If your system is not loading Device_ID 0126, you can edit kexts or use dsdt device_id injection. The issue with kext editing is the requirement to perform the kext edits with each new release. DSDT device_id injections are applied automatically. For dsdt device_id injection of 0126 add the following code to your dsdt in Device (IGPU).
3. Name: Chimera/Chameleon add the graphics name automatically for System Profiler based on the device_id. Sometimes, even with a fully recognized graphics system, the name shows as "Unknown". This problem is solved with dsdt name injection. For HD3000, add the following code to your dsdt in Device (IGPU).
You can add device_id injection or name injection or both or neither to your dsdt. Device (IGPU) looks like the code below when both dsdt injections are added.
4. Platform_ID: If you would prefer a model identifier other than macmini5,1, you can specify snb-platform_id with dsdt injection. For example, your use imac12,2 in smbios.plist and load the macmini5,1 connector table. Currently, there are two connector tables; 1. macmini5,1 (1x HDMI and 2x DP) and 2. macbookpro8,1 (1x LVDS and 3X DP).
MacMini5,1
MacbookPro8,1
b. Audio Kext Edits
AppleIntelSNBGraphicsFB.kext Binary Edit
The AppleIntelSNBGraphicsFB.kext (10.7.2, aisnbgfb.kext_v7.12.9) provides 8 framebuffers. Unlike AMD, Intel does not name each frameBuffer. In Lion, the framebuffer is determined by the SMproductname in smbios. There is a framebuffer for macmin5,1 and a different framebuffer for macbookpro 8,1. The macmini5,1 frambuffer has 2 DisplayPort (DP) and 1 HDMI connector and the macbookpro8,1 has 1 LVDS and 3 DP connectors. If your motherboard has an HDMI connector, you should be in luck. However, the framebuffer doesn't automatically assign the framebuffer HDMI connector to the motherboard HDMI connector. For most desktop system, the macmini5,1 system definition is preferred.
For DisplayPort audio, no edits of AppleIntelSNBGraphicsFB.kext are required.
Verify the framebuffer connector
1. Plug the HDMI device into the HDMI port on the motherboard and boot.
2. Run IOReg,
a. Search: IGPU
b. Select IGPU
c. Cancel search (X)
d. Move IGPU to the top of frame
e. Select the AppleIntelfFamebuffer that has display0 attached
f. Select that framebuffer.
g. Note the av-signal-type and connector-type.
If both are 8, no framebuffer edits are required.
If not, edits are required and note the port number.
IOReg with HDMI audio; av-signal-type = connector-type = 8. No framebuffer edits required.
IOReg without HDMI audio - Note the port-number. Framebuffer edits required
The following solutions assign HDMI to the require connector in the framebuffer The working framebuffer HDMI connector looks like:
02 05 00 00 00 08 00 00 06 00 00 00
For more information, see bcc9: http://www.insanlynac.com/forum/index.php?showtopic=259705
Edit AppleIntelSNBGraphicsFB Binary
1. Copy your unedited AppleIntelSNBGraphicsFB.kext to Desktop.
2. Open*AppleIntelSNBGraphicsFB.kext/Contents/MacOS/AppleIntelSNBGraphicsFB binary file
using*HexEdit or Hex Fiend.
3. As appropriate, make the edits noted below for macbookpro8,1 (a. with or b. without LVDS) or macmini5,1. (c. port-number 0x5 or d. port-number 0x6)
If the port-number is 0x5, the HDMI connector has to be the first connector table entry (second line in connector table).
a. macbookpro8,1 Keep LVDS
AppleIntelSNBGraphicsFB Binary
Note: Lion 10.7.2 with AppleIntelSNBGraphicsFB.kext_v7.12.9)
This edit assumes the LVDS connector is required.
macbookpro8,1 table - original
0000000: 0102 0400 1007 0000 1007 0000 ............
000000c: 0503 0000 0200 0000 3000 0000 ............
0000018: 0205 0000 0004 0000 0700 0000 ............
0000024: 0304 0000 0004 0000 0900 0000 ............
0000030: 0406 0000 0004 0000 0900 0000 ............
Address removed:
macbookpro8,1 table - original
01 02 04 00 10 07 00 00 10 07 00 00
05 03 00 00 02 00 00 00 30 00 00 00
02 05 00 00 00 04 00 00 07 00 00 00
03 04 00 00 00 04 00 00 09 00 00 00
04 06 00 00 00 04 00 00 09 00 00 00
Expected result:
macbookpro8,1 table - edited
01 02 02 00 10 07 00 00 10 07 00 00
05 03 00 00 02 00 00 00 30 00 00 00
02 05 00 00 00 08 00 00 07 00 00 00
03 04 00 00 00 04 00 00 09 00 00 00
04 06 00 00 00 04 00 00 09 00 00 00
AppleIntelSNBGraphicsFB Binary Edits
Find the first entry of the framebuffer table (there is a second entry for 32 bit, ignore)
1. Find: 01 02 04 00 10 07 00 00 10 07 00 00 /* Changes to 2 connectors from 4
Replace: 01 02 02 00 10 07 00 00 10 07 00 00
2. Find: 02 05 00 00 00 04 00 00 07 00 00 00 /* Should be 2 lines below the entry above
Replace: 02 05 00 00 00 08 00 00 06 00 00 00
3.Save.
4. Jump to Install AppleIntelSNBGraphicsFB.kext
b. macbookpro8,1 Delete LVDS
AppleIntelSNBGraphicsFB Binary
Note: This step applies only to Lion 10.7.2 with AppleIntelSNBGraphicsFB.kext_v7.12.9)
This edit assumes the LVDS connector is not required.
macbookpro8,1 table - original
0000000: 0102 0400 1007 0000 1007 0000 ............
000000c: 0503 0000 0200 0000 3000 0000 ............
0000018: 0205 0000 0004 0000 0700 0000 ............
0000024: 0304 0000 0004 0000 0900 0000 ............
0000030: 0406 0000 0004 0000 0900 0000 ............
Address removed:
macbookpro8,1 table - original
01 02 04 00 10 07 00 00 10 07 00 00
05 03 00 00 02 00 00 00 30 00 00 00
02 05 00 00 00 04 00 00 07 00 00 00
03 04 00 00 00 04 00 00 09 00 00 00
04 06 00 00 00 04 00 00 09 00 00 00
Expected result:
macbookpro8,1 table - edited
01 02 02 00 10 07 00 00 10 07 00 00
02 05 00 00 00 08 00 00 06 00 00 00
05 03 00 00 00 04 00 00 07 00 00 00
03 04 00 00 00 04 00 00 09 00 00 00
04 06 00 00 00 04 00 00 09 00 00 00
AppleIntelSNBGraphicsFB Binary Edits
Find the first entry of the framebuffer table (there is a second entry for 32 bit, ignore)
1. Find: 01 02 04 00 10 07 00 00 10 07 00 00 /* Changes to 2 connectors from 4
Replace: 01 02 02 00 10 07 00 00 10 07 00 00
2. Find: 05 03 00 00 02 00 00 00 30 00 00 00 /* Should be next to entry above
Replace: 02 05 00 00 00 08 00 00 06 00 00 00
3. Find: 02 05 00 00 00 04 00 00 07 00 00 00 /* Should be next to entry above
Replace: 05 03 00 00 00 04 00 00 07 00 00 00
4.Save.
5. Jump to Install AppleIntelSNBGraphicsFB.kext
c. macmini5,1 For port-number 0x5
AppleIntelSNBGraphicsFB Binary
Note: Lion 10.7.2 with AppleIntelSNBGraphicsFB.kext_v7.12.9)
macmini5,1 - original
0000078: 0002 0300 0000 0000 ffff ffff ............
0000084: 0205 0000 0004 0000 0700 0000 ............
0000090: 0304 0000 0004 0000 0900 0000 ............
000009c: 0406 0000 0008 0000 0600 0000 ............
Address removed:
macmini5,1 - original
00 02 03 00 00 00 00 00 ff ff ff ff
02 05 00 00 00 04 00 00 07 00 00 00
03 04 00 00 00 04 00 00 09 00 00 00
04 06 00 00 00 08 00 00 06 00 00 00
Expected result:
macmini5,1 - edited
00 02 03 00 00 00 00 00 ff ff ff ff
02 05 00 00 00 08 00 00 06 00 00 00
03 04 00 00 00 04 00 00 07 00 00 00
04 06 00 00 00 04 00 00 09 00 00 00
AppleIntelSNBGraphicsFB Binary Edits
Find the first entry of the framebuffer table (there is a second entry for 32 bit, ignore)
1. Find: 00 02 03 00 00 00 00 00 ff ff ff ff /* No Changes
2. Find: 02 05 00 00 00 04 00 00 07 00 00 00 /* Should be next to entry above
Replace: 02 05 00 00 00 08 00 00 06 00 00 00
3. Find: 03 04 00 00 00 04 00 00 09 00 00 00 /* Should be next to entry above
Replace: 03 04 00 00 00 04 00 00 07 00 00 00
4. Find: 04 06 00 00 00 08 00 00 06 00 00 00 /* Should be next to entry above
Replace: 04 06 00 00 00 04 00 00 09 00 00 00
5. Save
6. Jump to Install AppleIntelSNBGraphicsFB.kext
d. macmini5,1 For port-number 0x6, Adds DVI at port-number 0x5
AppleIntelSNBGraphicsFB Binary
Note: Lion 10.7.2 with AppleIntelSNBGraphicsFB.kext_v7.12.9)
macmini5,1 - original
0000078: 0002 0300 0000 0000 ffff ffff ............
0000084: 0205 0000 0004 0000 0700 0000 ............
0000090: 0304 0000 0004 0000 0900 0000 ............
000009c: 0406 0000 0008 0000 0600 0000 ............
Address removed:
macmini5,1 - original
00 02 03 00 00 00 00 00 ff ff ff ff
02 05 00 00 00 04 00 00 07 00 00 00
03 04 00 00 00 04 00 00 09 00 00 00
04 06 00 00 00 08 00 00 06 00 00 00
Expected result:
macmini5,1 - edited
00 02 03 00 00 00 00 00 ff ff ff ff
02 05 00 00 00 02 00 00 08 50 00 00
03 04 00 00 00 08 00 00 06 00 00 00
04 06 00 00 00 04 00 00 09 00 00 00
AppleIntelSNBGraphicsFB Binary Edits
Find the first entry of the framebuffer table (there is a second entry for 32 bit, ignore)
1. Find: 00 02 03 00 00 00 00 00 ff ff ff ff /* No Changes
2. Find: 02 05 00 00 00 04 00 00 07 00 00 00 /* Should be next to entry above
Replace: 02 05 00 00 00 02 00 00 08 50 00 00
3. Find: 03 04 00 00 00 04 00 00 09 00 00 00 /* Should be next to entry above
Replace: 03 04 00 00 00 08 00 00 06 00 00 00
4. Save
5. Jump to Install AppleIntelSNBGraphicsFB.kext
macmini5,1 For port-number 0x7, no edit required.
Install AppleIntelSNBGraphicsFB.kext
1.*Place patched AppleIntelSNBGraphicsFB.kext on Desktop.
2.*Run KextBeast or Kext Wizard.
3. Reboot with HDMI device connected.
4. Verify the framebuffer connector (described above)
5. If av-signal-type = connector-type = 8, proceed to AppleHDA.kext Edits
6. If not, another edit must be tried. Seek assistance.
AppleHDA.kext Edits
Pre edited 10.7.2 AppleHDA.kext_v2.1.3 for HD3000 audio are available for download
ALC889/Audio ID: 389 -
889_Lion_AppleHDA
ALC892/Audio ID: 392 -
892_Lion_AppleHDA
Laptop HD3000 HDMI audio/HP ProBook 4530-
http://www.tonymacx86.com/viewtopic.php?f=259&t=41546
For the most motivated of users, a brief guide follows describing the steps need to customized AppleHDA.kext for other Realtek audio codecs with HD3000 HDMI audio.
For everyone else, jump to Install AppleHDA.kext
Credit: tonymacx86
Standard ALC889/892 audio fails with HD3000 HDMI audio for one reason; HD3000 HDMI works with one Line out and fails with two Line outs, everything else being the same (no idea why).
If you have a working Realtek (ALC885 - 892) Lion AppleHDA.kext, there is a high probability it can be adapted for HD3000 HDMI audio. The starting place is a working HD3000 HDMI AppleHDA.kext. Download the 889 edited Lion AppleHDA.kext. Note: This kext is native to Lion (without the AppleHDA binary edit) but edited for the 889 (device_id, codec_id, layout_id, pathmaps and pin configs). SPDIF/In is not available.
Attach
What you need
389Beta_Lion_AppleHDA
Property List Editor, from above
HexEdit, etc. from above
Required Info (389 example)
Note: Audio ID: 389 is the HD3000HDMI audio version of Audio ID: 889 minus one line out.
Device_ID 10ec0889
Codec_ID 283904137 decimal of 10ec 0889 hex
Audio_ID 389
Layout_ID 389
Pin Configurations info.plist
Layout (layout_id) layout389.xml
Pathmap_ID 389
Pathmap Platforms.xml - 889 minus line out (node 22)
DSDT/HDEF Edit
Audio ID: 3xz, layout-id: 3xz (dec), 1uv (hex)
DSDTSE/dsdt/HDEF/layout-id 0xuv 0x01 0x00 0x00
Edit AppleHDA.kext
Customize 389Beta_Lion_AppleHDA/AppleHDA.kext to 3xz edited AppleHDA.kext
Audio Device_ID
Determine audio codec device_id: 10de08xz in hex and decimal
1. IOReg/HDEF/AppleHDAController/IOHDACodecDevice/IOHDACodecVendorID
2. Calulator: 10de08xz (hex) to 2839041wy (dec)
Edit AppleHDAHardwareConfigDriver/info.plist
1.ple/AppleHDA.kext/Contents/Plugins/AppleHDAHardwareConfigDriver.kext/Contents/info.plist/
IOKitPersonalities/HDA Hardware Config Resource/HDAConfigDefault/Item 0
2. Copy Item 0
3. Select HDAConfigDefault
4. Paste Item 0
5. Save
6. Open Item 0
7. Edit CodecID from 283904137 to 2839041wy
8. Edit LayoutID from 389 to 3xz
9. Save
10. Close info.plist
Edit Resources/layout3xz.xml
1. ple/AppleHDA.kext/Contents/Resources/layout389.xml
2. Save As/layout3xz.xml
3. Open layout3xz.xml
4. Edit LayoutID from 389 to 3xz
5. Open PathMapRef
6. Open item 0
7. Open CodecID
8. Edit CodecID from 283904137 to 2839041wy
9. Edit PathMapID from 389 to 3xz
10. Save
11. Close layout3xy.xml
Edit Resources/Platforms.xml
1. ple/AppleHDA.kext/Contents/Resources/Platforms.xml
2. Open PathMaps
3. Copy Item 0
4. Select PathMaps
5. Paste Item 0
6. Open item 0
7. Edit PatMapID from 389 to 3xz
8. Save
10. Close Platforms.xml
Install AppleHDA.kext
1.*Place patched AppleHDA.kext on Desktop.
2.*Run KextBeast or Kext Wizard.
3. Reboot with HDMI device connected.
If the HDMI audio device appears in System Preferences/Sound/Output, the HD3000 HDMI edits are successful. If not, jump to HDMI Audio Issues
IOReg - HD3000 On board audio (not patched) and HDMI audio
System Presferences/Sound/Output - HD3000 On board audio (not patched) and HDMI audio
Enable on board audio
AppleHDA Binary Edit (Optional)
Optional (enables 8xz onboard audio, uses a hex editor and requires AppleHDA.kext install)
1. HexEdit/AppleHDA.kext/Contents/MacOS/AppleHDA binary
2.*Type command-F to initiate Find and Replace menu.
3. Find 85 08 EC 10
4.*Replace xz 08 EC 10
5.*Select Replace All
6.*Save file
7. Jump to Install AppleHDA.kext below
Optional (enables on 8xz on board audio, uses terminal and does not require AppleHDA.kext install)
Note: Use this option only when a native (non Patched) AppleHDA.kext is installed
1. Open Applications/Utilities/Terminal
2. sudo perl -pi -e 's|\x85\x08\xec\x10|\xxz\x08\xec\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
3. Enter Password
4. Jump to Install AppleHDA.kext Step 3.
Install AppleHDA.kext
1.*Place patched AppleHDA.kext on Desktop.
2.*Run KextBeast or Kext Wizard.
3. Reboot with HDMI device connected.
If the on board audio and HDMI audio appear in System Preferences/Sound/Output, the HD3000 on board and HDMI edits are successful, jump to Mac OS X 10.7.x HDMI Audio
HD3000 On board Audio Issues
It is likely it won't work the first time due to pathmap issues. Identify sound assertion errors in ApplicationsCUtilities/Console/All Meassages. Compare the PathMaps (Platforms.xml) in your edited AppleHDA.kext with the PathMaps (Platforms.xml) in your working AppleHDA,kext. Make edits as appropriate. Go to install AppleHDA.kext.
Assumptions
1. Same pin configurations work with all ALC885 - 892 audio codecs
2. Same layouts work with all ALC885 - 892 audio codecs
Guidelines:
Note: Decimal is used for pathmaps and hex is used for pin configurations
1. Available Inputs (Node dec/Node hex)
a. Mic/Rear/Pink (24/18)
b. Mic (Line In)/Front/Pink (25/19)
c. Line In/Rear/Blue (26/1a)
2. Available Outputs
a. Speaker/Rear/Green (20/14)
b. Line Out/Rear/Orange (22/16)
c. Headphone/Front/Green (27/1b)
d. SPDIF/Out (30/1e)
3. Input PathMaps: amp-mixer-jack (audio device)
a. 9-34-24 (Mic/Rear/Pink)
b. 9-34-25 (Mic (Line In)/Front/Pink)
c. 8-35-26 (Line In/Rear/Blue)
4. Output PathMaps: jack-mixer,amp (audio device)
a. 20-12-2 (Speaker/Rear/Green)
b. 22-14-4 (Line Out/Rear/Orange)
c. 27-12-2 (Headphone/Front/Green)
d. 30-6 (SPDIF/Out - no mixer)
5. Auto Mute (Same PathMap)
a. Headphone/27 mutes Speakers/20 (Rear)
b. Front Mike/26 mutes Mic/25 (Rear)
Edit path maps as required. Jump to Install AppleHDA.kext
Mac OS X 10.7.x HDMI Audio
Select System Preferences/Sound/Output.* Select the HDMI audio device.
Note:
1. "The selected device has no output controls"
Indicates the HDMI device (ex, DTR-40.2) controls volume, mute, etc.
GA-H67N-USB3/i7-2600K/HD3000/10.7.2 - Method B
Part 3c: Lion HDMI Audio Kext Edits - Intel HD3000 Integrated Graphics
Revised 10.7.2
This guide replaces the original Part 3c: Lion HDMI Audio Kext Edits - Intel HD3000 Integrated Graphics. Standard on board audio does not work in HD3000 HDMI audio systems. New versions of AppleHDA.kext enable on board audio and HDMI audio on HD3000 systems. Currently, HD3000 systems with ALC 889 and ALC 892 audio codecs are supported.
Even with a successfully configured DSDT, more work is required. *Specifically, your system must be enabled for Intel HD3000 integrated graphics. *This means editing particular software components in your system for compatibility.*
This guide assumes the Part 2b: Lion HDMI Audio DSDT Edits/Integrated Graphics - HD3000 edits have been made successfully. The following processors; i3-2105, i3-2125, i5-2405S, i5-2500K, i7-2600K are supported in this guide.
This guide applies to 10.7.2, 64 bit only. System on earlier versions of Lion must update to 10.7.2 before proceeding with audio kext editing.
What you will need:
1. IORegistryExplorer - available with Xcode for Lion download from the Mac App Store/Developer Tools/Xcode
2. Property List Editor - included in Xcode
or PlistEdit Pro - http://www.fatcatsoftware.com/plisteditpro/
3. DSDTSE v1.4.3 - http://www.osx86.es/?p=610
4. HexEdit v220 - http://hexedit.sourceforge.net/
or Hex Fiend - http://ridiculousfish.com/hexfiend/
5. Kext Beast - http://www.tonymacx86.com/viewforum.php?f=125
or Kext Wizard - http://www.insanlynac.com/forum/index.php?showtopic=253395
6. DSDT-HDMI_Audio_Edits_v3 - DSDT-HDMI_Audio_Edits_v3.dsl
For HD3000 HDMI audio to work, the proper dsdt, framebuffer and audio edits are required. The AppleIntelSNBGraphicsFB.kext provides the framebuffer while AppleHDA.kext provides high definition audio processing. Some systems can enable the correct framebuffer with the native kext. All the other systems will need an edit of the AppleIntelSNBGraphicsFB binary to work properly. Several components of AppleHDA are relevant to enabling on board and HDMI audio on your motherboard.* They are 1. AppleHDA binary and 2. AppleHDAHarwareConfigDriver info.plist and two files in AppleHDA Resources; Platforms.xml and layoutXXX.xml.* Hex Fiend or HexEdit is the tool used to edit the binaries and Property List Editor or PlistEditPro is used edit the .plist and .xml files.
Now, is a good time to back up your system. Preferably, you have a bootable backup. Time Machine is not a good choice for the primary backup.
Credit: tonymacx86
Credit: bcc9: http://www.insanlynac.com/forum/index.php?showtopic=259705
Note: The CustoMac Mini Tuneup Kit download is available at http://www.tonymacx86.com/viewtopic.php?p=209915#p209915 This kit includes edited AppleHDA.kext for macbookpro8,1 and macmini5,1. (10.7.2 - v4)
Part 3c: Lion HDMI Audio Kext Edits Table of Contents
1. Intel HD3000 Integrated Graphics
a. Additional DSDT Edits
Layout_ID
Device_ID
Name
b. Audio Kext Edits
AppleIntelSNBGraphicsFB.kext - Framebuffers for macbookpro8,1 and macmini5,1
AppleHDA.kext - ALC889 or ALC892 on board Audio and HDMI audio
1. Intel HD3000 Integrated Graphics
Note: Assumes Part 2b: Lion HDMI Audio DSDT Edits/Integrated Graphics - HD3000 Successful.
a. *Additional DSDT edits
1. Layout_ID
This dsdt edit is mandatory for HD3000 HDMI audio
Audio ID: 389, layout-id: 389 (dec), 185 (hex)
Audio ID: 392, layout-id: 392 (dec), 188 (hex)
Code:
HDEF (Example: 889/892)
Device (HDEF)
{
Name (_ADR, 0x001B0000)
Method (_PRW, 0, NotSerialized)
{
Return (Package (0x02)
{
0x0D,
0x05
})
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"hda-gfx",
Buffer (0x0A)
{
"onboard-2"
},
"layout-id",
Buffer (0x04)
{
0x85, 0x01, 0x00, 0x00 /for 389
0x88, 0x01, 0x00, 0x00 /for 392
},
"PinConfigurations",
Buffer (Zero) {}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
2. Device_ID: The macmini5,1 smbios expects an HD3000 device_id of 0126. If your system is not loading Device_ID 0126, you can edit kexts or use dsdt device_id injection. The issue with kext editing is the requirement to perform the kext edits with each new release. DSDT device_id injections are applied automatically. For dsdt device_id injection of 0126 add the following code to your dsdt in Device (IGPU).
Code:
"device-id",
Buffer (0x04)
{
0x26, 0x01, 0x00, 0x00
},
Code:
"model",
Buffer (0x18)
{
"Intel HD Graphics 3000"
},
4. Platform_ID: If you would prefer a model identifier other than macmini5,1, you can specify snb-platform_id with dsdt injection. For example, your use imac12,2 in smbios.plist and load the macmini5,1 connector table. Currently, there are two connector tables; 1. macmini5,1 (1x HDMI and 2x DP) and 2. macbookpro8,1 (1x LVDS and 3X DP).
MacMini5,1
Code:
"AAPL,snb-platform-id",
Buffer (0x04)
{
0x10, 0x00, 0x03, 0x00
},
Code:
"AAPL,snb-platform-id",
Buffer (0x04)
{
0x00, 0x00, 0x01, 0x00
},
b. Audio Kext Edits
AppleIntelSNBGraphicsFB.kext Binary Edit
The AppleIntelSNBGraphicsFB.kext (10.7.2, aisnbgfb.kext_v7.12.9) provides 8 framebuffers. Unlike AMD, Intel does not name each frameBuffer. In Lion, the framebuffer is determined by the SMproductname in smbios. There is a framebuffer for macmin5,1 and a different framebuffer for macbookpro 8,1. The macmini5,1 frambuffer has 2 DisplayPort (DP) and 1 HDMI connector and the macbookpro8,1 has 1 LVDS and 3 DP connectors. If your motherboard has an HDMI connector, you should be in luck. However, the framebuffer doesn't automatically assign the framebuffer HDMI connector to the motherboard HDMI connector. For most desktop system, the macmini5,1 system definition is preferred.
For DisplayPort audio, no edits of AppleIntelSNBGraphicsFB.kext are required.
Verify the framebuffer connector
1. Plug the HDMI device into the HDMI port on the motherboard and boot.
2. Run IOReg,
a. Search: IGPU
b. Select IGPU
c. Cancel search (X)
d. Move IGPU to the top of frame
e. Select the AppleIntelfFamebuffer that has display0 attached
f. Select that framebuffer.
g. Note the av-signal-type and connector-type.
If both are 8, no framebuffer edits are required.
If not, edits are required and note the port number.
IOReg with HDMI audio; av-signal-type = connector-type = 8. No framebuffer edits required.
IOReg without HDMI audio - Note the port-number. Framebuffer edits required
The following solutions assign HDMI to the require connector in the framebuffer The working framebuffer HDMI connector looks like:
02 05 00 00 00 08 00 00 06 00 00 00
For more information, see bcc9: http://www.insanlynac.com/forum/index.php?showtopic=259705
Edit AppleIntelSNBGraphicsFB Binary
1. Copy your unedited AppleIntelSNBGraphicsFB.kext to Desktop.
2. Open*AppleIntelSNBGraphicsFB.kext/Contents/MacOS/AppleIntelSNBGraphicsFB binary file
using*HexEdit or Hex Fiend.
3. As appropriate, make the edits noted below for macbookpro8,1 (a. with or b. without LVDS) or macmini5,1. (c. port-number 0x5 or d. port-number 0x6)
If the port-number is 0x5, the HDMI connector has to be the first connector table entry (second line in connector table).
a. macbookpro8,1 Keep LVDS
AppleIntelSNBGraphicsFB Binary
Note: Lion 10.7.2 with AppleIntelSNBGraphicsFB.kext_v7.12.9)
This edit assumes the LVDS connector is required.
macbookpro8,1 table - original
0000000: 0102 0400 1007 0000 1007 0000 ............
000000c: 0503 0000 0200 0000 3000 0000 ............
0000018: 0205 0000 0004 0000 0700 0000 ............
0000024: 0304 0000 0004 0000 0900 0000 ............
0000030: 0406 0000 0004 0000 0900 0000 ............
Address removed:
macbookpro8,1 table - original
01 02 04 00 10 07 00 00 10 07 00 00
05 03 00 00 02 00 00 00 30 00 00 00
02 05 00 00 00 04 00 00 07 00 00 00
03 04 00 00 00 04 00 00 09 00 00 00
04 06 00 00 00 04 00 00 09 00 00 00
Expected result:
macbookpro8,1 table - edited
01 02 02 00 10 07 00 00 10 07 00 00
05 03 00 00 02 00 00 00 30 00 00 00
02 05 00 00 00 08 00 00 07 00 00 00
03 04 00 00 00 04 00 00 09 00 00 00
04 06 00 00 00 04 00 00 09 00 00 00
AppleIntelSNBGraphicsFB Binary Edits
Find the first entry of the framebuffer table (there is a second entry for 32 bit, ignore)
1. Find: 01 02 04 00 10 07 00 00 10 07 00 00 /* Changes to 2 connectors from 4
Replace: 01 02 02 00 10 07 00 00 10 07 00 00
2. Find: 02 05 00 00 00 04 00 00 07 00 00 00 /* Should be 2 lines below the entry above
Replace: 02 05 00 00 00 08 00 00 06 00 00 00
3.Save.
4. Jump to Install AppleIntelSNBGraphicsFB.kext
b. macbookpro8,1 Delete LVDS
AppleIntelSNBGraphicsFB Binary
Note: This step applies only to Lion 10.7.2 with AppleIntelSNBGraphicsFB.kext_v7.12.9)
This edit assumes the LVDS connector is not required.
macbookpro8,1 table - original
0000000: 0102 0400 1007 0000 1007 0000 ............
000000c: 0503 0000 0200 0000 3000 0000 ............
0000018: 0205 0000 0004 0000 0700 0000 ............
0000024: 0304 0000 0004 0000 0900 0000 ............
0000030: 0406 0000 0004 0000 0900 0000 ............
Address removed:
macbookpro8,1 table - original
01 02 04 00 10 07 00 00 10 07 00 00
05 03 00 00 02 00 00 00 30 00 00 00
02 05 00 00 00 04 00 00 07 00 00 00
03 04 00 00 00 04 00 00 09 00 00 00
04 06 00 00 00 04 00 00 09 00 00 00
Expected result:
macbookpro8,1 table - edited
01 02 02 00 10 07 00 00 10 07 00 00
02 05 00 00 00 08 00 00 06 00 00 00
05 03 00 00 00 04 00 00 07 00 00 00
03 04 00 00 00 04 00 00 09 00 00 00
04 06 00 00 00 04 00 00 09 00 00 00
AppleIntelSNBGraphicsFB Binary Edits
Find the first entry of the framebuffer table (there is a second entry for 32 bit, ignore)
1. Find: 01 02 04 00 10 07 00 00 10 07 00 00 /* Changes to 2 connectors from 4
Replace: 01 02 02 00 10 07 00 00 10 07 00 00
2. Find: 05 03 00 00 02 00 00 00 30 00 00 00 /* Should be next to entry above
Replace: 02 05 00 00 00 08 00 00 06 00 00 00
3. Find: 02 05 00 00 00 04 00 00 07 00 00 00 /* Should be next to entry above
Replace: 05 03 00 00 00 04 00 00 07 00 00 00
4.Save.
5. Jump to Install AppleIntelSNBGraphicsFB.kext
c. macmini5,1 For port-number 0x5
AppleIntelSNBGraphicsFB Binary
Note: Lion 10.7.2 with AppleIntelSNBGraphicsFB.kext_v7.12.9)
macmini5,1 - original
0000078: 0002 0300 0000 0000 ffff ffff ............
0000084: 0205 0000 0004 0000 0700 0000 ............
0000090: 0304 0000 0004 0000 0900 0000 ............
000009c: 0406 0000 0008 0000 0600 0000 ............
Address removed:
macmini5,1 - original
00 02 03 00 00 00 00 00 ff ff ff ff
02 05 00 00 00 04 00 00 07 00 00 00
03 04 00 00 00 04 00 00 09 00 00 00
04 06 00 00 00 08 00 00 06 00 00 00
Expected result:
macmini5,1 - edited
00 02 03 00 00 00 00 00 ff ff ff ff
02 05 00 00 00 08 00 00 06 00 00 00
03 04 00 00 00 04 00 00 07 00 00 00
04 06 00 00 00 04 00 00 09 00 00 00
AppleIntelSNBGraphicsFB Binary Edits
Find the first entry of the framebuffer table (there is a second entry for 32 bit, ignore)
1. Find: 00 02 03 00 00 00 00 00 ff ff ff ff /* No Changes
2. Find: 02 05 00 00 00 04 00 00 07 00 00 00 /* Should be next to entry above
Replace: 02 05 00 00 00 08 00 00 06 00 00 00
3. Find: 03 04 00 00 00 04 00 00 09 00 00 00 /* Should be next to entry above
Replace: 03 04 00 00 00 04 00 00 07 00 00 00
4. Find: 04 06 00 00 00 08 00 00 06 00 00 00 /* Should be next to entry above
Replace: 04 06 00 00 00 04 00 00 09 00 00 00
5. Save
6. Jump to Install AppleIntelSNBGraphicsFB.kext
d. macmini5,1 For port-number 0x6, Adds DVI at port-number 0x5
AppleIntelSNBGraphicsFB Binary
Note: Lion 10.7.2 with AppleIntelSNBGraphicsFB.kext_v7.12.9)
macmini5,1 - original
0000078: 0002 0300 0000 0000 ffff ffff ............
0000084: 0205 0000 0004 0000 0700 0000 ............
0000090: 0304 0000 0004 0000 0900 0000 ............
000009c: 0406 0000 0008 0000 0600 0000 ............
Address removed:
macmini5,1 - original
00 02 03 00 00 00 00 00 ff ff ff ff
02 05 00 00 00 04 00 00 07 00 00 00
03 04 00 00 00 04 00 00 09 00 00 00
04 06 00 00 00 08 00 00 06 00 00 00
Expected result:
macmini5,1 - edited
00 02 03 00 00 00 00 00 ff ff ff ff
02 05 00 00 00 02 00 00 08 50 00 00
03 04 00 00 00 08 00 00 06 00 00 00
04 06 00 00 00 04 00 00 09 00 00 00
AppleIntelSNBGraphicsFB Binary Edits
Find the first entry of the framebuffer table (there is a second entry for 32 bit, ignore)
1. Find: 00 02 03 00 00 00 00 00 ff ff ff ff /* No Changes
2. Find: 02 05 00 00 00 04 00 00 07 00 00 00 /* Should be next to entry above
Replace: 02 05 00 00 00 02 00 00 08 50 00 00
3. Find: 03 04 00 00 00 04 00 00 09 00 00 00 /* Should be next to entry above
Replace: 03 04 00 00 00 08 00 00 06 00 00 00
4. Save
5. Jump to Install AppleIntelSNBGraphicsFB.kext
macmini5,1 For port-number 0x7, no edit required.
Install AppleIntelSNBGraphicsFB.kext
1.*Place patched AppleIntelSNBGraphicsFB.kext on Desktop.
2.*Run KextBeast or Kext Wizard.
3. Reboot with HDMI device connected.
4. Verify the framebuffer connector (described above)
5. If av-signal-type = connector-type = 8, proceed to AppleHDA.kext Edits
6. If not, another edit must be tried. Seek assistance.
AppleHDA.kext Edits
Pre edited 10.7.2 AppleHDA.kext_v2.1.3 for HD3000 audio are available for download
ALC889/Audio ID: 389 -
889_Lion_AppleHDA
ALC892/Audio ID: 392 -
892_Lion_AppleHDA
Laptop HD3000 HDMI audio/HP ProBook 4530-
http://www.tonymacx86.com/viewtopic.php?f=259&t=41546
For the most motivated of users, a brief guide follows describing the steps need to customized AppleHDA.kext for other Realtek audio codecs with HD3000 HDMI audio.
For everyone else, jump to Install AppleHDA.kext
Credit: tonymacx86
Standard ALC889/892 audio fails with HD3000 HDMI audio for one reason; HD3000 HDMI works with one Line out and fails with two Line outs, everything else being the same (no idea why).
If you have a working Realtek (ALC885 - 892) Lion AppleHDA.kext, there is a high probability it can be adapted for HD3000 HDMI audio. The starting place is a working HD3000 HDMI AppleHDA.kext. Download the 889 edited Lion AppleHDA.kext. Note: This kext is native to Lion (without the AppleHDA binary edit) but edited for the 889 (device_id, codec_id, layout_id, pathmaps and pin configs). SPDIF/In is not available.
Attach
What you need
389Beta_Lion_AppleHDA
Property List Editor, from above
HexEdit, etc. from above
Required Info (389 example)
Note: Audio ID: 389 is the HD3000HDMI audio version of Audio ID: 889 minus one line out.
Device_ID 10ec0889
Codec_ID 283904137 decimal of 10ec 0889 hex
Audio_ID 389
Layout_ID 389
Pin Configurations info.plist
Layout (layout_id) layout389.xml
Pathmap_ID 389
Pathmap Platforms.xml - 889 minus line out (node 22)
DSDT/HDEF Edit
Audio ID: 3xz, layout-id: 3xz (dec), 1uv (hex)
DSDTSE/dsdt/HDEF/layout-id 0xuv 0x01 0x00 0x00
Code:
HDEF (Example: 3[B]xz[/B])
Device (HDEF)
{
Name (_ADR, 0x001B0000)
Method (_PRW, 0, NotSerialized)
{
Return (Package (0x02)
{
0x0D,
0x05
})
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"hda-gfx",
Buffer (0x0A)
{
"onboard-2"
},
"layout-id",
Buffer (0x04)
{
0xUV, 0x01, 0x00, 0x00 /for 3xz
},
"PinConfigurations",
Buffer (Zero) {}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
Edit AppleHDA.kext
Customize 389Beta_Lion_AppleHDA/AppleHDA.kext to 3xz edited AppleHDA.kext
Audio Device_ID
Determine audio codec device_id: 10de08xz in hex and decimal
1. IOReg/HDEF/AppleHDAController/IOHDACodecDevice/IOHDACodecVendorID
2. Calulator: 10de08xz (hex) to 2839041wy (dec)
Edit AppleHDAHardwareConfigDriver/info.plist
1.ple/AppleHDA.kext/Contents/Plugins/AppleHDAHardwareConfigDriver.kext/Contents/info.plist/
IOKitPersonalities/HDA Hardware Config Resource/HDAConfigDefault/Item 0
2. Copy Item 0
3. Select HDAConfigDefault
4. Paste Item 0
5. Save
6. Open Item 0
7. Edit CodecID from 283904137 to 2839041wy
8. Edit LayoutID from 389 to 3xz
9. Save
10. Close info.plist
Edit Resources/layout3xz.xml
1. ple/AppleHDA.kext/Contents/Resources/layout389.xml
2. Save As/layout3xz.xml
3. Open layout3xz.xml
4. Edit LayoutID from 389 to 3xz
5. Open PathMapRef
6. Open item 0
7. Open CodecID
8. Edit CodecID from 283904137 to 2839041wy
9. Edit PathMapID from 389 to 3xz
10. Save
11. Close layout3xy.xml
Edit Resources/Platforms.xml
1. ple/AppleHDA.kext/Contents/Resources/Platforms.xml
2. Open PathMaps
3. Copy Item 0
4. Select PathMaps
5. Paste Item 0
6. Open item 0
7. Edit PatMapID from 389 to 3xz
8. Save
10. Close Platforms.xml
Install AppleHDA.kext
1.*Place patched AppleHDA.kext on Desktop.
2.*Run KextBeast or Kext Wizard.
3. Reboot with HDMI device connected.
If the HDMI audio device appears in System Preferences/Sound/Output, the HD3000 HDMI edits are successful. If not, jump to HDMI Audio Issues
IOReg - HD3000 On board audio (not patched) and HDMI audio
System Presferences/Sound/Output - HD3000 On board audio (not patched) and HDMI audio
Enable on board audio
AppleHDA Binary Edit (Optional)
Optional (enables 8xz onboard audio, uses a hex editor and requires AppleHDA.kext install)
1. HexEdit/AppleHDA.kext/Contents/MacOS/AppleHDA binary
2.*Type command-F to initiate Find and Replace menu.
3. Find 85 08 EC 10
4.*Replace xz 08 EC 10
5.*Select Replace All
6.*Save file
7. Jump to Install AppleHDA.kext below
Optional (enables on 8xz on board audio, uses terminal and does not require AppleHDA.kext install)
Note: Use this option only when a native (non Patched) AppleHDA.kext is installed
1. Open Applications/Utilities/Terminal
2. sudo perl -pi -e 's|\x85\x08\xec\x10|\xxz\x08\xec\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
3. Enter Password
4. Jump to Install AppleHDA.kext Step 3.
Install AppleHDA.kext
1.*Place patched AppleHDA.kext on Desktop.
2.*Run KextBeast or Kext Wizard.
3. Reboot with HDMI device connected.
If the on board audio and HDMI audio appear in System Preferences/Sound/Output, the HD3000 on board and HDMI edits are successful, jump to Mac OS X 10.7.x HDMI Audio
HD3000 On board Audio Issues
It is likely it won't work the first time due to pathmap issues. Identify sound assertion errors in ApplicationsCUtilities/Console/All Meassages. Compare the PathMaps (Platforms.xml) in your edited AppleHDA.kext with the PathMaps (Platforms.xml) in your working AppleHDA,kext. Make edits as appropriate. Go to install AppleHDA.kext.
Assumptions
1. Same pin configurations work with all ALC885 - 892 audio codecs
2. Same layouts work with all ALC885 - 892 audio codecs
Guidelines:
Note: Decimal is used for pathmaps and hex is used for pin configurations
1. Available Inputs (Node dec/Node hex)
a. Mic/Rear/Pink (24/18)
b. Mic (Line In)/Front/Pink (25/19)
c. Line In/Rear/Blue (26/1a)
2. Available Outputs
a. Speaker/Rear/Green (20/14)
b. Line Out/Rear/Orange (22/16)
c. Headphone/Front/Green (27/1b)
d. SPDIF/Out (30/1e)
3. Input PathMaps: amp-mixer-jack (audio device)
a. 9-34-24 (Mic/Rear/Pink)
b. 9-34-25 (Mic (Line In)/Front/Pink)
c. 8-35-26 (Line In/Rear/Blue)
4. Output PathMaps: jack-mixer,amp (audio device)
a. 20-12-2 (Speaker/Rear/Green)
b. 22-14-4 (Line Out/Rear/Orange)
c. 27-12-2 (Headphone/Front/Green)
d. 30-6 (SPDIF/Out - no mixer)
5. Auto Mute (Same PathMap)
a. Headphone/27 mutes Speakers/20 (Rear)
b. Front Mike/26 mutes Mic/25 (Rear)
Edit path maps as required. Jump to Install AppleHDA.kext
Mac OS X 10.7.x HDMI Audio
Select System Preferences/Sound/Output.* Select the HDMI audio device.
Note:
1. "The selected device has no output controls"
Indicates the HDMI device (ex, DTR-40.2) controls volume, mute, etc.
GA-H67N-USB3/i7-2600K/HD3000/10.7.2 - Method B
Last edited by a moderator: