můj asoundrc je upraven při každém restartu

Mám malinový pi 3 s usb dac pro připojení mikrofonu a mám také usb speacker.

Nainstaloval jsem na svůj projekt pi, mopidy a další litle.

Upravil jsem svůj ~/.asoundsrc pro

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

Všechno funguje a po restartu mám novou konfiguraci přidanou na konec mého .asoundrc souboru

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 } 

S touto úpravou můj malý projekt nefunguje, musím smazat

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

Víte proč, tato konfigurace se přidává každý restartovat?

Možná to, můžete mi pomoci, abyste mi pomohli 🙂

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

Díky

Komentáře

  • Jen pro testování bych chtěl, abyste to zkusili. Chystáme se deaktivovat integrované audio. Chcete-li to provést, zadejte do svého terminálu toto: sudo nano / boot / config.txt Přejděte dolů do dolní části souboru a vyhledejte dva řádky, které čtou: # Povolit zvuk (načte snd_bcm2835) dtparam = audio = on Umístěte (znak libry #) před řádek, který čte: dtparam = audio = on Vypadá to jako: # dtparam = audio = on Stiskněte CTRL + x a poté stiskněte Enter uložte soubor. Také budete muset restartovat. Chceme vědět, jestli dojde ke konfliktu s usb zvukem a integrovaným zařízením. Hodně štěstí!
  • Ahoj, děkujeme za odpověď a pomoc. vaše úprava nevyřeší můj problém ‚ ale nyní, když restartuji pcm.!default a ctl.!default nemají ‚ kartu 2, ale kartu 0.

Odpověď

Vrátit zpět to, o co jsem vás požádal. Poté restartujte počítač. Jakmile bude váš RPi zálohován, vytvořte soubor:

sudo nano /etc/asound.conf 

V tomto souboru do něj vložte toto:

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

Po dokončení uložte soubor a restartujte.

Komentáře

  • Díky Jasonovi, ale ne. nikdo se nezměnil Už jsem pcm.!default a ctl.!default zkusil jsem odstranit /home/pi/.asoundrc ale pcm et ctl vrátit se bez mé konfigurace v /etc/asound.conf

odpovědi

způsob, jak jsem tento problém vyřešil, bylo spustit sudo raspi-config a poté přejít na Rozšířené možnosti a poté na Zvuk. Toto bylo nastaveno na Auto. Když jsem tuto možnost změnil na „Vynutit 3,5 mm konektor pro sluchátka“ přestal přepisovat můj soubor .asoundrc při restartu.

Komentáře

  • Zkoušel jsem to, něco stále přepíše můj .asoundrc soubor při každém spuštění.

odpověď

Toto je starý problém, který pravidelně znovu zobrazovat, naposledy po upgradu na nejnovější jádro a firmware, pro Raspian Stretch , 4.14.30-v7+.

Zdá se, že to může mít něco společného s tím, jak Raspberry Pi používá služby systemd při spouštění a vypínání a jak byly zpočátku (nebo po upgradu systému) nastaveny démony a služby ALSA. Mým nejlepším odhadem je, že skripty po instalaci něčeho nerozpoznají, že již máte soubor /home/pi/.asoundrc, a poté se ho pokusí obnovit na výchozí hodnotu. Není jasné, odkud toto výchozí nastavení pochází. Určitě ne to, co je napsáno v komentářích mnoha konfiguračních souborů ALSA nebo systémových služeb nebo souvisejících manuálových stránek. Zdá se však, že to pochází z chyby v appletu objemu lxpanels.

V mém případě je Zdá se, že problém vyřešili následující:

  • Nejprve odeberte aplet svazku z lxpanel a poté:
 # Make sure your .asoundrc is correct, then do: alsactl kill save_and_quit sudo shutdown now  

PS. Také se zdá důležité použít vypnutí a ne restartovat !


Pokusy o ladění

Pokud výše uvedené nefunguje, přečtěte si toto.

Na druhou stranu se zdá, že chyba v tom, jak systemctl zpracovává služby. FS v pí se liší (chybějícími částmi) od jiných systémů založených na Debianu, takže tam, kde jsou servisní skripty umístěny a zpracovávány, není zcela v souladu s jeho vlastními manuálovými stránkami.

Zobrazit příslušné služby související s ALSA , do:

sudo systemctl status alsa-restore alsa-state 

Za normálních okolností byste měli být schopni vypnout podezřelé statické služby nějakým způsobem:

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

Avšak runtime umístění [system,user,runtime, global] jsou:

/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 

nejsou respektována, jak je popsáno v man systemd.preset.
Chcete-li zobrazit všechny služby a jejich aktuální stav, použijte:

systemctl list-unit-files -t service -all 

Obrácené závislosti můžete také obrátit pomocí:

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

V každém případě by při deaktivaci služby pomocí mask měl soubor nahradit symbolickým odkazem na /dev/null, pouze se to nestane na správném místě (podle výše uvedeného). Takže místo toho musíme soubor odstranit ručně (dříve jej zálohovat) a poté vytvořit odkaz.

 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  

Nyní zopakujte výše uvedené kroky i pro alsa-state.service a stejné soubory v adresáři: /lib/systemd/system/ pokud již nejsou k dispozici.

ODMÍTNUTÍ

Výše uvedené pravděpodobně není správným způsobem toto, prosím, považujte to za velmi experimentální řešení, dokud nebude vyřešen buggy beahviour. Může velmi pravděpodobně úplně narušit vaši funkčnost ALSA.

Odpovědět

Podobnou situaci jsem vyřešil aktualizací prostředí Raspberry pi. kroky jsou,

  • Zálohujte svá data z Raspberry pi
  • zkontrolujte aktuální verzi $ uname -a
  • aktualizujte informace o balíčku $ sudo apt-get aktualizovat
  • aktualizovat nainstalované balíčky $ sudo apt-get upgrade
  • aktualizovat na nejnovější distribuci $ sudo apt-get dist-upgrade
  • aktualizovat raspberry pi firmwaru $ sudo rpi-update
  • restartovat $ sudo restartovat
  • zkontrolovat nejnovější verzi $ uname -a

Poté byl na mém Raspberry pi vyřešen takový jako „upravený .asoundrc byl přepsán po restartu“. Verze NOOBS byla 24. 4. 2018 aktualizována na verzi 2.8.1. Jen můj názor, že to byla jakási chyba ALSA, protože jsem zkoušel a selhal a shromáždil nějaké informace o těchto jevech.

Odpověď

Dobře, takže jsem měl podobný problém, připojoval jsem se ke svému Pi pomocí reproduktoru Bluetooth, pokud reproduktor nebyl zapnutý před spuštěním, znovu nastavil soubor .asoundrc. Tak dráždivý. Zkoušel jsem všechny výše uvedené, pak jsem si myslel, co když jen nastavím správná nastavení a provedu to jen pro čtení. Kupodivu to fungovalo. Jediné, co jsem udělal, bylo: sudo chmod 0444 ./.asoundrc a to je vše. Nyní je vše v pořádku.

Komentáře

  • Toto fungovalo pro mě na Raspbian Stretch. Zvláštní je, že nastavení oprávnění funguje, protože bych si myslel, že systém (tj. root) mění soubor.
  • I když nyní při volání pyaudio dostávám níže uvedenou chybu. Věci se stále zdají být funkční & adresář) ‚ se nezdařil v ‚ src / hostapi / alsa / pa_linux_alsa.c ‚, řádek: 924 “

odpověď

Pokud změníte výchozí zvukové zařízení z nabídky> předvolby> Nastavení zvukového zařízení> Zvuková karta vyberte Zvuková karta> nastavit jako výchozí soubor ~ / .asoundrc bude změněn

Komentáře

  • Zdá se, že to je můj problém. Přepsat .asoundrc při restartu pomocí Stretch. Nějaké nápady, kde mohu ‚ zrušit ‚ zaškrtnutí tohoto políčka, aby systém již nepřepisoval?

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *