alsamixer falha com meu arquivo asound.conf, mas está bem sem ele

0

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

Infelizmente, eu preciso do remapeamento do canal para o mpd funcionar.

Existe uma maneira de ter remapeamento de canal e não ter falha de alsamixer?

FYI: se eu especificar o dispositivo USBStreamer, o alsamixer é executado corretamente. Infelizmente parece que o mpd não é tão específico quando chama o alsamixer.

edit: Se eu apagar o bloco ctl.! default do asound.conf, e reiniciar o alsa, o alsamixer é executado sem especificar um dispositivo. . . O mpd pensa que está tocando através do alsa, mas nenhum barulho sai dos meus alto-falantes. Eu acho que o bloco default ctl.! 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 do /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 isso seja equivalente ao acima (com a parte padrão ctl.! Apagada):

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

Aqui está o amixer "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

Aha! Parece que talvez o mpd esteja usando o ALSA e é por isso que não posso 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. Solicitações para que o mpc demore para sempre e resultem em mensagens de erro como:

mpc
mpd error: Timeout

Então eu preciso matar o mpd um pouco. . . vamos ver se consigo fazer isso. Eu acredito que um "serviço sudo mpd stop" deve fazer o truque. 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 que com os argumentos do mplayer "ao = alsa: device = default" isto diz para usar o dispositivo padrão remapeado asound.conf.

Em seguida, o mpd. É bom estar progredindo.

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

Obrigado, problema resolvido.

    
por Ryan Budney 26.01.2018 / 10:05

1 resposta

1

Esqueça esse ctl device; para configurar o mixer do mpd, defina seu mixer_type e / ou mixer_device . (Se o dispositivo não tiver controles de mixer utilizáveis, talvez seja necessário usar o mixer de software).

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

    
por CL. 26.01.2018 / 21:18