il mio asoundrc viene modificato ad ogni riavvio

Ho un raspberry pi 3 con dac usb per collegare il microfono e ho anche un altoparlante usb.

Ho installato sul mio pi, mopidy e altri piccoli progetti.

Ho modificato il mio ~/.asoundsrc per

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

Tutto funziona e quando riavvio ho una nuova configurazione aggiunta alla fine del mio .asoundrc file

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 } 

Con questa modifica, il mio piccolo progetto non funziona, devo eliminare

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

Sai perché, questa configurazione viene aggiunta ogni riavviare?

Forse questo, puoi aiutarmi ad aiutarmi 🙂

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

Grazie

Commenti

  • Solo per testare, vorrei che provassi. Disattiveremo laudio integrato. Per farlo, digita questo nel tuo terminale: sudo nano / boot / config.txt Vai alla fine del file e cerca due righe che dicono: # Abilita audio (carica snd_bcm2835) dtparam = audio = on Posiziona un (cancelletto #) davanti alla riga che dice: dtparam = audio = on Per assomigliare a: # dtparam = audio = on Premi CTRL + x e poi premi Invio per salvare il tuo file. Inoltre, dovrai riavviare. Quello che vogliamo sapere è se cè un conflitto con laudio USB e lonboard. Buona fortuna!
  • Ciao, grazie per la tua risposta e aiuto. la tua modifica non ‘ risolve il mio problema ma, ora quando riavvio pcm.!default e ctl.!default don ‘ t avere la carta 2 ma la carta 0.

Risposta

Annulla quello che ti ho chiesto di fare. Dopodiché, riavvia. Una volta eseguito il backup del tuo RPi, creiamo un file:

sudo nano /etc/asound.conf 

In quel file, mettici dentro:

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

Una volta terminato, salva il file e riavvia.

Commenti

  • Grazie Jason ma no. nessuno cambia Ho già pcm.!default e ctl.!default cerco di eliminare /home/pi/.asoundrc ma pcm et ctl torna senza la mia configurazione in /etc/asound.conf

Rispondi

Il Il modo in cui ho risolto questo problema era eseguire sudo raspi-config, quindi andare su Opzioni avanzate e poi su Audio. Questo era impostato su Auto. Quando ho cambiato questa opzione in “Forza jack per cuffie da 3,5 mm” ho smesso di sovrascrivere il mio file .asoundrc al riavvio.

Commenti

  • Ho provato, qualcosa sovrascrive ancora il mio .asoundrc file ogni avvio.

Risposta

Questo è un vecchio problema che riemerge regolarmente, più recentemente dopo un aggiornamento allultimo kernel e firmware, per Raspian Stretch , 4.14.30-v7+.

Sembra che possa avere qualcosa a che fare sia con il modo in cui i Raspberry Pi stanno utilizzando i servizi systemd durante lavvio e con lo spegnimento e come i daemon e i servizi ALSA sono stati configurati inizialmente (o dopo laggiornamento del sistema). La mia ipotesi migliore è che gli script di post-installazione per qualcosa non riconoscano che hai già un file /home/pi/.asoundrc e quindi provi a ripristinarlo a un valore predefinito. Non è chiaro da dove provenga questo valore predefinito. Certamente non quello che è scritto nei commenti dei molti file di configurazione di ALSA o dei servizi di sistema o delle relative pagine man. Ma sembra provenire da un bug nellapplet del volume lxpanels.

Nel mio caso, il quanto segue sembra aver risolto il problema:

  • Rimuovi prima lapplet del volume dal lxpanel , quindi:
 # Make sure your .asoundrc is correct, then do: alsactl kill save_and_quit sudo shutdown now  

PS. Sembra anche importante utilizzare shutdown e non riavviare !


Tentativi di debug

Se quanto sopra non funziona, allora leggi questo.

Come lato, sembra che ci sia un bug nel modo in cui systemctl gestisce i servizi. LFS nel pi è diverso (per parti mancanti) da altri sistemi basati su Debian, quindi dove gli script di servizio sono localizzati e gestiti non è completamente conforme alle sue pagine man.

Per vedere i servizi relativi ad ALSA pertinenti , fai:

sudo systemctl status alsa-restore alsa-state 

In circostanze normali dovresti essere in grado di chiudere i servizi statici sospetti con qualcosa del tipo:

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

Tuttavia, le posizioni di runtime di [system,user,runtime, global] che sono:

/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 

non vengono rispettati come descritto in man systemd.preset.
Per vedere tutti i servizi e il loro stato corrente, utilizza:

systemctl list-unit-files -t service -all 

Puoi anche invertire le dipendenze con:

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

In ogni caso, disabilitando il servizio con mask, dovrebbe sostituire il file con un collegamento simbolico a /dev/null, solo che questo non accade nel posto giusto (secondo quanto sopra). Quindi invece dobbiamo rimuovere manualmente il file (eseguirne il backup prima) e quindi creare il collegamento.

 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  

Ora assicurati di ripetere quanto sopra anche per alsa-state.service e gli stessi file nella directory: /lib/systemd/system/ se non è già presente.

DISCLAIMER

Quanto sopra molto probabilmente non è il modo corretto di farlo questo, quindi per favore consideralo come una soluzione molto sperimentale fino a quando il problema non sarà stato risolto. Molto probabilmente potrebbe interrompere del tutto la tua funzionalità ALSA.

Risposta

Avevo risolto una situazione simile aggiornando lambiente Raspberry pi. i passaggi sono

  • Esegui il backup dei tuoi dati da Raspberry pi
  • controlla la tua versione corrente $ uname -a
  • aggiorna le informazioni sul pacchetto $ sudo apt-get aggiorna
  • aggiorna i pacchetti installati $ sudo apt-get upgrade
  • aggiorna allultima distribuzione $ sudo apt-get dist-upgrade
  • aggiorna raspberry pi firm ware $ sudo rpi-update
  • reboot $ sudo reboot
  • controlla la tua ultima versione $ uname -a

Dopodiché, sul mio Raspberry pi è stato risolto tale come “.asoundrc modificato è stato riscritto dopo il riavvio”. La versione NOOBS è stata aggiornata alla 2.8.1 il 24/04/2018. Solo la mia opinione, che era una specie di bug ALSA perché ho provato e fallito e ho raccolto alcune informazioni su quel fenomeno.

Risposta

Ok, quindi ho avuto un problema simile, mi stavo collegando al mio Pi con un altoparlante bluetooth, se laltoparlante non era acceso prima dellavvio, avrebbe reimpostato il file .asoundrc. Così irritante. Ho provato tutto quanto sopra, quindi ho pensato che se avessi impostato le impostazioni corrette e poi lo avessi reso di sola lettura. Stranamente questo ha funzionato. Tutto quello che ho fatto è stato: sudo chmod 0444 ./.asoundrc e basta. Adesso va tutto bene.

Commenti

  • Questo ha funzionato per me su Raspbian Stretch. Strano che limpostazione dei permessi funzioni, poiché avrei pensato che fosse il sistema (cioè root) a modificare il file.
  • Anche se ora ricevo lerrore seguente quando chiamo pyaudio. Le cose sembrano ancora per funzionare però. ” Expression ‘ alsa_snd_pcm_hw_params_set_period_size_near (pcm, hwParams, && dir) ‘ non riuscito in ‘ src / hostapi / alsa / pa_linux_alsa.c ‘, riga: 924 ”

Answer

Se modifichi il dispositivo audio predefinito dal menu> preferenze> Impostazioni dispositivo audio> Scheda audio seleziona Scheda audio> imposta come predefinito il tuo file ~ / .asoundrc verrà modificato

Commenti

  • Questo sembra essere il mio problema. Sovrascrivi .asoundrc al riavvio con Stretch. Qualche idea in cui posso ‘ annullare ‘ la selezione di questa casella in modo che il sistema non sovrascriva più?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *