Tengo una raspberry pi 3 con usb dac para conectar mi micrófono y también tengo un altavoz usb.
Lo instalé en mi pi, mopidy y otros proyectos pequeños.
Modifiqué mi ~/.asoundsrc
para
pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:1,0" } capture.pcm { type plug slave.pcm "hw:0,0" } }
Todo funciona y cuando reinicio tengo una nueva configuración agregada al final de mi .asoundrc
archivo
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 esta modificación, mi pequeño proyecto no funciona, debo eliminar
pcm.!default { type hw card 2 } ctl.!default { type hw card 2 }
¿Sabes por qué, esta configuración se agrega cada reiniciar?
Tal vez esto, ¿pueden ayudarme a ayudarme 🙂
cat /proc/asound/modules 0 snd_usb_audio 1 snd_usb_audio 2 snd_bcm2835
Gracias
Comentarios
Respuesta
Deshaga lo que le pedí que hiciera. Después de eso, reinicie. Una vez que haya realizado una copia de seguridad de su RPi, creemos un archivo:
sudo nano /etc/asound.conf
En ese archivo, coloque esto en él:
pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:1,0" } capture.pcm { type plug slave.pcm "hw:0,0" } }
Una vez hecho esto, guarde su archivo, luego reinicie.
Comentarios
- Gracias Jason pero no. nadie cambia Ya tengo
pcm.!default
yctl.!default
Intento eliminar/home/pi/.asoundrc
pero pcm et ctl volver sin mi configuración en/etc/asound.conf
Responder
El La forma en que resolví este problema fue ejecutar sudo raspi-config
, luego ir a Opciones avanzadas y luego a Audio. Esto se configuró en Automático. Cuando cambié esta opción a «Forzar conector de auriculares de 3.5 mm», dejé de sobrescribir mi archivo .asoundrc al reiniciar.
Comentarios
- Intenté esto, algo aún sobrescribe mi
.asoundrc
en cada arranque.
Respuesta
Este es un viejo problema que reaparecerán regularmente, más recientemente después de una actualización al último kernel y firmware, para Raspian Stretch , 4.14.30-v7+
.
Parece que puede tener algo que ver con la forma en que las Raspberry Pi están usando los servicios systemd al arrancar y al cerrar y cómo se han configurado inicialmente los demonios y servicios ALSA (o después de la actualización del sistema). Mi mejor suposición es que los scripts posteriores a la instalación para algo no reconocen que ya tienes un archivo /home/pi/.asoundrc
y luego intenta restaurarlo a algunos valores predeterminados. No está claro de dónde proviene este valor predeterminado. Ciertamente no lo que está escrito en los comentarios de los muchos archivos de configuración de ALSA o servicios del sistema o páginas de manual relacionadas. Pero parece provenir de un error en el subprograma de volumen de lxpanels.
En mi caso, el lo siguiente parece haber resuelto el problema:
- Primero elimine el subprograma de volumen del lxpanel , luego:
# Make sure your .asoundrc is correct, then do: alsactl kill save_and_quit sudo shutdown now
PD. También parece importante usar shutdown , y no reboot !
Intentos de depuración
Si lo anterior no funciona, lea esto.
Como lado, parece haber un error en cómo systemctl maneja los servicios. El FS en pi es diferente (porque faltan partes) de otros sistemas basados en Debian, por lo que el lugar donde se ubican y manejan los scripts de servicio no se corresponde con sus propias páginas de manual.
Para ver los servicios relacionados con ALSA relevantes , haz:
sudo systemctl status alsa-restore alsa-state
En circunstancias normales, deberías poder cerrar los servicios estáticos sospechosos mediante algo como:
sudo systemctl mask --system alsa-state.service --now sudo systemctl mask --system alsa-restore.service --now
Sin embargo, las ubicaciones de tiempo de ejecución de [system,user,runtime, global]
que son:
/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
no se respetan como se describe en man systemd.preset
.
Para ver todos los servicios y su estado actual, use:
systemctl list-unit-files -t service -all
También puede invertir las dependencias con:
systemctl list-dependencies --reverse alsa-restore.service alsa-restore.service ● └─basic.target ● └─multi-user.target ● └─graphical.target
En cualquier caso, al deshabilitar el servicio con mask
, debe reemplazar el archivo con un enlace simbólico a /dev/null
, solo que esto no sucede en el lugar correcto (de acuerdo con lo anterior). Por lo tanto, tenemos que eliminar el archivo manualmente (hacer una copia de seguridad antes) y luego crear el enlace.
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
Ahora asegúrese de repetir lo anterior también para alsa-state.service
, y los mismos archivos en el directorio: /lib/systemd/system/
si aún no está allí.
DESCARGO DE RESPONSABILIDAD
Lo anterior probablemente no sea la forma correcta de hacerlo. esto, por lo tanto, considérelo como una solución muy experimental hasta que se resuelva el comportamiento defectuoso. Es muy probable que rompa la funcionalidad de ALSA por completo.
Respuesta
He resuelto una situación similar actualizando el entorno de Raspberry pi. los pasos son,
- Haga una copia de seguridad de sus datos desde Raspberry pi
- verifique su versión actual $ uname -a
- actualice la información del paquete $ sudo apt-get actualizar
- actualizar paquetes instalados $ sudo apt-get upgrade
- actualizar a la última distribución $ sudo apt-get dist-upgrade
- actualizar raspberry pi firm ware $ sudo rpi-update
- reboot $ sudo reboot
- verifica tu última versión $ uname -a
Después de eso, en mi Raspberry pi se resolvió tal como «.asoundrc modificado se reescribió después de reiniciar». La versión de NOOBS se actualizó a 2.8.1 el 2018-4-24. Solo mi opinión, que fue una especie de error ALSA porque intenté y fracasé y recopilé información sobre ese fenómeno.
Respuesta
Ok, tuve un problema similar, me estaba conectando a mi Pi con un altavoz bluetooth, si el altavoz no estaba encendido antes de arrancar, se restablecería el archivo .asoundrc. Muy irritante. Probé todo lo anterior y luego pensé qué pasa si solo configuro la configuración correcta y luego lo hago de solo lectura. Por extraño que parezca, esto funcionó. Todo lo que hice fue: sudo chmod 0444 ./.asoundrc y eso es todo. Todo está bien ahora.
Comentarios
- Esto funcionó para mí en Raspbian Stretch. Es extraño que la configuración de permisos funcione, ya que habría pensado que era el sistema (es decir, la raíz) cambiando el archivo.
- Aunque ahora recibo el siguiente error al llamar a pyaudio. Las cosas todavía parecen funciona. » Expresión ‘ alsa_snd_pcm_hw_params_set_period_size_near (pcm, hwParams, alsames & dir) ‘ falló en ‘ src / hostapi / alsa / pa_linux_alsa.c ‘, línea: 924 »
Respuesta
Si cambia el dispositivo de audio predeterminado desde el menú> preferencias> Configuración del dispositivo de audio> Tarjeta de sonido, seleccione Tarjeta de sonido> haga que su archivo ~ / .asoundrc predeterminado se cambie
Comentarios
- Este parece ser mi problema. Sobrescritura de .asoundrc al reiniciar con Stretch. ¿Alguna idea en la que pueda ‘ deshacer ‘ la marcación de esta casilla para que el sistema ya no sobrescriba?
pcm.!default
yctl.!default
no ‘ no tengo tarjeta 2 pero tarjeta 0.