LINUX.ORG.RU

можно не отвечать

Но ведь усб — цифровой интерфейс? Как это работает? Типа, там внутри звуковушка? Но как же качество? Да источник эм-излучения рядом с головой держать...

anonymous
()
Ответ на: можно не отвечать от anonymous

Да, у наушников есть звуковая карта, она находится в блоке с регулятором громкости. Качество звучания отличное.

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

Если для вас это выход, то можно поставить PulseAudio, он умеет и первое, и немного второе (сохраняет громкость и восстанавливает ее при подключении).

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

Тогда нужно задать USB-наушникам fallback-приоритет выше, чем у основной карты, и все потоки будут перекидываться на них при втыкании. Сделать это можно через pavucontrol.

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

Установил pavucontrol, задал наушникам приоритет выше, чем у основной карты, теперь при подключении USB разъёма, все потоки перекидываются на наушники. Это решило только вторую проблему, первая, главная проблема, всё ещё остаётся нерешённой.

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

А у USB-карты есть профили, которые видны во вкладке «configuration» pavucontrol? Может, нужно правильный выбрать?

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

До перезагрузки всего один профиль:

  • Аналоговый моно вход

После перезагрузки девять:

  • Аналоговый объёмный 5.1 выход + Аналоговый моно вход
  • Аналоговый объёмный 4.1 выход + Аналоговый моно вход
  • Аналоговый объёмный 5.1 выход
  • Аналоговый объёмный 4.1 выход
  • Analog Surround 7.1 выход + Аналоговый моно вход
  • Аналоговый объёмный 5.0 выход + Аналоговый моно вход
  • Analog Surround 7.1 выход
  • Аналоговый объёмный 5.0 выход
  • Аналоговый моно вход
LeslieBurke
() автор топика
Ответ на: комментарий от ValdikSS

Давайте позовем AEP.

Для диагностики нужны полные логи (killall pulseaudio ; pulseaudio -vvv 2>&1 | tee -i pulse.log) при таком сценарии:

1. Запустить эту команду, когда наушники не подключены 2. Подключить наушники 3. killall pulseaudio 4. Забрать лог

AEP ★★★★★
()
Ответ на: можно не отвечать от anonymous

Да источник эм-излучения рядом с головой держать...

эм... наводок от сигнальных линий USB что ли? КСЖ.

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

Попробуйте в качестве грубого workaround'а создать файл /etc/udev/rules.d/70-delay-usb-audio.rules с таким содержимым:

KERNEL=="controlC*", SUBSYSTEMS=="usb", ACTION=="add", IMPORT{program}="/bin/sleep 5"

После создания файла надо заставить udev прочитать его. Т.е. либо перезагрузка, либо, от root'а,

udevadm control -R
AEP ★★★★★
()
Последнее исправление: AEP (всего исправлений: 3)
Ответ на: комментарий от AEP

Жаль. Буду использовать команду killall pulseaudio , пока не найдётся решение проблемы.

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

Не помогло.

А вообще какой-то эффект был? По идее оно должно заставлять PulseAudio обнаруживать карту через 5 секунд после подключения, а не мгновенно. Если такой задержки нет (можно поиграться с параметром sleep), надо разбираться, почему правило не применилось.

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

А ошибка в логах pulseaudio в итоге такая же?

I: [pulseaudio] (alsa-lib)confmisc.c: Unable to find definition 'cards.USB-Audio.pcm.surround51.0:CARD=0'
I: [pulseaudio] (alsa-lib)conf.c: function snd_func_refer returned error: Нет такого файла или каталога
I: [pulseaudio] (alsa-lib)conf.c: Evaluate error: Нет такого файла или каталога
I: [pulseaudio] (alsa-lib)pcm.c: Unknown PCM surround50:0
I: [pulseaudio] alsa-util.c: Error opening PCM device surround50:0: Нет такого файла или каталога
AEP ★★★★★
()
Ответ на: комментарий от LeslieBurke

Спасибо за тестирование. Вроде бы это опровергает теорию «ядро слишком рано говорит pulseaudio, что с картой можно работать», и подкрепляет теорию «alsa-lib кеширует что не надо с момента старта приложения». Давайте проведем еще один тест, чтобы убедиться на 100%.

1. killall pulseaudio при подключенных наушниках. 2. Убедиться, что доступны все профили. 3. Закрыть pavucontrol, подождать 10 секунд. 4. Отключить и переподключить наушники, не перезапуская pulseaudio.

В итоге, какие профили оказываются доступны?

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

У меня на хосте (Arch) баг не воспроизводится. Тестировал с использованием Rotel RA-1570. Сейчас буду пробовать пробросить этот усилитель в виртуалку с Debian Jessie.

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

Баг в alsa-lib, в функции snd_config_update_r(), которая вызывается из snd_pcm_open(). Они смотрят на время модификации своего конфига (где определены правила разбора имен устройств) и, если оно изменилось, перечитывают. Но не учитывают, что смысл конфига мог поменяться тупо из-за подключения новых устройств.

К сожалению, исправить не так просто - если просто выбросить логику, которая пропускает перечитывание, то получаем бесконечную рекурсию в snd_config_searcha_hooks().

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

Разобрался, сейчас причесываю патч

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

Для исправления бага, надо пересобрать alsa-lib с этим патчем:

https://bugs.freedesktop.org/attachment.cgi?id=123387

Осторожно - этот патч заведомо вызовет крах глючных приложений в момент запуска. Под глючными тут подразумеваются приложения, которые и так падают, если .asoundrc меняется, когда они запущены.

Если требуется помощь в пересборке, можете обращаться в личку.

XMPP: patrakov@gmail.com

HTML5-видеочат: https://appear.in/alexander-patrakov (буду доступен в течение ~4 часов с этого момента)

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

Насколько я понимаю, процедура для тестирования такая. Результат - точная копия официального дебиановского пакета, но с моим патчем.

su -c "apt-get install build-essential fakeroot"
su -c "apt-get build-dep libasound2"

wget http://http.debian.net/debian/pool/main/a/alsa-lib/alsa-lib_1.0.28.orig.tar.bz2
wget http://http.debian.net/debian/pool/main/a/alsa-lib/alsa-lib_1.0.28-1.debian.tar.xz
wget -O fix-bug-54029.patch https://bugs.freedesktop.org/attachment.cgi?id=123387

tar xf alsa-lib_1.0.28.orig.tar.bz2
cd alsa-lib-1.0.28
tar xf ../alsa-lib_1.0.28-1.debian.tar.xz
cp ../fix-bug-54029.patch debian/patches
echo "fix-bug-54029.patch" >> debian/patches/series

fakeroot debian/rules binary

su -c "dpkg -i ../libasound2_1.0.28-1_amd64.deb"
su -c "apt-mark hold libasound2"
AEP ★★★★★
()
Ответ на: комментарий от AEP

Пересобрал alsa-lib с вашим патчем, установил получившийся .deb пакет, но баг остался всё тот же, никаких изменений не произошло. Помогают только killall pulseaudio и перезагрузка.

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

В логе пересборки нет ничего про применение моего патча. Прошу стереть каталог alsa-lib-1.0.28 и пройтись по инструкции заново. Нужен лог от шага про fakeroot debian/rules binary (который не эквивалентен dh binary --with autoreconf).

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

Прошу прощения за неправильную инструкцию. Перед fakeroot debian/rules binary забыта еще одна команда:

dpkg-source --before-build .
AEP ★★★★★
()
Ответ на: комментарий от LeslieBurke

Плохая новость: патч зарезали.

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