min asoundrc modifieras varje omstart

Jag har en hallon pi 3 med USB-dac för att ansluta min mikrofon och jag har också ett USB-talare.

Jag installerade på mitt pi, mopidy och annat projekt.

Jag ändrade mitt ~/.asoundsrc för

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

Allt fungerar och när jag startar om har jag lagt till en ny konfiguration i slutet av min .asoundrc -fil

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 } 

Med den här ändringen fungerar mitt litle-projekt inte, jag måste ta bort

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

Vet du varför, den här konfigurationen läggs till varje starta om?

Kanske det här, kan du hjälpa dig att hjälpa mig 🙂

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

Tack

Kommentarer

  • Bara för att testa, jag skulle vilja att du skulle prova detta. Vi kommer att inaktivera ljudet ombord. För att göra det, skriv detta i din terminal: sudo nano / boot / config.txt Sida ner till botten av filen och leta efter två rader som läser: # Aktivera ljud (laddar snd_bcm2835) dtparam = ljud = på Placera ett (pundtecken #) framför raden som lyder: dtparam = ljud = på För att se ut som: # dtparam = ljud = på Tryck på CTRL + x och tryck sedan på Enter för att spara filen. Du måste också starta om. Vad vi vill veta är om det finns en konflikt med USB-ljudet och det inbyggda. Lycka till!
  • Hej Tack för ditt svar och hjälp. din ändring löser inte ’ men nu när jag startar om pcm.!default och ctl.!default har inte ’ inte kort 2 men kort 0.

Svar

Ångra vad jag bad dig göra. Starta om det efter det. När din RPi är säkerhetskopierad, låt oss skapa en fil:

sudo nano /etc/asound.conf 

I den filen placerar du den i den:

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

När du är klar sparar du filen och startar om.

Kommentarer

  • Tack Jason men nej. ingen förändring Jag har redan pcm.!default och ctl.!default Jag försöker ta bort /home/pi/.asoundrc men pcm et ctl kom tillbaka utan min konfiguration i /etc/asound.conf

Svar

sätt jag löste problemet var att köra sudo raspi-config och sedan gå till Avancerade alternativ och sedan Ljud. Detta var inställt på Auto. När jag ändrade detta alternativ till ”Tvinga 3,5 mm hörlursuttag”, slutade skriva över min .asoundrc-fil vid omstart.

Kommentarer

  • Jag försökte detta, något skriver fortfarande över min .asoundrc fil varje start.

Svar

Detta är ett gammalt problem som återytas regelbundet, senast efter en uppgradering till den senaste kärnan och firmware, för Raspian Stretch , 4.14.30-v7+.

Det verkar som att det kan ha något att göra med både hur Raspberry Pi använder systemd -tjänsterna när de startar och stänger av och hur ALSA-demonerna och tjänsterna har konfigurerats initialt (eller efter systemuppgradering). Min bästa gissning är att postinstallationsskript för något inte känner igen att du redan har en /home/pi/.asoundrc -fil och sedan försöker återställa den till en viss standard. Det är oklart varifrån denna standard kommer. Visst inte vad som skrivs i kommentarerna till de många konfigurationsfilerna för ALSA eller systemtjänster eller relaterade man-sidor. Men det verkar komma från ett fel i volym-appleten lxpanels.

I mitt fall är följande verkar ha löst problemet:

  • Ta först bort volymapplet från lxpanelen och sedan:
 # Make sure your .asoundrc is correct, then do: alsactl kill save_and_quit sudo shutdown now  

PS. Det verkar också viktigt att använda avstängning och inte starta om !


Felsökningsförsök

Om ovanstående inte fungerar läser du detta.

Som en sida verkar det finnas ett fel i hur systemctl hanterar tjänster. FS i pi skiljer sig (genom saknade delar) från andra Debian-baserade system, så där tjänsteskript finns och hanteras är inte helt enligt sina egna man-sidor.

För att se relevanta ALSA-relaterade tjänster , gör:

sudo systemctl status alsa-restore alsa-state 

Under normala omständigheter bör du kunna stänga av de misstänkta statiska tjänsterna med något som:

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

Drifttidsplatserna för [system,user,runtime, global] som är:

/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 

respekteras inte som beskrivs i man systemd.preset.
För att se alla tjänster och deras nuvarande tillstånd, använd:

systemctl list-unit-files -t service -all 

Du kan också omvända beroenden med:

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

I vilket fall som helst, när tjänsten inaktiveras med mask, bör den ersätta filen med en symlänk till /dev/null, bara att detta inte händer på rätt plats (enligt ovan). Så istället måste vi ta bort filen manuellt (säkerhetskopiera den tidigare) och sedan skapa länken.

 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  

Se till att upprepa ovanstående även för alsa-state.service och samma filer i katalogen: /lib/systemd/system/ om det inte redan finns.

FRISKRIVNING

Ovanstående är sannolikt inte det rätta sättet att göra detta, så snälla betrakta detta som en mycket experimentell lösning tills den buggy beahviour har lösts. Det kan mycket troligt bryta din ALSA-funktionalitet helt.

Svar

Jag hade löst en liknande situation genom att uppdatera Raspberry pi-miljön. stegen är,

  • Säkerhetskopiera dina data från Raspberry pi
  • kolla din nuvarande version $ uname -a
  • uppdatera paketinformation $ sudo apt-get uppdatera
  • uppdatera installerade paket $ sudo apt-get upgrade
  • uppdatera till senaste distribution $ sudo apt-get dist-upgrade
  • uppdatera hallon pi firmware $ sudo rpi-uppdatering
  • starta om $ sudo omstart
  • kolla den senaste versionen $ uname -a

Därefter löstes på min hallon-pi sådan som ”modifierad .asoundrc skrivs om efter omstart”. NOOBS-versionen uppdaterades till 2.8.1 2018-4-24. Bara min åsikt att det var ett slags ALSA-fel eftersom jag försökte och misslyckades och samlade in information om dessa fenomen.

Svar

Ok så jag hade ett liknande problem, jag anslöt till min Pi med en Bluetooth-högtalare, om högtalaren inte var på innan jag startade, skulle den återställa .asoundrc-filen. Så irriterande. Jag försökte alla ovanstående och tänkte vad om jag bara ställer in rätt inställningar och sedan gör det läsbart. Konstigt nog fungerade detta. Allt jag gjorde var: sudo chmod 0444 ./.asoundrc och att ”s it. Allt är bra nu.

Kommentarer

  • Detta fungerade för mig på Raspbian Stretch. Konstigt att inställningsbehörigheter fungerar, som jag skulle ha trott att det var systemet (dvs. root) som ändrade filen.
  • Även om jag nu får fel nedan när jag ringer till pyaudio. Saker verkar fortfarande att arbeta men. ” Uttryck ’ alsa_snd_pcm_hw_params_set_period_size_near (pcm, hwParams, & als & dir) ’ misslyckades i ’ src / hostapi / alsa / pa_linux_alsa.c ’, rad: 924 ”

Svar

Om du ändrar standardljudenhet från menyn> inställningar> Ljudenhetsinställningar> Ljudkort väljer Ljudkort> gör som standard din ~ / .asoundrc-fil ändras

Kommentarer

  • Detta verkar vara mitt problem. Skriv över .asoundrc vid omstart med Stretch. Några idéer där jag kan ’ ångra ’ kryssrutan så att systemet inte längre skriver över?

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *