191

My macbook pro running Snow Leopard stopped making sounds a couple hours ago. I've found other reports of people with sounds working through headphones, but that's not the problem I'm seeing. I get no sound when my headphones are plugged in either.

I'm wondering if there's a LaunchAgent or LaunchDaemon to restart which would remedy this. I've already tried killing the coreaudio daemon (and it dutifully automatically restarted) but that didn't fix it.

I need to reboot for an OS update, so I think that'll probably rectify things.

Is there another way?

Doug Harris
  • 3,222

7 Answers7

334

sudo pkill coreaudiod

On older OSes:

You can kill the CoreAudio process by opening Terminal and running:

sudo kill -9 `ps ax|grep 'coreaudio[a-z]' | awk '{print $1}'`

It will restart automatically after a couple seconds.

That fixes some problems my aging MBP has been having, where it sometimes fails to detect headphones or decides the speakers aren't connected. No guarantees it will work for every audio problem, but it's worth a shot.

Source: zakgreant on macosxhints forums.

robmathers
  • 41,194
99

sudo pkill -9 coreaudiod kills the coreaudio process immediately. MacOS will automatically restart the coreaudio daemon, which will fix audio output in most cases.

This works on all MacOS versions.

Joel'-'
  • 1,125
35
sudo kextunload /System/Library/Extensions/AppleHDA.kext 

sudo kextload /System/Library/Extensions/AppleHDA.kext

These two commands will unload then reload the audio kernel extension. This is cleaner than sending a kill signal but might need an adjustment for newer OS.

bmike
  • 235,889
user70650
  • 367
  • Executing: /usr/bin/kmutil unload -p /System/Library/Extensions/AppleHDA.kext Error Domain=KMErrorDomain Code=71 "Kernel request failed: (iokit/common) unsupported function (-536870201)" UserInfo={NSLocalizedDescription=Kernel request failed: (iokit/common) unsupported function (-536870201)} is the result on macOS 12 Monterey. – cachius Mar 14 '23 at 18:48
  • Better answer. Fixed the issues that the accepted answer caused. Worked for me on Ventura 13.1. – Nick Mar 27 '24 at 15:56
14

I am on 10.9.2 and have the same problem. Since there are two answers, I wanted to document my findings:

sudo kextunload /System/Library/Extensions/AppleHDA.kext 
sudo kextload /System/Library/Extensions/AppleHDA.kext

These two commands will unload then reload the audio kernel extension. This post fixes my problem 100% of the time, So please upvote that original post

This solution did not work for me:

sudo kill -9 `ps ax|grep 'coreaudio[a-z]' | awk '{print $1}'`

It shuts down the internal speakers and sends the sound to my 27" monitor but does not bring back the sound to my internal speakers or headset. Perhaps in some cases it works, but hopefully this post might explain when to use one solution vs the other.

ejkitchen
  • 273
  • 1
    Apple High Definition Audio kext? Neat, I would not have figured that acronym without this context. – Jason Salaz Apr 03 '14 at 07:26
  • IMHO, the 'kill -9 `ps ax|grep 'coreaudio...' should always work without the need for a reboot. The restarted coreaudio daemon may pick an audio device which it finds first (no idea how the audio device is selected in that case), but you can reset to the wanted audio device by 'System Preferences...' -> 'Sound' settings. Also, for a browser session, you might need to select the appropriate audio device as well. – huch Nov 06 '18 at 07:11
3

In my experience, a reboot is required to fix this. It's a poor fix since it seems to recover from the failure and not address the root cause. I would like to have, but have not yet discovered if there is another quicker/simpler method to get sound back...

bmike
  • 235,889
Jack
  • 39
2

The polite way to do this is:

sudo launchctl stop com.apple.audio.coreaudiod 

Please learn to avoid kill -9 except where it's the only thing that works; it kills things so suddenly that their shutdown/cleanup handlers are not allowed to run, which can often leave things in a weird partial states that aren't handled by the software.

bukzor
  • 169
  • This one is tricky to learn as it requires to learn more than the "coreaudiod" name, but I like that. Elegance over brutality! – Yılmaz Durmaz Dec 15 '23 at 10:25
0

Use killall command with _coreaudiod user as parameter:

echo -e "# CoreaudioD restart\nalias audiorestart=\"sudo killall -u _coreaudiod -SIGKILL\"\n" >> ~/.bashrc
source ~/.bashrc
audiorestart
nohillside
  • 100,768
bsouza
  • 1