meu asoundrc é modificado a cada reinicialização

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

  • Apenas para teste, gostaria que você experimentasse. Vamos desativar o áudio integrado. Para fazer isso, digite no seu terminal: sudo nano / boot / config.txt Vá até o final do arquivo e procure duas linhas que dizem: # Habilitar áudio (carrega snd_bcm2835) dtparam = audio = on Coloque um (cerquilha #) na frente da linha que diz: dtparam = audio = on Para se parecer com: # dtparam = audio = on Pressione CTRL + xe pressione Enter para salvar seu arquivo. Além disso, você precisará reiniciar. O que queremos saber é se há um conflito entre o áudio USB e o onboard. Boa sorte!
  • Olá, obrigado pela sua resposta e ajuda. sua modificação não ‘ resolve meu problema, mas agora, quando eu reiniciar pcm.!default e ctl.!default não ‘ não tenha o cartão 2, mas o cartão 0.

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 e ctl.!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?

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *