Разбираться будем на примере отсутствия звука при установке Xubuntu на ноутбук HUAWEI MateBook D 15. Модель, которую не назовешь очень свежей. Тем не менее, при установке последнего, на момент написания статьи, LTS релиза 22.04 (Jammy Jellyfish), звука не было.

Поиск по марке ноутбука не дал ничего определенного, кроме советов задать dsp_driver=1 (т.е. legacy) для модуля snd-intel-dspcfg, что в данном случае не поможет. Поэтому, перезагрузив ноутбук в Windows (она предустановлена), где звук есть, я посмотрел устройство для вывода звука:

ESAuDriver Device
ACPI\VEN_ESSX&DEV_8336&SUBSYS_152D125F
ACPI\ESSX8336\1

Тем, кто без Windows уже снес, посмотреть устройства ACPI в Linux можно так:

find /sys/bus/acpi/devices/*/modalias -exec cat '{}' \;

Если в списке есть строка "acpi:ESSX8336:ESSX8336:", то это наш случай. Встречаем, Everest-Semi Low Power Audio CODEC ES8336.

На случай, если моя статья уже устарела, посмотрим есть ли поддержка этого кодека в ядре, которым вы сейчас пользуетесь:

cat /boot/config-`uname -r` |grep 8336

если поддержка есть, то увидим:
CONFIG_SND_SOC_INTEL_SOF_ES8336_MACH=m

Нет? Для этого я и пишу это руководство. Не все знают, что разработчики Ubuntu предлагают возможность установки так называемого HWE ядра (еще есть и xserver). Специально для тех, кто использует достаточно новое оборудование, поддержки которого в текущем ядре LTS релиза нет. Его портируют «обратно» (backports) из более свежих короткоживущих релизов. На момент написания статьи в дистрибутиве используется ядро версии 5.15.0, а установить можно HWE версии 6.2.0 и вероятность того, что с ним оборудование заработает заметно выше.

1. Устанавливаем HWE ядро

sudo apt install linux-image-generic-hwe-22.04

"04" замените на свою версию дистрибутива, если отличается. После установки, при использовании grub в качестве загрузчика, hwe ядро станет текущим, а в «Advanced options» будет добавлено используемое сейчас. Так что особо переживать нечего. Проверим? Да, да, перезагружаем компьютер.

И.. Звука все еще нет.

Проверяем, есть ли поддержка кодека в ядре (см. выше). Есть. Тогда Смотрим логи:

journalctl --boot=0 |egrep -i 'sof-|audio|8336'

kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: error: tplg request firmware intel/sof-tplg/sof-cml-es8336-dmic2ch-ssp0.tplg failed err: -2
kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: you may need to download the firmware from https://github.com/thesofproject/sof-bin/
kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: error: failed to load DSP topology -2

2. Загружаем недостающее sound open firmware (sof)

"You may need to download the firmware". Ядро поставили новое, а firmware где? Но нет смысла качать с github не подписанное. Мы возьмем его там же где и ядро. Со свежего не LTS релиза. https://packages.ubuntu.com/search?keywords=firmware-sof-signed и берем самое свежее. Скачали?

mkdir /tmp/sof-signed
dpkg -X /куда/скачали/firmware-sof-signed_2.2.6-1_all.deb /tmp/sof-signed/
sudo cp -v /tmp/sof-signed/lib/firmware/intel/sof-tplg/sof-tgl-es8336* /lib/firmware/intel/sof-tplg/
rm -rf /tmp/sof-signed

Еще раз перезагрузка. И? Звука так и нет. В логах уже все нормально, firmware загружено. Что еще не так? Миксер!

3. Настраиваем аудио

Посмотрим аудиоустройства:
aplay -l
карта 0: sofessx8336 [sof-essx8336], устройство 0: ES8336 (*) []
есть в списке, отлично.

Глушим все, кроме ALSA (advanced linux sound architecture).

pulseaudio -k
systemctl --user stop pipewire.socket && systemctl --user stop pipewire.service
systemctl --user stop pulseaudio.socket && systemctl --user stop pulseaudio.service

Запустим проверку звука
speaker-test -c2

Если ничего не слышно
alsamixer
и меняем настройки пока не появится звук в speaker-test.
Как же ласкает слух этот «розовый шум»!

Когда все заработало, сохраняемся.
sudo alsactl store

Опять перезагрузка? И это на Linux? Не хотите, тогда:

systemctl --user start pulseaudio.service && systemctl --user start pulseaudio.socket
systemctl --user start pipewire.service && systemctl --user start pipewire.socket

Проверяем конфигурацию и настройки миксера в pavucontrol.

Проверяем настройки входов/выходов
Проверяем настройки входов/выходов
Порядок
Порядок

Из замеченных проблем — не всегда есть звук после выхода из ждущего/спящего режима. Лечится в alsamixer переключением Speaker (mute/unmute). Конечно можно добавить скрипт при выходе из ждущего/спящего режима. Но это уже сделаю и выложу если будет интерес к статье.

Комментарии (7)


  1. maikuss
    14.10.2023 10:05
    +4

    В принципе, отсутствие звука можно обнаружить ещё до установки Убунты, выбрав пункт Try. И потом, выйдя в экспертный режим установки, сразу выбрать ядро hwe. Интересно, как бы в этом случае повела себя система, подхватила бы firmware сама или все равно пришлось бы выполнять шаманский ритуал? Не хотите провести эксперимент?


  1. joffer
    14.10.2023 10:05

    у меня 22 убунту месяц назад внезапно перестала на ноутбуке адекватно распознавать аналоговые наушники - если воткнуть науники в 3.5 мини-джек, то пока идёт звуковой поток от чего-либо - всё относительно нормально играет и звучит. Если же звук не выводится, через несколько секунд в наушниках появляется белый шум и по громкости быстро наростает в громкий ШУМ из наушников.

    перепробовал всё, что нашёл и мог из интернетов - ничего не помогло, максимум смог отключить вывод на 3.5 вывод. В итоге так и не исправил этот момент, наушники подсоединены через внешнюю usb-звуковую карту

    самое странное, что раньше всё работало нормально, но в один из дней что-то поломалось, непонятно почему - ничего не делал со звуком и не настраивал ничего. Просто в какой-то момент отключил наушники, подключил другие - и появился этот эффект(


    1. Andvari
      14.10.2023 10:05

      С появлением snap убунта научилась обновлять компоненты не привлекая внимания пользователя. )))


    1. VADemon
      14.10.2023 10:05

      Это очень похоже на режим энергосбережения Bluetooth гарнитуры. Нет сигнала - отключается DAC. Тут возможно та же история, только звуковуха из "спящего" режима не включается обратно. Если раньше не было, есть смысл попробывать старые/новые live CD ради разных версий ядер.


  1. Dynasaur
    14.10.2023 10:05

    Ктоб ещё написал статью про установку wifi-свистка в убунте...


  1. Johan_Palych
    14.10.2023 10:05

    Да, с этим Device-ом есть проблемы. В поиске будет много результатов:
    Device-1: Intel Tiger Lake-LP Smart Sound Audio
    Midnight Commander открывает .deb пакет без распаковки.
    Самый свежий бинарный firmware-sof-signed:
    https://github.com/thesofproject/sof-bin
    https://github.com/thesofproject/sof-bin/releases/tag/v2023.09


  1. cthtuf
    14.10.2023 10:05

    в ядро 6.7 вроде как обещали завезти https://lore.kernel.org/alsa-devel/169447665042.2387538.16679409837029670258.b4-ty@kernel.org/