Como faço para configurar meu som para Jasper no Raspbian Jessie?

19

Estou usando o Raspbian Jessie (21/11/2015) para executar o Jasper (ramificação mestre) no Raspberry Pi 2 Modelo B. As instruções de instalação na documentação parecem ser para o Wheezy e não para Jessie.

Executar o Jasper no Wheezy funciona bem. Mas, em Jessie, tive problemas para configurar o som. Meu microfone funcionou, mas não o alto-falante ou vice-versa.

O que precisa ser feito é que a placa de som padrão deve estar definida como USB, pois é aí que meu microfone USB está conectado e o Jasper exige isso. Existem muitas respostas que falam sobre a configuração do ALSA via ~/.asoundrc, /etc/asound.confe mesmo assim /usr/share/alsa/alsa.confnenhuma delas funcionou para mim.

Quando abro meu mixer via alsamixere bato F6, sempre vejo bcm2835como o cartão padrão. Esse é o cartão padrão do Pi2, mas eu quero fazer do meu USB o cartão padrão.

Como eu faço isso?

Housni
fonte

Respostas:

25

De acordo com o Wiki da ALSA , com o título " Como escolher um pedido específico para várias placas instaladas ", ele afirma o seguinte:

Qual cartão é o número 0, 1 e, por padrão, é determinado pela ordem de carregamento do módulo. Isso é particularmente útil para escolher qual cartão se torna o padrão.

Portanto, em teoria, é possível escolher qual das várias placas instaladas se torna a placa 0, a padrão, garantindo que o módulo do driver seja carregado primeiro. (Nota: isso pressupõe que cada placa de som exija um driver diferente. Se você tiver duas placas de som do mesmo tipo, pule para a próxima seção.)

Há duas maneiras de conseguir isso: o índice "antigo" = opção do módulo de driver da placa e os slots alternativos (e novos) = opção do módulo snd.

Ele documenta dois métodos para fazer isso:

  1. O método "index =" mais antigo
  2. O novo método "slots ="

O primeiro é o que as instruções de instalação do Jasper recomendam. É também sobre o que a maioria das soluções por aí fala. No entanto, esse é o método mais antigo e pode não funcionar em imagens mais atuais do Raspbian Jessie.

Uma combinação dos dois métodos é o que funcionou para mim.

Primeiro, verifique em qual ordem seus cartões foram carregados:

$ cat /proc/asound/modules
 0 snd_bcm2835
 1 snd_usb_audio

A contagem dos cartões começa a partir de 0modo que o padrão bcm2835é carregado primeiro e meu cartão USB que contém o meu microfone é carregado depois.

Para reordenar meus cartões, primeiro criei um arquivo chamado /etc/modprobe.d/alsa-base.conf. Pode ser nomeado como quiser, desde que termine .conf. Adicionei o seguinte:

# This sets the index value of the cards but doesn't reorder.
options snd_usb_audio index=0
options snd_bcm2835 index=1

# Does the reordering.
options snd slots=snd_usb_audio,snd_bcm2835

Os comentários devem explicar o que cada linha faz. Depois de fazer isso, parece que você precisa reiniciar sua máquina para que ela funcione.

Depois de reiniciar, você poderá gravar algum áudio com a placa padrão, que agora deve ser o seu microfone:

$ arecord temp.wav

e, em seguida, reproduza-o, especificando o cartão como 1 e o dispositivo como 0, onde deve estar a saída do alto-falante:

aplay -D plughw:1,0 temp.wav

Inicialmente, apenas adicionei a linha slotsnela. Isso funcionou para tornar meu cartão USB o cartão padrão, mas foi indexado incorretamente. Por exemplo, depois de fazer isso, é assim que me /proc/asound/modulespareço:

$ cat /proc/asound/modules
 1 snd_usb_audio
 2 snd_bcm2835

Idealmente, deve ficar assim:

 0 snd_usb_audio
 1 snd_bcm2835

E é por isso que eu também uso o indexmétodo para conseguir isso.

Housni
fonte
Que bom que ajudou :) Vou ter um script de configuração do bash, bem como um livro de receitas do Chef para fazer tudo isso em alguns dias, na minha conta do Github (link no meu perfil).
Housni
snd_usb_audioInfelizmente, tenho dois dispositivos chamados .
Kleinfreund
@Housni Você já fez esse script?
Not2qubit
0

Depois de tentar depurar os problemas da alsa para este projeto e colocar os dois alto-falantes do microfone usb e bcm2835 funcionando, acho que há um problema básico com o qual todos os conselhos da ALSA que recebi não lidam.

O diretório / usr / share / alsa / cards não possui um arquivo bcm2835.conf. O arquivo de diretório / usr / share / alsa alsa.conf deixa muitos stubs que precisam ser especificados. A menos que um cartão para bcm2835 seja fornecido, a inicialização do Jasper.py exibe muitas mensagens de erro supostamente não fatais. Ao criar um arquivo bcm2835.conf, você pode se livrar das mensagens irritantes.

Parece-me que este é um bug da Jessie; realmente deve haver um arquivo que resolva essas mensagens de erro. Parece-me preguiçoso que o programador jessie que lida com a ALSA não tenha criado um que seja testado.

Não trabalhei em todas as mensagens de erro, mas suspeito que outras mensagens também sejam causadas por isso.

Outro caso de não ter uma versão madura é a falha na verificação de firmware antigo durante a inicialização. O firmware antigo no meu jessie resultou em uma área de trabalho que não respondia ao teclado ou mouse, que é um impedimento para o uso do jessie com o firmware antigo, a menos que você conheça ssh. Não é uma situação ingênua do usuário.

rchoppin
fonte
1
WRT "parece preguiçoso para o programador de jessie que lida com a ALSA não ter criado um que é testado", não se confunda em acreditar que o Debian 8, também conhecido como. jessie, a partir da qual o Raspbian é construído, destina-se principalmente ao Raspberry Pi e ao BCM2835 SoC. Este último representaria <1% dos usuários do Debian, então dificilmente pode ser considerado uma prioridade para eles. O fato de que um grupo de principalmente voluntários não querem trabalhar em um teclado de 25 horas / dia para ser tudo para todos não os torna preguiçosa ....
goldilocks
... Isso apenas indica que não há interesse suficiente das pessoas da comunidade com os conhecimentos técnicos necessários para realizar o trabalho.
goldilocks