(May also work on other versions of OS X)
Premise: With a Macbook Pro Late 2013 running OS X Mavericks and a brand new Thunderbolt Display there is an issue where when the Macbook is connected to the Thunderbolt Display it emits a soft hissing sound – like static – or white noise.
There seem to be a lot of people with this issue – one popular thread on the Apple Support Site has around 30k views to date.
In a nutshell a few things that people are reporting that fix the issue for them include:
Resetting the Hardware
There are two links from Apple that allow you to do an SMC reset and also reset the PRAM:
SMC reset http://support.apple.com/kb/ht3964
PRAM reset http://support.apple.com/kb/ht1379
Doing both of these resets fixed the noise issue with my 2011 Macbook Air running OSX 10.8 Mountain Lion but did not fix the issue with my 2013 MBP running OS X 10.9 Mavericks.
Turning off other nearby devices
If you have fluorescent light bulbs (aka CFLs) or anything else nearby in your house it may be causing the issue. Try turning off lights and appliances and see if it fixes the issue. If so it may mean that you have a problem with a ground feedback look ( see next item )
Ground Loop / Ground Loop Feedback
In an electrical system, a ground loop usually refers to a current, almost always unwanted, in a conductor connecting two points that are supposed to be at the same potential, often ground, but are actually at different potentials. Some of the most notorious effects of ground loops are the noise and interference that can become present in audio, video, and radio transmission systems. They can also create an electric shock hazard, since ostensibly “grounded” parts of the equipment, which are often accessible to users, are not at ground potential.
Some of the ways you can test / fix this issue include:
- Turning off other nearby devices
- Unplugging all other devices besides your Macbook and Thunderbolt display (keyboards, hard drives, etc ) and only running your Macbook on battery
- Try a two prong electrical adapter – don’t screw in the ground screw (as the instructions may mention) if one comes with it. This is for testing only – if this is the problem you may want to have someone check the wiring in your house
Unplug and Replug
- Some people have mentioned that unplugging and replugging the thunderbolt cable will temporarily fix the problem. For me this only fixed the problem for about 1-2 seconds until the Macbook recognized the display and it powered up – but note that when the able is unplugged the noise did stop
Use an External Thunderbolt Cable
- A few people also mention that using an external thunderbolt display cable either a 0.5m (19 inches) or a 2m ( 2.15ft / 78 inches ) variety should be fine – depending on how close your macbook and display are.
Add another Thunderbolt Device
- Others have said that using another Thunderbolt Device downstream of the Thunderbolt Display have fixed their issues
- One person who posted this said s/he was using a LaCie array but that costs around $500 so if I was going to try this I might try it with the Seagate version but it is not a confirmed fix
- If you have access to one, try daisy chaining a second Thunderbolt display ( if your Macbook can support two )
Eliminate Other Interference
- I also attempted using a Ferrite Core Cable Clip to reduce any interference coming over the Thunderbolt cable but this did not help any.
Update the Display Firmware
Apple has two firmware updates for the Thunderbolt Display:
Thunderbolt Firmware Update 1.2 which is subtitled “Keeps reappearing and Thunderbolt ports and Target Display Mode may not work”
Most likely you already have these installed. If you run “Software Update” by clicking on the apple icon on the top left of the screen and check / install software updates, well, OS X is smart enough to give you the ones you need for the attached hardware, too. You can download and run the firmware updates anyways, but it will tell you “Your Thunderbolt Display has already been updated with this firmware” or something similar.
Reload or Downngrade your Operating System (OS X)
- Reload your operating system (OS X) – not very promising but it’s an option. Apple support has it “on the list” of things they will tell you to try.
- Downgrade your operating system – I have not tried this but logically it makes sense to me that it would possibly work. It’s a bit of an inconvenience but at least Time Machine makes restoring backups pretty easy if it doesn’t work.
Check the Thunderbolt Display and Macbook
If you have access to another Thunderbolt Display, connect your Macbook to it and see if it also makes noise.
For me, I tried it on a brand new Thunderbolt Display as well as one that was about a year old. The static hissing noise was present on both. When I connected the Macbook Air to both there was no noise. This leads me to believe that there is not a problem with the actual Thunderbolt display but rather with something in the Macbook Pro.
Many people have reported sending a Thunderbolt display off for repair, getting it back with a new cable and the sound still persisting. One or two people have mentioned that the logic board in the thunderbolt display was replaced and the issue stopped. I’m not convinced that is the issue, though – at least for me.
Run Apple Hardware Test aka Apple Diagnostics
Take your hardware into the Genius Bar ( fyi – they are not Geniuses ) but they do have the next level of hardware testing called “Apple Service Diagnostic”
Apple Service Diagnostic, which may be also known by some other similar names, I think retails for around $2k and can be purchased from the online Apple Store, and it looks like there are some kind of sketchy torrents out there with it too – I saw
Apple Service Diagnostic Disks 25 GB Originalbut I’m not planning to try and download it or use it.
“Brute Force” Method
- This problem is so frustrating to me that I have debated removing the glass from the front of the Thunderbolt display, drilling a small hole in the side of the aluminum enclosure, and wiring in a toggle switch to turn the speakers on and off. To me this still sounds like a pretty viable option, although it would most likely void your warranty. So, probably not a good option… but iFixIt makes it look pretty easy to get inside.
Software / Driver Method
I’m going to claim fame to this method and I hope it will provide a basis for others to further research the issue. If you reference this issue do me a favor and reference my blog post, please. Also, if you find a fix or make any further developments with it please leave me a comment. Also feel free to contact me if you have any links you want me to add to this page that may be helpful – I had to disable links in comments ( due to spam ) but feel free to use that contact form.
This is describing a sort of ‘fix’ that I’ve found which is related to one type of the Mac / Thunderbolt Display issue – this type of problem is if you have a soft hissing / white sound / background noise coming out of the Thunderbolt Display speakers only when the Macbook or Mac is connected to it. I think this is a different issue than if you hear static / crackling / popping sounds and/or if you have a whirring ( fan ) sound or if you have a humming or buzzing sound that gets louder or quieter over time or if you are playing music or other sounds coming from your speakers. If you have one of those issues I’m guessing there is either a hardware problem with your Thunderbolt display or the cable, or you have a ground fault loop issue. If it is a fan sound I’m guessing it is either a Firmware issue or something is wrong with the fan.
So, for the “soft hissing” speaker sound issue – here is what I noticed: When everything is “off” and you turn on the monitor and Macbook pro there is no hissing noise. But after 10-20 seconds after the computer is booting up, just before it gets to the “login screen” there is a soft click and the hissing noise starts. This is reproduceable and often will work by rebooting the Mac – after it has completely “shut down” before rebooting (on it’s own) the noise will stop and then will restart right before the logon screen. If it doesn’t then you have a different issue. If it does, read on.
What this means is that there is a driver issue – the noise starts when the driver – aka a
kext or “KernelEXTension” on Apple systems. The display is not making any sound until the Macbook starts “talking” to it and saying “ok let’s get connected so I can tell you what to do”
These are the files I found to be related to Audio, and more importantly, “USB audio” since the Display Audio is a sort of USB device as far as I can tell ( Macbook to Thunderbolt Display via Thunderbolt Bridge, USB BUS inside of Thunderbolt Display, with Microphone, Speakers, Camera, etc connected via USB)
kext files are found here on OS X Mavericks (and possibly others):
The relavant kexts are:
/System/Library/Extensions/IOAudioFamily.kext /System/Library/Extensions/AppleFWAudio.kext /System/Library/Extensions/AudioAUUC.kext /System/Library/Extensions/AppleUSBAudio.kext
Fyi – these are actually
folders and not files, in the same way as all the applications are actually folders – but anyhow, what I found was that if I took one of these out of this location, the system would not be able to find it and load it, and when the computer started up there would be no hissing / white noise sound coming from the display speakers. Unfortunately, there will be no sound at all ( from any device ) and no microphone either. But read on.
Disclaimer: I provide all advice with no guarantee or warranty etc. I hope you have some Terminal or linux experience before trying these commands, if not either read up on them or get a geeky friend to help, or be ready to get some help / reload / restore / etc if you do something wrong.
You’ll need to open
Terminal.app and then use
sudo in front of your commands in order to run them as
root because these are system files owned by, well,
root. That means after you paste in the first one of these commands (in a single Terminal session) you’ll need to enter your user’s password.
Since the original posting I’ve found an easier method to “test” if the problem is the software driver without having to move any files around as specified in the “older method” posted below. You need to run one command in Terminal and will be required to enter your user’s password ( and be an administrative user which you probably already are, even if you don’t know it ).
This command is fairly long so make sure you copy all of it before pasting it into Terminal – you may need to scroll right to get all of it or copy multiple lines and then delete the part you don’t need in something like
TextEdit.app ( avoid Microsoft Word or any other text tool with fancy formatting options )
sudo kextunload /System/Library/Extensions/AppleHDA.kext /System/Library/Extensions/AppleUSBAudio.kext /System/Library/Extensions/AudioAUUC.kext /System/Library/Extensions/IOAudioFamily.kext
After entering this command and typing your password it will possibly give you errors such as:
Can't open CFBundle for /System/Library/Extensions/IOAudioFamily.kext. Can't create /System/Library/Extensions/IOAudioFamily.kext. (kernel) Kext com.apple.driver.AppleUSBAudio not found for unload request. Failed to unload com.apple.driver.AppleUSBAudio - (libkern/kext) not found. (kernel) Kext com.apple.driver.AudioAUUC not found for unload request. Failed to unload com.apple.driver.AudioAUUC - (libkern/kext) not found.
That is OK – the key is to watch your speaker icon in the menu bar which should become gray. Visiting the
Sound option in system preferences will probably show no audio devices. This is good and it means the command worked.
Don’t worry, because all that is needed to restore these is a simple reboot.
However, if your noise issue was related to the software driver, the noise from the monitor should stop. It will not stop immediately, but if you wait perhaps 1-2 minutes after the speaker icon becomes greyed out it will stop if this was your issue. This step is more for troubleshooting than for fixing – so that is about it for this method.
I wish it were possible to re-load the kexts but exclude the USB audio one with a command like:
sudo kextload /System/Library/Extensions/IOAudioFamily.kext /System/Library/Extensions/AppleHDA.kext /System/Library/Extensions/AudioAUUC.kext
But this DOES NOT WORK – at least for me, and yields errors such as:
Can't open CFBundle for /System/Library/Extensions/IOAudioFamily.kext. Can't create /System/Library/Extensions/IOAudioFamily.kext. (kernel) Kext com.apple.driver.AppleHDA not found for unload request. Failed to unload com.apple.driver.AppleHDA - (libkern/kext) not found. (kernel) Kext com.apple.driver.AppleUSBAudio not found for unload request. Failed to unload com.apple.driver.AppleUSBAudio - (libkern/kext) not found. (kernel) Kext com.apple.driver.AudioAUUC not found for unload request. Failed to unload com.apple.driver.AudioAUUC - (libkern/kext) not found.
Make sure to read the updated method above before trying these steps. The original steps were to try moving the
IOAudioFamily.kext file out of the directory it is in – so:
// create a new folder in the top level of your hard drive sudo mkdir /AudioKext/ // move the IOAudioFamily.kext file to that folder sudo mv /System/Library/Extensions/IOAudioFamily.kext /AudioKext/IOAudioFamily.kext
Now try rebooting your computer. There should be no sound at all – including no hissing or static sound / white noise coming from the Thunderbolt Display.
If the sound issue persists, just put the file back where it belongs and then reboot your system. Good luck I have no further advice for you. To put the file back run this in Terminal:
sudo mv /AudioKext/IOAudioFamily.kext /System/Library/Extensions/IOAudioFamily.kext
If the sound went away, then Hooray! You have the same issue as me. We don’t have a fix yet but at least we know it’s a software issue related to the “sound driver”
At this point your speaker icon in the menu bar should be grayed out / not selectable. It’s because you don’t have any audio devices.
Here is more interesting behavior that I noticed – you can now “load” the sound driver manually and the sound will work and there will be no hissing / static sound coming from the speakers. Here’s how ( with the use of Terminal ):
// create a "symlink" or soft link from the kext's current location // to where it used to be - this is like an alias sudo ln -s /AudioKext/IOAudioFamily.kext /System/Library/Extensions/IOAudioFamily.kext
Now that base file is back, you can tell the system to load it and the dependent files:
sudo kextload /System/Library/Extensions/IOAudioFamily.kext sudo kextload /System/Library/Extensions/AppleFWAudio.kext sudo kextload /System/Library/Extensions/AudioAUUC.kext
AppleUSBAudio.kext should get loaded automatically – at least it does for me.
So wait a few seconds and you should see the speaker icon light up and look like it does normally. At this point there should still be no hissing noise from your Thunderbolt display.
See below for how to “undo” these steps.
My plan was to use this method to “disable” the audio from the thunderbolt display – (at least until Apple releases a fix – which there seems to be no progress in this direction). I was planning on just setting all the output devices to the internal speakers, which would be good enough – as long as I could make that terribly annoying static sound disappear.
This (hackish) method has a few flaws (or limitations) in it, however.
First, if you open the sound preference pane, things should probably be normal, but if you do anything to make any sound come out of the Thunderbolt Display speakers, then the static sound will come back. That could be a simple “sound effect” / alert sound like the ‘blip’ or ‘whistle’ or whatever your alert sound is when you press a key when there is no input box focused.
The idea was that if you set both the Sound Effects and the Output Device as the Macbook and then used this method to postpone loading the audio driver until after the computer was booted it would be a workaround that would silence the dreaded white-noise and still provide a source of audio.
The other thing that I noticed which was odd is that if you select the
Input panel of the sound preference pane the sound also seems to start again immediately. I think this has something to do with it checking the Microphone for feedback in the Thunderbolt Display – possibly something related to the “noise reduction” features. I think that could be worth investigating (or getting the Apple Engineers to investigate).
Finally, a ‘good’ thing that I noticed using this method is that even if you make some sort of sound, sound effect, or if you select the “input” pane and the hissing sound starts again, you can ‘stop’ making sound and after about 30 seconds – 90 seconds the noise will automatically stop. I think this is connected with a Kernel / kext timer because I watched the seconds on the system clock and it never stops at the exact same place ( like :00 ) but it also does not seem to stop after exactly, say, 45 seconds, either.
Replacing with an Older Driver Version
If you look inside the
IOAudioFamily.kext directory you will see a structure like:
That file has something like this in it:
<key>BuildVersion</key> <string>110</string> <key>CFBundleShortVersionString</key> <string>2.9.3</string> <key>CFBundleVersion</key> <string>2.9.3f17</string> <key>ProjectName</key> <string>AppleUSBAudio</string> <key>SourceVersion</key> <string>293004017000000</string>
I tried replacing the whole kext with the version from Mountain Lion and I did not have any luck with it. I did not try replacing the other kext files that were mentioned but that is one route of investigation. It may also be worth looking at the versions included with Mountain Lion and seeing if they are even any different or not.
There are some forums where I’ve seen people mentioning replacing these files from older versions of OS X (maybe even back to Tiger?) to solve other issues – but I think it would need to be a more recent version because I think Snow Leopard, Lion, Mountain Lion, and Mavericks are all 64bit systems (SL having the option to run in 32bit mode)
The other caveat of this method is that there does not seem to be a way to “unload” the kexts without restarting the computer – seems like they get built into a dependency thing and can’t be removed using
kextunload (counterpart to previously mentioned
kextload ) with the error:
(kernel) Can't remove kext com.apple.iokit.IOAudioFamily; services failed to terminate - 0xdc008018. Failed to unload com.apple.iokit.IOAudioFamily - (libkern/kext) kext is in use or retained (cannot unload).
If there was a workaround for this I think it might be possible to somehow just unload the problematic kext after boot instead of having to move the kext and reboot the system.
The other thing to note about kext’s is that during boot Apple builds a “cache” of these and that is what gets used on boot. So say you’ve moved the
IOAudioFamily.kext as previously instructed, and then you create the symbolic link (alias) to it so the system can see it. Well, if you reboot, the system still sees the link and creates a cache of it – so you’re sound problem is back. I think the cache might even be built when OS X is running because I tried to set up a shutdown hook that would delete the symlink on logout, but my Mac would reboot, the symlink would be gone, but the sound issue would be back – meaning the system had created a cache of the kext file and was using that while booting up – even though the kext was not available.
OS X checks the date modified time on the extensions folder to decide if it has changed and if it should use a cached copy on boot to load the (sound) drivers. So I have set up a
cron task for root to do:
The linux “touch” command just updates a file or folder’s “last modified” date – so to set up the scheduled task I did:
// switch to root user sudo su - root // set the editor to vim ( might be unnecessary ) export VISUAL=vim // crontab -e edit the crontab // now you are using the VIM editor // press GG to move to the last line // press o (lowercase letter o) to insert a line // copy this from your browser and paste it in: */30 * * * * touch /System/Library/Extensions/ // now press "escape" to exit "insert" mode // type in :wq to write and quit
If you have any problems you can close the Terminal window and it will kill the vim editor and not save your changes – it is a weird editor for beginners but it is built in to OS X and that the one I know how to use. ( Google search for “how to edit crontab on Mac” ) if you want some other options on how to deal with this step.
What this does is runs the
touch command every 30 minutes on the extensions folder, effectively preventing it from caching the extensions. It may slow your computer’s startup down by a few seconds but it shouldn’t be too noticeable.
The final thing to do after manually loading the sound ( once the computer has started ) is to undo the symlink command so that when the computer reboots the sound is not reloaded automatically. That can be done with this command:
sudo rm /System/Library/Extensions/IOAudioFamily.kext
Because this is not a folder you should NOT need to use the
-r flag to remove it recursively. Also, you should not end that command with a “slash” as will happen if you are using tab autocomplete because you will also get an error.
Good luck in troubleshooting this issue and please leave a comment if you make any progress.
Brute Force Method ( again )
So after trying all these things with little luck, or requiring so many complicated steps to get a sort of hacky solution, you may now realize why the Brute Force method ( mentioned above ) was starting to sound pretty good.
USB Audio Method
Oh, one more thing I’ve been attempting to do is to get an external USB audio device working – namely something with a “C-Media Chipset” like Syba SD-CM-UAUD USB Stereo Audio Adapter which is around $10. I don’t have this solution quite figured out yet but the basic idea is that I can disable the audio from loading by moving
IOAudioFamily.kext as mentioned above and then somehow just load a driver for this USB sound device – however I believe the default driver for this device is built into the
AppleUSBAudio.kext extension, which requires – guess what – yes, the
How to Undo Moving the Extension
To “undo the previous steps regarding moving the extension and adding the symbolic link. Use these commands. Read carefully.
If you have added the symlink you can remove it by using:
sudo rm /System/Library/Extensions/IOAudioFamily.kext
Notice that I am not recursively removing it. So, if you get the error,
rm: IOAudioFamily.kext: is a directory then the extension is actually there and you DO NOT need to perform these “undo” steps. If, however, it was the symlink that you created earlier that was removed, the Terminal will should show nothing new, and you should be able to type the next command.
The next command is to move the extension back in place:
sudo mv /AudioKext/IOAudioFamily.kext /System/Library/Extensions/
If successful it should not report anything at all.
If you have trouble with these commands get a techy friend to help you, one who is good with Linux or Mac should understand what these commands are doing ( moving files around ) and be familiar and comfortable with their syntax. They can also help you restore the files from a time machine backup if you have accidentally deleted them by incorrectly using the commands here.
Update for Mavericks 10.9.2
With Mavericks 10.9.1 I was able to run this command which would unload the audio drivers, and then reboot to get Audio back without the hissing sound:
sudo kextunload /System/Library/Extensions/AppleHDA.kext \ /System/Library/Extensions/AppleUSBAudio.kext \ /System/Library/Extensions/AudioAUUC.kext \ /System/Library/Extensions/IOAudioFamily.kext
However, in Mavericks 10.9.2 this seems to have stopped working.
A workaround is to only use the internal speakers on your Macbook. After a little testing I found that I can move this kext to another location:
And then run:
sudo touch /Library/Extensions/
And then reboot and when I log back in there is a hissing sound but I can open Terminal and run:
sudo kextunload /System/Library/Extensions/AppleHDA.kext
And wait 30 seconds until the hissing stops, and then run:
sudo kextload /System/Library/Extensions/AppleHDA.kext
And the hissing will be gone and the internal speakers and mic on the Mac will be working.