Jump to content

HDAEnabler for Chameleon

Chameleon Enoch AppleHDA HDAEnabler

  • Please log in to reply
5 replies to this topic

#1
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 5,215 posts
  • Gender:Male
  • Location:Canary Islands
 

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

#2
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 5,215 posts
  • Gender:Male
  • Location:Canary Islands
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

#3
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 5,215 posts
  • Gender:Male
  • Location:Canary Islands
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

#4
makiko

makiko

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 106 posts
  • Gender:Male
  • Location:Maldives
  • Interests:macOS Sierra 10.12.4 Clover 4049
    CMOS Resets Occasionally

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

Attached Files


Edited by makiko, 30 September 2016 - 08:31 AM.


#5
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 5,215 posts
  • Gender:Male
  • Location:Canary Islands

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

#6
makiko

makiko

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 106 posts
  • Gender:Male
  • Location:Maldives
  • Interests:macOS Sierra 10.12.4 Clover 4049
    CMOS Resets Occasionally

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 Erma,

 

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







Also tagged with one or more of these keywords: Chameleon, Enoch, AppleHDA, HDAEnabler


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

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