Нет звука на ноутбуке с Linux
Я столкнулся с задачей поддержки новой аппаратной платформы для устройств GrandCare. Все работало нормально, за исключением одной досадной проблемы — звук отказывался работать. При расследовании я обнаружил, что не я один столкнулся с этой трудностью. Проблема связана с совсем новым звуковым устройством от Everest Semiconductor, называемым ESSX8336, которое используется в чипсете Intel Gemini Lake. В Windows с этим устройством всё в порядке, но в Linux возникают проблемы. После нескольких дней поиска информации и общения с экспертами из группы SOF (Sound Open Firmware), я выяснил, что основные проблемы можно сведени к нескольким ключевым моментам:
Проблема заключается в следующем:
Ядро имеет совместимый модуль, который предоставляет поддержку для ESSX8336, но он отключен практически во всех основных конфигурациях ядра дистрибутивов (включая Debian, который меня интересовал).
Правильные топологии SOF для этого устройства, кажется, не являются частью sof-bin.
Регуляторы смешивания ALSA для этого устройства запутанны и трудны для понимания, что делает сложным обеспечение правильной работы звука, даже после того как удалось заставить драйвер работать.
Установка
ПРЕДУПРЕЖДЕНИЕ: Вы собираетесь установить новое ядро из ветки нестабильной версии Debian. Это может сделать вашу систему неработоспособной, если что-то не пойдет так с вашим оборудованием. Обязательно сделайте полные резервные копии данных и знайте, как загрузиться с предыдущего ядра, прежде чем продолжить.
Оригинал инструкции написан для Debian 10 (buster), но на Debian 12 (bookworm) тоже работает и не понижает ядро. Это, возможно, будет работать для других версий (bullseye) или производных Debian (mint, ubuntu и т. д.), но результат может отличаться.
Установите необходимые пакеты для установки:
sudo apt-get install git rsync
Склонируйте этот репозиторий:
Установите новое ядро:
cd sof-essx8336-debian-fix sudo dpkg -i dist/linux*
Установите правильную версию прошивки и топологии для sof:
sudo ./setup-sof.sh
Перезагрузитесь с новым ядром:
sudo shutdown -r now
Установите надлежащие уровни ALSA с помощью предоставленного скрипта. В зависимости от настройки вашей ОС, возможно, вам придется запускать его после каждой перезагрузки:
cd sof-essx8336-debian-fix ./setup-alsa.sh
Если вы используете pulseaudio, а скорее всего так и есть, настройте его, чтобы использовать ESSX8336 как устройство по умолчанию:
sudo ./setup-pulseaudio.sh