Stop speakers buzzing, hissing and popping in OS sierra on iMac

OS Sierra external speaker pop & hissing/buzzing/humming noise fix

Since upgrading to OS Sierra on my iMac, I had noticed a horrible buzzing noise coming from my external desktop speakers. The pop would occur after a short timeout and seemed to indicate that sierra had put the audio driver to sleep, leaving no output to the external speakers. The initial switching off of the speakers would cause the pop and then the speakers would buzz until a system sound woke up the audio driver & played a sound.

This hissing & buzzing of the external iMac speakers was driving me mad. A few years ago I remember a fix called Antipop which was a small Daemon which would play a system narration consisting of no actual sound, but enough to keep the sound driver from sleeping.

Antipop has not been updated for years & didn’t seem to work with El Capitan & Sierra, so I decided to make a quick fix using the same kind of empty narration speech and Sierra Launch Control. This fix will persist after sleeping the system & also after a reboot. On my system it has eradicated the annoying pop of the driver going to sleep & also stopped the speakers buzzing by maintaining power through the aux cable and my externally powered & amplified speakers.

  1. Open Terminal and use nano to create our plist file for launchctl using the following terminal command:

    sudo nano /Library/LaunchDaemons/com.antipop.plist

  2. Paste the following text into terminal (nano) using ctrl + v

    <?xml version=”1.0″ encoding=”UTF-8″?>
    <!DOCTYPE plist PUBLIC “-//Apple Computer//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd“>
    <plist version=”1.0”>
    <dict>
    <key>Label</key>
    <string>com.antipop</string>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
    <string>/bin/bash</string>
    <string>-c</string>
    <string>while true; do say ‘ ‘; sleep 10; done</string>
    </array>
    </dict>
    </plist>

  3. Press ctrl + o to save the file and hit enter to confirm.
  4. Exit nano with ctrl + x
  5. To start the plist and set it as a persistent service use the following command in terminal

    sudo launchctl load /Library/LaunchDaemons/com.antipop.plist

Those few simple steps will give you a pop around 10 seconds after running the last terminal command, after that you should find that your external speakers no longer pop & because the driver won’t go to sleep you wont get the buzzing & hissing on your external monitor speakers.

I hope this helps, please do let me know how you get on. This was put together using research from around the internet & by looking into how antipop used to work.

If you want to revert the changes you made, simply unload the plist from launchctl using the following command in terminal:

sudo launchctl unload /Library/LaunchDaemons/com.antipop.plist

John Large

John Large - Uber Techie!

Leave a Reply