Jump to content
Welcome to InsanelyMac Forum

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

  • Announcements

    • Allan

      Forum Rules   04/13/2018

      Hello folks! As some things are being fixed, we'll keep you updated. Per hour the Forum Rules don't have a dedicated "Tab", so here is the place that we have our Rules back. New Users Lounge > [READ] - InsanelyMac Forum Rules - The InsanelyMac Staff Team. 
Sign in to follow this  
ErmaC

HDAEnabler for Chameleon

6 posts in this topic

Recommended Posts


140619020937263817.png

The embedded HDAEnabler It allows HDEF and HDAU audio device injection using the bootloader without requiring a DSDT/SSDT or injection kext.

It needs to be enabled by adding the follow entry in org.chameleon.Boot.plist

<key>HDAEnabler</key>
<string>Yes</string>
this is a replacement for HDAEnabler.kext or DSDT/SSDT HDEF and HDAU injections.

 

also the layout-id can be customized for the HDEF and also for the HDAU

 

HDEF

<key>HDEFLayoutID</key>
<string>0C000000</string>
HDAU

 

<key>HDAULayoutID</key>
<string>01000000</string>
DSDT entry provided by the HDAEnabler

                Method (_DSM, 4, NotSerialized)
                {
                    Local0 = Package ()
                        {
                            "subsystem-id", 
                            Buffer (0x04)
                            {
                                 0xA0, 0x00, 0x00, 0x00
                            }, 

                            "subsystem-vendor-id", 
                            Buffer (0x04)
                            {
                                 0x6B, 0x10, 0x00, 0x00
                            }, 

                            "built-in", 
                            Buffer (One)
                            {
                                 0x00
                            }, 

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

                            "PinConfigurations", 
                            Buffer (Zero) {},

                            "device-type",
                            Buffer (0x25)
                            {
                                 "High Definition Audio Controller"
                            },

                            "device_type",
                            Buffer (0x06)
                            {
                                 "Sound"
                            },

                            "hda-gfx", Buffer()
                            {
                                 "onboard-1"
                            }
                        }
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
Topic reference:ErmaC

Share this post


Link to post
Share on other sites

HDA scan function

 

Codec name, Codec ID and Revision ID


 

Realtek (0x10ec)

  • ALC233 ==> 0x10ec0233 0x100003
  • ALC885 ==> 0x10ec0885 0x100000
  • ALC889A => 0x10ec0885 0x100101
  • ALC889A => 0x10ec0885 0x100103
  • ALC888 ==> 0x10ec0888 0x100000
  • ALC1200 => 0x10ec0888 0x100101
Analog Devices (0x11d4)
  • AD2000b => 0x11d4989b 0x100200
  • AD2000b => 0x11d4989b 0x100300
  • AD1989b => 0x11d4989b 0x100101
IDT (0x111d)

 

Conexant (0x14f1)

 

Intel (0x8086)

 

nVidia (0x10de)

 

ATi (0x1002)

 

Sigmatel (0x8384)

 

Via (0x1106)

 

Cirrus Logic (0x1013)

 


 

ErmaC

Share this post


Link to post
Share on other sites

I was thinking about open a specific topic but let's try to handle here...

 

I add the ability to detect the codec id of each audio chipset.

Big thanks to Zenith432 to provite the HDA bus scan function.

 

If you normally use the HDAEnabler key for the injection of the custom or default layout-id now you can also see the finded codec in your Motherboard or Graphics card.

 

So as usual in the org.chameleon.Boot.plist

...	<key>HDAEnabler</key>
	<string>Yes</string>...
I tested it on my two configuration (P6T SE and P6T Deluxe)

Here the result:

bdmesg snippet of my P6T SE

...

[ NVIDIA GFX DEVICE INFO ]

Class code: [0300]

device number: 1

GeForce GT 240 1024MB NVa3 [10de:0ca3]-[196e:069d]

PciRoot(0x0)/Pci(0x7,0x0)/Pci(0x0,0x0)

NvidiaGeneric = YES

 

[ AUDIO DEVICE INFO ]

Class code: [0403]

device number: 3

Model name: nVidia (0x0be4) HDA Controller (HDMi) [10de:0be4] (rev a1)

Subsystem: [196e:069d]

PciRoot(0x0)/Pci(0x7,0x0)/Pci(0x0,0x1)

Found nVidia GT240 (10de000d), rev(0001)

Found nVidia GT240 (10de000d), rev(0001)

Found nVidia GT240 (10de000d), rev(0001)

Found nVidia GT240 (10de000d), rev(0001)

Using default HDAU layout-id: 0x01, 0x00, 0x00, 0x00

 

[ AUDIO DEVICE INFO ]

Class code: [0403]

device number: 4

Model name: Intel 82801JI High Definition Audio Controller [8086:3a3e] (rev 00)

Subsystem: [1043:8357]

PciRoot(0x0)/Pci(0x1b,0x0)

Found Realtek ALC1200 (10ec0888), rev(0001)

Using user supplied HDEF layout-id: 0x07, 0x00, 0x00, 0x00

 

[ WIRELESS DEVICE INFO ]

Class code: [0280]

Setting up wifi keys

Atheros AR5418 Wireless Network Adapter [AR5008E 802.11(a)bgn] [168c:0024]

PciRoot(0x0)/Pci(0x1c,0x1)/Pci(0x0,0x0)

 

[ ETHERNET DEVICE INFO ]

Class code: [0200]

Setting up lan keys

Realtek RTL8111/8168 PCI-E Gigabit Ethernet [10ec:8168]

PciRoot(0x0)/Pci(0x1c,0x2)/Pci(0x0,0x0)

...

bdmesg snippet of my P6T Deluxe

 

 

[ WIRELESS DEVICE INFO ]

Class code: [0280]

Setting up wifi keys

Atheros AR5418 Wireless Network Adapter [AR5008E 802.11(a)bgn] [168c:0024]

PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)

 

[ NVIDIA GFX DEVICE INFO ]

Class code: [0300]

device number: 1

GeForce GT 630 2048MB NVc1 [10de:0f00]-[1458:3544]

PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)

NvidiaGeneric = YES

 

[ AUDIO DEVICE INFO ]

Class code: [0403]

device number: 3

Model name: nVidia GT108 HDA Controller (HDMi) [10de:0bea] (rev a1)

Subsystem: [1458:3544]

PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x1)

Found nVidia GT440 (10de0014), rev(0001)

Found nVidia GT440 (10de0014), rev(0001)

Found nVidia GT440 (10de0014), rev(0001)

Found nVidia GT440 (10de0014), rev(0001)

Using default HDAU layout-id: 0x01, 0x00, 0x00, 0x00

 

[ AUDIO DEVICE INFO ]

Class code: [0403]

device number: 4

Model name: Intel 82801JI High Definition Audio Controller [8086:3a3e] (rev 00)

Subsystem: [1043:82ea]

PciRoot(0x0)/Pci(0x1b,0x0)

Found Analog Devices AD2000B (11d4989b), rev(0003)

Using user supplied HDEF layout-id: 0x07, 0x00, 0x00, 0x00

 

[ ETHERNET DEVICE INFO ]

Class code: [0200]

Setting up lan keys

Marvell 88E8056 PCI-E Gigabit Ethernet Controller [11ab:4364]

PciRoot(0x0)/Pci(0x1c,0x2)/Pci(0x0,0x0)

 

[ ETHERNET DEVICE INFO ]

Class code: [0200]

Setting up lan keys

Marvell 88E8056 PCI-E Gigabit Ethernet Controller [11ab:4364]

PciRoot(0x0)/Pci(0x1c,0x5)/Pci(0x0,0x0)

 

ATM those are only info (the showed codec name) but maybe can will be a point to "precise" layout-id injection

 

If you try it pls report.

 

the easy way (IMHO) to find the codec id data is via linux...

(Intel)

$cat /proc/asound/Intel/codec#0
(nVidia)

$cat /proc/asound/NVidia/codec#0
(ATi)

$cat /proc/asound/card0/codec#0
or
$cat /proc/asound/card1/codec#0
You will see an output like this:

(AD2000b)

$cat /proc/asound/Intel/codec#0
Codec: Analog Devices AD1989B
Address: 0
AFG Function Id: 0x1 (unsol 0)
Vendor Id: 0x11d4989b
Subsystem Id: 0x10438372
Revision Id: 0x100300...
(nVidia GT240)

$cat /proc/asound/NVidia/codec#0
Codec: Nvidia GPU 0d HDMI/DP
Address: 0
AFG Function Id: 0x1 (unsol 0)
Vendor Id: 0x10de000d
Subsystem Id: 0x10de0101
Revision Id: 0x100100
After positive feedback I will merge this "feature" to the main Chameleon trunk code

So... good hack...

 

Cordially

ErmaC

Share this post


Link to post
Share on other sites

Hi,

 

 

Brand New Noob here, so sorry, I really need your help to get this audio to work.

 

this my bdmesg for the audio output

 

AUDIO DEVICE INFO ]

Class code: [0403]
Model name: Intel Cougar Point High Definition Audio Controller [8086:1c20] (rev 05)
Subsystem: [1043:1b43]
PciRoot(0x0)/Pci(0x1b,0x0)
Found Realtek ALC269 (10ec0269), rev(0001)
Found Intel Cougar Point (80862805), rev(0000)
Using default HDEF layout-id: 0x01, 0x00, 0x00, 0x00
 
I attached the entire bdmesg to this post.
 
upon reading the very first post, I did enable the HDAEnabler to Yes in the file.
but, in order to place the HDEF Layout ID I noticed an alphabet letter "C" in line with 0"s.
Q:
how to do put this information to use?  what do I select and edit in the chameleon.Boot.plist?
 
 
 
 
 
Thank you

bdmesg Makiko.rtf

Edited by makiko

Share this post


Link to post
Share on other sites

Hi...

In the case you want a layout-id = 3

<key>HDEFLayoutID</key>
<string>03000000</string>
or if you want a layout-id = 7

<key>HDEFLayoutID</key>
<string>07000000</string>
Hope it help (C is the hex value for 12 dec value)

 

ErmaC

Share this post


Link to post
Share on other sites

In the case you want a layout-id = 3

<key>HDEFLayoutID</key>
<string>03000000</string>
or if you want a layout-id = 7

<key>HDEFLayoutID</key>
<string>07000000</string>
Hope it help (C is the hex value for 12 dec value)

 

ErmaC

 

 

 

Hi ErmaC,

 

Thank you so much.

 

I have an important question to ask.

 

My Laptop is an older version Asus K53E with Intel chipset and unfortunately an Winbond chip for IO which OS X always give an warning on boot.

 

I switched to Clover and tried UEFI and ESP it seems ESP is better for several reasons.

 

But, when I switched to Clover I had boot glitch, and my mouse scroller isn't working as usual.  it lags.  At first with one stroke it would scroll, but now I have to 

move it quickly due to the lag.

 

I would like to switch back to Enoch or because ran smoother.

 

I was able to find many patches or work arounds I can use.

 

Tradeoffs are that Clover makes for just about seamless updates and upgrades.

But I was able to update in Enoch as well.  Just had a few scary moments.

 

With Enoch I get no boot up glitch, I don't have to edit the config.plist to work around the mess.

 

More to configure in config.plist with Clover for this system. However, everyone is using and recommends Clover so there's the hangup.

 

I Had to use Rehabmans backlight method because the AsusBacklightPanel was giving me problems with updates.  It isn't maintained successively to keep up with the updates.

 

For the HDMI to work I had to use AppleHDA v1.6 which made it really easy to do.  

 

But, with your help and all, it works.

 

Thank you so much,

Mak

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.



×