LINUX.ORG.RU

Непостоянство звука или периодически появляющаяся звуковая карта.

 , ,


0

1

_Преамбула Спасите ноутбук, или я его об коленку сломаю ! А ведь он и не виноват !

_Дано Лаптоп, с флешки грузится slacko-puppy 14.1 и так используется, все устраивает, но:

_Проблема Звук, а именно его отсутствие. После включения любая попытка проиграть звук (запуск видео со звуком в браузере/запуск аудио плеера и т. д) с 70% вероятностью тут же повесит все (изображение, все устройства ввода, даже в tty1 не выйти) с 25% вероятностью зависания не произойдет, но и звука не будет, как будто mute наличествует, и только с 5% вероятностью появляется звук и все работает нормально. Соответственно приходится по 50-100 раз (я сейчас не преувеличиваю) перезагружать машину и пытаться проиграть звук, танцуя с бубном (выдерживая задержку между включением и попыткой проиграть звук например) для того чтобы наконец приступить к использованию. После перезагрузки, бывает, что звук остается, но в подавляющем большинстве случаев все начинается по новой. Я понимаю что сам ноут не виноват, но, иногда нервы не сдают, я уже регулярно по нему кулаком ударяю и сдерживаюсь чтобы не выкинуть в окно, уж простите, часто нужно здесь и сейчас, а тут такое. Переустановить систему (другой дистр, версию) и иные кардинальные варианты не подходят, во - первых, негоже бегать от проблемы, во - вторых, это, положим, просто невозможно вот и все. _Мои наблюдения/соображения. Я знаю что звук реализован многослойно, ALSA там, PULSE Audio, но я понятия не имею используется ли PULSE, в usr/bin/ start-pulse-x11 есть, pavucontrol поставил но он не запускается, я подозреваю что полноценно пульса не стоит и не работает, хотя, могу (скорее всего) ошибаться. До этого я еще накатывал alsa-utilits, alsa-info, alsa-oss, все это не помогало. Однако, я заметил кое-что интересное, когда звук есть aplay -l выдает три позиции, когда звука нет, то что здесь https://i.imgur.com/gDIdsdE.png обозначено как card1 отсутствует. Прикладываю lspci https://i.imgur.com/SR91Sz4.png. Зайдя, когда звук появляется, в alsamixer наблюдаю там совсем иную картину https://i.imgur.com/qgOuayP.png нежели когда звука нет, обычно там два столбика и совсем другая карта, в выборе их становится две, то есть одна исчезает. Поучается, насколько я понимаю, у меня то появляется аудио карта, то пропадает и похоже почти рандомно. Прошу вас помочь мне выяснить при каких условиях она может отваливаться/появляться и что вообще за, кхм, чудеса, ибо я уже не могу это терпеть, честно.

Результаты выполнения alsa-info.sh: http://ix.io/1zb3 | Звука нет. http://ix.io/1zb6 | Звук есть.



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

Имхо, проблема тут.

cannot find the slot for index 1 (range 0-1), error: -16
hda-intel: Error creating card!

У тебя pc speaker индексируется как в голову взбредет, и не дает вторую карту поднять. Загони pcspkr в блеклист, или жестко каждому устройству свой индекс пропиши.

!!Soundcards recognised by ALSA
!!-----------------------------

0 [PCH ]: HDA-Intel - HD-Audio Generic
HD-Audio Generic at 0xfeb44000 irq 41
1 [pcsp ]: PC-Speaker - pcsp
Internal PC-Speaker at port 0x61
!!Soundcards recognised by ALSA
!!-----------------------------

 0 [PCH            ]: HDA-Intel - HD-Audio Generic
                      HD-Audio Generic at 0xfeb44000 irq 40
 1 [HDMI           ]: HDA-Intel - HDA ATI SB
                      HDA ATI SB at 0xfeb40000 irq 16
 2 [pcsp           ]: PC-Speaker - pcsp
                      Internal PC-Speaker at port 0x61
Samsky
()
Последнее исправление: Samsky (всего исправлений: 3)
Ответ на: комментарий от Samsky

Спасибо, попробую отпишу (сейчас уже на работе).

oOoOo
() автор топика

slacko-puppy 14.1

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

Ну это было так, отступление от темы...

В современном линуксе инициализация устройств происходит асинхронно, несколькими потоками, если позволяет железо. В ядерной части ALSA каждому устройству назначается целочисленный index, начиная с нуля. Всё это вместе приводит к тому, что index 0 займёт та звуковая карта, которую драйвер успеет проинициализировать первой. И это, в свою очередь, приводит к тому, что звуковые карты могут нумероваться ядром как попало.

Из-за того, что рандомная нумерация не всегда удобна, фиксированные индексы устройствам можно раздать заранее. Вот для примера параметр модуля ядра snd-hda-intel:

$ modinfo snd-hda-intel | grep index
parm:           index:Index value for Intel HD audio interface. (array of int)

Теперь конкретно к твоей проблеме...

cannot find the slot for index 1 (range 0-1), error: -16
Такое может получиться, если попробовать выдать какой-нибудь звуковой карте фиксированный index, который уже занят. То есть, где-то параметрами какому-то модулю (смотри в параметрах ядра, в /etc/modprobe.conf, /etc/modprobe.d/*, а так же этих же файлах внутри initrd/initramfs, если используется) указано index=1, но при этом у других зуковых карт индексы не фиксированы (или заданы дублирующиеся) и index 1 уже кем-то занят на момент инициализации конкретно этой звуковухи.

У тебя есть несколько возможных решений:

  • Указать фиксированный index всем имеющимся звуковухам.
  • Убрать фиксированную нумерацию вообще и
    • Установить и настроить pulseaudio, который подобные проблемы решает. Не знаю насколько трудоёмко в твоём дистрибутиве.
    • Либо задать звуковым картам фиксированные имена средствами udev. И затем во всех конфигах ALSA использовать постоянные имена вместо случайных номеров.
Deleted
()
Ответ на: комментарий от Samsky

Диагноз оказался верным, спасибо еще раз ! Сколько я не игрался с индексами и модулями все равно все работало через раз, тот же blacklist каждый раз сбрасывается, смотрел везде где только можно, в инитах, модулях, в общем где - то глубоко, подозреваю, прописана жестоко индексация или инициализация чего - то там и в итоге все конфликтует. Проблему удалось решить прописав index=-2 только не спикеру и PCH, а как раз - таки HDMI (нужная мне карта) в итоге она начала хотя бы каждый раз подхватываться, хоть и под разными номерами, ибо теперь уже исчезал/появлялся спикер на который мне до лампочки. Далее был написан скрипт, что по автозапуску берет номер нужной карты из aplay - l и пишет его в asound.state, тем самым переключая дефолт карту, завершается все тестированием через speaker-test. Да, криво, да, на коленке, но, оно работает, а большего мне и не надо, это же не полноценная система, а считай YT-box, зато разбираться что там да как, действительно, насочиняли мейнтейнейры шенка не нужно.

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

Большое спасибо за разъяснения, стало несколько понятнее многое. Решение получилось реализовать, в том числе после прочтения этого поста. Итого, ноутбук спасен, а тема закрыта.

oOoOo
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.