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
.)