mój asoundrc jest modyfikowany przy każdym ponownym uruchomieniu

Mam Raspberry Pi 3 z USB Dac do podłączenia mikrofonu i mam też głośnik USB.

Zainstalowałem w moim projekcie pi, mopidy i innym małym projekcie.

Zmodyfikowałem mój ~/.asoundsrc pod kątem

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

Wszystko działa i po ponownym uruchomieniu mam nową konfigurację dodaną na końcu mojego .asoundrc pliku

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 } 

Po tej modyfikacji mój mały projekt nie działa, muszę go usunąć

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

Czy wiesz, dlaczego ta konfiguracja jest dodawana co zrestartować?

Może to, czy możesz mi pomóc 🙂

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

Dzięki

Komentarze

  • Tylko do testów, chciałbym, żebyś spróbował. Zamierzamy wyłączyć wbudowany dźwięk. Aby to zrobić, wpisz w terminalu: sudo nano / boot / config.txt Przejdź na sam dół pliku i poszukaj dwóch wierszy: # Włącz dźwięk (ładuje snd_bcm2835) dtparam = audio = on Umieść znak (krzyżyk #) przed wierszem, który brzmi: dtparam = audio = on. aby zapisać plik. Konieczne będzie również ponowne uruchomienie. Chcemy wiedzieć, czy występuje konflikt z dźwiękiem USB i na pokładzie. Powodzenia!
  • Cześć Dziękuję za odpowiedź i pomoc. Twoja modyfikacja nie ' nie rozwiązuje mojego problemu, ale teraz, gdy ponownie uruchamiam pcm.!default i ctl.!default nie ' nie masz karty 2, ale karty 0.

Odpowiedz

Cofnij to, o co cię prosiłem. Następnie uruchom ponownie. Po utworzeniu kopii RPi utwórzmy plik:

sudo nano /etc/asound.conf 

W tym pliku umieść w nim to:

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

Po zakończeniu zapisz plik, a następnie uruchom ponownie.

Komentarze

  • Dziękuję Jason, ale nie. nikt się nie zmienia Mam już pcm.!default i ctl.!default Próbuję usunąć /home/pi/.asoundrc, ale pcm et ctl wróć bez mojej konfiguracji w /etc/asound.conf

Odpowiedz

sposobem rozwiązania tego problemu było uruchomienie sudo raspi-config, a następnie przejście do opcji zaawansowanych, a następnie do Audio. To było ustawione na Auto. Po zmianie tej opcji na „Force 3.5mm słuchawkowe gniazdo” przestałem nadpisywać mój plik .asoundrc przy ponownym uruchomieniu.

Komentarze

  • Próbowałem, coś nadal nadpisuje mój .asoundrc przy każdym uruchomieniu.

Odpowiedź

To stary problem, regularnie wracają na powierzchnię, ostatnio po uaktualnieniu do najnowszego jądra i oprogramowania układowego, dla Raspiana Stretch , 4.14.30-v7+.

Wygląda na to, że może to mieć coś wspólnego zarówno z tym, jak Raspberry Pi używają usług systemd podczas uruchamiania, jak i wyłączania oraz jak demony i usługi ALSA zostały początkowo skonfigurowane (lub po aktualizacji systemu). Domyślam się, że skrypty poinstalacyjne dla czegoś nie rozpoznają, że masz już plik /home/pi/.asoundrc, a następnie próbują przywrócić go do jakiegoś domyślnego. Nie jest jasne, skąd pochodzi ta wartość domyślna. Z pewnością nie to, co jest napisane w komentarzach do wielu plików konfiguracyjnych ALSA lub usług systemowych lub powiązanych stron podręcznika. Ale wydaje się, że pochodzi z błędu w aplecie głośności lxpanels.

W moim przypadku wydaje się, że następujące rozwiązania rozwiązały problem:

  • Najpierw usuń aplet głośności z lxpanel , a następnie:
 # Make sure your .asoundrc is correct, then do: alsactl kill save_and_quit sudo shutdown now  

PS. Wydaje się również, że ważne jest użycie opcji shutdown , a nie reboot !


Próby debugowania

Jeśli powyższe nie działa, przeczytaj to.

Z drugiej strony wydaje się, że błąd w sposobie obsługi usług przez systemctl . FS w pi różni się (brakiem części) od innych systemów opartych na Debianie, więc miejsce, w którym są zlokalizowane i obsługiwane skrypty serwisowe, nie jest w pełni zgodne z jego własnymi stronami podręcznika.

Aby zobaczyć odpowiednie usługi powiązane z ALSA , zrób:

sudo systemctl status alsa-restore alsa-state 

W normalnych okolicznościach powinno być możliwe wyłączenie podejrzanych usług statycznych za pomocą czegoś takiego:

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

Jednak lokalizacje środowiska wykonawczego [system,user,runtime, global] to:

/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 

nie są przestrzegane zgodnie z opisem w man systemd.preset.
Aby zobaczyć wszystkie usługi i ich aktualny stan, użyj:

systemctl list-unit-files -t service -all 

Możesz także odwrócić zależności za pomocą:

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

W każdym przypadku wyłączając usługę za pomocą mask, należy zastąpić plik dowiązaniem symbolicznym do /dev/null, tyle że nie dzieje się to we właściwym miejscu (zgodnie z powyższym). Zamiast tego musimy ręcznie usunąć plik (wcześniej wykonać kopię zapasową), a następnie utworzyć łącze.

 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  

Teraz pamiętaj, aby powtórzyć powyższe również dla alsa-state.service i te same pliki w katalogu: /lib/systemd/system/, jeśli jeszcze go tam nie ma.

ZRZECZENIE SIĘ

Powyższe prawdopodobnie nie jest właściwym sposobem to, więc proszę potraktować to jako bardzo eksperymentalne obejście do czasu rozwiązania tego błędnego zachowania. Może to całkowicie zepsuć funkcjonalność ALSA.

Odpowiedź

Podobną sytuację rozwiązałem aktualizując środowisko Raspberry pi. kroki są następujące:

  • Wykonaj kopię zapasową danych z Raspberry pi
  • sprawdź aktualną wersję $ uname -a
  • zaktualizuj informacje o pakiecie $ sudo apt-get aktualizacja
  • aktualizacja zainstalowanych pakietów $ sudo apt-get upgrade
  • aktualizacja do najnowszej dystrybucji $ sudo apt-get dist-upgrade
  • aktualizacja raspberry pi firmware $ sudo rpi-update
  • reboot $ sudo reboot
  • sprawdź najnowszą wersję $ uname -a

Po tym na moim Raspberry pi został rozwiązany taki jako „zmodyfikowany plik .asoundrc został przepisany po restarcie”. Wersja NOOBS została zaktualizowana do 2.8.1 w dniu 2018-4-24. Tylko moja opinia, że był to rodzaj błędu ALSA, ponieważ próbowałem i nie udało mi się zebrać informacji o tym zjawisku.

Odpowiedź

Ok, więc miałem podobny problem, łączyłem się z moim Pi z głośnikiem bluetooth, jeśli głośnik nie był włączony przed uruchomieniem, zresetowałby plik .asoundrc. Tak irytujące. Wypróbowałem wszystkie powyższe, a potem pomyślałem, że jeśli po prostu ustawię prawidłowe ustawienia, a potem tylko do odczytu. Co dziwne, to zadziałało. Wszystko co zrobiłem to: sudo chmod 0444 ./.asoundrc i to wszystko. Teraz wszystko jest w porządku.

Komentarze

  • To zadziałało dla mnie na Raspbian Stretch. Dziwne, że ustawienie uprawnień działa, ponieważ myślałem, że to system (tj. root) zmienia plik.
  • Chociaż teraz otrzymuję poniższy błąd podczas wywoływania pyaudio. Wydaje się, że nadal do pracy. ” Wyrażenie ' alsa_snd_pcm_hw_params_set_period_size_near (pcm, hwParams, & alsaFalda, & dir) ' nie powiodło się w ' src / hostapi / alsa / pa_linux_alsa.c ', wiersz: 924 ”

Odpowiedź

Jeśli zmienisz domyślne urządzenie audio w menu> preferencje> Ustawienia urządzenia audio> Karta dźwiękowa wybierz Karta dźwiękowa> ustaw jako domyślny plik ~ / .asoundrc zostanie zmieniony

Komentarze

  • To chyba mój problem. Nadpisz .asoundrc przy ponownym uruchomieniu za pomocą Stretch. Jakieś pomysły, w których mógłbym ' cofnąć ' zaznaczenie tego pola, aby system nie nadpisywał już?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *