alsamixer trava com meu arquivo asound.conf, mas fica bem sem ele

alsamixer trava com meu arquivo asound.conf, mas fica bem sem ele

Estou tendo um problema peculiar com o alsamixer. Eu tenho este arquivo asound.conf que executa um remapeamento de canal para meu 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
}

Se eu executar o alsamixer sem argumentos de linha de comando e o arquivo asound.conf acima, o alsamixer travará com a mensagem de erro não tão ú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

Se eu excluir o arquivo asound.conf, o alsamixer funcionará perfeitamente.

Infelizmente, preciso do remapeamento do canal para que o mpd funcione.

Existe uma maneira de remapear o canal e não travar o alsamixer?

Para sua informação: se eu especificar o dispositivo USBStreamer, o alsamixer funciona bem. Infelizmente, parece que o mpd não é tão específico quando chama o alsamixer.

editar: Se eu apagar o bloco ctl.!default do asound.conf e reiniciar o alsa, o alsamixer funcionará bem sem especificar um dispositivo. . . mpdachaestá tocando também, mas nenhum ruído sai dos meus alto-falantes. Acho que aquele bloco ctl.!default estava fazendo algo importante.

Além disso, o teste de alto-falante não está mais funcionando. Está reclamando de um 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

Aqui está minha parte audio_output de /etc/mpd.conf

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

Embora isso seja periférico ao meu problema, achei o arquivo asound.conf um pouco feio. Meu entendimento dos arquivos de configuração do ALSA é rudimentar, mas acredito que seja equivalente ao acima (com a parte ctl.!default apagada):

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

Aqui está o amixer de "controles simples" para o dispositivo de som:

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

Ah! Parece que talvez o mpd esteja usando ALSA e é por isso que não consigo fazer o teste do alto-falante:

 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 o mpd está congelado. As solicitações para mpc demoram uma eternidade e resultam em mensagens de erro como:

mpc
mpd error: Timeout

Então eu preciso matar o mpd um pouco. . . vamos ver se consigo fazer isso. Acredito que um "sudo service mpd stop" deve resolver o problema. Esse pedido está demorando muito. . . ok, o teste do alto-falante está funcionando novamente!

mas o mplayer não está funcionando:

[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

Ok, eu consertei isso com os argumentos do mplayer "ao=alsa:device=default" isso diz para ele usar o dispositivo padrão remapeado asound.conf.

A seguir, mpd. É bom estar progredindo.

Eu configurei o mpd para usar o dispositivo ALSA padrão (não hw:USBStreamer) para que o remapeamento do canal seja feito. Reinicie o mpd e ele funcionará perfeitamente novamente.

Obrigado, problema resolvido.

Responder1

Esqueça esse ctldispositivo; para configurar o mixer mpd, defina seutipo_misturadore/oudispositivo_misturador. (Se o dispositivo não tiver controles de mixer utilizáveis, talvez seja necessário usar o mixer de software.)

O erro de ocupado é causado por algum outro programa (provavelmente) PulseAudio abrindo o dispositivo. (Você pode verificar o PID em /proc/asound/cardX/pcm0p/sub0/status.)

informação relacionada