alsamixer falla con mi archivo asound.conf, pero está bien sin él

alsamixer falla con mi archivo asound.conf, pero está bien sin él

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

información relacionada