Oct 06, 2026 • 6 min read

No Sound on an iMac 2019 Running Omarchy (and How I Fixed It)

Z

Ziyan Junaideen

Developer

Omarchy iMac 2019 Audio issues - internal speaker not working and plugging an earphone doesn't work.

An iMac with wired earbuds plugged in, sound waves coming from them

A few days into a fresh Omarchy install on my old Intel iMac, I plugged a pair of wired earphones into the headphone jack. Nothing. I tried the built-in speakers. Also nothing. PipeWire listed an output device, the volume was up, nothing was muted, and the machine still made no sound.

Here’s what was going on, how I tracked it down from the terminal, and the fix.

The machine

Model iMac19,1 (iMac Retina 5K, 27-inch, 2019)
CPU Intel Core i9-9900K @ 3.60GHz
RAM 40 GB
GPU AMD Radeon Pro 570X/575X/580X family (Ellesmere / Polaris; lspci can’t tell which)
Audio controller Intel 300 Series Chipset HD Audio (00:1f.3)
Audio codec Cirrus Logic CS8409, Apple subsystem ID 0x106b1000
Firmware Apple EFI 2094.80.5.0.0
OS Omarchy 4.0.4 (Arch-based, Hyprland)
Kernel 7.2.5-3-omarchy
Sound server PipeWire 1.6.8 + WirePlumber 1.6.8

How to find these details yourself

You don’t need macOS or “About This Mac” for any of this. Everything above came from the terminal.

Apple model identifier (the iMac19,1 part). The kernel exposes the SMBIOS/DMI data under /sys, readable without root:

cat /sys/class/dmi/id/product_name    # iMac19,1
cat /sys/class/dmi/id/sys_vendor      # Apple Inc.
cat /sys/class/dmi/id/board_name      # Mac-AA95B1DDAB278B95 (Apple board ID)
cat /sys/class/dmi/id/bios_version    # 2094.80.5.0.0

Or with dmidecode (needs root):

sudo dmidecode -s system-product-name

Search the model identifier together with “everymac” to get the marketing name. iMac19,1 is the iMac (Retina 5K, 27-inch, 2019).

CPU, memory, GPU:

grep -m1 "model name" /proc/cpuinfo
free -h
lspci | grep -iE "vga|audio"

Sound card and codec. This is the part that matters for audio problems:

cat /proc/asound/cards          # which sound cards the kernel registered
aplay -l                        # playback devices; shows "CS8409 Analog"
head -5 /proc/asound/card0/codec#0

That last command printed:

Codec: Cirrus Logic CS8409
Vendor Id: 0x10138409
Subsystem Id: 0x106b1000

0x1013 is Cirrus Logic’s vendor ID. The subsystem ID starting with 0x106b is Apple’s. That combination is the clue to the whole problem.

OS, kernel, audio stack:

omarchy-version
uname -r
wpctl status

The symptoms

wpctl status looked completely normal: one “Built-in Audio Analog Stereo” sink, set as default, at 40% volume. Nothing was muted. Looking closer at the sink:

pactl list sinks | sed -n '/Ports:/,/Formats/p'
Ports:
    analog-output-speaker: Speakers (... availability unknown)
    analog-output-headphones: Headphones (... availability unknown)
Active Port: analog-output-speaker

Two things stood out:

  1. With earphones plugged in, the active port was still Speakers.
  2. Both ports said availability unknown.

The ALSA mixer explained why:

amixer -c0 contents | grep -A2 Jack
name='Headphone Phantom Jack'   values=on
name='Mic Phantom Jack'         values=on
name='Speaker Front Phantom Jack' values=on

All the jacks were Phantom. A phantom jack is ALSA’s placeholder for a connector with no working plug-detection. It always reports “on”, so PipeWire and WirePlumber can’t tell whether anything is plugged in and never switch outputs.

I switched to the headphone port by hand:

pactl set-sink-port alsa_output.pci-0000_00_1f.3.analog-stereo analog-output-headphones
speaker-test -c2 -t sine -l1

Still silent. The speakers were silent too. At that point it was clearly not a configuration problem. The driver itself wasn’t working on this hardware.

Root cause: the CS8409 driver doesn’t really support Apple machines

The kernel log showed the CS8409 driver loading and doing its generic setup:

journalctl -k -b | grep -i cs8409
snd_hda_codec_cs8409 hdaudioC0D0: autoconfig for CS8409: line_outs=2 (0x24/0x25/...) type:speaker
snd_hda_codec_cs8409 hdaudioC0D0:    hp_outs=1 (0x2c/...)

The driver found the speaker pins and the headphone pin. The problem is what sits behind those pins.

The CS8409 is a bridge chip: it handles the HD-Audio link and passes audio on to separate companion chips over I2C. On Apple machines the headphone jack runs through a separate Cirrus CS42L83 headphone codec, and the speakers run through their own amplifiers. Those chips have to be configured over I2C before they make any sound.

The mainline Linux snd-hda-codec-cs8409 driver was written for Dell laptops that use the CS8409. It includes setup code for Dell’s companion-chip wiring, not Apple’s. On an Apple subsystem ID it falls back to generic configuration. Audio is sent to the right pins, but the companion chips are never switched on, so nothing comes out. That’s also why jack detection was missing: on these Macs the plug-detect signal comes from the CS42L83, which the driver never talks to.

The fix: davidjo/snd_hda_macbookpro

David Jo (davidjo on GitHub) maintains snd_hda_macbookpro, a patched CS8409 driver with the Apple-specific setup added. Despite the name, it covers Intel iMacs as well as MacBook Pros that use this chip.

The installer downloads the matching mainline kernel source, patches the Cirrus driver, and builds it through DKMS. That means it gets rebuilt automatically every time the kernel updates, which matters on a rolling-release distro like Arch/Omarchy.

Prerequisites

You need the headers for your exact running kernel, plus dkms, gcc, make, patch and wget. Omarchy already had the headers (linux-omarchy-headers) and dkms installed. The only thing missing was wget, which the installer uses to download the kernel source:

pacman -Q linux-omarchy-headers dkms   # confirm headers match `uname -r`
sudo pacman -S --needed wget

If you’re on stock Arch, install linux-headers (or the headers matching whatever kernel you run) instead.

Install

Clone it somewhere permanent. DKMS creates a symlink to this folder at /usr/src/snd_hda_macbookpro-0.1, so don’t clone into a temp directory or delete it later.

mkdir -p ~/.local/src && cd ~/.local/src
git clone https://github.com/davidjo/snd_hda_macbookpro.git
cd snd_hda_macbookpro
sudo ./install.cirrus.driver.sh -i

The important lines of output:

Building module(s).... done.
Found pre-existing .../kernel/sound/hda/codecs/cirrus/snd-hda-codec-cs8409.ko.zst, archiving for uninstallation
Installing /usr/lib/modules/7.2.5-3-omarchy/updates/dkms/snd-hda-codec-cs8409.ko.zst
Running depmod... done.

DKMS saves the original module, and the patched one goes into updates/dkms, which takes priority over the stock module.

Then reboot. Swapping HDA codec drivers on a running system is unreliable.

After the reboot

Audio works. To confirm the new driver is the one loaded:

modinfo snd-hda-codec-cs8409 | grep filename
# /lib/modules/7.2.5-3-omarchy/updates/dkms/snd-hda-codec-cs8409.ko.zst

dkms status | grep macbook
# snd_hda_macbookpro/0.1, 7.2.5-3-omarchy, x86_64: installed (Original modules exist)

Jack detection works too. The headphone jack is no longer “Phantom”:

name='Headphone Jack'   values=on     <- earphones plugged in
name='Mic Jack'         values=off

PipeWire now knows what’s connected and switches outputs automatically:

analog-output-speaker:    Speakers   (... not available)
analog-output-headphones: Headphones (... available)
Active Port: analog-output-headphones

Undoing it

If a future kernel ships proper Apple CS8409 support, or the module misbehaves, removing it brings back the stock driver:

cd ~/.local/src/snd_hda_macbookpro
sudo ./install.cirrus.driver.sh -r
# reboot

TL;DR

  • Symptom: no sound from the speakers or the headphone jack on an Intel iMac/MacBook running Linux. ALSA shows only “Phantom” jacks.
  • Check: head -5 /proc/asound/card0/codec#0. If it says Cirrus Logic CS8409 with a subsystem ID starting 0x106b, you have this problem.
  • Cause: the mainline CS8409 driver only sets up the Dell variants. Apple’s speaker amps and CS42L83 headphone codec are never switched on.
  • Fix: install davidjo/snd_hda_macbookpro through DKMS, then reboot.

Tested with driver commit 89b22ff (2026-09-06) on kernel 7.2.5-3-omarchy.

Discussion

0

You need to be logged in to post a comment.

Log in to Comment

No comments yet. Be the first to join the conversation.