
Tengo un problema peculiar con alsamixer. Tengo este archivo asound.conf que realiza una reasignación de canales para mi dispositivo "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
}
Si ejecuto alsamixer sin argumentos de línea de comandos y el archivo asound.conf anterior, alsamixer falla y muestra el mensaje de error no tan útil:
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
Si elimino el archivo asound.conf, alsamixer funciona perfectamente.
Desafortunadamente, necesito la reasignación de canales para que mpd funcione.
¿Hay alguna manera de reasignar canales y evitar que alsamixer falle?
Para su información: si especifico el dispositivo USBStreamer, alsamixer funciona bien. Desafortunadamente, parece que mpd no es tan específico cuando llama a alsamixer.
editar: si borro el bloque ctl.!default de asound.conf y reinicio alsa, alsamixer funciona bien sin especificar un dispositivo. . . mpdpiensaSe reproduce a través de Alsa, pero mis parlantes no emiten ningún ruido. Creo que ese bloque ctl.!default estaba haciendo algo importante.
Además, la prueba de altavoz ya no funciona. Se queja de un recurso ocupado:
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
Aquí está mi parte audio_output de /etc/mpd.conf
audio_output {
type "alsa"
name "USB Streamer - LX521.4"
device "hw:USBStreamer,0"
}
Aunque esto es periférico a mi problema, encontré que el archivo asound.conf es un poco feo. Mi comprensión de los archivos de configuración de ALSA es rudimentaria, pero creo que esto es equivalente a lo anterior (con la parte ctl.!default borrada):
pcm.!default {
type plug
slave.pcm {
type hw
card USBStreamer
device 0
}
ttable {
0.8 1
1.9 1
}
}
Aquí están los "controles simples" de amixer para el dispositivo de sonido:
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
¡Ajá! Parece que quizás mpd esté usando ALSA y es por eso que no puedo hacer la prueba de altavoz:
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
Parece que mpd está congelado. Las solicitudes a mpc tardan una eternidad y generan mensajes de error como:
mpc
mpd error: Timeout
Entonces necesito matar a mpd por un tiempo. . . veamos si puedo hacer eso. Creo que una "parada de mpd del servicio Sudo" debería funcionar. Esa petición está tardando mucho. . . Bien, ¡la prueba de altavoz está funcionando nuevamente!
pero mplayer no funciona:
[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
Bien, arreglé eso con los argumentos de mplayer "ao=alsa:device=default", esto le indica que use el dispositivo predeterminado reasignado asound.conf.
A continuación, mpd. Se siente bien estar progresando.
Configuré mpd para usar el dispositivo ALSA predeterminado (no hw:USBStreamer) para que se realice la reasignación de canales. Reinicie mpd y vuelve a funcionar perfectamente.
Gracias, problema resuelto.
Respuesta1
Olvídate de ese ctl
dispositivo; para configurar el mezclador mpd, configure sutipo_mezcladory/odispositivo_mezclador. (Si el dispositivo no tiene controles de mezclador utilizables, es posible que necesite utilizar el mezclador de software).
El error de ocupado se debe a que algún otro programa (probablemente) PulseAudio abre el dispositivo. (Puedes comprobar el PID en /proc/asound/cardX/pcm0p/sub0/status
.)