BearsOMG Posted April 7, 2012 Share Posted April 7, 2012 I'm attempting to patch VoodooHDA for my sound card too, but I can't seem to figure out how to do it correctly either. I have an ASUS P5QL-VM mobo with a Realtek ALC887. Here are my dumps: Linux: http://pastebin.com/MnEvCxhS Windows: http://pastebin.com/DGEwaXK1 GetDump: http://pastebin.com/8FpeNqWu Link to comment Share on other sites More sharing options...
PookyMacMan Posted April 7, 2012 Share Posted April 7, 2012 I'll get part 2 to all of you guys. You'll just have to apply it to your particular codec. Link to comment Share on other sites More sharing options...
BearsOMG Posted April 7, 2012 Share Posted April 7, 2012 After some more reading, I've managed to get the nodes for the green, black, orange and gray line outs on the rear panel patched, and they all show up separately in the settings panel. However, I can only get sound to come out of the green rear line-out, and nothing comes out of my other speakers when I change the main output to any of the other line outs. Here is my current info.plist: http://pastebin.com/WSrht8ui Link to comment Share on other sites More sharing options...
baekalfen Posted April 25, 2012 Share Posted April 25, 2012 I'm following this on the side (i had to make a post to get email notifications). I have a Gigabyte MA790GPT-ud3h (AMD) with a ALC899a. I hope to learn how to do it myself It is nice to see someone like you PookyMacMan who uses time to write guides for others Link to comment Share on other sites More sharing options...
MacFaulty Posted April 26, 2012 Author Share Posted April 26, 2012 Hey there, After some medical issues I'm back. Not anything to worry 'bout. I finally installed os x 10.6 "GM" others won't work on my 990fxa-ud3. Updated to 10.6.8 and all is working out just fine, except for some minor issues. I still need some fixes before I can do this. But there's a beginning! I'll post back asap with more info. Almost forgotten xD need to update sig accordingly xD. Be back soon with more info. Holiday next week, so plenty time to tinker Written on iPod (srry for message shortness). Wcool edit: Here they are, the Codecdump and the regedit dump. I'll try to start byte-flipping. Again, many thanks for explaining! codecdump.txt ALC889_PinConfigOverrideVerbs.txt Link to comment Share on other sites More sharing options...
Pchild Posted May 8, 2012 Share Posted May 8, 2012 Did you ever make any progress on this pooky? As I have the G73JH as well, i'm interested. Link to comment Share on other sites More sharing options...
PookyMacMan Posted May 8, 2012 Share Posted May 8, 2012 For all of you, yes I am working on it. I just don't have too much time on my hands, so it might be another week or so. Wcool, thanks for the updated dumps. I'll use those. Link to comment Share on other sites More sharing options...
Pchild Posted May 8, 2012 Share Posted May 8, 2012 For all of you, yes I am working on it. I just don't have too much time on my hands, so it might be another week or so. Wcool, thanks for the updated dumps. I'll use those. I just checked the dates, and saw it had been a few days wasn't sure if PMs were exchanged. Thanks for the info. Link to comment Share on other sites More sharing options...
m4f1050 Posted May 14, 2012 Share Posted May 14, 2012 I have a question... Will this help the stuttering using VoodooHDA? Link to comment Share on other sites More sharing options...
PookyMacMan Posted May 14, 2012 Share Posted May 14, 2012 No. Go into System Preferences -> VoodooHDA and check Enable SSE2. Link to comment Share on other sites More sharing options...
MacFaulty Posted May 15, 2012 Author Share Posted May 15, 2012 (edited) For everybody who's only interested in getting the audio out of the right plug, have a look at my first post (edited it with some bold chars). If you DO want to learn patching, please, ask everything you want to know about it edit: If you have stuttering or buzzing sounds in your Audio, try this new 2.7.3 package. Here's the link: http://code.google.c...kg.zip&can=2&q= It has fixed many stuttering / buzzing sounds as well as some minor bugs for my board (GA-990FXA-UD3). Not tested on other boards 'cause I only have 1 PC I can use for this. Edited May 19, 2012 by Wcool Link to comment Share on other sites More sharing options...
MacFaulty Posted June 6, 2012 Author Share Posted June 6, 2012 Might I ask if there's any progress? Link to comment Share on other sites More sharing options...
PookyMacMan Posted June 6, 2012 Share Posted June 6, 2012 Yes, almost done. I'm very, very, very sorry that I haven't gotten back to you. I have a very busy schedule for the next two weeks, but you can expect it in the week of the 18th. I can promise I will post then. Link to comment Share on other sites More sharing options...
Blacky Posted June 9, 2012 Share Posted June 9, 2012 I'm very curious with the results. The only thing not working in my OSX machine right now is its internal speaker. Link to comment Share on other sites More sharing options...
MacFaulty Posted June 27, 2012 Author Share Posted June 27, 2012 I'm very curious with the results. The only thing not working in my OSX machine right now is its internal speaker. Offtopic: Internal speakers? Where are they located? This brings me to another thing. I had a low-profile Celeron 800Mhz PC once, and it had speakers built right inside the power supply! :S Isn't that odd? Link to comment Share on other sites More sharing options...
Blacky Posted June 30, 2012 Share Posted June 30, 2012 They are located in front of the chassis (it's a HP DC7900). They have their own connector on the mobo. The speakers work fine under Windows XP/Vista/7 and Linux Ubuntu. I opened my issue here as well: http://code.google.com/p/voodoohda/issues/detail?id=170&sort=-id No one seems to be interested and I know there are plenty of PCs out there with internal speakers. Link to comment Share on other sites More sharing options...
PookyMacMan Posted June 30, 2012 Share Posted June 30, 2012 Indeed. Internal speakers = usually a laptop, with the exception of some prebuilt desktops. I think the guide coming will help you. An update on how it's going: I've been writing it up on my MacBook, but it took a fall and the display hinge is being repaired, and I don't have a copy of it on my hack here...so it'll be a few more days yet. Thank you guys for waiting so long, especially Wcool. You guys are awesome!! Link to comment Share on other sites More sharing options...
PookyMacMan Posted July 1, 2012 Share Posted July 1, 2012 Got my MacBook early, and finished part 2! First, let's look at the first set of (byte-flipped) verbs from RegEdit: 01171c40 01171d01 01171e43 01171f99 If we apply our knowledge from part 1, we can see that this is for codec #0, and node 17 (notice that the node number is 11 in regedit, but converting it from hex to decimal it is 17). Looking at the VoodooHDA pin defaults in codecdump.txt for node 17 (nid 17), we have: 0x99430140 The format for the pin defaults is: 0x[71f][71e][71d][71c] As we look at this, Voodoo has detected this output (S/PDIF) correctly. Now, the most important digits are those in 71c. The other digits are merely cosmetic, but 71c determines functionality. The last two digits are 71c, and we want the sequence to be 0. Here, we see that sequence is 0, so the output will show in System Preferences. Now the next node (18): Regedit: 01271cf0 01271d11 01271e11 01271f41 Voodoo: 0x411111f0 Voodoo has detected everything correctly. (Internal speaker), and the sequence is also 0. On node 20, Regedit: 01471c10 01471d44 01471e01 01471f01 For Voodoo: 01014410 This node also appears to be correct (Green Line-out), and it also has the proper association of 0. Now for the next one (21): Regedit: 01571c12 01571d14 01571e01 01571f01 Voodoo: 01011412 Voodoo has detected it correctly (Black Line-out), but notice the sequence is 2. OS X won't be able to use the jack correctly when it is not 0, so we'll need to patch it. We'll patch the nodes at the end. For node 22: Regedit: 01671c11 01671d64 01671e01 01671f01 Voodoo: 01016411 It's detected correctly (Orange Line-out), but it has the same problem as the black line-out. For node 23: Regedit: 01771c14 01771d24 01771e01 01771f01 Voodoo: 01012414 Ditto for this Grey Line-out. Same problem as above two nodes. For node 24: RegEdit: 01871c50 01871d9c 01871ea1 01871f01 Voodoo: 01a19c50 This is actually an input (Pink Microphone - rear), and it is set up correctly with the sequence of 0. Now for node 25: Regedit: 01971c60 01971d9c 01971ea1 01971f02 Voodoo: 02a19c60 Correct (Pink Microphone - front), and the sequence is 0. Node 26: Regedit: 01a71c5f 01a71d34 01a71e81 01a71f01 Voodoo: 0181345f This is correctly detected as a Blue Line-in, but we'll need to patch it later on because we don't like f for inputs, only outputs (more on the f value later on). Node 27: Regedit: 01b71c20 01b71d4c 01b71e21 01b71f02 Voodoo: 02214c20 This is the Headphone port, which has a sequence of 0, but most likely we're actually going to want it to be f with a default association of 1 (the same as Green Line-out). But if it's supposed to be 0, why would we want f? The reason why we would want f is for jack auto-detect; namely, if it is configured with a 71c figure of 1f, then when you plug something into the headphone port and it will disable the green line-out automatically and pipe it through to the headphone port, rather than having to go into System Preferences and changing the input manually. But, if that's what you prefer, that's OK. You don't have to add that patch when we get there. Node 28: Regedit: 01c71cf0 01c71d11 01c71e11 01c71f41 Voodoo: 411111f0 You'll notice this is the same as the other speaker. Why it's listed twice (actually, node 31 is also a speaker so there are 3) I don't know, other than there are three speaker outputs on your motherboard…? I don't think this matters much, correct me if I'm wrong. Next is node 30: Regedit: 01e71c30 01e71d21 01e71e45 01e71f01 Voodoo: 01452130 Correct and it's 0 (it's the other S/PDIF Out). Last is node 31, but if you look at it it's the other speaker, so we're done!! Now for the actual patching. Open Terminal (/Applications/Utilities) and type: sudo nano /System/Library/Extensions/VoodooHDA.kext/Contents/Info.plist Scroll down with the arrow keys down to (a long way down) where you see: <key>NodesToPatch</key> <array> </array> Next, create a new line after , indent it, and type . It should look like this: <key>NodesToPatch</key> <array> <dict> </array> Next, create a new line, indent twice (so it's one beyond ) like so: <key>NodesToPatch</key> <array> <dict> <key>Codec</key> </array> Now, we'll need to insert the codec number for the node we're patching. Remember, the first digit in the Regedit dumps is the codec number, and if you look at the dump it is 0. So, we will add 0: <key>NodesToPatch</key> <array> <dict> <key>Codec</key> <integer>0</integer> </array> If it was 2, we would have 2, for example; others can change it to whatever it needs to be. Below it add Config: <key>NodesToPatch</key> <array> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> </array> Next, we will add the patch. Remember, we had nodes 21 (Black Line-out), 22 (Orange Line-out), 23 (Grey Line-out), and 26 (Blue Line-in) to patch because the sequence was not 0 for those. So, first, let's look at Voodoo's current config for node 21 (the first one we'll patch) again (not Regedit!): 01011412 What we must do is change the last digit (sequence) to 0, but if you look there is already a port with a sequence of 0 with a default association (the second to last digit) of 1 (namely, the green line-out). So, we must change the default association as well, to a digit that no other input/output has. So, lets take a look at which default associations are taken by jacks with a default association of 0: 1 = nid 20 (Green Line-out) 2 = nid 27 (Headphones) 3 = nid 30 (S/PDIF Out) 4 = nid 17 (S/PDIF Out) 5 = nid 24 (Pink Microphone - rear) 6 = nid 25 (Pink Microphone - front) f = nid 18, 28, 31 (Speaker) Those are the default associations that we cannot use; you can check those node IDs and you will find that the sequence is 0 with those default association values. There is one exception, however - the headphones. Remember, we're going to change it anyway to a different default association, so that frees up default association 2. We'll use that for this black line-out. So, if you change the default association to 2 and the sequence to 0, the new config for node 21 is: 01011420 So, let's put 0x before it and place it between and below the Config key as follows: <key>NodesToPatch</key> <array> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x0101420</string> </array> Next we need to add Node: <array> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x0101420</string> <key>Node</key> </array> Below it, we will add the node ID in decimal (which is Voodoo's format), so we'll add 21 in this case: <array> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x0101420</string> <key>Node</key> <integer>21</integer> </array> And lastly, we'll add below the initial : <array> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x0101420</string> <key>Node</key> <integer>21</integer> </dict> </array> And now the black line-out is patched and it will show up in System Preferences. Now, we're not finished, we need to add the other input/outputs. So, below the dict you added above create another dict with the Codec + codec number: <array> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x0101420</string> <key>Node</key> <integer>21</integer> </dict> <dict> <key>Codec</key> <integer>0</integer> </array> Now, for the config, node 22 (the next node to patch) is: 01016411 Looking back at our list of "occupied" default associations, the next lowest number we can use is 7. So, our new config looks like this: 01016470 And now we'll insert it in our NodesToPatch array: <array> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x0101420</string> <key>Node</key> <integer>21</integer> </dict> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x01016470</string> </array> And lastly insert the node ID: <array> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x0101420</string> <key>Node</key> <integer>21</integer> </dict> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x01016470</string> <key>Node</key> <integer>22</integer> </dict> </array> The next node to patch is node 23, also from codec 0. The current config is 01012414, so we'll change it to 01012480. Now let's insert the entire patch: <array> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x0101420</string> <key>Node</key> <integer>21</integer> </dict> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x01016470</string> <key>Node</key> <integer>22</integer> </dict> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x01012480</string> <key>Node</key> <integer>23</integer> </dict> </array> See how this goes? Now let's apply the same thing to node 26: <array> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x0101420</string> <key>Node</key> <integer>21</integer> </dict> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x01016470</string> <key>Node</key> <integer>22</integer> </dict> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x01012480</string> <key>Node</key> <integer>23</integer> </dict> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x01813490</string> <key>Node</key> <integer>26</integer> </dict> </array> So we changed to config from 0181345f to 01813490 so it will be usable. Now the last patch is optional if you want headphones to be auto detect; we still use the same process, and this is what it looks like: <array> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x0101420</string> <key>Node</key> <integer>21</integer> </dict> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x01016470</string> <key>Node</key> <integer>22</integer> </dict> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x01012480</string> <key>Node</key> <integer>23</integer> </dict> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x01813490</string> <key>Node</key> <integer>26</integer> </dict> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x02214c1f</string> <key>Node</key> <integer>27</integer> </dict> </array> And…we're done!!! :D Yahoo! Remember, also, that since VoodooHDA covers multiple codecs (i.e. HDMI and built-in inputs/outputs), you can insert patches for your other codecs in the same NodesToPatch array as the others. Now, lastly, to finish it up, press Control-O to save (and press enter to confirm), and Control-X to exit. Now, update the kext caches (see the FAQ). This is very important; if you don't update the caches the patches will not be applied. Once you update the caches, reboot, and enjoy all your audio ports. Hope this helped!! 3 Link to comment Share on other sites More sharing options...
Blacky Posted July 7, 2012 Share Posted July 7, 2012 Thanx! But I don't have a Windows installation on my hackintosh... so is there no other way to get the RegEdit nodes? Like, using Linux for instance? Link to comment Share on other sites More sharing options...
Riley Freeman Posted July 7, 2012 Share Posted July 7, 2012 Thanks for the post above PookyMacMan. It explains things nice and clearly. I lost my notes from when I was hacking AppleHDA previously and still want to try and fix a few things in my kext. The verb info you've posted should be very helpful with that! The main fix I want is getting it to detect when I'm using the S/PDIF out. It defaults to using Line out (or Headphone out, I can't remember). I can get Line out/HP out to switch, but can I also add the S/PDIF into the mix so it can disable the line out when connected? Link to comment Share on other sites More sharing options...
PookyMacMan Posted July 7, 2012 Share Posted July 7, 2012 @Blacky Yes, you can make a Linux codec dump as well. I just can't remember the process ATM, you should be able to find it online. @Riley Hm...I'm not too sure about AppleHDA patching (never found a guide to do it manually for Snow Leo/Lion, only THe KiNG's old Leo one), but I hope that verb info helps. Link to comment Share on other sites More sharing options...
Blacky Posted July 12, 2012 Share Posted July 12, 2012 I've already made the Linux code dump: http://code.google.com/p/voodoohda/issues/attachmentText?id=170&aid=1700000000&name=codec_dump_ubuntu.txt&token=Q5L1ulPjdw5Vf6L_oEi1CbWa8fs%3A1342098329331 I just don't know how to use it... Link to comment Share on other sites More sharing options...
MacFaulty Posted July 13, 2012 Author Share Posted July 13, 2012 Srry for the very late reply, my apologies. I will start with this very soon now that I have holiday. Anyway, I would like to thank you, PookyMacMan, for providing such a great piece of art that'll help people to get their stuff working and not even ask anything for it in return (you're just like me I am sometimes too much helpful, but that's another thing). So, Thank you VERY, VERY much! I'll try this asap (that's As Soon As Possible, right? ). Link to comment Share on other sites More sharing options...
PookyMacMan Posted July 13, 2012 Share Posted July 13, 2012 Anyway, I would like to thank you, PookyMacMan, for providing such a great piece of art that'll help people to get their stuff working and not even ask anything for it in return You are very welcome. I am sometimes too much helpful, but that's another thing). Me too... So, Thank you VERY, VERY much! I'll try this asap (that's As Soon As Possible, right? ). You are correct. I'm also thinking that the three parts put together could make a good guide for the Genius Bar...I'll think about putting that together. @Blacky...compare the Linux pin defaults (you will see this value many times in your dump) with the pin defaults of Voodoo's codec dump. I think they are one and the same. Link to comment Share on other sites More sharing options...
Blacky Posted July 14, 2012 Share Posted July 14, 2012 I am trying to patch the nodes. But I find it impossible, since Voodoo dump only detects my Nvidia HDMI ports: http://code.google.c...3A1342267474588 Although my audio is working fine, except for the internal speakers. Edit, I tried to add the following lines to Info.plist <key>NodesToPatch</key> <array> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x400000</string> <key>Node</key> <integer>26</integer> </dict> <dict> <key>Codec</key> <integer>0</integer> <key>Config</key> <string>0x40050c</string> <key>Node</key> <integer>19</integer> </dict> </array> But didn't work. Internal speaker still not working. Link to comment Share on other sites More sharing options...
Recommended Posts