AppleALC: native macOS HD audio through dynamic AppleHDA patching
Native macOS HD audio for not officially supported codecs
At a glance
- What is it?
- AppleALC is a kernel extension that patches AppleHDA at load time so codecs macOS never shipped a layout for still produce sound, with no edits to the installed system. This review covers the mechanism, the install path, the layout-id workflow, and where the approach stops working.
- Who is it for?
- Adopt AppleALC if you run macOS on hardware whose audio codec has no Apple layout, you are already using a bootloader kext injection path, and you are willing to pick a layout id by trial.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 2 days ago.
- What is it written in?
- Mainly C++, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The problem AppleALC exists to solve
macOS ships AppleHDA.kext, which drives the audio codecs Apple used in its own machines. On a board with a different codec, or a codec wired to a controller macOS does not recognise, the hardware is present and silent. The traditional workaround was to edit AppleHDA's binary and its Info.plist on disk, which breaks with every system update and does not survive SIP.
AppleALC's stated purpose is to close that gap without touching the filesystem. The README describes it as "an open source kernel extension enabling native macOS HD audio for not officially supported codecs without any filesystem modifications". The audience is narrow and well defined: people running macOS on non-Apple hardware, or on Apple hardware whose audio path macOS does not configure, who want the stock audio stack rather than a replacement driver. A second binary, AppleALCU, is documented for systems with digital-only audio.
How the patching actually works
AppleALC is not an audio driver. It is a patcher that runs at kext load time and rewrites AppleHDA in memory, then lets the patched AppleHDA do the work. The README lists the ingredients: a kernel patcher derived from Onyx The Black Cat, the capstone disassembler for the code-patching module, and lzvn decompression from Pike R. Alpha.
The repository layout matches that description. AppleALC/ holds the kext source, Resources/ holds the codec and layout definitions that get compiled into the binary, Tools/ and ResourceConverter/ convert dumps and resource files, and alc-verb/ is a separate utility for sending verb commands to a codec. Dumps/ holds captured codec data. Because the codec database is compiled in rather than read from disk at runtime, adding support for a new codec means a new build, which is why the README asks users to submit configurations rather than drop files into a folder.
Two features matter more than the rest for day-to-day use. Automated codec detection means the kext identifies the codec itself instead of relying on a manually declared model string. Custom platform and layout injection means the user selects a layout id that maps to a platform configuration and node layout for that codec. The README also claims support for enabling unsupported audio controllers, internal and external, which covers the case where the controller itself is the problem rather than the codec.
Installing AppleALC and setting a layout id
The README does not contain installation steps. It states that "the minimal instruction is available on the wiki" and that prebuilt binaries are on the releases page. Everything below follows from those two pointers plus the repository contents; treat the wiki as the authority for your bootloader.
Start by downloading the release archive for your version. The recent releases listed are 1.9.7, 1.9.6 and 1.9.5. Inside the archive you get AppleALC.kext and, for digital-only systems, AppleALCU.kext.
AppleALC depends on Lilu, which is the patching framework that loads it. Both kexts go into the same injection directory your bootloader uses for other kexts. The repository does not ship a sample bootloader configuration, so the exact key names come from your bootloader's own documentation, not from this project.
The codec-specific part is the layout id, which tells AppleHDA which platform and node layout to use. The README documents custom platform and layout injection as a feature but does not give the boot argument syntax; that detail lives on the wiki. There is no automatic way to pick the id: it encodes which nodes are speakers, which are headphones, and which inputs are wired where, and a wrong id produces silence, swapped channels, or a working output with a dead microphone. Expect to try several ids from the list for your codec before one matches your board's wiring.
According to the README, audio should work from the OS installation onward, including Recovery HD and the macOS Installer, which is a useful property: if sound works in the installer, the injection path is correct and the remaining problem is layout selection.
Where AppleALC fails, and when it is the wrong tool
The sharpest limitation is stated in the README itself. macOS 26 dropped AppleHDA.kext in DP2, and the note says that AppleALC functioning on macOS 26 "may require additional actions if AppleHDA.kext is necessary". That is a real boundary. The entire design is dynamic patching of AppleHDA, so a system without AppleHDA is a system where the mechanism has nothing to patch. Anyone planning a macOS 26 install should read that note before assuming the kext is sufficient.
The second limitation is the layout id. It is a manual, per-board choice with no verification step. The README documents custom layout injection as a feature; it does not document how a user determines the correct id for an unfamiliar board beyond consulting the database. If your codec has no entry, the answer is to contribute one, and the README points contributors at the wiki for that process.
The third is scope. AppleALC handles HD audio through AppleHDA. It is not a general audio driver and it does not replace the audio stack. If your problem is a USB audio interface, a Bluetooth headset, or an HDMI path that depends on a GPU driver rather than the codec, AppleALC is not the component you are looking for.
AppleALC against VoodooHDA
The obvious alternative is VoodooHDA, which the related searches pair with AppleALC directly. The difference in approach is fundamental rather than cosmetic. VoodooHDA is a replacement audio driver: it provides its own driver that talks to the codec, so it works on systems where AppleHDA has no path at all, but it produces audio through a stack that is not Apple's, which historically shows up as different behaviour in applications that expect the native audio path.
AppleALC leaves Apple's driver in place and patches it. When a layout exists for your codec, you get the stock audio stack, including the parts of macOS that assume AppleHDA is present. When no layout exists, you get nothing, and that is the trade. The README frames the project around native audio and no filesystem modifications; VoodooHDA's framing is broader compatibility at the cost of not being the native driver.
A practical rule: if the codec database has your codec, AppleALC is the closer match to what macOS expects. If it does not, and you are not willing to build a configuration for it, a replacement driver is the remaining option.
Maintenance, licence and upgrade cost
The repository is not archived and the last push was on 2026-09-22, the day before this article's reference point. Releases have come at a steady cadence: 1.9.5 in July 2025, 1.9.6 in November 2025, 1.9.7 in March 2026. That pattern suggests ongoing work, but the version numbers tell you something more useful: this is a project that ships point releases tied to macOS changes and codec additions, not a fast-moving library.
Upgrade cost is dominated by macOS updates rather than by AppleALC. Because the kext patches AppleHDA in memory, an AppleHDA change in a system update can break a layout that worked before, and the fix arrives in a new AppleALC release. The README's compatibility claim spans 10.4 to 26, with the macOS 26 caveat noted above. Practically, you keep the kext in your bootloader configuration and update it when a release notes a change relevant to your codec or OS version.
The project is BSD-3-Clause. That is a permissive licence, and the repository ships LICENSE.txt at the top level. It does not impose source-disclosure obligations on users who redistribute binaries, but it does carry the usual conditions about retaining the copyright notice and disclaimer. Nothing here is legal advice; if you plan to redistribute a build, read LICENSE.txt and the licences of the bundled components, since the README credits third-party code including capstone and lzvn.
Editorial conclusion
Adopt AppleALC if you run macOS on hardware whose audio codec has no Apple layout, you are already using a bootloader kext injection path, and you are willing to pick a layout id by trial. Do not adopt it if you expect a vendor driver, if you need a guarantee that a given codec works before you buy the board, or if you are on macOS 26 and have not yet confirmed whether AppleHDA.kext is present on your system, since the README warns that additional actions may be required there. Verify three things before you commit: that your codec appears in the project's database with at least one layout id, that your bootloader injects Lilu alongside AppleALC, and that you can reach the wiki's installation page, because the README itself only points there rather than restating the steps.
Frequently asked questions
How do I install AppleALC?
The README does not give steps; it says the minimal instruction is on the project wiki and that prebuilt binaries are on the releases page. In practice you place AppleALC.kext and its Lilu dependency in the kext injection folder your bootloader uses, then set a layout id for your codec.
What is the AppleALC kext?
It is an open source kernel extension that enables native macOS HD audio for codecs macOS does not officially support, without modifying the filesystem. It works by patching AppleHDA rather than replacing it.
What is the difference between AppleALC and VoodooHDA?
AppleALC patches Apple's own AppleHDA driver in memory, so audio runs through the native macOS stack when a layout exists for your codec. VoodooHDA is a replacement driver, which is the option when no AppleALC layout covers your hardware.
How do I choose an AppleALC layout id?
The layout id selects the platform and node configuration for your codec, and it is set manually through the layout injection feature. There is no automatic selection; you try ids listed for your codec until output and input match your board's wiring.
Does AppleALC work on macOS 26?
The README notes that macOS 26 dropped AppleHDA.kext in DP2 and that AppleALC functioning there may require additional actions if AppleHDA.kext is necessary. Since the project patches AppleHDA, that note is the thing to check first.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/acidanthera-applealc)