Jump to content

VoodooHDA Volume Control Fix [UPDATED][REUPLOADED]


67 posts in this topic

Recommended Posts

You only need this if you can't control volume (slider changes but volume doesn't) with VoodooHDA.


This fixes the internal volume control via a lame method


Instructions :

1 . Remove your current VoodooHDA.kext

2 . Install this one


This fix basically relinks volume control from Speaker to PCM


Version 2 :

Mute now works


10.6.X Compatible :mellow:


32 Bit Version:



64x Bit Version :

Coming soon ...

If you have any problems , reply


sources : http://pastebin.com/f75f00c76

Link to comment
Share on other sites

Just tried it. It does now allow the volume to change, however I managed to do this before by just changing the Output under the System Preferences.


The annoying part is that the Mute button still doesn't work for me. Any chance there is a quick fix for it as well?

Link to comment
Share on other sites

  • 3 weeks later...
  • 2 weeks later...



function which changes the volume :


void VoodooHDADevice::gmixerSetDefaults(PcmDevice *pcmDevice, UInt16 newVolInt)



logMsg("gmixer setting defaults");

for (int n = 0; n < SOUND_MIXER_NRDEVICES; n++){

audioCtlOssMixerSet(pcmDevice, n, newVolInt, newVolInt);

logMsg("Control integer::%p\n",n);


//if (audioCtlOssMixerSetRecSrc(pcmDevice, SOUND_MASK_MIC) == 0)

//errorMsg("warning: couldn't set recording source to microphone\n");



volume change handler :


IOReturn VoodooHDAEngine::volumeChanged(IOAudioControl *volumeControl, SInt32 oldValue, SInt32 newValue)



IOLog("VoodooHDAEngine0.1[%p]::volumeChanged(%p, %ld, %ld)\n", this, volumeControl, oldValue, newValue);


int ossDev = ( getEngineDirection() == kIOAudioStreamDirectionOutput) ? SOUND_MIXER_VOLUME:



PcmDevice *pcmDevice = mChannel->pcmDevice;





return kIOReturnSuccess;




pastebin : http://pastebin.com/f75f00c76



will post the 64 bit version on wednesday (the one after wednesday the 14th)

Link to comment
Share on other sites


  • Create New...