Jump to content

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


  • Please log in to reply
36 replies to this topic

#1
rafirafi

rafirafi

    InsanelyMac Protégé

  • Members
  • PipPip
  • 88 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 ;) .

Attached File  ALC887HDA.kext.zip   8.23KB   1368 downloads

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.

Attached File  Source_ALC887.zip   25.05KB   424 downloads

#2
dmazar

dmazar

    InsanelyMac Sage

  • Coders
  • 271 posts
  • Gender:Male
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!

#3
dmazar

dmazar

    InsanelyMac Sage

  • Coders
  • 271 posts
  • Gender:Male
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

Attached File  ALC887HDA.kext.zip   8.87KB   551 downloads

#4
rafirafi

rafirafi

    InsanelyMac Protégé

  • Members
  • PipPip
  • 88 posts
Great to see it serves for somebody else. ;)
dmazar, I've removed Spif completely and it was not a good thing, it makes the audio utility crash.

#5
dmazar

dmazar

    InsanelyMac Sage

  • Coders
  • 271 posts
  • Gender:Male
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.

#6
rafirafi

rafirafi

    InsanelyMac Protégé

  • Members
  • PipPip
  • 88 posts
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.

#7
dmazar

dmazar

    InsanelyMac Sage

  • Coders
  • 271 posts
  • Gender:Male
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:

Attached File  ALC887vdHDA_6Ch_RMic_SPDIF.kext.zip   8.81KB   720 downloads

#8
dmazar

dmazar

    InsanelyMac Sage

  • Coders
  • 271 posts
  • Gender:Male
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.

#9
rafirafi

rafirafi

    InsanelyMac Protégé

  • Members
  • PipPip
  • 88 posts

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.

#10
dmazar

dmazar

    InsanelyMac Sage

  • Coders
  • 271 posts
  • Gender:Male
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 #####. 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?

#11
rafirafi

rafirafi

    InsanelyMac Protégé

  • Members
  • PipPip
  • 88 posts
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 ##### package), I use the HDAENabler888b from ##### (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



#12
dmazar

dmazar

    InsanelyMac Sage

  • Coders
  • 271 posts
  • Gender:Male
It's the same one.

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

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.

#13
c.craigen

c.craigen

    InsanelyMac Protégé

  • Members
  • Pip
  • 26 posts
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.

#14
dmazar

dmazar

    InsanelyMac Sage

  • Coders
  • 271 posts
  • Gender:Male
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.

#15
c.craigen

c.craigen

    InsanelyMac Protégé

  • Members
  • Pip
  • 26 posts
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?

#16
xxmacmanxx

xxmacmanxx

    InsanelyMac Protégé

  • Members
  • Pip
  • 26 posts
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

#17
dmazar

dmazar

    InsanelyMac Sage

  • Coders
  • 271 posts
  • Gender:Male
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:
[codebox]grep assert /var/log/kernel.log[/codebox]

---
Attached File  ALC887vdHDA_6Ch_RMicFLIn_SPDIF.kext.zip   8.87KB   239 downloads
Attached File  ALC887_888b.kext.zip   8.71KB   227 downloads

#18
dmazar

dmazar

    InsanelyMac Sage

  • Coders
  • 271 posts
  • Gender:Male
c.craigen, did you manage to get the sound working?
do you have linux codec dump from your board? I'm curious how this looks on the board with smaller number of connectors.

#19
xxmacmanxx

xxmacmanxx

    InsanelyMac Protégé

  • Members
  • Pip
  • 26 posts
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

#20
rafirafi

rafirafi

    InsanelyMac Protégé

  • Members
  • PipPip
  • 88 posts

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 ##### (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 :)





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

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