Installing BlackHole 2 on Legacy Hackintosh (High Sierra to Catalina)

Step-by-step guide to install, configure, and troubleshoot BlackHole 2 virtual audio driver on Hackintosh systems running macOS 10.13 High Sierra through 10.15 Catalina. Covers kext injection, SIP handling, and common issues.

On a Hackintosh running macOS 10.13 High Sierra through 10.15 Catalina, BlackHole 2.x creates a virtual audio loopback—no physical interface needed. This guide covers installation, configuration, and troubleshooting for legacy hardware, with emphasis on kernel extension injection and system integrity protection (SIP) handling.

What BlackHole 2 Does and Why It Matters

BlackHole creates a virtual audio device that appears in /System/Library/Extensions (or /Library/Extensions after manual installation) and in Audio MIDI Setup. Applications can send audio to BlackHole’s input, and other applications can capture that same audio from its output—a loopback. Version 2.x introduced support for up to 64 channels and sample rates up to 192 kHz, but for legacy Hackintosh the 2-channel variant is safest. The driver is signed and notarized for macOS 10.13+, but on unsupported hardware or custom kernel extensions, you’ll need to disable SIP partially or use a manual kext-loading approach.

Prerequisites and Compatibility Check

Before installing BlackHole 2, verify the following:

  • macOS version: 10.13 (High Sierra), 10.14 (Mojave), or 10.15 (Catalina). Later versions are not covered by this guide.
  • Kernel extension loading: Your bootloader (Clover or OpenCore) must allow loading unsigned kexts if the driver is not injected. On most legacy Hackintosh configurations, SIP is partially disabled (csr-active-config set to 0x3E7 or 0x67).
  • Audio layout: Ensure no other audio kexts (e.g., AppleALC, VoodooHDA) conflict with the virtual device. BlackHole uses a separate kernel extension (BlackHole.kext) and should not interfere with hardware audio, but conflicts can arise if both try to claim the same audio stream.
  • Backup: Create a full bootable backup of your system drive. Incorrect kext installation or SIP modification can render the system unbootable.

Installation Methods

Method 1: Package Installer (Recommended for Most Users)

Download the official BlackHole 2.pkg from the developer’s GitHub release page. Mount the DMG, run the installer, and select the target volume. The installer copies the kext to /Library/Extensions and loads it immediately. After installation, reboot and check Audio MIDI Setup for the new device.

Risk note: On some Hackintosh systems with custom ACPI tables or non-standard USB controllers, the installer may fail to load the kext at boot. If the device does not appear after reboot, proceed to Method 2.

Method 2: Manual Kext Injection via Bootloader

For Hackintosh systems where the package installer fails, or where you prefer to keep kexts in the EFI partition:

  1. Extract the BlackHole.kext from the package (right-click the .pkg → Show Package Contents → Payload → use Pacifist or unpkg).
  2. Copy the kext to /EFI/CLOVER/kexts/Other/ (for Clover) or /EFI/OC/Kexts/ (for OpenCore).
  3. If using OpenCore, add an entry in config.plist under Kernel → Add with the kext path, bundle identifier (com.ExistentialAudio.BlackHole), and enable Enabled set to YES.
  4. Reboot. The device should appear in Audio MIDI Setup.

Note: The manual method bypasses SIP entirely because the kext is loaded from the EFI partition, but it requires correct bootloader configuration. Verify that keepsyms=1 and debug=0x100 boot arguments are present for easier troubleshooting if the kext does not load.

Configuration for Audio Routing

After installation, BlackHole appears as a separate input and output device. To use it as a loopback:

  • For recording system audio: Set System Preferences → Sound → Output to BlackHole (2ch). Then open your recording application (e.g., QuickTime Player, Audacity) and select BlackHole as the input source. Audio played by any application will be captured.
  • For monitoring while recording: Create an Aggregate Device in Audio MIDI Setup that includes both BlackHole and your physical output (e.g., built-in speakers or USB DAC). Set the aggregate device as the system output. This sends audio to both the virtual loopback and your speakers simultaneously, but introduces slight latency depending on sample rate conversion.
  • Multi-application routing: Use third-party tools like Rogue Amoeba Loopback (commercial) or Jack Audio Connection Kit (open source, complex) to route individual application streams. BlackHole alone provides only a single virtual cable.

Sample Rate and Channel Limitations

BlackHole 2 supports 44.1, 48, 88.2, 96, 176.4, and 192 kHz sample rates. On legacy Hackintosh, stick to 48 kHz or 44.1 kHz for stability—higher rates may cause kernel panics on older hardware (e.g., Sandy Bridge, Ivy Bridge). The 2-channel variant is recommended; 16-channel and 64-channel variants exist but require more system resources and can trigger audio glitches on systems with limited memory bandwidth.

If you need multi-channel support for professional audio work, consider the 16-channel variant, but test thoroughly with your specific hardware. A crash during audio playback is a common symptom of channel count mismatch between the virtual device and the application’s audio format.

Known Issues on Legacy Hackintosh

Issue Cause Workaround
BlackHole device not appearing Kext not loaded, SIP blocking, or bootloader misconfiguration Use manual injection via EFI, verify boot-args (keepsyms=1), check kernel log with dmesg | grep BlackHole
Kernel panic on boot after installation Incompatible AudioDSP driver or conflicting kext Boot with -x (safe mode), remove the kext from /Library/Extensions or EFI, then reinstall a different variant
Audio crackling or distortion Sample rate mismatch between BlackHole and application Set both to 48 kHz in Audio MIDI Setup; disable “Allow sample rate changes” in applications
No audio after sleep/wake Power management not reinitializing virtual device Create a sleep/wake script to reload the kext, or use a pmset-based fix (see existing sleep diagnostic guides on this blog)

Removing BlackHole

If you decide to uninstall, run the uninstall script provided with the package (/Library/Extensions/BlackHole.kext → right-click → Show Package Contents → Contents/Resources/Uninstall.command). Alternatively, manually delete the kext from /Library/Extensions and any EFI copies, then repair permissions with sudo kextcache -i / and reboot. Always back up before removal.

Final Verification Steps

After installation and configuration, open Audio MIDI Setup and confirm that BlackHole appears with the correct channel count and sample rate. Launch QuickTime Player, select File → New Audio Recording, choose BlackHole as the input, and play a sound from another application. If the waveform appears, the loopback is working. If not, check the Console app for kernel messages related to BlackHole and verify that the kext is loaded via kextstat | grep BlackHole. Once you’ve confirmed the device works, you’re ready to use it.