Apple's engineers had second thoughts about the operating margins of the early MacBook's speakers, but had them too late in the game to re-specify the hardware. They used a kernel extension plug-in as a software workaround to restrict the MacBook's available gain potential. The plug-in also lists which digital signal processes are available for applications to hook into, as well as spelling out the upper and lower limits the processes may use. The goal was to eliminate all the conditions which could be tough on little speakers, not just put a cap on the amplifier.
Apple was concerned that if the iTunes equalizer, as an example, had access to the full capacity of Intel's codec, (which Apple can't mess with), and if a user set the low frequencies to boom-box levels, it could end up being a one-time-only event. Indeed, the engineers' caution has the plug-in adjust the volume of the startup chime to adapt to whatever DSP settings might be in force during a boot.
So much for the history lesson. Before even thinking of doing anything I suggest, visit Apple's site to verify you have installed all of the appropriate Firmware Updates for your MacBook. Doing so could provide the simplest solution possible. Although it wasn't true for everyone, many MacBook owners reported Firmware Update 1.2 cured their low volume issues. (Not all updates are apropriate for all models.)
If that doesn't work, here's how to tear out all of the Apple engineers' hard work, and thereby restore the defaults Intel built into its audio chip and associated codec. I came up with this inelegant hack after weeks of thrashing around with the concept, but lacking any existing knowledge. While the final product fixed my old, nearly-voiceless MacBook, I never could get it going for more than a few minutes at a time on my Sister's MacBook. 50-50 odds like that are acceptable when there's no money on the line to pay for the fix.
Before I posted this, I tested each command by cut-and-pasting it into the Terminal. With a backup in place, none of this is dangerous or touchy or even particularly interesting. Especially my attempts at humor. Still, anyone proceeding on from here should be competent enough to catch typos or syntax errors. If something Really, Really Bad happens while following my instructions, it may be my fault, but it's your computer.
Still with me?
Okay, safety first. Make a backup of the file we're targeting for modification:
sudo cp /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAPlatformDriver.kext/Contents/Info.plist ./Info.plist.bkup
Let's not perform brain surgery on the wrong patient:
defaults read /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAPlatformDriver.kext/Contents/Info | egrep "MuteGPIO = 1342242829"
The response should be the numeral 12. If it isn't 12, stop. No harm has been done. Should you care to oblige me, you might post your result.
Otherwise, let's make one more duplicate of the Info.plist file, which we'll use as a working copy. The installed copy and the working copy need to have the same name, so they can't be together in the same directory. I nominate the Desktop to be as good a place as any to put the working copy:
sudo cp -n /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAPlatformDriver.kext/Contents/Info.plist ~/Desktop/Info.plist
It's our working copy, so let's work on it:
defaults delete ~/Desktop/Info IOKitPersonalities
The sharp-eyed individual will note that the path to the file stops at 'Info', leaving off the .plist extension. That is not a typo. It's just another Apple usage eccentricity, this time in the syntax of the
defaults command insists on.
To pull off the file-swap without annoying the system, we need to induce a temporary state of audio amnesia in Mr. MacBook. Oh, good, here's a rubber mallet:
sudo kextunload /System/Library/Extensions/AppleHDA.kext/
Now we overwrite the original .plist by dropping our renamed working copy back into the directory it came from. Fortune favors the brave, and all that, but I always check to see if the backup's still there just before I do this:
sudo mv ~/Desktop/Info.plist /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAPlatformDriver.kext/Contents/
TTime to revive the patient:
sudo kextload /System/Library/Extensions/AppleHDA.kext/
The transplant will have affected Mr. MacBook's personality, and he may start behaving in ways you're not used to -- such as, for instance, playing his music so loudly you're unable to avoid hearing it.
The change should take effect right away, but if not, then restart and check your audio settings in System Preferences. If you can't detect any improvement in volume, then the prudent thing to do is to restore the hacked Info.plist with the backup copy:
sudo mv /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAPlatformDriver.kext/Contents/Info.plist.bkup ./Info.plist
... which will leave everything exactly as you found it.