Imac No sound-I managed it on Elementary Os but not on Zorin - Any Help?

I just wanted to see whether you can help. I have been trying to make the sound work. I tried many linux distros and have been going through forums and suggestions. I have only managed to get the sound working on Elementary OS. I used the following command

sudo apt install linux-headers-generic
sudo apt install build-essential git gcc-13
git clone ¨https://github.com/egorenar/snd-hda-codec-cs8409¨
cd snd-hda-codec-cs8409
make
sudo make install

.. and I couldn´t believe it . it worked. Unfortunately this does not work with Zorin for some reason and I was wondering whether you can help. Maybe the command I used on Elementary OS gives a clue what can be done here at Zorin.
Thx

Welcome to the Forum!

Can You specifiy that? Did You get an Error Message or similar?

The Kernel Headers are already installed.

git doesn't come preinstalled. So, this ahve to be installed but the other's are preinstalled.

Do You use Zorin 17 or 18?

1 Like

I use Zorin 18, and when I open the sound settings it says Speakers -build-in Audio but there is no sound.

this is what it looks like.
I am not so sure whether I just the command ¨make" is correct or whether I need to add anything after? Maybe you can see this from this? Thank you for your time.

ronin@iMac:~$ sudo apt install linux-headers-generic
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
linux-headers-generic is already the newest version (6.8.0-90.91).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
ronin@iMac:~$ sudo apt install build-essential git gcc-13
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
build-essential is already the newest version (12.10ubuntu1).
git is already the newest version (1:2.43.0-1ubuntu7.3).
gcc-13 is already the newest version (13.3.0-6ubuntu2~24.04).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
ronin@iMac:~$ git clone ¨https://github.com/egorenar/snd-hda-codec-cs8409¨ already exists and is not an empty directory.

ronin@iMac:~$ cd snd-hda-codec-cs8409
ronin@iMac:~/snd-hda-codec-cs8409$ make
make -C /lib/modules/6.14.0-37-generic/build CFLAGS_MODULE="-DAPPLE_PINSENSE_FIXUP -DAPPLE_CODECS -DCONFIG_SND_HDA_RECONFIG=1 -Wno-unused-variable -Wno-unused-function" M=/home/ronin/snd-hda-codec-cs8409 modules
make[1]: Entering directory '/usr/src/linux-headers-6.14.0-37-generic'
make[2]: Entering directory '/home/ronin/snd-hda-codec-cs8409'
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
You are using: gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
make[2]: Leaving directory '/home/ronin/snd-hda-codec-cs8409'
make[1]: Leaving directory '/usr/src/linux-headers-6.14.0-37-generic'

ronin@iMac:~/snd-hda-codec-cs8409$ sudo make install
mkdir -p /lib/modules/6.14.0-37-generic/updates/
cp snd-hda-codec-cs8409.ko /lib/modules/6.14.0-37-generic/updates/
depmod -a
ronin@iMac:~/snd-hda-codec-cs8409$

Hmm ... I think the Issues lays here:

There is x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0 and there is gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0

This seems to be the same but it looks like the different Package Name is the Problem - even when it is the same Package. The interesting Thing is: The Package x86_64-linux-gnu-gcc-13 isn't available - which is clear because gcc-13 is there.

What do I have to do so it works, where is my mistake?

When this should be a Package Name Issue, You can probably do nothing I guess because it isn't up to You.

Shame I thought there is away. Thank you anyway. Maybe I just use a bluetooth speaker.

You can wait for other Input here. Maybe other Users have Ideas how to handle that.

1 Like

Hello ronin09,
I have a similar driver for my MacbookPro but not exactly this one.
From your log, it looks like the driver was installed correctly.
One thing that I had to do was to install "Volume Control" (pavucontrol): https://flathub.org/en/apps/org.pulseaudio.pavucontrol
Then start the "Volume Control" application.
In "Output Device", make sure it is showing and is set to "speakers". If it shows dummy output then this mean that something is wrong with the drivers.
Also, go to Configuration, in "Built-in Audio", select in the drop-down: "analogue stereo duplex" or "Analogue Stereo Output".
For my laptop, I need to have this software running all the time, otherwise, I get some audio crackling/popping and things like that.
I hope this helps.

1 Like

You should be able to install pavucontol without using flatpak.
e.g.

1 Like

pavucontrol is installed and set as described. I can see internal speakers and when I play YouTube i can see that the playback bar in the controller is going up and down so it recognizes that something is playing but no sound is coming out of the speakers. No sound still.

1 Like

Ah sorry that didn't work.
Looking a bit more in details, it looks like we both have the same chip, the Cirrus 8409 HDA chip.
Maybe you could try the drivers from davidjo: GitHub - davidjo/snd_hda_macbookpro: Kernel audio driver for Macs with 8409 HDA chip + MAX98706/SSM3515 amps
These are still regularly updated and maintained, they also contains the changes made by egorenar regarding iMac27 5k. These works for my laptop and it seems to work for some imacs too.

1 Like

Hi , thank you
I tried this by started with entering the commend for ubuntu.
apt install gcc linux-headers-generic make patch wget

After that I go ahead and tried to build the driver as I think this is the next step. There is nowhere a description on what is the first step the second etc... Itś a bit difficult to understand, sorry.

git clone with the given link ..... for some reason I was not allowed to past it in
cd snd_hda_macbookpro/
./install.cirrus.driver.sh

but as soon as I run:
sudo ./install.cirrus.driver.sh
I get the following error message.

Ubuntu linux kernel source not found in /usr/src: /usr/src/linux-source-6.14.0.tar.bz2
assuming the linux kernel source package is not installed
please install the linux kernel source package:
sudo apt install linux-source-6.14.0
if the above doesn't work because some distros don't use LTS Kernel, download the linux-source-6.14.0 .deb file
using Archive Manager, Open data.tar.zst, extract /usr/src/linux-source-6.14.0/linux-source-6.14.0.tar.bz2
NOTE - This does not work for HWE kernels

that is were I do not know what this means or how I go on from here!?!

Thank you for trying to help, this is much appreciated.

Yes, this is because Ubuntu that Zorin is based on, uses a modified Kernel. So you need to download and copy this kernel in your system so that the driver can use it.
You can download the Ubuntu 6.14 Kernel here: http://ports.ubuntu.com/pool/main/l/linux/linux-source-6.14.0_6.14.0-33.33_all.deb
Open the deb file with the Archive Manager from Zorin (right click on it and open with)
Then navigate to the data.tar.zst file and open it from within the Archive Manager.
Then navigate to the ./usr/src/linux-source-6.14.0/ directory
Extract the file called "linux-source-6.14.0.tar.bz2" from Archive Manager to your computer
Finally copy this file to /usr/src using sudo, e.g:

sudo cp linux-source-6.14.0.tar.bz2 /usr/src/

Then, try re-running the script

thank you, I will try this tomorrow and let you know. thx

1 Like

i tried but it didn´t work. maybe I have to install a fresh Zorin version and try again. I guess I have to give up.
Here is the report.
$ sudo ./install.cirrus.driver.sh

[sudo] password for ronin:

linux-source-6.14.0/sound/pci/hda/
linux-source-6.14.0/sound/pci/hda/cirrus_scodec.h
linux-source-6.14.0/sound/pci/hda/patch_via.c
linux-source-6.14.0/sound/pci/hda/patch_ca0110.c
linux-source-6.14.0/sound/pci/hda/Kconfig
linux-source-6.14.0/sound/pci/hda/tas2781_hda_i2c.c
linux-source-6.14.0/sound/pci/hda/patch_cs8409.c
linux-source-6.14.0/sound/pci/hda/patch_cs8409.h
linux-source-6.14.0/sound/pci/hda/hda_tegra.c
linux-source-6.14.0/sound/pci/hda/patch_sigmatel.c
linux-source-6.14.0/sound/pci/hda/hda_component.c
linux-source-6.14.0/sound/pci/hda/thinkpad_helper.c
linux-source-6.14.0/sound/pci/hda/hp_x360_helper.c
linux-source-6.14.0/sound/pci/hda/patch_cirrus.c
linux-source-6.14.0/sound/pci/hda/cs35l41_hda_property.h
linux-source-6.14.0/sound/pci/hda/patch_hdmi.c
linux-source-6.14.0/sound/pci/hda/ideapad_hotkey_led_helper.c
linux-source-6.14.0/sound/pci/hda/hda_controller.h
linux-source-6.14.0/sound/pci/hda/hda_bind.c
linux-source-6.14.0/sound/pci/hda/hda_cs_dsp_ctl.c
linux-source-6.14.0/sound/pci/hda/cs35l41_hda_property.c
linux-source-6.14.0/sound/pci/hda/hda_controller_trace.h
linux-source-6.14.0/sound/pci/hda/hda_cs_dsp_ctl.h
linux-source-6.14.0/sound/pci/hda/patch_senarytech.c
linux-source-6.14.0/sound/pci/hda/hda_jack.h
linux-source-6.14.0/sound/pci/hda/cs35l56_hda.c
linux-source-6.14.0/sound/pci/hda/cs35l41_hda.h
linux-source-6.14.0/sound/pci/hda/hda_jack.c
linux-source-6.14.0/sound/pci/hda/hda_intel.c
linux-source-6.14.0/sound/pci/hda/hda_generic.h
linux-source-6.14.0/sound/pci/hda/hda_beep.c
linux-source-6.14.0/sound/pci/hda/tas2781_spi_fwlib.c
linux-source-6.14.0/sound/pci/hda/hda_beep.h
linux-source-6.14.0/sound/pci/hda/patch_cmedia.c
linux-source-6.14.0/sound/pci/hda/cirrus_scodec_test.c
linux-source-6.14.0/sound/pci/hda/hda_local.h
linux-source-6.14.0/sound/pci/hda/hda_codec.c
linux-source-6.14.0/sound/pci/hda/hda_sysfs.c
linux-source-6.14.0/sound/pci/hda/patch_cs8409-tables.c
linux-source-6.14.0/sound/pci/hda/ca0132_regs.h
linux-source-6.14.0/sound/pci/hda/hda_auto_parser.h
linux-source-6.14.0/sound/pci/hda/patch_conexant.c
linux-source-6.14.0/sound/pci/hda/hda_component.h
linux-source-6.14.0/sound/pci/hda/cs35l56_hda_spi.c
linux-source-6.14.0/sound/pci/hda/cs35l41_hda_spi.c
linux-source-6.14.0/sound/pci/hda/patch_si3054.c
linux-source-6.14.0/sound/pci/hda/Makefile
linux-source-6.14.0/sound/pci/hda/cs35l56_hda_i2c.c
linux-source-6.14.0/sound/pci/hda/hda_auto_parser.c
linux-source-6.14.0/sound/pci/hda/hda_intel.h
linux-source-6.14.0/sound/pci/hda/hda_intel_trace.h
linux-source-6.14.0/sound/pci/hda/patch_ca0132.c
linux-source-6.14.0/sound/pci/hda/hda_generic.c
linux-source-6.14.0/sound/pci/hda/tas2781_hda_spi.c
linux-source-6.14.0/sound/pci/hda/hda_eld.c
linux-source-6.14.0/sound/pci/hda/tas2781-spi.h
linux-source-6.14.0/sound/pci/hda/cs35l56_hda.h
linux-source-6.14.0/sound/pci/hda/cirrus_scodec.c
linux-source-6.14.0/sound/pci/hda/hda_hwdep.c
linux-source-6.14.0/sound/pci/hda/hda_proc.c
linux-source-6.14.0/sound/pci/hda/cs35l41_hda_i2c.c
linux-source-6.14.0/sound/pci/hda/hda_controller.c
linux-source-6.14.0/sound/pci/hda/ideapad_s740_helper.c
linux-source-6.14.0/sound/pci/hda/cs35l41_hda.c
linux-source-6.14.0/sound/pci/hda/patch_realtek.c
linux-source-6.14.0/sound/pci/hda/patch_analog.c
Kernel version later than implemented version - there may be build problems
patching file patch_cs8409.c
Hunk #1 succeeded at 1444 (offset 174 lines).
Hunk #2 succeeded at 1453 (offset 174 lines).
Hunk #3 succeeded at 1482 (offset 174 lines).
patching file patch_cs8409.h
Hunk #2 succeeded at 305 (offset 3 lines).
Hunk #3 succeeded at 332 (offset 3 lines).
Hunk #4 succeeded at 368 (offset 3 lines).
patching file patch_cirrus_apple.h
DKMS FALSE DONE
make -C /lib/modules/6.14.0-37-generic/build CFLAGS_MODULE="-DAPPLE_PINSENSE_FIXUP -DAPPLE_CODECS -DCONFIG_SND_HDA_RECONFIG=1 -Wno-unused-variable -Wno-unused-function" M=/home/ronin/snd_hda_macbookpro/build/hda modules
make[1]: Entering directory '/usr/src/linux-headers-6.14.0-37-generic'
make[2]: Entering directory '/home/ronin/snd_hda_macbookpro/build/hda'
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
You are using: gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
CC [M] patch_cs8409.o
In file included from patch_cs8409.c:1488:
patch_cirrus_apple.h: In function ‘debug_show_configs’:
patch_cirrus_apple.h:635:76: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
635 | spec->multi_io[0].dac, spec->multi_io[1].dac);
| ^

patch_cirrus_apple.h:646:52: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
646 | spec->multiout.hp_out_nid[3]);
| ^
patch_cirrus_apple.h:656:55: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
656 | spec->multiout.extra_out_nid[3]);
| ^
patch_cirrus_apple.h: In function ‘cs_8409_playback_pcm_prepare’:
patch_cirrus_apple.h:759:81: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
759 | mycodec_dbg(codec, "cs_8409_playback_pcm_prepare err %d\n", err);
| ^

patch_cirrus_apple.h: In function ‘cs_8409_dump_auto_config’:
patch_cirrus_apple.h:1137:132: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
1137 | multiout is hp_out_nid 0x%02x\n", spec->gen.multiout.hp_out_nid[itm]);
| ^

patch_cirrus_apple.h:1141:135: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
1141 | tiout is xtr_out_nid 0x%02x\n", spec->gen.multiout.extra_out_nid[itm]);
| ^

patch_cirrus_apple.h: In function ‘cs_8409_apple_boot_init’:
patch_cirrus_apple.h:1237:58: warning: suggest braces around empty body in an ‘else’ statement [-Wempty-body]
1237 | mycodec_dbg(codec, "hinfo stream NULL\n");
| ^
patch_cirrus_apple.h:1260:108: warning: suggest braces around empty body in an ‘else’ statement [-Wempty-body]
1260 | ec_dbg(codec, "cs_8409_apple_boot_init info stream %d NULL\n", stream);
| ^

patch_cirrus_apple.h:1340:112: warning: suggest braces around empty body in an ‘else’ statement [-Wempty-body]
1340 | bg(codec, "cs_8409_apple_boot_init info pcm stream %d NULL\n", stream);
| ^

CC [M] patch_cs8409-tables.o
LD [M] snd-hda-codec-cs8409.o
MODPOST Module.symvers
CC [M] snd-hda-codec-cs8409.mod.o
CC [M] .module-common.o
LD [M] snd-hda-codec-cs8409.ko
BTF [M] snd-hda-codec-cs8409.ko
Skipping BTF generation for snd-hda-codec-cs8409.ko due to unavailability of vmlinux
make[2]: Leaving directory '/home/ronin/snd_hda_macbookpro/build/hda'
make[1]: Leaving directory '/usr/src/linux-headers-6.14.0-37-generic'
make INSTALL_MOD_DIR=updates -C /lib/modules/6.14.0-37-generic/build M=/home/ronin/snd_hda_macbookpro/build/hda CONFIG_MODULE_SIG_ALL=n modules_install
make[1]: Entering directory '/usr/src/linux-headers-6.14.0-37-generic'
make[2]: Entering directory '/home/ronin/snd_hda_macbookpro/build/hda'
INSTALL /lib/modules/6.14.0-37-generic/updates/snd-hda-codec-cs8409.ko
SIGN /lib/modules/6.14.0-37-generic/updates/snd-hda-codec-cs8409.ko
DEPMOD /lib/modules/6.14.0-37-generic
Warning: modules_install: missing 'System.map' file. Skipping depmod.
make[2]: Leaving directory '/home/ronin/snd_hda_macbookpro/build/hda'
make[1]: Leaving directory '/usr/src/linux-headers-6.14.0-37-generic'
depmod -a

contents of /lib/modules/6.14.0-37-generic/updates
total 2632
-rw-r--r-- 1 root root 2694128 jan 25 09:49 snd-hda-codec-cs8409.ko

Ah sorry to hear that. It looks like the build was successful since it generated the snd-hda-codec-cs8409.ko file at the end.
Did you restarted your computer after running the script?
Also, I forgot to ask you, what is your Imac model?
You did say that it worked on Elementary OS, was it the latest version 8.1? Because both Zorin 18 and Elementary OS 8.1 both share the same version of Ubuntu 24.04 and kernel 6.14.

Yes, it was the latest Elementary OS. I have a iMac 2017 i5 quad core 40GB RAM and 4TB SSD. I alwasy restarted the iMac after running the script but nothing.. I also checked out Linux Mint (Debian) and I also managed to make this work, and relatively quick. But Zorin and also Fedora not so much unfortunately.

1 Like

So strange that the drivers behave differently on different Ubuntu based distros. I had a look on hardware for linux website and it looks like your sound chip is the 100 Series/C230 Series Chipset Family HD Audio Controller: HW probe of Apple Mac-BE088AF8C5EB4FA2... (iMac18,3) #0ee14d767d. It seems to be a different chip than the one from the snd_hda_macbookpro drivers but the drivers seems to work for it in some cases so not sure.
From pavucontrol (Volume Control), you could try different Built-in Audio profile under Configuration, some might work.
Otherwise as you said, Bluetooth or USB speaker/headphone should work without the need to install extra drivers.