Jump to content

VoodooHDA 2.8.5 for Mavericks (Slice + AnV) (Signed!)


Andy Vandijck
 Share

211 posts in this topic

Recommended Posts

I have the via 1802p in my laptop and the subwoofer links to an out of range widget (3e). As a result, the subwoofer doesn't work. I noticed that it works in ubuntu though and soon found this post: https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1045981

Which explains how the ubuntu developers just skipped over that widget entirely and got the subwoofer to work. I've tried patching AppleHDA but it still doesn't work. How can I patch voodoohda so it will skip over this widget?

If you make getdump then we can see what to discuss.

Link to comment
Share on other sites

Here it is

See what you have

Patched pins configuration:
 nid 36 0x901701f0 as 15 seq  0 Speaker       Fixed Analog  N/A     Internal Unknown misc 0 NoPresenceDetect
 nid 37 0x022140f0 as 15 seq  0 Headphones    Jack  1/8     Front   External Green   misc 0
 nid 40 0x422140f0 as 15 seq  0 Headphones    None  1/8     Front   External Green   misc 0 [DISABLED]
 nid 41 0x90a70137 as  3 seq  7 Microphone    Fixed Analog  N/A     Internal Unknown misc 0 NoPresenceDetect
 nid 42 0x418130f0 as 15 seq  0 Line-in       None  1/8     Rear    External Blue    misc 0 [DISABLED]
 nid 43 0x01a1903e as  3 seq 14 Microphone    Jack  1/8     Rear    External Pink    misc 0
 nid 45 0x074411f0 as 15 seq  0 SPDIF-out     Jack  RCA     Special External Black   misc 0 NoPresenceDetect
 nid 48 0x50a601f0 as 15 seq  0 Microphone    None  Digital N/A     Internal Unknown misc 0 NoPresenceDetect [DISABLED]
 nid 51 0x90170080 as  8 seq  0 Speaker       Fixed Analog  N/A     Internal Unknown misc 0

What 3e widget did you tell if there is no such nid?

You have:

- two internal speakers at nodes 36 and 51 but node 36 may not work because its association is F.

- two headphones, also as=15

- one internal microphone at node 41. Must work

- one external rear pink jack for microphone at node 43. Must work.

- digital SPDIF-out. Not sure if it really exists.

So, if you want some output then you should correct your info.plist

This is an example and you have to think about other values to make it better

<key>NodesToPatch</key>
  <array>
   	<dict>
		<key>Codec</key>
		<integer>0</integer>
		<key>Node</key>
		<integer>36</integer>
		<key>Config</key>
		<string>0x90170110</string>         
	</dict>
   	<dict>
		<key>Codec</key>
		<integer>0</integer>
		<key>Node</key>
		<integer>37</integer>
		<key>Config</key>
		<string>0x02214020</string>         
	</dict>
  </array>
Link to comment
Share on other sites

That stuffs not the issue. Voodoohda fixed all of that. The voodoodump shows that all of it is fine but the subwoofer, node 51. Widget 3E (62 in dec) is out of range and a dead end so voodoohda traces node 51 to 62 and stops and doesn't detect it. The ubuntu workaround is to skip this widget and use the following path map in dec: 51-28-60-9

 

The codecdump and codecgraph show the widgets best

Link to comment
Share on other sites

That stuffs not the issue. Voodoohda fixed all of that. The voodoodump shows that all of it is fine but the subwoofer, node 51. Widget 3E (62 in dec) is out of range and a dead end so voodoohda traces node 51 to 62 and stops and doesn't detect it. The ubuntu workaround is to skip this widget and use the following path map in dec: 51-28-60-9

 

The codecdump and codecgraph show the widgets best

See you.

You seems have to use one forgotten feature of the VoodooHDA

   	<dict>
		<key>Codec</key>
		<integer>0</integer>
		<key>Node</key>
		<integer>51</integer>
		<key>Conns</key>
		<string>28</string>         
	</dict>

I am not sure how it works so it is for your investigations. I can rebuild Voodoo with some debugs or changes.

Link to comment
Share on other sites

See you.

You seems have to use one forgotten feature of the VoodooHDA

   	<dict>
		<key>Codec</key>
		<integer>0</integer>
		<key>Node</key>
		<integer>51</integer>
		<key>Conns</key>
		<string>28</string>         
	</dict>

I am not sure how it works so it is for your investigations. I can rebuild Voodoo with some debugs or changes.

That's what I was looking for! I'll give it a go and keep my fingers crossed. Where is the documentation for the full list of features for voodoohda? Sourceforge has next to nothing. 

Also, this will tell voodoohda to go to node 51 from 28 but then how do I tell it to then go the rest of the way (60-9)?

 

Edit: I tried it and it didn't work. How do I do the getdump command?

Link to comment
Share on other sites

Ok, I looked at the dump before and after this change. 

Before: 

VHDevice NID=51 Config=501701f0 (pin: Speaker () Cap=00000010 Ctrl=00000000 -- Conns: 0=62

 

After: VHDevice NID=51 Config=501701f0 (pin: Speaker () Cap=00000010 Ctrl=00000000 -- Conns:

 
The connections just disappear instead of having 28 replace 62
 
**Edit: fixed this issue, the conns flag should be number/integer, not string

Ok, I think I found the issue. I put what you had with conns 28 (but as a number, not string) and then added Config flag to fix the pin config.

 

The issue now is that I have multiple devices using the same node. Based on the data I gathered from linux, the speaker node 36 should ultimately end at node 8, which voodoo correctly traces. The issue comes when voodoo traces the headphone node 37 incorrectly, ending it at node 9. Node 37 should ultimately end at node 8 as well which voodoo changes to 9 because it says that "nid 8 busy by association…)". The subwoofer node 51 (which is a speaker), should then trace to node 9 in the end. Since voodoo already used node 9 for the headphones, it says that both nid 8 and 9 are busy by association so the subwoofer is disabled. 

 

How can I get voodoohda to use the same output nid for two different devices? Both 36 and 37 should end at node 8

dump-before.txt

dump-after.txt

Link to comment
Share on other sites

 

Thanks you very mutch AnV ! working Great ;)  testing  on Z87X-UD5H  :D  I have create  cool Installer 

 For VoodooHDA Tribute With the binaries   :thumbsup_anim:

 

EDIT new package with  AnV change log  ;)

 

 

 

whether working at Yosemite?

Link to comment
Share on other sites

Ok, I looked at the dump before and after this change. 

Before: 

VHDevice NID=51 Config=501701f0 (pin: Speaker () Cap=00000010 Ctrl=00000000 -- Conns: 0=62

 

After: VHDevice NID=51 Config=501701f0 (pin: Speaker () Cap=00000010 Ctrl=00000000 -- Conns:

 
The connections just disappear instead of having 28 replace 62
 
**Edit: fixed this issue, the conns flag should be number/integer, not string

Ok, I think I found the issue. I put what you had with conns 28 (but as a number, not string) and then added Config flag to fix the pin config.

 

The issue now is that I have multiple devices using the same node. Based on the data I gathered from linux, the speaker node 36 should ultimately end at node 8, which voodoo correctly traces. The issue comes when voodoo traces the headphone node 37 incorrectly, ending it at node 9. Node 37 should ultimately end at node 8 as well which voodoo changes to 9 because it says that "nid 8 busy by association…)". The subwoofer node 51 (which is a speaker), should then trace to node 9 in the end. Since voodoo already used node 9 for the headphones, it says that both nid 8 and 9 are busy by association so the subwoofer is disabled. 

 

How can I get voodoohda to use the same output nid for two different devices? Both 36 and 37 should end at node 8

I think you should set configs:

36 = 0x90170110

37 = 0x0221401f

Understand the idea - change association and pin.

Link to comment
Share on other sites

That's it! Finally, after 5 months I've finally got this subwoofer working. The only issue left is that when I group the speaker and subwoofer together under the same association, only the speakers work.

When they're not associated, they each work separately yet when I group them together into an aggregate device, the same thing happens as when they're under the same association: no subwoofer.

dumpbefore.txt

dumpafter.txt

Link to comment
Share on other sites

 

 

See here

bool VoodooHDADevice::suspend()
{
....
bool VoodooHDADevice::resume()
{

I've uncommented debug lines and it seems like it's not even getting to the point of calling suspend()  properly... because the last thing I see in the log is debug coming from 

"VoodooHDADevice[%p]::performPowerStateChange(%d, %d)\n", this, oldPowerState, newPowerState

 

It changes the state multiple times in a course of 10 seconds:

18:33:55: performPowerStateChange(1,2)
18:33:56: performPowerStateChange(2,1)
18:33:59: performPowerStateChange(1,2)
18:34:01: performPowerStateChange(2,1)
18:34:05: performPowerStateChange(1,2)
18:34:06: performPowerStateChange(2,1)

Which means it suspends and resumes the codec 6 times in 10 seconds and probably causes it to stall the sleep process? What kind debug can I provide? 

Link to comment
Share on other sites

I've uncommented debug lines and it seems like it's not even getting to the point of calling suspend()  properly... because the last thing I see in the log is debug coming from 

"VoodooHDADevice[%p]::performPowerStateChange(%d, %d)\n", this, oldPowerState, newPowerState

 

It changes the state multiple times in a course of 10 seconds:

18:33:55: performPowerStateChange(1,2)
18:33:56: performPowerStateChange(2,1)
18:33:59: performPowerStateChange(1,2)
18:34:01: performPowerStateChange(2,1)
18:34:05: performPowerStateChange(1,2)
18:34:06: performPowerStateChange(2,1)

Which means it suspends and resumes the codec 6 times in 10 seconds and probably causes it to stall the sleep process? What kind debug can I provide? 

I don't know how did you do but I tested and corrected sleep problem namely in these procedures: Suspend/Resume and you may see my comments inside.

Link to comment
Share on other sites

I don't know how did you do but I tested and corrected sleep problem namely in these procedures: Suspend/Resume and you may see my comments inside.

I indeed saw your comments, but what I'm seeing here is that suspend is not being called properly and it loops at performPowerStateChange constantly changing between states. So when the entire system gets suspended the codec is still being supplied current and prevents laptop from entering sleep. I'm not exactly sure how can I debug this more thoroughly?
Link to comment
Share on other sites

 

Thanks you very mutch AnV ! working Great ;)  testing  on Z87X-UD5H  :D  I have create  cool Installer 

 For VoodooHDA Tribute With the binaries   :thumbsup_anim:

 

EDIT new package with  AnV change log  ;)

 

 

I tried using this and didn't get my USB audio working until after I installed the NVidia HDMI Audio kext. After a fresh reinstall of OSX, I tried the Nvidia HDMI Audio kext first, but still couldn't get my USB audio to work until after I installed this! For me, they have to be used in conjunction I guess, but it works! Good job. 

 

Edit - Just tried it on the onboard audio ( Creative Sound Blaster Recon 3Di ) and that works now too. No more USB!

whether working at Yosemite?

 works for me

  • Like 1
Link to comment
Share on other sites

I tried using this and didn't get my USB audio working until after I installed the NVidia HDMI Audio kext. After a fresh reinstall of OSX, I tried the Nvidia HDMI Audio kext first, but still couldn't get my USB audio to work until after I installed this! For me, they have to be used in conjunction I guess, but it works! Good job. 

 

Edit - Just tried it on the onboard audio ( Creative Sound Blaster Recon 3Di ) and that works now too. No more USB!

 works for me

Ok.Thank you for answer!!!!

Link to comment
Share on other sites

Thanks for the help Slice! The only issue remaining is that when I try to associate the speakers and subwoofer together, the subwoofer doesn't work. When they're separate and I create an aggregate device, only the stereo option in it works, the multichannel is seemingly ignored. The only way I can get them both working together is by creating a multi-output device when they're separate. Any ideas?

Link to comment
Share on other sites

Thanks for the help Slice! The only issue remaining is that when I try to associate the speakers and subwoofer together, the subwoofer doesn't work. When they're separate and I create an aggregate device, only the stereo option in it works, the multichannel is seemingly ignored. The only way I can get them both working together is by creating a multi-output device when they're separate. Any ideas?

It is not a driver problem.

A music player must provide multistream sound (one stereo stream and one stream for subwoofer) and a sound source must be multichannel (not MP3). Else send same sound to main speakers and to subwoofer.

Link to comment
Share on other sites

Sweet! Updated to 2.8.6 and it works fine with VIA 1802.

 

It is not a driver problem.

A music player must provide multistream sound (one stereo stream and one stream for subwoofer) and a sound source must be multichannel (not MP3). Else send same sound to main speakers and to subwoofer.

That makes sense. I've been attempting to take the multichannel output and turn it into stereo output through all of the speakers/subwoofer with soundflower/au lab with moderate success. 

When I have the speaker and subwoofer as separate devices:

 

1) I get full sound out of both with a multi-output device setup for them in all applications.

 

2) Get sound only out of speakers with an aggregate device in all applications. However, this is remedied by plugging it in to au lab/soundflower so it works like the multi-output device except that I now have volume control for them all. This is the best I got so far. However, there is pretty high latency with this setup. Probably because the I have the sound running through au lab, then the aggregate device, and then the speakers/sub. So this isn't the ideal setup. Also, there's some kind of bug in AU Lab that when an aggregate device or multi-output device is set as the output device, it won't save my configuration. I've found no answers online, just unanswered questions.

 

When I have the speaker and sub under the same association, it appears that the subwoofer just doesn't even show up (maybe a driver issue?). When setting the speakers as the output with a multichannel setup in au lab, sound only comes out of the speakers and it only shows up as a two channel device. The sub is seemingly non-existent when it's associated with the speakers. Everything looks fine in the dump though. Is the sub getting disabled somehow?

 

*Edit*

 

According to this thread: http://olarila.com/forum/viewtopic.php?f=18&t=604

this issue may be a voodoohda code limitation which would explain why only the first output device in the association (speakers) is enabled. I tried setting the sub as the first sequence in the association and sure enough, only it worked. Can this be fixed?

dump.txt

Link to comment
Share on other sites

No, VoodooHDA enables all devices.

Switching is provided by Sound.PrefPane in OSX.

If two or more devices in the same association then only one of them will work because there is "Audio Selector" in the chip.

If devices are in different associations then they may work simultaneously if OSX player may provide sound on several devices at the same time.

As I see from your dump there are such chains:

36-20-52-8 (Speaker)

51-28-60-9 (Subwoofer)

37-21-53-8 (headphones)

So Speaker/Headphones are switchable depending on jack inserted.

If we enable 36 and 37 at the same time then one Stereo sound will go on both pins provided by the stereo stream at output 8.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...