Вопрос или проблема
Я новичок в Linux и пытаюсь начать использовать его на своем iMac Pro 2017 года с процессором Intel Xeon W. Мне удалось успешно установить Ubuntu 22.04.4 и настроить двойную загрузку, однако, похоже, что моя звуковая карта не распознается. В разделе вывода я вижу только Dummy Output и никаких опций ввода. Я пробовал подключать наушники, но они тоже не распознаются. Я попробовал множество рекомендаций, найденных в Google, но успеха не добился. Если это поможет, я выполнил эту команду и вот ее вывод:
sudo lspci -vv | grep -i audio
ubuntu@who-iMacPro:~$ sudo lspci -vv | grep -i audio
02:00.3 Multimedia audio controller: Apple Inc. Apple Audio Device (rev 01)
Subsystem: Apple Inc. Apple Audio Device
f3:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 HDMI Audio [Radeon Vega 56/64]
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 HDMI Audio [Radeon Vega 56/64]
Alsamixer также видит только Vega 10 HDMI Audio.
EDIT: Спасибо за ответ, guiverc, я постараюсь добавлять больше деталей в будущем. Я использую десктопную версию, и вот вывод, который вы запрашивали:
ubuntu@who-iMacPro:~$ sudo lshw -C sound
*-multimedia UNCLAIMED
description: Multimedia audio controller
product: Apple Audio Device
vendor: Apple Inc.
physical id: 0.3
bus info: pci@0000:02:00.3
version: 01
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list
configuration: latency=0
resources: memory:7f800000-7fbfffff memory:7fd80000-7fdfffff memory:7fe30000-7fe3ffff
*-multimedia
description: Audio device
product: Vega 10 HDMI Audio [Radeon Vega 56/64]
vendor: Advanced Micro Devices, Inc. [AMD/ATI]
physical id: 0.1
bus info: pci@0000:f3:00.1
logical name: card0
logical name: /dev/snd/controlC0
logical name: /dev/snd/hwC0D0
logical name: /dev/snd/pcmC0D10p
logical name: /dev/snd/pcmC0D11p
logical name: /dev/snd/pcmC0D3p
logical name: /dev/snd/pcmC0D7p
logical name: /dev/snd/pcmC0D8p
logical name: /dev/snd/pcmC0D9p
version: 00
width: 32 bits
clock: 33MHz
capabilities: pm pciexpress msi bus_master cap_list
configuration: driver=snd_hda_intel latency=0
resources: irq:98 memory:f02a0000-f02a3fff
EDIT2: Добавляю вывод для команды, рекомендованной Archisman Panigrahi.
ubuntu@who-iMacPro:~$ cd snd_hda_macbookpro && sudo ./install.cirrus.driver.sh
linux-source-6.5.0/sound/pci/hda/
linux-source-6.5.0/sound/pci/hda/hda_jack.h
linux-source-6.5.0/sound/pci/hda/hda_beep.c
linux-source-6.5.0/sound/pci/hda/hda_local.h
linux-source-6.5.0/sound/pci/hda/hda_generic.c
linux-source-6.5.0/sound/pci/hda/ca0132_regs.h
linux-source-6.5.0/sound/pci/hda/hp_x360_helper.c
linux-source-6.5.0/sound/pci/hda/hda_beep.h
linux-source-6.5.0/sound/pci/hda/patch_analog.c
linux-source-6.5.0/sound/pci/hda/cs35l41_hda.c
linux-source-6.5.0/sound/pci/hda/patch_si3054.c
linux-source-6.5.0/sound/pci/hda/hda_tegra.c
linux-source-6.5.0/sound/pci/hda/patch_ca0110.c
linux-source-6.5.0/sound/pci/hda/patch_cs8409-tables.c
linux-source-6.5.0/sound/pci/hda/hda_controller.c
linux-source-6.5.0/sound/pci/hda/patch_conexant.c
linux-source-6.5.0/sound/pci/hda/patch_cs8409.h
linux-source-6.5.0/sound/pci/hda/hda_eld.c
linux-source-6.5.0/sound/pci/hda/cs35l41_hda_i2c.c
linux-source-6.5.0/sound/pci/hda/patch_ca0132.c
linux-source-6.5.0/sound/pci/hda/hda_controller.h
linux-source-6.5.0/sound/pci/hda/hda_cs_dsp_ctl.c
linux-source-6.5.0/sound/pci/hda/hda_codec.c
linux-source-6.5.0/sound/pci/hda/thinkpad_helper.c
linux-source-6.5.0/sound/pci/hda/hda_generic.h
linux-source-6.5.0/sound/pci/hda/patch_sigmatel.c
linux-source-6.5.0/sound/pci/hda/cs35l41_hda_property.c
linux-source-6.5.0/sound/pci/hda/hda_intel.c
linux-source-6.5.0/sound/pci/hda/hda_auto_parser.c
linux-source-6.5.0/sound/pci/hda/hda_sysfs.c
linux-source-6.5.0/sound/pci/hda/Kconfig
linux-source-6.5.0/sound/pci/hda/hda_intel_trace.h
linux-source-6.5.0/sound/pci/hda/cs35l41_hda_spi.c
linux-source-6.5.0/sound/pci/hda/hda_intel.h
linux-source-6.5.0/sound/pci/hda/patch_cirrus.c
linux-source-6.5.0/sound/pci/hda/hda_hwdep.c
linux-source-6.5.0/sound/pci/hda/hda_bind.c
linux-source-6.5.0/sound/pci/hda/hda_jack.c
linux-source-6.5.0/sound/pci/hda/ideapad_s740_helper.c
linux-source-6.5.0/sound/pci/hda/patch_hdmi.c
linux-source-6.5.0/sound/pci/hda/hda_component.h
linux-source-6.5.0/sound/pci/hda/hda_proc.c
linux-source-6.5.0/sound/pci/hda/patch_cmedia.c
linux-source-6.5.0/sound/pci/hda/cs35l41_hda.h
linux-source-6.5.0/sound/pci/hda/Makefile
linux-source-6.5.0/sound/pci/hda/patch_via.c
linux-source-6.5.0/sound/pci/hda/patch_realtek.c
linux-source-6.5.0/sound/pci/hda/hda_controller_trace.h
linux-source-6.5.0/sound/pci/hda/hda_auto_parser.h
linux-source-6.5.0/sound/pci/hda/cs35l41_hda_property.h
linux-source-6.5.0/sound/pci/hda/hda_cs_dsp_ctl.h
linux-source-6.5.0/sound/pci/hda/patch_cs8409.c
Kernel version later than implemented version - there may be build problems
patching file patch_cs8409.c
Hunk #1 succeeded at 1445 (offset 175 lines).
Hunk #2 succeeded at 1454 (offset 175 lines).
Hunk #3 succeeded at 1483 (offset 175 lines).
patching file patch_cs8409.h
Hunk #2 succeeded at 304 (offset 2 lines).
Hunk #3 succeeded at 331 (offset 2 lines).
Hunk #4 succeeded at 367 (offset 2 lines).
patching file patch_cirrus_apple.h
make -C /lib/modules/6.5.0-27-generic/build CFLAGS_MODULE="-DAPPLE_PINSENSE_FIXUP -DAPPLE_CODECS -DCONFIG_SND_HDA_RECONFIG=1 -Wno-unused-variable -Wno-unused-function" M=/home/cd/snd_hda_macbookpro/build/hda modules
make[1]: Entering directory '/usr/src/linux-headers-6.5.0-27-generic'
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
You are using:
CC [M] /home/cd/snd_hda_macbookpro/build/hda/patch_cs8409.o
/bin/sh: 1: gcc-12: not found
make[3]: *** [scripts/Makefile.build:251: /home/cd/snd_hda_macbookpro/build/hda/patch_cs8409.o] Error 127
make[2]: *** [/usr/src/linux-headers-6.5.0-27-generic/Makefile:2039: /home/cd/snd_hda_macbookpro/build/hda] Error 2
make[1]: *** [Makefile:234: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.5.0-27-generic'
make: *** [Makefile:16: all] Error 2
EDIT 3: Вывод для команд
ubuntu@who-iMacPro:~/snd-hda-codec-cs8409$ make
make -C /lib/modules/6.5.0-27-generic/build CFLAGS_MODULE="-DAPPLE_PINSENSE_FIXUP -DAPPLE_CODECS -DCONFIG_SND_HDA_RECONFIG=1 -Wno-unused-variable -Wno-unused-function" M=/home/cd/snd-hda-codec-cs8409 modules
make[1]: Entering directory '/usr/src/linux-headers-6.5.0-27-generic'
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
You are using:
CC [M] /home/cd/snd-hda-codec-cs8409/patch_cs8409.o
/bin/sh: 1: gcc-12: not found
make[3]: *** [scripts/Makefile.build:251: /home/cd/snd-hda-codec-cs8409/patch_cs8409.o] Error 127
make[2]: *** [/usr/src/linux-headers-6.5.0-27-generic/Makefile:2039: /home/cd/snd-hda-codec-cs8409] Error 2
make[1]: *** [Makefile:234: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.5.0-27-generic'
make: *** [Makefile:16: all] Error 2
ubuntu@who-iMacPro:~/snd-hda-codec-cs8409$ sudo make install
mkdir -p /lib/modules/6.5.0-27-generic/updates/
cp snd-hda-codec-cs8409.ko /lib/modules/6.5.0-27-generic/updates/
cp: cannot stat 'snd-hda-codec-cs8409.ko': No such file or directory
make: *** [Makefile:22: install] Error 1
Edit 4: Вывод после выполнения sudo apt install gcc-12
ubuntu@who-iMacPro:~$ sudo apt install gcc-12
[sudo] пароль для cd:
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Будут установлены следующие дополнительные пакеты:
cpp-12 libasan8 libgcc-12-dev libtsan2
Рекомендуемые пакеты:
gcc-12-locales cpp-12-doc gcc-12-multilib gcc-12-doc
Будут установлены следующие НОВЫЕ пакеты:
cpp-12 gcc-12 libasan8 libgcc-12-dev libtsan2
0 обновлено, 5 установлено, 0 удалено и 8 не обновлено.
Необходимо загрузить 40.1 МБ архивов.
После этой операции будет использовано дополнительно 138 МБ дискового пространства.
Продолжить? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 cpp-12 amd64 12.3.0-1ubuntu1~22.04 [10.8 MB]
Get:2 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libasan8 amd64 12.3.0-1ubuntu1~22.04 [2,442 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libtsan2 amd64 12.3.0-1ubuntu1~22.04 [2,477 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgcc-12-dev amd64 12.3.0-1ubuntu1~22.04 [2,618 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 gcc-12 amd64 12.3.0-1ubuntu1~22.04 [21.7 MB]
Получено 40.1 МБ за 3с (14.8 МБ/с)
Выбор ранее не выбранного пакета cpp-12.
(Чтение базы данных ... 241511 файлов и каталогов в данный момент установлены.)
Подготовка к распаковке .../cpp-12_12.3.0-1ubuntu1~22.04_amd64.deb ...
Распаковка cpp-12 (12.3.0-1ubuntu1~22.04) ...
Выбор ранее не выбранного пакета libasan8:amd64.
Подготовка к распаковке .../libasan8_12.3.0-1ubuntu1~22.04_amd64.deb ...
Распаковка libasan8:amd64 (12.3.0-1ubuntu1~22.04) ...
Выбор ранее не выбранного пакета libtsan2:amd64.
Подготовка к распаковке .../libtsan2_12.3.0-1ubuntu1~22.04_amd64.deb ...
Распаковка libtsan2:amd64 (12.3.0-1ubuntu1~22.04) ...
Выбор ранее не выбранного пакета libgcc-12-dev:amd64.
Подготовка к распаковке .../libgcc-12-dev_12.3.0-1ubuntu1~22.04_amd64.deb ...
Распаковка libgcc-12-dev:amd64 (12.3.0-1ubuntu1~22.04) ...
Выбор ранее не выбранного пакета gcc-12.
Подготовка к распаковке .../gcc-12_12.3.0-1ubuntu1~22.04_amd64.deb ...
Распаковка gcc-12 (12.3.0-1ubuntu1~22.04) ...
Настройка cpp-12 (12.3.0-1ubuntu1~22.04) ...
Настройка libasan8:amd64 (12.3.0-1ubuntu1~22.04) ...
Настройка libtsan2:amd64 (12.3.0-1ubuntu1~22.04) ...
Настройка libgcc-12-dev:amd64 (12.3.0-1ubuntu1~22.04) ...
Настройка gcc-12 (12.3.0-1ubuntu1~22.04) ...
Обработка триггеров для man-db (2.10.2-1) ...
Обработка триггеров для libc-bin (2.35-0ubuntu3.6) ...
ubuntu@who-iMacPro:~$ cd snd-hda-codec-cs8409
ubuntu@who-iMacPro:~/snd-hda-codec-cs8409$ make
make -C /lib/modules/6.5.0-27-generic/build CFLAGS_MODULE="-DAPPLE_PINSENSE_FIXUP -DAPPLE_CODECS -DCONFIG_SND_HDA_RECONFIG=1 -Wno-unused-variable -Wno-unused-function" M=/home/cd/snd-hda-codec-cs8409 modules
make[1]: Entering directory '/usr/src/linux-headers-6.5.0-27-generic'
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
Вы используете: gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
CC [M] /home/cd/snd-hda-codec-cs8409/patch_cs8409.o
В файле, включенном из /home/cd/snd-hda-codec-cs8409/patch_cs8409.c:1488:
/home/cd/snd-hda-codec-cs8409/patch_cirrus_apple.h: В функции ‘cs_8409_apple_boot_init’:
/home/cd/snd-hda-codec-cs8409/patch_cirrus_apple.h:1191:15: предупреждение: присвоение отбрасывает квалификатор ‘const’ из целевого типа указателя [-Wdiscarded-qualifiers]
1191 | hinfo = spec->gen.stream_analog_playback;
| ^
CC [M] /home/cd/snd-hda-codec-cs8409/patch_cs8409-tables.o
LD [M] /home/cd/snd-hda-codec-cs8409/snd-hda-codec-cs8409.o
MODPOST /home/cd/snd-hda-codec-cs8409/Module.symvers
CC [M] /home/cd/snd-hda-codec-cs8409/snd-hda-codec-cs8409.mod.o
LD [M] /home/cd/snd-hda-codec-cs8409/snd-hda-codec-cs8409.ko
BTF [M] /home/cd/snd-hda-codec-cs8409/snd-hda-codec-cs8409.ko
Пропуск генерацию BTF для /home/cd/snd-hda-codec-cs8409/snd-hda-codec-cs8409.ko из-за недоступности vmlinux
make[1]: Leaving directory '/usr/src/linux-headers-6.5.0-27-generic'
ubuntu@who-iMacPro:~/snd-hda-codec-cs8409$ sudo make install
mkdir -p /lib/modules/6.5.0-27-generic/updates/
cp snd-hda-codec-cs8409.ko /lib/modules/6.5.0-27-generic/updates/
depmod -a
ubuntu@who-iMacPro:~/snd-hda-codec-cs8409$
Этот ответ основан на аналогичных решениях, которые работают в Debian.
Сначала установите заголовки ядра и инструменты для компиляции.
sudo apt install linux-headers-generic
sudo apt install build-essential git gcc-12
Скачайте драйвер
git clone https://github.com/egorenar/snd-hda-codec-cs8409
Наконец, скомпилируйте и установите драйвер
cd snd-hda-codec-cs8409
make
sudo make install
Перезагрузите компьютер, и звук должен заработать.
Мне также пришлось установить пакеты git и make на свежей установке Ubuntu 24.04.1.
Это работает:
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
Перезагрузите, и звук будет работать.
Ответ или решение
Проблема отсутствия звука на вашем iMac Pro 2017 года с установленной Ubuntu 22.04.4 связана с несоответствием драйверов звукового устройства. Ваша система не распознает звуковую карту Apple, о чем свидетельствует вывод команды lshw
и lspci
, где отмечается, что звуковой контроллер Apple не присвоен и не управляется каким-либо драйвером.
Вот шаги, которые вам нужно предпринять, чтобы решить эту проблему:
Шаг 1: Установка необходимых пакетов
Сначала необходимо установить пакет заголовков ядра и инструменты для компиляции:
sudo apt update
sudo apt install linux-headers-generic build-essential git gcc-12
Шаг 2: Загрузка драйвера
Скачайте драйвер для поддержки звуковых устройств Apple:
git clone https://github.com/egorenar/snd-hda-codec-cs8409
Шаг 3: Компиляция и установка драйвера
Перейдите в директорию с загруженным драйвером и выполните следующие команды:
cd snd-hda-codec-cs8409
make
sudo make install
Шаг 4: Обновление зависимостей
После установки драйвера не забудьте обновить зависимости, чтобы система могла обнаружить новый модуль:
sudo depmod -a
Шаг 5: Перезагрузка компьютера
Теперь перезагрузите компьютер, чтобы изменения вступили в силу:
sudo reboot
Шаг 6: Проверка работы звука
После перезагрузки проверьте настройки звука. Для этого откройте настройки звука в Ubuntu и убедитесь, что ваше звуковое устройство отображается верно. Также протестируйте вывод звука через динамики или наушники.
Дополнительные советы
Если звук все еще не работает, убедитесь, что вы используете последнюю версию ядра, совместимую с вашим оборудованием. Иногда проблема может возникать из-за версии пакета ядра, поэтому обновление может помочь.
Если проблемы продолжаются, вы можете рассмотреть возможность обращения за помощью на Linux-форумы или к сообществам, связанным с Ubuntu, где пользователи с аналогичным оборудованием могут предложить дополнительные решения.
Надеюсь, эти шаги помогут вам решить проблему и вы сможете наслаждаться звуком на вашем iMac Pro под управлением Ubuntu.