asoundrc-ul meu este modificat la fiecare repornire

Am un raspberry pi 3 cu USB dac pentru conectarea microfonului și am și un speacker USB.

Am instalat pe proiectul meu pi, mopidy și altul.

Mi-am modificat ~/.asoundsrc pentru

pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:1,0" } capture.pcm { type plug slave.pcm "hw:0,0" } } 

Totul funcționează și când repornesc am adăugat o nouă configurație la sfârșitul fișierului meu .asoundrc

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 } 

Cu această modificare, micul meu proiect nu funcționează, trebuie să șterg

pcm.!default { type hw card 2 } ctl.!default { type hw card 2 } 

Știți de ce, această configurație este adăugată la fiecare repornește?

Poate asta, te poți ajuta să mă ajuți 🙂

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

Mulțumesc

Comentarii

  • Doar pentru testare, aș dori să încercați acest lucru. Vom dezactiva sunetul integrat. Pentru aceasta, tastați acest lucru în terminalul dvs.: sudo nano / boot / config.txt Pagină până în partea de jos a fișierului și căutați două rânduri care citesc: # Activați sunetul (încarcă snd_bcm2835) dtparam = audio = on Plasați un (semn de lire #) în fața liniei care citește: dtparam = audio = on Pentru a arăta ca: # dtparam = audio = on Apăsați CTRL + x și apoi apăsați Enter pentru a vă salva fișierul. De asemenea, va trebui să reporniți. Ceea ce vrem să știm este dacă există un conflict cu USB-ul audio și cu bordul. Noroc!
  • Salut Vă mulțumim pentru răspuns și ajutor. modificarea dvs. nu îmi rezolvă problema ‘, dar acum când repornesc pcm.!default și ctl.!default nu ‘ nu aveți cardul 2, dar cardul 0.

Răspundeți

Anulați ceea ce v-am rugat să faceți. După aceea, reporniți. Odată ce RPi-ul tău este salvat, să creăm un fișier:

sudo nano /etc/asound.conf 

În acel fișier, plasează-l în acesta:

pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:1,0" } capture.pcm { type plug slave.pcm "hw:0,0" } } 

După ce ați terminat, salvați fișierul, apoi reporniți.

Comentarii

  • Mulțumesc Jason, dar nu. nimeni nu schimbare Am deja pcm.!default și ctl.!default încerc să șterg /home/pi/.asoundrc dar pcm et ctl reveniți fără configurarea mea în /etc/asound.conf

Răspundeți

modul în care am rezolvat această problemă a fost să rulez sudo raspi-config apoi să merg la Opțiuni avansate și apoi Audio. Aceasta a fost setată la Auto. Când am schimbat această opțiune la „Forțare mufă pentru căști de 3,5 mm”, oprit suprascrierea fișierului meu .asoundrc la repornire.

Comentarii

  • Am încercat acest lucru, ceva încă îmi suprascrie .asoundrc înregistrează fiecare boot.

Răspuns

Aceasta este o problemă veche care reapariți în mod regulat, cel mai recent după un upgrade la cel mai recent kernel și firmware, pentru Raspian Stretch , 4.14.30-v7+.

Se pare că ar putea avea ceva de-a face atât cu modul în care Raspberry Pi utilizează serviciile systemd când pornește și închide și cum au fost configurate inițial demonii și serviciile ALSA (sau după actualizarea sistemului). Cea mai bună presupunere a mea este că scripturile post-instalare pentru ceva nu recunoaște că aveți deja un fișier /home/pi/.asoundrc și apoi încearcă să îl restabiliți la o anumită valoare implicită. Nu este clar de unde provine această valoare implicită. Cu siguranță nu ceea ce este scris în comentariile multor fișiere de configurare ALSA sau servicii de sistem sau pagini de manevră conexe. Dar se pare că provine dintr-o eroare din applet-ul volumului lxpanels.

În cazul meu, următoarele se pare că au rezolvat problema:

  • Mai întâi eliminați appletul de volum din lxpanel , apoi:
 # Make sure your .asoundrc is correct, then do: alsactl kill save_and_quit sudo shutdown now  

PS. De asemenea, pare important să utilizați shutdown și nu reboot !


Încercări de depanare

Dacă cele de mai sus nu funcționează, atunci citiți acest lucru.

Ca parte, se pare că există o eroare în modul în care systemctl gestionează serviciile. FS-ul din pi este diferit (în funcție de părțile lipsă) de alte sisteme bazate pe Debian, deci acolo unde scripturile de serviciu sunt localizate și gestionate nu sunt pe deplin conform propriilor sale pagini man. , faceți:

sudo systemctl status alsa-restore alsa-state 

În circumstanțe normale, ar trebui să puteți închide serviciile statice suspectate prin ceva de genul:

sudo systemctl mask --system alsa-state.service --now sudo systemctl mask --system alsa-restore.service --now 

Cu toate acestea, locațiile de rulare ale [system,user,runtime, global] care sunt:

/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 

nu sunt respectate așa cum este descris în man systemd.preset.
Pentru a vedea toate serviciile și starea lor actuală, utilizați:

systemctl list-unit-files -t service -all 

Puteți, de asemenea, să depășiți dependențele cu:

systemctl list-dependencies --reverse alsa-restore.service alsa-restore.service ● └─basic.target ● └─multi-user.target ● └─graphical.target 

În orice caz, atunci când dezactivați serviciul cu mask, acesta ar trebui să înlocuiască fișierul cu un link simbolic către /dev/null, doar că acest lucru nu se întâmplă la locul potrivit (conform celor de mai sus). Deci, în schimb, trebuie să eliminăm fișierul manual (să-l facem înainte) și apoi să creăm linkul.

 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  

Acum asigurați-vă că repetați cele de mai sus și pentru alsa-state.service și aceleași fișiere din director: /lib/systemd/system/ dacă nu există deja.

DISCLAIMER

Cel mai sus nu este cel mai bun mod de a face acest lucru, așa că vă rugăm să considerați acest lucru ca o soluție foarte experimentală până când rezolvarea acestui buggy va fi rezolvată. Este posibil să vă întrerupă funcționalitatea ALSA.

Răspundeți

Am rezolvat situații similare prin actualizarea mediului Raspberry pi. pașii sunt,

  • Faceți o copie de rezervă a datelor din Raspberry pi
  • verificați versiunea curentă $ uname -a
  • actualizați informațiile despre pachet $ sudo apt-get actualizați
  • actualizați pachetele instalate $ sudo apt-get upgrade
  • actualizați la cea mai recentă distribuție $ sudo apt-get dist-upgrade
  • actualizați raspberry pi firm ware $ sudo rpi-update
  • reboot $ sudo reboot
  • verificați ultima versiune $ uname -a

După aceea, pe Raspberry pi a fost rezolvat astfel ca „modificat .asoundrc a fost rescris după repornire”. Versiunea NOOBS a fost actualizată la 2.8.1 pe 24-4-2018. Doar părerea mea, că a fost un fel de bug ALSA, deoarece am încercat și am eșuat și am adunat câteva informații despre fenomenul respectiv.

Răspuns

deci am avut o problemă similară, mă conectam la Pi cu un difuzor bluetooth, dacă difuzorul nu era pornit înainte de a porni, ar fi setat din nou fișierul .asoundrc. Atât de iritant. Am încercat toate cele de mai sus, apoi m-am gândit dacă aș seta setările corecte, apoi să le fac doar citire. În mod ciudat, acest lucru a funcționat. Tot ce am făcut a fost: sudo chmod 0444 ./.asoundrc și asta este. Totul este bine acum.

Comentarii

  • Acest lucru a funcționat pentru mine pe Raspbian Stretch. Ciudat că setarea permisiunilor funcționează, aș fi crezut că este sistemul (adică rădăcină) care schimbă fișierul.
  • Deși acum primesc eroarea de mai jos când apelez pyaudio. Lucrurile încă par să funcționeze totuși. ” Expresie ‘ alsa_snd_pcm_hw_params_set_period_size_near (pcm, hwParams, & alsaPeriod & dir) ‘ a eșuat în ‘ src / hostapi / alsa / pa_linux_alsa.c ‘, line: 924 ”

Răspuns

Dacă schimbați dispozitivul audio implicit din meniu> preferințe> Setări dispozitiv audio> Placă de sunet selectați Placă de sunet> setați implicit fișierul dvs. ~ / .asoundrc va fi schimbat

Comentarii

  • Aceasta pare a fi problema mea. Suprascrieți .asoundrc la repornire cu Stretch. Orice idei în care pot ‘ anula ‘ verificarea acestei casete, astfel încât sistemul să nu mai fie suprascris?

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *