Hi everyone,
I recently managed to get the internal speakers working properly on my Apple iMac (Retina 5K, 27-inch, 2017) running EndeavourOS/Linux.
The problem was related to the Cirrus Logic CS8409 / CS42L83 HDA audio codec used by the iMac18,3.
My hardware
Mac: iMac (Retina 5K, 27-inch, 2017)
Model identifier: iMac18,3
Board: Mac-BE088AF8C5EB4FA2
Codec: CS8409/CS42L83
Subsystem ID: 0x106b1000
OS: EndeavourOS
Kernel: 6.18.43-1-lts
Architecture: x86_64
The standard kernel driver was detecting the codec, but the Apple-specific initialization wasn’t being selected correctly.
The working driver produces:
snd_hda_intel: Primary cs8409
snd_hda_intel: Primary patch_cs8409 NOT FOUND trying APPLE
and then successfully initializes the Apple-specific CS8409 path.
After installing the patched driver, the codec is correctly bound:
/sys/bus/hdaudio/drivers/snd_hda_codec_cs8409
and:
CS8409/CS42L83
0x106b1000
Most importantly:
The internal speakers are working normally. ![]()
GitHub project
I packaged the working setup into a DKMS-based project with an iMac18,3 hardware check and installation script:
GitHub — iMac18,3 CS8409 Linux Audio Fix
Installation
On EndeavourOS / Arch:
sudo pacman -S --needed git gcc linux-headers make patch wget dkms
Then:
git clone https://github.com/jackdanyell/imac18-3-cs8409-linux-audio.git
cd imac18-3-cs8409-linux-audio
sudo ./install-imac18-3.sh
Then reboot:
sudo reboot
The installer checks the hardware before installing, so it should not blindly install the driver on an unsupported machine.
Verify after reboot
cat /sys/bus/hdaudio/devices/hdaudioC0D0/chip_name
Expected:
CS8409/CS42L83
And:
cat /sys/bus/hdaudio/devices/hdaudioC0D0/subsystem_id
Expected for iMac18,3:
0x106b1000
You can also check DKMS:
dkms status | grep snd
and:
modinfo snd_hda_codec_cs8409 | grep -E ‘filename|srcversion|vermagic’
Why I made this repository
I found that the existing snd_hda_macbookpro project already contains the important CS8409 Apple-specific work, but I wanted to document and package the configuration that I actually tested successfully on the iMac18,3.
This isn’t intended to replace the original project or claim support for every Apple machine using CS8409.
It’s specifically a reproducible setup for the iMac18,3 configuration I tested.
Current status
Working
Internal speakers
Headphone output
CS8409/CS42L83 detection
Apple subsystem ID 0x106b1000
DKMS installation
Kernel module loading
Reboot persistence
Not fully tested yet
Internal microphone
Headset microphone
Suspend/resume
Other iMac models
Other kernel versions
Other amplifier configurations
If you have an iMac18,3 with the same CS8409 audio problem, I’d be very interested to hear whether this works for you.
If it doesn’t, please post the output of:
uname -r
cat /sys/bus/hdaudio/devices/hdaudioC0D0/chip_name
cat /sys/bus/hdaudio/devices/hdaudioC0D0/subsystem_id
dkms status
and:
sudo dmesg | grep -Ei ‘cs8409|apple|cirrus|audio’
Hopefully this can help other iMac18,3 users get their speakers working without having to go through all the kernel-driver debugging I went through. ![]()
Huge credit to the original snd_hda_macbookpro / CS8409 work that made this possible.
Disclaimer
Use this fix at your own risk.
This project installs an out-of-tree kernel module and modifies the Linux audio driver stack. Kernel modules can potentially cause system instability, audio problems, or boot issues if something goes wrong.
The driver has been tested successfully on an iMac18,3 running EndeavourOS with kernel 6.18.43-1-lts, but it has not been tested on every hardware configuration or kernel version.
Before installing, make sure you have a working kernel available as a fallback.
I cannot guarantee that this fix will work on your system, and I am not responsible for any damage, data loss, system instability, or other problems resulting from its use.
If you’re unsure, please read the installation instructions carefully and keep a backup before proceeding.