alsamixer вылетает с моим файлом asound.conf, но без него все нормально

alsamixer вылетает с моим файлом asound.conf, но без него все нормально

У меня возникла странная проблема с alsamixer. У меня есть файл asound.conf, который выполняет переназначение каналов для моего устройства "USBStreamer":

pcm.usbSTR {
  type hw
  card USBStreamer
  device 0
}

pcm.usbREMAP {
  type plug
  slave.pcm usbSTR
  ttable.0.8 1
  ttable.1.9 1
}

pcm.!default {
  type plug
  slave.pcm usbREMAP
}

ctl.!default {
  type plug
  slave.pcm usbREMAP
}

Если я запускаю alsamixer без аргументов командной строки и с указанным выше файлом asound.conf, alsamixer аварийно завершает работу с не очень полезным сообщением об ошибке:

ALSA lib dlmisc.c:254:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib/i386-linux-gnu/alsa-lib/libasound_module_ctl_plug.so
cannot open mixer: No such device or address

Если я удаляю файл asound.conf, alsamixer работает отлично.

К сожалению, для работы mpd мне необходимо переназначение каналов.

Есть ли способ переназначить каналы и не допустить сбоя alsamixer?

FYI: если я указываю устройство USBStreamer, alsamixer работает нормально. К сожалению, похоже, что mpd не так конкретен, когда вызывает alsamixer.

правка: если я удалю блок ctl.!default из asound.conf и перезапущу alsa, alsamixer запустится нормально без указания устройства... mpdдумаетон играет через alsa, но из моих динамиков не доносится никакого шума. Я думаю, что блок ctl.!default делал что-то важное.

Также speaker-test больше не работает. Он жалуется на загруженный ресурс:

speaker-test -c 10 -t sin -D plughw:USBStreamer

speaker-test 1.1.0

Playback device is plughw:USBStreamer
Stream parameters are 48000Hz, S16_LE, 10 channels
Sine wave rate is 440.0000Hz
Playback open error: -16,Device or resource busy

Вот моя часть audio_output в /etc/mpd.conf

audio_output {
type "alsa"
name "USB Streamer - LX521.4"
device "hw:USBStreamer,0"
}

Хотя это и не имеет отношения к моей проблеме, я нашел этот файл asound.conf немного уродливым. Мое понимание файлов конфигурации ALSA рудиментарно, но я считаю, что это эквивалентно вышеприведенному (с удаленной частью ctl.!default):

pcm.!default {
  type plug
  slave.pcm {
    type hw
    card USBStreamer
    device 0
    }
   ttable {
    0.8 1
    1.9 1
  }
}

Вот «простое управление» микшером для звукового устройства:

amixer -D hw:USBStreamer scontrols
Simple mixer control 'Mic',0
Simple mixer control 'Mic',1
Simple mixer control 'USBStreamer Clock Selector',0
Simple mixer control 'USBStreamer Output',0
Simple mixer control 'USBStreamer Output',1

Ага! Похоже, что mpd использует ALSA, и поэтому я не могу провести тест динамика:

 sudo fuser -v /dev/snd/*
[sudo] password for rybu: 
                     USER        PID ACCESS COMMAND
/dev/snd/controlC0:  mpd         935 F.... mpd
/dev/snd/pcmC1D0p:   mpd         935 F...m mpd

Похоже, что mpd заморожен. Запросы к mpc длятся вечно и приводят к сообщениям об ошибках типа:

mpc
mpd error: Timeout

Так что мне нужно убить mpd на некоторое время... посмотрим, смогу ли я это сделать. Я думаю, что "sudo service mpd stop" должно сработать. Этот запрос занимает много времени... ладно, speaker-test снова работает!

но mplayer не работает:

[AO_ALSA] alsa-lib: pcm.c:2135:(snd_pcm_open_conf) type is not defined
[AO_ALSA] Playback open error: No such file or directory
Failed to initialize audio driver 'alsa'
[AO SDL] Samplerate: 44100Hz Channels: Stereo Format s16le
[AO SDL] using aalib audio driver.
[AO SDL] Unable to open audio: 
Failed to initialize audio driver 'sdl:aalib'
Could not open/initialize audio device -> no sound.
Audio: no sound

Хорошо, я исправил это с помощью аргументов mplayer "ao=alsa:device=default", которые сообщают ему, что нужно использовать переназначенное в asound.conf устройство по умолчанию.

Далее, mpd. Приятно чувствовать прогресс.

Я настроил mpd на использование устройства ALSA по умолчанию (не hw:USBStreamer), чтобы переназначение каналов было выполнено. Перезапустите mpd, и он снова отлично работает.

Спасибо, проблема решена.

решение1

Забудьте об этом ctlустройстве; чтобы настроить микшер mpd, установите еготип_миксераи/илимикшер_устройство(Если устройство не имеет пригодных для использования элементов управления микшером, вам может потребоваться использовать программный микшер.)

Ошибка занятости вызвана какой-то другой программой (вероятно) PulseAudio, открывающей устройство. (Вы можете проверить PID в /proc/asound/cardX/pcm0p/sub0/status.)

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