ALSA, PulseAudio и Intel HDA PCH без звука

ALSA, PulseAudio и Intel HDA PCH без звука

У меня только одна встроенная звуковая карта Realtek ALC298, и мне не нужны никакие продвинутые настройки звука. Просто рабочая звуковая система для прослушивания видео на YouTube, просмотра фильмов и т. д... До сих пор я следовал многим статьям в Интернете. Подводя итог всему, что я пробовал:

  1. Выясните, отключены ли каналы. Я использовал alsamixerи также проверил pavucontrol, оба из них не показывают отключенных каналов. Я повторил этот шаг, когда был на 3-м шаге (см. ниже), и новые каналы время от времени показывались, но в конечном итоге звука не было.

  2. Выясните, проблема ли это в ALSA или только в PulseAudio. Поэтому я использовал aplay -l:

**** Список устройств ВОСПРОИЗВЕДЕНИЯ ****
карта 0: PCH [HDA Intel PCH], устройство 0: ALC298 Analog [ALC298 Analog]
  Подустройства: 1/1
  Подустройство #0: подустройство #0
карта 0: PCH [HDA Intel PCH], устройство 3: HDMI 0 [HDMI 0]
  Подустройства: 1/1
  Подустройство #0: подустройство #0
карта 0: PCH [HDA Intel PCH], устройство 7: HDMI 1 [HDMI 1]
  Подустройства: 1/1
  Подустройство #0: подустройство #0
карта 0: PCH [HDA Intel PCH], устройство 8: HDMI 2 [HDMI 2]
  Подустройства: 1/1
  Подустройство #0: подустройство #0
карта 0: PCH [HDA Intel PCH], устройство 9: HDMI 3 [HDMI 3]
  Подустройства: 1/1
  Подустройство #0: подустройство #0
карта 0: PCH [HDA Intel PCH], устройство 10: HDMI 4 [HDMI 4]
  Подустройства: 1/1
  Подустройство #0: подустройство #0

Оттуда был использован wav-файл в формате PCM, aplay -D plughw:0,0 test.wavкоторый дал:

Воспроизведение WAVE 'test.wav': подписанный 32 бит Little Endian, частота 44100 Гц, стерео

Но ничего! Звука нет нигде, ни в динамиках, ни в наушниках. Я пришел к выводу, что это проблема ALSA, а не PulseAudio, но у меня есть сомнения, так как демон PulseAudio работал на протяжении всего этого шага. Интересное примечание: когда я делал этот шаг, настройки звука gnome показывали, что звуковые панели двигаются, как будто что-то воспроизводится :D

  1. Я нашелстатья на сайте ядрао HDA-аудио и способности ядра динамически перенастраивать аудиокодек без необходимости перезагрузки машины. Мне удалось найти и использовать утилиту, hdajackretaskкоторая является частью alsa-toolsрепозитория, и она предоставила мне графический интерфейс. Эта утилита записывает изменения пинов в user_pin_configsфайл (к вашему сведению, проверил это вручную после перезагрузки). Однако я не смог выяснить правильную комбинацию переназначений пинов. Ниже приведены пины, которые можно переназначить:
0x12
0x13
0x14
0x17
0x18
0x19
0x1a
0x1d
0x1e
0x1f
0x21
  1. Моя идея здесь была в том, чтобы в основном использовать ALC269модель, которую я виделинтересный файл патчапри поиске в Google. Ссылка для rasp pi, но я подумал, что стоит попробовать, увидев, что ALC269этоподдерживаемая модель ядра HDA audio. Хотя это ничего не изменило, возможно, кому-то это пойдет на пользу.

Любая помощь здесь приветствуется. Я далеко за пределами своих навыков Linux.

PS: manjaro, linux56, хотя у всех дистрибутивов та же проблема со звуковой картой. Я установил почти все дистрибутивы за последние несколько месяцев, надеясь, что звук заработает.

Редактировать 1

Добавленоpastebinдля alsa-info.shполучения более подробной информации.

решение1

Хорошие новости! Очень умный пользователь Arch по имени ronincoder обнаружил исправление для разъема наушников. Я работал с ronincoder, чтобы сделать патч ядра [1], и наш патч попал в релиз ядра 5.7! Он также был применен к ядру 5.4 LTS. Я загрузил и 5.7.2, и 5.4.46, и звук через разъем наушников громкий и чистый. :)

Работает ли это у вас? Должно работать, если у вас Samsung Notebook 9 Pro NP930SBE-K01US или NP930MBE-K04US (у ronincoder это первый, у меня второй). Вы можете проверить модель своего ноутбука, запустив alsa_info.sh и посмотрев на "Board Name". Кодек Realtek ALC298 в NP930SBE-K01US и NP930MBE-K04US идентифицирует себя с "Subsystem Id" 0x144dc169 и 0x144dc176 соответственно. Если snd_hda_intel видит любой из этих идентификаторов, он реализует исправление.

Что насчет динамиков? Я сообщил о проблеме отсутствия звука на внутренних динамиках в bugzilla ядра [2]. Специалист по звуку в Linux Ярослав Кисела предполагает, что к кодеку HDA могут быть подключены некоторые усилители, которые не инициализируются BIOS и, таким образом, не активны в Linux. Он предлагает сбросить связь кодека для драйвера Windows с помощью QEMU. Затем мы могли бы проанализировать дамп и воспроизвести связь в Linux с помощью Early Patching [3] или написать другой патч ядра. Прошел месяц с тех пор, как Ярослав сделал это предложение, и я добился некоторого прогресса, но у меня все еще нет хорошего дампа. Пожалуйста, присоединяйтесь к обсуждению в bugzilla ядра, если вы хотите мне помочь. ^^

[1] Для справки, наш патч попал в дерево Линуса как коммит 14425f1f521f (ALSA: hda/realtek: Добавить особенность для ноутбука Samsung). [2]https://bugzilla.kernel.org/show_bug.cgi?id=207423 [3]https://www.kernel.org/doc/html/v4.17/sound/hd-audio/notes.html#early-patching

решение2

В ElementaryOS (на базе Ubuntu 20.04) отсутствие звука на моем MacBook Pro 2012 было исправлено путем редактирования файла конфигурации sudo vim /etc/modprobe.d/alsa-base.confи замены

options snd-hda-intel model=generic

к

# options snd-hda-intel model=generic
options snd-hda-intel probe_mask=1

Дополнительные пояснительные детали:

Примечание: Я не уверен, почему вообще возникла проблема со звуком и что изменилось до этого, поскольку поначалу после установки все работало.

Однако при запросе pacmd list-cardsв Терминале вывод изменился с (до исправления):

ports:
    analog-input-mic: Mikrofon (priority 8700, latency offset 0 usec, available: unknown)
        properties:
            device.icon_name = "audio-input-microphone"
    analog-output-speaker: Lautsprecher (priority 10000, latency offset 0 usec, available: unknown)
        properties:
            device.icon_name = "audio-speakers"
    analog-output-headphones: Kopfhörer (priority 9900, latency offset 0 usec, available: no)
        properties:
            device.icon_name = "audio-headphones"
    iec958-stereo-output: Digitalausgang (S/PDIF) (priority 0, latency offset 0 usec, available: unknown)
        properties:

к (после исправления):

ports:
    [Out] Speaker: Speaker (priority 100, latency offset 0 usec, available: unknown)
        properties:
            
    [Out] Headphones: Headphones (priority 200, latency offset 0 usec, available: no)
        properties:
            
    [In] Mic2: Headphones Stereo Microphone (priority 200, latency offset 0 usec, available: unknown)
        properties:

(Обратите внимание на разницу в синтаксисе.)

Также вывод sudo vim aplay -lизменился с (до исправления):

Karte 0: PCH [HDA Intel PCH], Gerät 0: Generic Analog [Generic Analog]
  Sub-Geräte: 0/1
  Sub-Gerät #0: subdevice #0
Karte 0: PCH [HDA Intel PCH], Gerät 1: Generic Digital [Generic Digital]           
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0

к (после исправления):

Karte 0: PCH [HDA Intel PCH], Gerät 0: CS4206 Analog [CS4206 Analog]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 0: PCH [HDA Intel PCH], Gerät 1: CS4206 Digital [CS4206 Digital]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0

решение3

Итак, проблема в том, что ALC298 от Realtek имеет другие требования к шине, а именно I2S. Начиная с linux56 аудиокодек I2S не поддерживается, и это, похоже, новый стандарт. Lenovo, Samsung и Huawei, похоже, используют звуковые карты с этим новым стандартом I2S, и есть много нерешенных тем/тредов, которые я нашел заброшенными по этому вопросу.

Я нашел обходной путь для исправления наушников, который сработал для меня и еще одного человека, который использовал Samsung Notebook Pro 9. Решение использует функцию ядра под названием «Early Patching» для опциональной перезаписи пинов по умолчанию, глаголов, модели и других атрибутов, специфичных для ALSA. Вы можете найти полную информацию, включая альтернативный пользовательский патч ядра, наФорумы Arch Linux.

решение4

Попробуйте эти инструкции ниже. Так как они могли бы исправить похожую проблему на моей системе.

  1. Вы запускаете команду "aplay", но ничего не слышите. А как насчет запуска команды "sudo aplay"? Если ALSA работает, вы можете услышать звук.

  2. Я думаю, что pulseaudio работает в вашей системе. Но могут быть некоторые проблемы совместимости между alsa-lib и драйвером snd-hda-intel.

    $pacmd список-карты

Проверьте результаты на "ports". Если вы не видите ничего, связанного с динамиком, это означает, что звуковая карта не может быть распознана PulseAudio.

  1. Отредактируйте файл "/usr/share/alsa/ucm2/HDA-Intel/HDA-Intel.conf". Если вы видите пустую строку после "Define.Use", просто введите "3" в строку. Затем сохраните ее.

  2. Перезагрузите машину. Если звука все еще нет, проверьте, не является ли ваша звуковая карта "Dummy Output". Если да, добавьте "options snd-hda-intel model=generic" в конец "/etc/modprobe.d/alsa-base.conf".

Эта проблема в основном вызвана "HDA-Intel.conf". Я действительно не понимаю, почему разработчик оставляет строку "Define.Use" пустой.

Связанный контент