Install CS8409 speaker driver on 2016-2017 MacBook Pros - #7140
Install CS8409 speaker driver on 2016-2017 MacBook Pros#7140shawnyeager wants to merge 2 commits into
Conversation
Those machines have speakers that stay silent with the in-tree codec. Detect MacBookPro13,* / 14,* and install snd-hda-macbookpro-dkms so the Apple amp path loads after reboot.
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds CS8409 MacBook Pro audio detection and installation hooks, plus migration and documentation updates, with shell tests to validate behavior across supported/unsupported Apple models.
Changes:
- Add
omarchy-hw-apple-cs8409detector and wire a CS8409 audio install hook into the hardware installer. - Add a migration to install
snd-hda-macbookpro-dkmson matching hardware. - Update Mac support documentation and add a shell test covering detection, hook wiring, and migration behavior.
Reviewed changes
Copilot reviewed 5 out of 6 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| test/shell.d/cs8409-audio-test.sh | Adds end-to-end shell tests for CS8409 detection, install hook wiring, and migration behavior |
| migrations/1786889011.sh | Adds a migration that installs the CS8409 DKMS driver on supported MacBook Pros |
| manual/44-mac-support.md | Documents CS8409 speaker support and updates known limitations/issues |
| install/hardware/apple/fix-cs8409-audio.sh | Adds a hardware install hook to install the CS8409 driver when detected |
| install/hardware/all.sh | Wires the new CS8409 hook into the hardware install sequence |
| bin/omarchy-hw-apple-cs8409 | Adds model-based hardware detection for CS8409 MacBook Pros |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
assert_hw used to rm the DMI fixture only after the assertion. fail() exits the process, so a mismatch leaked the file.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 5 out of 6 changed files in this pull request and generated 1 comment.
Suppressed comments (3)
test/shell.d/cs8409-audio-test.sh:58
- The assertion fails when the migration does have a shebang, but the failure message says "migration has no shebang". Update the message to match the condition (e.g., "migration should not have a shebang"), or invert the check if the intent is to require a shebang.
! head -1 "$migration" | grep -q '^#!' ||
fail "migration has no shebang"
test/shell.d/cs8409-audio-test.sh:97
- Quote
$callsin[[ ... ]]tests to avoid word-splitting/globbing issues (even if current temp paths are unlikely to contain spaces). This makes the test more robust and consistent with the surrounding quoted usages.
[[ ! -s $calls ]] || fail "T2 hardware skips the CS8409 package" "$(cat "$calls")"
test/shell.d/cs8409-audio-test.sh:116
- Quote
$callsin[[ ... ]]tests to avoid word-splitting/globbing issues (even if current temp paths are unlikely to contain spaces). This makes the test more robust and consistent with the surrounding quoted usages.
[[ ! -s $calls ]] || fail "migration skips non-CS8409 hardware" "$(cat "$calls")"
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 5 out of 6 changed files in this pull request and generated 1 comment.
Suppressed comments (1)
migrations/1786889011.sh:7
- The migration prints "Install the CS8409..." unconditionally, even on non-CS8409 hardware where it immediately exits. This produces misleading migration logs. Move the echo to after the hardware gate so it only appears when the migration will actually install something.
echo "Install the CS8409 MacBook speaker driver"
# 2016–2017 MacBook Pros only. T2 and other Apple hardware is unchanged.
if ! omarchy-hw-apple-cs8409; then
exit 0
fi
|
I have fixed sound on a MBP T1 2017 14.2 maybe that can be relevant here for a general OMarchy sound on T1 fix: The HOWTO-sound.md from here: https://github.com/csk-grit42/OmarchyOnMacBookPro14.2-2017---A1706- |
|
Thanks for this — I've rebased your CS8409 work onto current Follow-up PR: #9516 Happy for maintainers to take either this branch or merge yours first and land the iMac bit as a follow-up — whatever is easier. |
Why
2016–2017 MacBook Pros (
MacBookPro13,1–14,3, including the two-port 13" models with no Touch Bar) use Cirrus CS8409 HDA plus external speaker amps. In-treesnd_hda_codec_cs8409leaves those amps unprogrammed. The sink shows up unmuted; speakers stay silent.The manual currently lists sound as not functioning. This replaces that with an installer hook. Verified end-to-end on a MacBookPro14,3: patched module loads after reboot, dmesg takes the Apple path, speakers play.
Depends on the package: omacom/omarchy-pkgs#155. That adds
snd-hda-macbookpro-dkmsto omarchy-pkgs. The hook cannot succeed until that package is in the repo.What
omarchy-hw-apple-cs8409matchesMacBookPro13,[123]|MacBookPro14,[123]. T2 and later are excluded.install/hardware/apple/fix-cs8409-audio.shinstallslinux-headersandsnd-hda-macbookpro-dkms.1786889011does the same for existing installs.No udev, no modules-load. The HDA stack autoloads; DKMS puts the patched
snd-hda-codec-cs8409inupdates/so it wins after reboot.Test plan
./test/clitest/shell.d/cs8409-audio-test.sh