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
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
ectl.!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ù?
pcm.!default
ectl.!default
don ‘ t avere la carta 2 ma la carta 0.