Jump to content

ALC887/888B : AppleHDA Solution for Asus P8H67-V, Snow Leopard


rafirafi
 Share

37 posts in this topic

Recommended Posts

ALC887/888B : Solution for Asus P8H67-V, Snow Leopard

 

edit: 14/06/2011 --> if you just want the kext skip till post 7 and grap the one from dmazar, seems it's a little more complete than mine.

 

edit: 10/102011 --> if you have P5P43TD-PRO you can skip to biox78 first post

 

First this is a good motherboard, almost everything work with Snow Leopard, not the easier but it work.

 

 

You have a beautiful motherboard and have problem with voodoohda, even if it's get better there is sometimes Kernel Panic or sound not very clear… you should try it in first cause if it's ok for you it's a better solution.

 

So you what to use appleHDA, you found an installer call Multibeastt and every thing is great, you check alc888b/887 you install, reboot and… no your audio system is not yet supported, the ALC887/888b in this revision is rare.

 

I have a solution, it will give you rear panel ( the 2 line in and the three line out) and front panel headphone only.

There is no mic in front cause I don't use it and no SPDIF cause I don't need it.

 

Thanks TheKing, Macman and the anonymous one with the great dsdt section.

 

As you can see this is not complete and you will have to do a little more than check a box but if you're willing to help I let the codec graph and the pin config at the end of the post. Just look where the "amp" are in the legacy kept cause it's not the classic position.

 

So, what you need:

AppleHDA --> the retail DVD you bought with AppleHDA only version 10.6.0/1 (version 10.6.2 could work but no other)

A DSDT with HDEF section added, or you can use an HDAEnabler for Alc887 or a more generic dsdt section than the one given here.

This legacy kext, and yes I've spend time to make it work.

 

1/

AppleHDA from 10.6.0/1 (if doesn't work try 10.6.2):

Install with Kext utility.

 

2/

DSDT, there is no HDEF device in the Asus BIOS so we need to had it.

-Get DSDTSE

-Extract your bios, this will give you an dsdt.dsl file.

 

PS: This is jusy an example, you can use any dsdt with id 887 and codec 887 or an HDAEnabler for Alc887 if you want.

 

There is 3 section we need to change:

A/

Add Method (DTGP, 5, NotSerialized):

Choose DTGP in DSDT Hack in DSDTSE and follow the instruction.

Try to compile the bios to check if you did the thing correctly

B/

into the Method (_L0D, 0, NotSerialized), with the other notify add :

Notify (\_SB.PCI0.HDEF, 0x02)

C/

Add an HDEF Section under the PCI0 device (put it at the end of this section you'll be sure to not damage the rest)

			Device (HDEF)
		{
			Name (_ADR, 0x001B0000)
			OperationRegion (HDCS, PCI_Config, Zero, 0x60)
			Field (HDCS, DWordAcc, NoLock, Preserve)
			{
				VID0,   16, 
				DID0,   16, 
						Offset (0x4C), 
				DCKA,   1, 
						Offset (0x4D), 
				DCKM,   1, 
					,   6, 
				DCKS,   1, 
						Offset (0x54), 
					,   15, 
				PMES,   1
			}

			Method (_PRW, 0, NotSerialized)
			{
				Return (Package (0x02)
				{
					0x0D, 
					0x05
				})
			}

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

						"subsystem-vendor-id", 
						Buffer (0x04)
						{
							0x86, 0x80, 0x00, 0x00
						}, 

						"codec-id", 
						Buffer (0x04)
						{
							0x87, 0x08, 0xEC, 0x10
						}, 

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

						"platformFamily", 
						Buffer (One)
						{
							0x00
						}, 

						"MaximumBootBeepVolume", 
						Buffer (One)
						{
							0x40
						}, 

						"PinConfigurations", 
						Buffer (One)
						{
							0x00
						}
					}, Local0)
				DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
				Return (Local0)
			}
		}

 

It's not from me, I've adapted it from a ALC887 thread but it's a classic one.

 

3/

Put the legacy kept in you're Extra/Extension and let me know if it doesn't work ;) .

 

ALC887HDA.kext.zip

 

PS : Turn out that after I turn on the graphic acceleration the working version of applehda is now from 10.6.2, it must be related to hdmi sound device I guess.

 

 

If you want to give a try to spdif or activate the front mic, I let you the pin config and the svg codec graph, you can see the change into the kext itself.

 

Source_ALC887.zip

Link to comment
Share on other sites

  • 2 weeks later...

very nice job.

tried it on P8P67-M and it works.

rear line out for stereo, rear mic, front headphones. for front headphones need to lower the volume.

 

voodoohda gives me KP sometimes. this solution seems better to me.

 

thanks!

Link to comment
Share on other sites

here is slightly modified version:

- moved Amp section for headphones to stereo source node - fixes headphones' too-loud sound and no assertions during boot

- green line out set as Internal speakers (verbs changed) and put in group with headphones for automatic switch to HP when plugged in

 

ALC887HDA.kext.zip

Link to comment
Share on other sites

I have a version with SPDIF out, but without grey line out (it seems something must be removed out).

But I can not test it - the only digital in I have is too far my comp :(

Well, at least it loads without assertions and Digital Out is listed in Sys pref/Sound.

Can upload it if you want to test it.

 

I tried to remove rear mic and add front one. I thought it will take me few mins just to change it - but stuck - does not work. Funny. Should be simple.

Link to comment
Share on other sites

I remember during the test I activate the front mic but in this configuration there was other problem, send me the kext and I will see if I can make something, perhaps it worth to give a try.

For mic you always have to correct the pin config, there are hints in the cheat file but it doesn't work 100% + the alc-887-vd is weird.

Link to comment
Share on other sites

Here is the latest version with SPDIF out. 3 lines out works (green, orange, black), headphones work (swaps with int speaker green line out), line in and rear mic works, SPDIF out not checked. No assertions.

 

Could not get front mic to work, but this is not important to me - play with it if you want (I think there can be only one mic), I just wanted to try it. Thanks again for making it - was a good start for me to learn something new. :wacko:

 

ALC887vdHDA_6Ch_RMic_SPDIF.kext.zip

Link to comment
Share on other sites

I do not know why I can not stop with this ... :P

 

Now that I get more comfortable with this audio setups, I wanted to check why MacMan's definitions were not working with our boards. Opened his codec verbs, layouts and pathmaps and compared it to what we have here. And discovered that it's actually the same. Except:

1) his verbs are the same as ours, but start with 2 instead of 0 (codec address)

2) he chosen different line setup (different line outs)

3) and his amp sections are connected to audio mixer nodes, and ours are connected to audio out nodes

 

I tried to modify his plist and discovered that:

above 1) is not important

above 2) is, of course, not important

above 3) is making all the trouble

 

So, finally I just moved amp sections in his 887 pathmaps from mixers to out nodes and ... well ... all assertions during boot disappeared and ... got audio working with his kext. :(

 

I like setup from here more, so will continue to use it (got emotionally attached :P ). But, found that whole thing interesting.

Link to comment
Share on other sites

I do not know why I can not stop with this ... :wacko:

 

Now that I get more comfortable with this audio setups, I wanted to check why MacMan's definitions were not working with our boards. Opened his codec verbs, layouts and pathmaps and compared it to what we have here. And discovered that it's actually the same. Except:

1) his verbs are the same as ours, but start with 2 instead of 0 (codec address)

2) he chosen different line setup (different line outs)

3) and his amp sections are connected to audio mixer nodes, and ours are connected to audio out nodes

 

I tried to modify his plist and discovered that:

above 1) is not important

above 2) is, of course, not important

above 3) is making all the trouble

 

I've test your kext (thanks :rolleyes: ) and it works, audio utllity is no more crashing but I've lost headphones and switch is not working at all : don't know if it's your verbs, simply pathmaps, or chipset may differs a little.

The difference is indeed principally the amp but you got another difference with nodeid 38 iirc and, the base address is reported as 0 so I use 0 but it's not important as you've noticed.

Link to comment
Share on other sites

i've read on forums that there can be no more then 4 currently active/enabled outputs and 3 inputs. but this can be overriden with this autoswitcing. this works for me. so, if autoswitching is not working for you I guess one output should stop working. it seems your osx pick your headphones for that.

 

just to confirm this I loaded your initial version and find out that grey port is not working for me - again only 4 outputs works.

 

about autoswitch - I'm injecting audio via HDAEnabler and using AppleHDA from [url="http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/"]#####[/url]. I guess it's from 10.6.2. Which AppleHDA are you using? You are mentioning 10.6.0 and 1. Maybe that's the difference?

Link to comment
Share on other sites

Sound was initially working only with 10.6.0/1 but after I've injected the ATI card It works only with 10.6.2 ( from [url="http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/"]#####[/url] package), I use the HDAENabler888b from [url="http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/"]#####[/url] (but the results are the same with dsdt) and there is effectively an output not working. So we're on the same boat !

 

Do you have this chipset ? If not, it could explain the difference with the headphones.

 

Codec: Realtek ALC887-VD

Address: 0

Vendor Id: 0x10ec0887

Subsystem Id: 0x10438444

Revision Id: 0x100302

Link to comment
Share on other sites

It's the same one.

 

Codec: Realtek ALC887-VD
Address: 0
AFG Function Id: 0x1 (unsol 1)
Vendor Id: 0x10ec0887
Subsystem Id: 0x10438444
Revision Id: 0x100302

 

I think you need to have HD front panel on the comp case in order to have detection. Old AC'97 does not have sense lines. I guess. Maybe that's the issue.

 

So, if detection does not work your original one is the right choice.

Link to comment
Share on other sites

I'm trying this out on a P8H61-M, which also has the new card. It hangs the system completely for about 10 minutes on startup. Are you all using the older AppleHDA or a bin-patched version of the newer one?

 

update - it appears that this happens no matter what version of AppleHDA I use. When the system eventually kicks out of its loop, audio still isn't working and the whole system is much less responsive. Removal of the legacy kext restores functionality. I'm using the DSDT edit.

 

update 2 - taking a deeper look in IOreg, it looks like it is switching between headphones and internal speakers rapidly and won't stop. Even though nothing is plugged in. Trying to fix.

 

update 3 - deleted the MuteGPIO keys for IntSpeaker and Headphone. Boots normally now and shows up in System Preferences, but sound output still doesn't work and the system switches between IntSpeaker and Headphone about twice a second. Never had this much trouble with an HDA patch before.

 

update 4 - added the Headphone MuteGPIO key back in, system still loads alright but sound still doesn't work. Clicking in headphones indicates that the switching is still happening about twice a second. System Preferences locks up if I unplug the headphones and won't unlock at all. This is confusing me, it's even more frustrating than the ALC262 that thought it was an ALC892 and had a node graph that looked like someone nuked a yarn convention. Even VoodooHDA choked on that one; this one is worse in that it *almost* works.

Link to comment
Share on other sites

Your board is sharing connectors between lines/mics/headphones. I guess you'll need to remove all from plist except blue line in, rear mic in, rear line out green, front green (headphones), spdif out. Just a guess.

Link to comment
Share on other sites

Trimmed it down to just those 5, still doing the same thing. Also tweaked a verb since the digital out is optical.

 

Could be that the connector is shot. Never did try the onboard audio in Windows since the intention from the start was to send everything over HDMI (which is working fine on both platforms). Might be a short on the detection line, I had to pull the front panel out to reconnect one of the USB cords and I might have bumped something I shouldn't have. If it is that I swear I'm gonna shoot something, I've been plugging away at this for 2 days now.

 

Update

1. Audio was exhibiting the same behavior in Windows, so I was assuming a hardware fault.

2. Disconnected the front panel, no joy on the sound but the switching stopped.

3. Rebooted. Still no sound.

4. Cold-booted with HDMI unplugged, lo and behold the audio worked! Reconnected the front panel, no rapid switching, autodetection working fine, sound working.

5. Rebooted, still working.

6. Rebooted back on to the Mac side, no joy and hang upon trying to change audio stuff.

7. Rebooted to Windows, sound had stopped working again.

8. Cold-booted Windows, audio working again.

9. Rebooted Windows again, audio still working.

 

What the hell is going on here? Am I messing something up in the DSDT? Is AppleHDA doing some kind of device reconfiguration that is screwing the hardware on reboot?

Link to comment
Share on other sites

Hi guys!

 

Very interesting topic here.

 

I've read through it and I'm very interested in this kext dmazar. I have a MSI H67MA-E35 (B3) with an ALC887 chip, so it should work, but I really need front mic support. Is it possible that you could add it? I would do it by myself, but I have no idea how to write a kext or what to change etc. pp. :(

 

Thanks!

 

EDIT: I tried your kext. Front line out (headphones) works, but the other line out at the back doesn't work.

 

Greetings,

xxmacmanxx

Link to comment
Share on other sites

hi xxmacmanxx.

I did not have much luck with my front mic. you can try version attached here with front mic added as line-in. it has autoswitch between rear and front mic. although, this front mic is not working for me as should be. when I plugin mic in there is no signal or is too weak. when I plugin headphones into it then I have a signal - meaning: it is working somehow.

test it.

 

you can also test legacy ALC887_888b.kext - maybe this one works for you. it's taken from here:

ALC889A, Gigabyte (Intel), up for ALC889 & ALC892

 

And check if you have sound assertions/errors from them by executing this in Terminal:

grep assert /var/log/kernel.log

 

---

ALC887vdHDA_6Ch_RMicFLIn_SPDIF.kext.zip

ALC887_888b.kext.zip

Link to comment
Share on other sites

Hi,

 

so I downloaded both kexts. The first one didn't work at all and the second one worked like before. Front Headphones sound, but no mic. The (rear?) mic (at the back) works, but with noise.

 

Any recommendations? :thumbsup_anim:

 

Greetins,

xxmacmanxx

Link to comment
Share on other sites

Hi,

so I downloaded both kexts. The first one didn't work at all and the second one worked like before. Front Headphones sound, but no mic. The (rear?) mic (at the back) works, but with noise.

Any recommendations? ;)

 

 

@xxmacmanxx : Are you sure you don't have the usual alc887 ? in this case you can use the legacy kext from [url="http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/"]#####[/url] (p.ex.)and it's normal the ones from this topic don't work for you.

 

@dmazar : you were right for the AC97/sense line stuff, turn out your kext is fine for me :)

Link to comment
Share on other sites

that's right. the other possibility is voodooHDA - I remember that I had front mic with it.

as the last try, I'm attaching legacy kext with removed boost from rear mic. it's just a blind guess - maybe will help with mic noise.

ALC887_888b_noBoost.kext.zip

 

by the way, managed to get 5m optical cable to test SPDIF out - it works for me. although, the kid is sleeping currently, and can not test it fully yet.

Link to comment
Share on other sites

  • 2 weeks later...

Thank you rafirafi. Your kext got my Audio working on my Asus P8H61-M motherboard. Until now, I was using USB audio which wasn't an issue but line-in is what I really needed and now I have it.

Link to comment
Share on other sites

  • 2 months later...

Hi,

 

is there any chance that there will be a kext that is compatible with AppleHDA 1.7?

 

I have a MSI H67MA-E35 motherboard and no ALC 887 next works despite the kext with front micro from dmazar, I really don't know how to get that stupid sound working! I have the feeling no one has the alc 887 codecs, I only read about 889 oder 888, kind of annoying...

 

Any suggestions?

 

Greetings,

xxmacmanxx

Link to comment
Share on other sites

  • 4 weeks later...
Thank you rafirafi. Your kext got my Audio working on my Asus P8H61-M motherboard. Until now, I was using USB audio which wasn't an issue but line-in is what I really needed and now I have it.

 

i have the same motherboard but when i try i see "No output devices found"

 

here is what i did:

1. install fresh lion

2. [url="http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/"]#####[/url] -system utilities -ALC8xxHDA -AppleHDA Rollback -ALC887/888b

3. without rebooting use kext wizard to install ALC887vdHDA_6Ch_RMic_SPDIF.kext and repair and rebuild

4. reboot, no sound

 

can anyone tell me if i am doing anything wrong? do i need to install something or do something different?

 

please and thanks

Link to comment
Share on other sites

 Share

×
×
  • Create New...