Eu tenho um raspberry pi 3 com usb dac para conectar meu microfone e também tenho um alto-falante USB.
Eu instalei no meu pi, mopidy e outro pequeno projeto.
Eu modifiquei meu ~/.asoundsrc
para
pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:1,0" } capture.pcm { type plug slave.pcm "hw:0,0" } }
Tudo funciona e quando eu reinicializo, tenho uma nova configuração adicionada no final do meu .asoundrc
arquivo
pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:1,0" } capture.pcm { type plug slave.pcm "hw:0,0" } } pcm.!default { type hw card 2 } ctl.!default { type hw card 2 }
Com esta modificação, meu pequeno projeto não funciona, devo excluir
pcm.!default { type hw card 2 } ctl.!default { type hw card 2 }
Você sabe por que, esta configuração é adicionada a cada reiniciar?
Talvez isso, você pode me ajudar a me ajudar 🙂
cat /proc/asound/modules 0 snd_usb_audio 1 snd_usb_audio 2 snd_bcm2835
Obrigado
Comentários
Resposta
Desfazer o que pedi para você fazer. Depois disso, reinicie. Assim que seu RPi estiver de volta, vamos criar um arquivo:
sudo nano /etc/asound.conf
Nesse arquivo, coloque-o nele:
pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:1,0" } capture.pcm { type plug slave.pcm "hw:0,0" } }
Depois de terminar, salve o arquivo e reinicie.
Comentários
- Obrigado Jason, mas não. ninguém mudou Eu já
pcm.!default
ectl.!default
Tento excluir/home/pi/.asoundrc
mas pcm et ctl voltar sem minha configuração em/etc/asound.conf
Resposta
O A maneira como resolvi esse problema foi executar sudo raspi-config
, ir para Opções avançadas e, em seguida, Áudio. Isso foi definido como Automático. Quando mudei essa opção para “Forçar entrada de fone de ouvido de 3,5 mm”, parei de sobrescrever meu arquivo .asoundrc na reinicialização.
Comentários
- Tentei fazer isso, algo ainda sobrescreve meu
.asoundrc
arquivo a cada inicialização.
Resposta
Este é um problema antigo que reaparece regularmente, mais recentemente após uma atualização para o kernel e firmware mais recentes, para Raspian Stretch , 4.14.30-v7+
.
Parece que pode ter algo a ver com a forma como Raspberry Pi “s estão usando os serviços systemd ao inicializar e encerrar e como os daemons e serviços ALSA foram configurados inicialmente (ou após a atualização do sistema). Meu melhor palpite é que os scripts de pós-instalação para algo não estão reconhecendo que você já tem um arquivo /home/pi/.asoundrc
e então tenta restaurá-lo para algum padrão. Não está claro de onde vem esse padrão. Certamente não o que está escrito nos comentários de muitos arquivos de configuração de ALSA ou de serviços do sistema ou páginas de manual relacionadas. Mas parece ser proveniente de um bug no miniaplicativo de volume lxpanels.
No meu caso, o o seguinte parece ter resolvido o problema:
- primeiro remova o miniaplicativo de volume do lxpanel e, em seguida:
# Make sure your .asoundrc is correct, then do: alsactl kill save_and_quit sudo shutdown now
PS. Também parece importante usar desligamento , e não reinicialização !
Tentativas de depuração
Se o acima não funcionar, então leia isto.
Como um lado, parece haver um bug em como systemctl está lidando com serviços. O FS no pi é diferente (por falta de partes) de outros sistemas baseados em Debian, portanto, onde os scripts de serviço estão localizados e gerenciados não é totalmente de acordo com suas próprias páginas de manual.
Para ver os serviços relevantes relacionados ao ALSA , faça:
sudo systemctl status alsa-restore alsa-state
Em circunstâncias normais, você deve ser capaz de desligar os serviços estáticos suspeitos por algo como:
sudo systemctl mask --system alsa-state.service --now sudo systemctl mask --system alsa-restore.service --now
No entanto, os locais de tempo de execução de [system,user,runtime, global]
que são:
/etc/systemd/system-preset/*.preset /run/systemd/system-preset/*.preset /lib/systemd/system-preset/*.preset /etc/systemd/user-preset/*.preset /run/systemd/user-preset/*.preset /usr/lib/systemd/user-preset/*.preset
não são respeitados conforme descrito em man systemd.preset
.
Para ver todos os serviços e seu estado atual, use:
systemctl list-unit-files -t service -all
Você também pode inverter as dependências com:
systemctl list-dependencies --reverse alsa-restore.service alsa-restore.service ● └─basic.target ● └─multi-user.target ● └─graphical.target
Em qualquer caso, ao desativar o serviço com mask
, ele deve substituir o arquivo por um link simbólico para /dev/null
, apenas que isso não “aconteça no lugar certo (conforme acima). Em vez disso, temos que remover o arquivo manualmente (fazer backup antes) e, em seguida, criar o link.
cp /etc/systemd/system/alsa-restore.service ~/alsa-restore_service.bak cd /etc/systemd/system/ sudo rm alsa-restore.service sudo ln -s /dev/null alsa-restore.service # It should look something like: ls -al /lib/systemd/system |grep alsa lrwxrwxrwx 1 root root 9 Apr 25 13:23 alsa-restore.service -> /dev/null lrwxrwxrwx 1 root root 9 Apr 25 13:26 alsa-state.service -> /dev/null lrwxrwxrwx 1 root root 9 Jan 23 2017 alsa-utils.service -> /dev/null
Agora certifique-se de repetir o acima também para alsa-state.service
, e os mesmos arquivos no diretório: /lib/systemd/system/
se ainda não estiver lá.
AVISO LEGAL
O acima provavelmente não é a maneira correta de fazer isso, portanto, considere isso como uma solução bastante experimental até que o bug do bug seja resolvido. É muito provável que ele interrompa totalmente a funcionalidade ALSA.
Resposta
Eu resolvi uma situação semelhante atualizando o ambiente Raspberry pi. as etapas são:
- Faça backup de seus dados do Raspberry pi
- verifique sua versão atual $ uname -a
- atualize as informações do pacote $ sudo apt-get atualizar
- atualizar pacotes instalados $ sudo apt-get upgrade
- atualizar para a distribuição mais recente $ sudo apt-get dist-upgrade
- atualizar raspberry pi firm ware $ sudo rpi-update
- reboot $ sudo reboot
- verifique sua última versão $ uname -a
Depois disso, no meu Raspberry pi foi resolvido tal como “.asoundrc modificado foi reescrito após a reinicialização”. A versão do NOOBS foi atualizada para 2.8.1 em 24/04/2018. Na minha opinião, era uma espécie de Bug ALSA porque tentei e falhei e reuni algumas informações sobre esse fenômeno.
Resposta
Ok, então eu tive um problema semelhante, eu estava conectando ao meu Pi com um alto-falante bluetooth, se o alto-falante não estivesse ligado antes de eu inicializar, ele redefiniria o arquivo .asoundrc. Tão irritante. Eu tentei todos os itens acima, então pensei: se eu apenas definir as configurações corretas e torná-las somente leitura. Estranhamente, isso funcionou. Tudo que fiz foi: sudo chmod 0444 ./.asoundrc e pronto. Tudo está bem agora.
Comentários
- Funcionou para mim no Raspbian Stretch. Estranho que a configuração de permissões funcione, pois eu teria pensado que era o sistema (ou seja, root) alterando o arquivo.
- Embora agora esteja recebendo o erro abaixo ao chamar pyaudio. As coisas ainda parecem estar funcionando. ” Expressão ‘ alsa_snd_pcm_hw_params_set_period_size_near (pcm, hwParams, &, & dir) ‘ falhou em ‘ src / hostapi / alsa / pa_linux_alsa.c ‘, linha: 924 ”
Resposta
Se você alterar o dispositivo de áudio padrão no menu> preferências> Configurações do dispositivo de áudio> Placa de som, selecione Placa de som> torne padrão seu arquivo ~ / .asoundrc será alterado
Comentários
- Este parece ser o meu problema. Substituição de .asoundrc na reinicialização com Stretch. Alguma ideia em que eu possa ‘ desfazer ‘ a marcação desta caixa para que o sistema não substitua mais?
pcm.!default
ectl.!default
não ‘ não tenha o cartão 2, mas o cartão 0.