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?

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

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

Также спикер-тест больше не работает. Это жалуется на занятый ресурс:

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 "Простое управление" для звукового устройства:

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" должно сработать. Эта просьба занимает много времени.,, ладно, спикер-тест снова работает!

но 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, установите его mixer_type и / или mixer_device. (Если на устройстве нет используемых элементов управления микшером, вам может потребоваться использовать программный микшер.)

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

Другие вопросы по тегам