Ik heb een Raspberry Pi 3 met usb dac om mijn microfoon aan te sluiten en ik heb ook een usb-speacker.
Ik heb geïnstalleerd op mijn pi, mopidy en ander klein project.
Ik heb mijn ~/.asoundsrc
gewijzigd voor
pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:1,0" } capture.pcm { type plug slave.pcm "hw:0,0" } }
Alles werkt en wanneer ik opnieuw opstart, heb ik een nieuwe configuratie toegevoegd aan het einde van mijn .asoundrc
bestand
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 }
Met deze wijziging werkt mijn kleine project niet, ik moet verwijderen
pcm.!default { type hw card 2 } ctl.!default { type hw card 2 }
Weet je waarom, deze configuratie wordt elke keer toegevoegd reboot?
Misschien kan dit, kun je me helpen 🙂
cat /proc/asound/modules 0 snd_usb_audio 1 snd_usb_audio 2 snd_bcm2835
Bedankt
Reacties
Antwoord
Maak ongedaan wat ik je heb gevraagd te doen. Start daarna opnieuw op. Zodra je RPi een back-up heeft gemaakt, laten we een bestand maken:
sudo nano /etc/asound.conf
Plaats dit in dat bestand erin:
pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:1,0" } capture.pcm { type plug slave.pcm "hw:0,0" } }
Sla je bestand op en start het opnieuw op.
Reacties
- Bedankt Jason, maar nee. niemand verandert ik heb al
pcm.!default
enctl.!default
Ik probeer/home/pi/.asoundrc
te verwijderen maar pcm et ctl kom terug zonder mijn configuratie in/etc/asound.conf
Antwoord
De manier waarop ik dit probleem oploste, was door sudo raspi-config
uit te voeren en vervolgens naar Geavanceerde opties en vervolgens Audio. Dit was ingesteld op Auto. Toen ik deze optie veranderde in “Forceer 3,5 mm koptelefoonaansluiting”, stopte met het overschrijven van mijn .asoundrc-bestand bij het opnieuw opstarten.
Reacties
- Ik heb dit geprobeerd, iets overschrijft nog steeds mijn
.asoundrc
bestand elke keer opstarten.
Antwoord
Dit is een oud probleem dat regelmatig opnieuw opduiken, meest recentelijk na een upgrade naar de nieuwste kernel en firmware, voor Raspian Stretch , 4.14.30-v7+
.
Het lijkt erop dat het iets te maken heeft met hoe Raspberry Pi s de systemd -services gebruiken bij het opstarten en afsluiten van en hoe de ALSA-daemons en services aanvankelijk zijn ingesteld (of na een systeemupgrade). Mijn beste gok is dat de post-installatiescripts voor iets niet herkennen dat je al een /home/pi/.asoundrc
-bestand hebt en vervolgens probeert het naar een bepaalde standaard te herstellen. Het is onduidelijk waar deze standaard vandaan komt. Zeker niet wat er geschreven staat in de commentaren van de vele ALSA- of systeemservices-configuratiebestanden of gerelateerde man-paginas. Maar het lijkt te komen van een bug in de lxpanels-volume-applet.
In mijn geval is de het volgende lijkt het probleem te hebben opgelost:
- Verwijder eerst de volume-applet uit het lxpanel en vervolgens:
# Make sure your .asoundrc is correct, then do: alsactl kill save_and_quit sudo shutdown now
PS. Het lijkt ook belangrijk om afsluiten te gebruiken en niet reboot !
Foutopsporingspogingen
Als het bovenstaande niet werkt, lees dan dit.
Als een kant lijken er een bug in hoe systemctl omgaat met services. De FS in de pi is anders (door ontbrekende onderdelen) van andere op Debian gebaseerde systemen, dus waar de servicescripts zich bevinden en afgehandeld worden, is niet volledig in overeenstemming met de eigen man-paginas.
Om de relevante ALSA-gerelateerde services te zien , do:
sudo systemctl status alsa-restore alsa-state
Onder normale omstandigheden zou je in staat moeten zijn om de verdachte statische services af te sluiten door iets als:
sudo systemctl mask --system alsa-state.service --now sudo systemctl mask --system alsa-restore.service --now
De runtime-locaties van [system,user,runtime, global]
zijn:
/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
worden niet gerespecteerd zoals beschreven in man systemd.preset
.
Om alle services en hun huidige status te zien, gebruik:
systemctl list-unit-files -t service -all
Je kunt ook de afhankelijkheden omkeren met:
systemctl list-dependencies --reverse alsa-restore.service alsa-restore.service ● └─basic.target ● └─multi-user.target ● └─graphical.target
In elk geval, wanneer de service wordt uitgeschakeld met mask
, moet het bestand worden vervangen door een symlink naar /dev/null
, alleen dat dit niet “op de juiste plaats gebeurt (volgens hierboven). Dus in plaats daarvan moeten we het bestand handmatig verwijderen (er een back-up van maken) en dan de link maken.
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
Herhaal het bovenstaande ook voor alsa-state.service
, en dezelfde bestanden in de directory: /lib/systemd/system/
als ze er nog niet zijn.
DISCLAIMER
Het bovenstaande is waarschijnlijk niet de juiste manier om te doen dit, dus beschouw dit als een zeer experimentele oplossing totdat die buggy is opgelost. Het kan zeer waarschijnlijk uw ALSA-functionaliteit helemaal kapot maken.
Antwoord
Ik had een soortgelijke situatie opgelost door de Raspberry pi-omgeving bij te werken. de stappen zijn:
- Maak een back-up van uw gegevens van Raspberry pi
- controleer uw huidige versie $ uname -a
- update pakketinformatie $ sudo apt-get update
- update geïnstalleerde pakketten $ sudo apt-get upgrade
- update naar nieuwste distributie $ sudo apt-get dist-upgrade
- update raspberry pi firm ware $ sudo rpi-update
- reboot $ sudo reboot
- controleer je laatste versie $ uname -a
Daarna werd op mijn Raspberry pi zon als “gemodificeerde .asoundrc werd herschreven na herstart”. De NOOBS-versie is bijgewerkt naar 2.8.1 op 24-4-2018. Alleen mijn mening, dat het een soort ALSA-bug was, omdat ik probeerde en faalde en wat informatie over dat fenomeen verzamelde.
Antwoord
Ok, dus ik had een soortgelijk probleem, ik maakte verbinding met mijn Pi met een bluetooth-luidspreker, als de luidspreker niet aan was voordat ik opstartte, zou het .asoundrc-bestand opnieuw worden ingesteld. Zo irritant. Ik heb al het bovenstaande geprobeerd en toen dacht ik: wat als ik gewoon de juiste instellingen zou instellen en het dan alleen-lezen zou maken. Vreemd genoeg werkte dit. Alles wat ik deed was: sudo chmod 0444 ./.asoundrc en dat is alles. Alles is nu goed.
Reacties
- Dit werkte voor mij op Raspbian Stretch. Vreemd dat het instellen van rechten werkt, omdat ik dacht dat het het systeem was (dwz root) dat het bestand veranderde.
- Hoewel ik nu de onderstaande fout krijg bij het aanroepen van pyaudio. Het lijkt nog steeds om te werken. ” Expressie ‘ alsa_snd_pcm_hw_params_set_period_size_near (pcm, hwParams, & alsFrames, & dir) ‘ mislukt in ‘ src / hostapi / alsa / pa_linux_alsa.c ‘, line: 924 ”
Antwoord
Als u het standaardaudioapparaat wijzigt via menu> voorkeuren> Instellingen audioapparaat> Geluidskaart, selecteer Geluidskaart> maak als standaard dat uw ~ / .asoundrc-bestand wordt gewijzigd
Opmerkingen
- Dit lijkt mijn probleem te zijn. Overschrijven van .asoundrc bij herstarten met Stretch. Enig idee waar ik ‘ kan ‘ het aanvinken van dit vakje ongedaan maken, zodat het systeem niet langer overschrijft?
pcm.!default
enctl.!default
don ‘ heb kaart 2 maar kaart 0.