LINUX.ORG.RU

Пропадает звук

 , ,


0

1

Внезапно без видимых причин пропадает звук во всех приложениях. Приложения работают без ошибок, но колонки молчат. MPV, Firefox, Audacity… В прошлые 2 раза помогла перезагрузка. Рестарт pipewire (1.4.9) не помогает. ALSA, PipeWire, KDE, X, Gentoo. Звук идёт через материнскую плату ([AMD] Family 17h/19h/1ah HD Audio Controller), хотя в видео тоже что-то есть.

emerge --info: https://pastebin.com/A99ruwGZ

lspci -kk: https://pastebin.com/r52uia0X

dmesg: https://pastebin.com/JwYgSi2a

Лог dmesg кончается на 20:41, звук пропал где-то между 21:00 и 23Ж00.

Куда копать?

Дополнение 1:
lsmod показал отсутствие snd. После modprobe snd звук появился, но какой-то треск вместо музыки.

Дополнение 2:
Как выгрузить snd_hda_codec_hdmi? Как понять, кто его держит?

Дополнение 3:
Удалось восстановить звук, выгрузив все модули snd* через modprobe, загрузив snd и рестартанув alsasound и gentoo-pipewire-launcher. Было ли необходимо для этого отключать все звуковые карты в настройках KDE и закрывать Firefox и настройки KDE — не уверен.

★★★★★

Последнее исправление: question4 (всего исправлений: 5)

возможно после перезапуска pipewire ещё надо перезапускать pipewire-pulse

Диагностирую проблемы через графический интерфей pavucontrol - если он не ругается на недоступность pulse-протокола - он довольно хорошо показывает текущее состоние

GPFault ★★★
()
Последнее исправление: GPFault (всего исправлений: 1)
Ответ на: комментарий от question4

pipewire еще любит, когда его перезапускают после «перетыкания» источника: например, наушники переткнул с порта на порт и pipewire считает, что ничего и нет. Глубоко не копал. тоже помучаться успел.

anonymous
()

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

firkax ★★★★★
()
Ответ на: комментарий от anonymous

по поводу dmseg, имел ввиду между 21 и 23 строкой в pastebin?

Нет, между 21:00 и 23:00 2025-12-09. Но записи в логе кончаются в 20:41. Прошлые разы — аналогично.

question4 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Провода проверь.

С этого начал. Передёргивание проводов не помогло, а при перезагрузке восстанавливалась работа со старым положением проводов.

question4 ★★★★★
() автор топика
Ответ на: комментарий от yars068

А кстати, я вот хотел написать что версия pipewire не может влиять на работы aplay, а потом вспомнит что пульса создавала виртуальное устройство в alsa. Проверь что aplay действительно выдаёт звук напрямую безо всяких посредников. Я правда не помню точно как это сделать.

Если он правда не работает напрямую то версии всего остального, думаю, значения не имеют.

firkax ★★★★★
()
Ответ на: комментарий от GPFault

возможно после перезапуска pipewire ещё надо перезапускать pipewire-pulse

Раньше я не вглядываясь делал gentoo-pipewire-launcher restart &
Посмотрел подробнее:

 $ wireplumber 
Failed to connect to PipeWire

pipewire -v не сообщает об ошибках: https://bpa.st/DIBA

А вот pipewire-pulse -v сыпет ошибками «Host is down»: https://bpa.st/F6JQ

question4 ★★★★★
() автор топика
Ответ на: комментарий от firkax

Проверь что aplay действительно выдаёт звук напрямую безо всяких посредников.

При отсутствии процессов pipewire и wireplumber:

$ LC_ALL='C' aplay /dev/urandom 
aplay: main:850: audio open error: Host is down

Куда копать? Сильно подозреваю, что одна из видеокарт лезет вместо звуковухи на плате.

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 3: HDMI 0 [S32D850]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Generic_1 [HD-Audio Generic], device 0: ALC897 Analog [ALC897 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Generic_1 [HD-Audio Generic], device 1: ALC897 Digital [ALC897 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

И мне нужно играть через card 2.

UPD:

$ aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
default
    Default ALSA Output (currently PipeWire Media Server)
pipewire
    PipeWire Sound Server
hdmi:CARD=NVidia,DEV=0
    HDA NVidia, S32D850
    HDMI Audio Output
hdmi:CARD=NVidia,DEV=1
    HDA NVidia, HDMI 1
    HDMI Audio Output
hdmi:CARD=NVidia,DEV=2
    HDA NVidia, HDMI 2
    HDMI Audio Output
hdmi:CARD=NVidia,DEV=3
    HDA NVidia, HDMI 3
    HDMI Audio Output
hdmi:CARD=Generic,DEV=0
    HD-Audio Generic, HDMI 0
    HDMI Audio Output
hdmi:CARD=Generic,DEV=1
    HD-Audio Generic, HDMI 1
    HDMI Audio Output
hdmi:CARD=Generic,DEV=2
    HD-Audio Generic, HDMI 2
    HDMI Audio Output
hdmi:CARD=Generic,DEV=3
    HD-Audio Generic, HDMI 3
    HDMI Audio Output
sysdefault:CARD=Generic_1
    HD-Audio Generic, ALC897 Analog
    Default Audio Device
front:CARD=Generic_1,DEV=0
    HD-Audio Generic, ALC897 Analog
    Front output / input
surround21:CARD=Generic_1,DEV=0
    HD-Audio Generic, ALC897 Analog
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Generic_1,DEV=0
    HD-Audio Generic, ALC897 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Generic_1,DEV=0
    HD-Audio Generic, ALC897 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Generic_1,DEV=0
    HD-Audio Generic, ALC897 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Generic_1,DEV=0
    HD-Audio Generic, ALC897 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Generic_1,DEV=0
    HD-Audio Generic, ALC897 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Generic_1,DEV=0
    HD-Audio Generic, ALC897 Digital
    IEC958 (S/PDIF) Digital Audio Output

На устройства кроме hdmi пишет

$ LC_ALL='C' aplay  --device=sysdefault /dev/urandom 
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.2.14/work/alsa-lib-1.2.14/src/pcm/pcm_dmix.c:1000:(snd_pcm_dmix_open) unable to open slave
aplay: main:850: audio open error: No such file or directory
question4 ★★★★★
() автор топика
Последнее исправление: question4 (всего исправлений: 2)
Ответ на: комментарий от question4

Так у тебя нету sysdefault, есть sysdefault:CARD=Generic_1 его и ставь. Там все буквы важны.

Но вообще обычно там всякие hw и plughw в списке ещё есть.

hw:CARD=SB,DEV=0
    HDA ATI SB, ALC889A Analog
    Direct hardware device without any conversions
hw:CARD=SB,DEV=1
    HDA ATI SB, ALC889A Digital
    Direct hardware device without any conversions
plughw:CARD=SB,DEV=0
    HDA ATI SB, ALC889A Analog
    Hardware device with all software conversions
plughw:CARD=SB,DEV=1
    HDA ATI SB, ALC889A Digital
    Hardware device with all software conversions
Но возможно это от конфига алсы зависит, не знаю.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Погуглил, схожая проблема вызывается самопроизвольной загрузкой модуля ядра snd_hda_codec_hdmi. Как его выгрузить для проверки? Как выяснить, что его держит?

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

В целом, hdmi это драйвер при работе через hdmi: hdmi это 12 контактов не только для картинки, там еще звук может быть. То что там самопроизвольное это «опрос» на предмет коммутации оборудования скоммутированого на порт. Если не получится победить, я победил через jack на мониторе ;-D

anonymous
()
Ответ на: комментарий от question4

Звук может по разным причинам пропадать, и даже если от выгрузки модуля он починится это не значит что модуль виноват. Виноват будет какой-то конфиг где разрешено рандомно переключаться на hdmi.

Всё-таки проверь sysdefault:CARD=Generic_1

А выгрузить модуль modprobe -r

А я только что обнаружил что у меня в мониторе есть динамики и можно через aplay -D на них шуметь.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от anonymous

rmmod, lsmod

С них начал.

# modprobe -r --remove-holders -f snd_hda_codec_hdmi
modprobe: FATAL: Module snd_hda_codec_hdmi is in use.
# rmmod -f snd_hda_codec_hdmi
rmmod: ERROR: could not remove 'snd_hda_codec_hdmi': Resource temporarily unavailable
rmmod: ERROR: could not remove module snd_hda_codec_hdmi: Resource temporarily unavailable

Поэтому спрашиваю, как узнать, что их держит.

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

эти модули не обязательно удалять, просто по какой-то причине PW меняет дефолтный выход

зы, и даже если оно перескочило на hdmi, то ругаться не должно

kott ★★★★★
()
Последнее исправление: kott (всего исправлений: 1)
Ответ на: комментарий от kott

и даже если оно перескочило на hdmi, то ругаться не должно

Оно и не ругается. Это я ругаюсь, что ничего не слышно, потому что играется на отсутствующие колонки, и отказывается играть куда-либо ещё :)

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

я об этом и говорил. У меня snd_*_realtek не играл и постоянно пульсировал: мол ты отключился? я потом просто психанул и через jack на мониторе стал слушать. pcm насколько понимаю это типа «общий», - он не от железяки. Что касается источников, у меня получалось перебирать, но без успеха. Только схема через jack на монике сработала.

anonymous
()