Skip to content

Install CS8409 speaker driver on 2016-2017 MacBook Pros - #7140

Open
shawnyeager wants to merge 2 commits into
omacom:quattrofrom
shawnyeager:t1-cs8409-audio
Open

Install CS8409 speaker driver on 2016-2017 MacBook Pros#7140
shawnyeager wants to merge 2 commits into
omacom:quattrofrom
shawnyeager:t1-cs8409-audio

Conversation

@shawnyeager

Copy link
Copy Markdown
Contributor

Why

2016–2017 MacBook Pros (MacBookPro13,114,3, including the two-port 13" models with no Touch Bar) use Cirrus CS8409 HDA plus external speaker amps. In-tree snd_hda_codec_cs8409 leaves 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-dkms to omarchy-pkgs. The hook cannot succeed until that package is in the repo.

What

  • omarchy-hw-apple-cs8409 matches MacBookPro13,[123]|MacBookPro14,[123]. T2 and later are excluded.
  • install/hardware/apple/fix-cs8409-audio.sh installs linux-headers and snd-hda-macbookpro-dkms.
  • Migration 1786889011 does the same for existing installs.
  • Manual: speakers/headphones work; internal mic is still quiet/incomplete (upstream).

No udev, no modules-load. The HDA stack autoloads; DKMS puts the patched snd-hda-codec-cs8409 in updates/ so it wins after reboot.

Test plan

  • ./test/cli
  • test/shell.d/cs8409-audio-test.sh
  • MacBookPro14,3: reboot after the driver is installed → speakers play

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.
Copilot AI balanced review requested due to automatic review settings August 16, 2026 14:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-cs8409 detector and wire a CS8409 audio install hook into the hardware installer.
  • Add a migration to install snd-hda-macbookpro-dkms on 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.

Comment thread install/hardware/apple/fix-cs8409-audio.sh
Comment thread test/shell.d/cs8409-audio-test.sh
assert_hw used to rm the DMI fixture only after the assertion.
fail() exits the process, so a mismatch leaked the file.
Copilot AI review requested due to automatic review settings August 16, 2026 14:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 $calls in [[ ... ]] 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 $calls in [[ ... ]] 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")"

Comment thread migrations/1786889011.sh
Copilot AI review requested due to automatic review settings August 16, 2026 14:34

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment thread migrations/1786889011.sh
@csk-grit42

Copy link
Copy Markdown

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-

@j7j7

j7j7 commented Sep 1, 2026

Copy link
Copy Markdown

Thanks for this — I've rebased your CS8409 work onto current quattro and extended detection/docs/tests for iMac18,x / iMac19,x (verified on iMac18,3, CS8409/CS42L83 subsystem 0x106b1000).

Follow-up PR: #9516
Matching pkgs description update: omacom/omarchy-pkgs#249

Happy for maintainers to take either this branch or merge yours first and land the iMac bit as a follow-up — whatever is easier.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants