Tiger Lake & Comet Lake microphone driver for macOS
Internal digital microphones (DMIC) of Intel Tiger Lake and Comet Lake / Cannon Lake laptops (including ThinkPad X1 Carbon Gen 7) via the Intel Smart Sound DSP (SOF)
Note
This fork is adapted for Comet Lake (CML) ThinkPad X1 Carbon Gen 7 (X1C7) from labrouss/TGLDmic. It introduces cAVS 1.8 platform support, dynamic core power gating, dual embedded Intel production SOF v2.2 firmware (sof-cml.ri & sof-tgl.ri), dynamic input stream allocation, and 4-channel microphone routing modes.
Unofficial community project. Not affiliated with or endorsed by Intel, Apple or any laptop vendor.
On modern Intel laptops (Tiger Lake, Comet Lake, Whiskey Lake, etc.) the built-in digital microphones are not wired to the HDA codec but to the Smart Sound DSP (cAVS), so AppleALC cannot make them work and hackintoshes end up without an internal mic. TGLDmic boots Intel's signed SOF firmware on that DSP and exposes the mics to macOS as a normal input device, Internal Microphone (TGLDmic). It runs next to AppleHDA/AppleALC, which keep speakers and headset.
- Standard Core Audio input device: shows up in System Settings and any recording app (tested: Voice Memos, QuickTime)
- Stereo 48 kHz, input gain 0–36 dB via the macOS input volume slider
- DSP is powered only while something records (~120 ms start-up)
- Repeated recording sessions; coexists with AppleHDA/AppleALC
- Installer package for the Core Audio plug-in that checks the kext version first
- Dual architecture support: Intel cAVS 2.5 (Tiger Lake) & cAVS 1.8 (Comet Lake / Cannon Lake / Coffee Lake)
| Supported (Comet Lake / CFL) | Intel Smart Sound DSP 8086:02C8: Comet Lake LP (10th-gen Core, e.g. Lenovo ThinkPad X1 Carbon Gen 7 i7-10710U / i5-10210U)Intel Smart Sound DSP 8086:9DC8: Cannon Lake / Whiskey Lake LP (e.g. ThinkPad X1 Carbon Gen 7 i7-8565U)Intel Smart Sound DSP 8086:06C8, 8086:A348: Comet Lake-H, Coffee Lake-H |
| Supported (Tiger Lake) | Intel Smart Sound DSP 8086:A0C8: Tiger Lake LP (11th-gen Core, UP3/UP4)Intel Smart Sound DSP 8086:43C8: Tiger Lake H |
| Tested hardware | Lenovo ThinkPad X1 Carbon Gen 7 (Comet Lake i7-10710U, 4 PDM mics, ALC285) HP EliteBook 840 G8 (Tiger Lake i5-1135G7, 4 PDM mics, ALC285) |
| macOS | Ventura, Sonoma, Sequoia, Tahoe tested / supported |
| Audio driver | Works next to AppleALC/AppleHDA or HDAUniversal (speakers and headset stay with them) |
Device-id spoof: OpenCore configs usually spoof the audio controller as
34C8or9DC8for AppleALC. TGLDmic matches those spoof IDs too, detects the underlying hardware platform family, and boots the matching Intel-signed SOF firmware (sof-cml.rifor Comet Lake orsof-tgl.rifor Tiger Lake).
Download both files from Releases:
| File | What |
|---|---|
TGLDmic-<version>-kext.zip |
TGLDmic.kext for OpenCore + test tools |
TGLDmic-<version>.pkg |
Installer for the Core Audio plug-in |
- Add
TGLDmic.kexttoEFI/OC/Kextsand toKernel > Addinconfig.plist, after AppleALC. - Add
-tgldmictoboot-argsand reboot. - Run
TGLDmic-<version>.pkg. It checks that the matching kext is loaded before installing. - Pick Internal Microphone (TGLDmic) under System Settings → Sound → Input.
Full steps, troubleshooting and removal: docs/INSTALL.md.
Apps ─▶ Core Audio ─▶ TGLDmic.driver (HAL plug-in) ─▶ TGLDmic.kext ─▶ Smart Sound DSP (SOF) ─▶ PDM mics
ring buffer + timestamps boots firmware, capture pipeline
sets up DMA DMIC0 → PCM
The kext loads the Intel-signed SOF firmware into the DSP, replays the IPC messages Linux uses to build the DMIC capture pipeline, and streams the audio into a ring buffer by DMA. The HAL plug-in maps that ring and presents it to Core Audio. Details: docs/ARCHITECTURE.md.
The pipeline setup is recorded from the reference machine. If the mic stays silent on your laptop:
- Boot an Ubuntu live USB and run
sudo bash linux/capture-sof-dmic.sh. It records no audio into the tarball. - Open an issue with the tarball and
ioreg -l -w0 -c TGLDmicfrom macOS.
Debug boot args and test procedures: docs/TESTING.md.
GitHub Actions builds both files on every push, and attaches them to a Release for v* tags.
Locally on macOS with Xcode command-line tools and MacKernelSDK:
make -C kext SDK=/path/to/MacKernelSDK
make -C hal
tools/set-version.sh X.Y.Z sets the version in every place.
| Path | What |
|---|---|
kext/ |
Kernel driver TGLDmic.kext |
hal/ |
Core Audio plug-in TGLDmic.driver, tgldmic-probe |
pkg/ |
Installer package sources |
firmware/ |
Intel-signed SOF firmware embedded in the kext |
linux/ |
Capture tool and IPC extractor |
captures/ |
Reference captures (logs, NHLT, topology; no audio) |
tools/ |
Build and diagnostic helpers |
docs/ |
Install, testing, architecture |
- labrouss - for the original TGLDmic
- Sound Open Firmware — the DSP firmware and the Linux driver this work is based on
- acidanthera — MacKernelSDK, OpenCore, AppleALC
TGLDmic is BSD-3-Clause (LICENSE). The embedded SOF firmware is Intel's, redistributed unmodified under firmware/LICENCE.Intel.