17 Comandos para manejar el audio en Linux
- Introducción
- 1. Listar las placas de audio
- 2. Listar el codec de audio
- 3. Listar dispositivos de salida
- 4. Listar los flujos de reproducción
- 5. Ver los programas que están usando el sistema de sonido
- 6. Ajustar el volumen
- 7. Cambiar el dispositivo de salida
- 8. Agregar un dispositivo manualmente
- 9. Listar las extensiones del sistema de audio
- 10. Listar dispositivos de entrada
- 11. Listar flujos de entrada
- 12. Examinar la configuración
- 13. pamixer
- 14. pulsemixer
- 15. Reiniciar pulseaudio como usuario
- 16. Configurar un dispositivo de salida predeterminado
- 17. Configurar un dispositivo de entrada predetermianda
- Conclusión
- Fuente y más información
Introducción
En la actualidad el sonido en Linux es manejado por dos servicios ALSA y PulseAudio. El primero de ellos es el que tiene una relación más cercana con el hardware, mientras que el segundo es el que se comunica con las aplicaciones y es con quien el usuario tiene más interacción. En cuanto al hardware, es importante recordar que la mayoría de las placas de audio contienen un dispositivo llamado codec, el cual se encarga de convertir las señales digitales en analógicas y viceversa.
1. Listar las placas de audio
lspci 00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 02) 00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02) 00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 02) 00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21) 00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21) 00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21) 00:15.1 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 (rev 21) 00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21) 00:17.0 SATA controller: Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode] (rev 21) 00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #1 (rev f1) 00:1c.5 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #6 (rev f1) 00:1f.0 ISA bridge: Intel Corporation Sunrise Point-LP LPC Controller (rev 21) 00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21) 00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21) 00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21) 01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 950M] (rev a2) 02:00.0 Network controller: Intel Corporation Wireless 8260 (rev 3a)
Aquí vemos que la placa de audio es Intel Corporation Sunrise Point-LP HD Audio (rev 21).
Luego, podremos obtener más información de la misma:
lspci -nn -d 8086:9d71 -mm -k -v Slot: 00:1f.3 Class: Audio device [0403] Vendor: Intel Corporation [8086] Device: Sunrise Point-LP HD Audio [9d71] SVendor: ASUSTeK Computer Inc. [1043] SDevice: Device [1790] Rev: 21 Driver: snd_hda_intel Module: snd_hda_intel Module: snd_soc_skl
El driver snd_hda_intel indica que la placa usa la especificación Intel High Definition Audio. Tener en cuenta que se pueden ver los dispositivos de sonido usb con lsusb
y usb-devices
.
2. Listar el codec de audio
aplay -l **** List of PLAYBACK Hardware Devices **** card 0: PCH [HDA Intel PCH], device 0: ALC295 Analog [ALC295 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: Headset [Logitech USB Headset], device 0: USB Audio [USB Audio] Subdevices: 0/1 Subdevice #0: subdevice #0
Aquí se ve que el codec de la placa es ALC295 Analog.
3. Listar dispositivos de salida
pactl list sinks short 0 alsa_output.pci-0000_00_1f.3.analog-stereo module-alsa-card.c s16le 2ch 48000Hz SUSPENDED 1 combined module-combine-sink.c s16le 2ch 44100Hz SUSPENDED 3 PulseEffects_apps module-null-sink.c s16le 2ch 44100Hz RUNNING 4 PulseEffects_mic module-null-sink.c s16le 2ch 44100Hz SUSPENDED 5 alsa_output.usb-Logitech_Logitech_USB_Headset-00.analog-stereo module-alsa-card.c s16le 2ch 44100Hz RUNNING
Algunos dispositivos son virtuales y corresponden a aplicaciones tales como PulseEffects_mic y PulseEffects_mic. El dispositivo combined es para enviar la salida a más de una dispositivo.
4. Listar los flujos de reproducción
pactl list sink-inputs short 199 5 88 protocol-native.c float32le 2ch 44100Hz 3106 3 11 protocol-native.c float32le 2ch 44100Hz 3124 3 11 protocol-native.c float32le 2ch 44100Hz
Veremos a continuación como podemos sacar más información de estos flujos.
5. Ver los programas que están usando el sistema de sonido
pactl list clients short 0 module-systemd-login.c (null) 6 module-x11-xsmp.c (null) 8 protocol-native.c plasmashell 11 protocol-native.c firefox 17 protocol-native.c rocketchat-desktop 20 protocol-native.c thunderbird 21 protocol-native.c firefox 22 protocol-native.c VNote 26 protocol-native.c plasmashell 81 protocol-native.c org_kde_powerdevil 87 protocol-native.c pulseeffects 88 protocol-native.c pulseeffects 89 protocol-native.c pulseeffects 102 protocol-native.c plasmashell 109 protocol-native.c skypeforlinux 110 protocol-native.c skypeforlinux 138 protocol-native.c pactl
6. Ajustar el volumen
De acuerdo al listado anterior, puedo ajustar firefox:
pactl set-sink-input-volume 199 50%
O modificar el de puseefects
pactl set-sink-input-volume 3124 40%
O sino, cambiando el volumen de todo el dispositivo:
pactl set-sink-volume 5 50%
7. Cambiar el dispositivo de salida
Aquí estaríamos moviendo el flujo de reproducción de los auriculares al de la placa de sonido interna:
pactl move-sink-input 3124 alsa_output.pci-0000_00_1f.3.analog-stereo
8. Agregar un dispositivo manualmente
El dispositivo de alsa lo podemos sacar por el comando aplay, y luego:
pacmd load-module module-alsa-sink device=hw:1,0
9. Listar las extensiones del sistema de audio
Esta lista muestra el número del módulo, el nombre y los argumentos:
pactl list modules short 0 module-device-restore 1 module-stream-restore 2 module-card-restore 3 module-augment-properties 4 module-switch-on-port-available 5 module-udev-detect 7 module-alsa-card device_id="0" name="pci-0000_00_1f.3" card_name="alsa_card.pci-0000_00_1f.3" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes card_properties="module-udev-detect.discovered=1" 8 module-bluetooth-policy 9 module-bluetooth-discover 10 module-bluez5-discover 11 module-esound-protocol-unix 12 module-native-protocol-unix 13 module-gconf 14 module-native-protocol-tcp auth-anonymous=1 15 module-esound-protocol-tcp auth-anonymous=1 16 module-combine 17 module-combine-sink 18 module-switch-on-connect 19 module-default-device-restore 20 module-rescue-streams 21 module-always-sink 22 module-intended-roles 23 module-suspend-on-idle 24 module-systemd-login 25 module-position-event-sounds 26 module-role-cork 27 module-filter-heuristics 28 module-filter-apply 30 module-cli-protocol-unix 33 module-null-sink sink_name=PulseEffects_apps sink_properties=device.description="PulseEffects(apps)"device.class="sound" channels=2 rate=44100 35 module-null-sink sink_name=PulseEffects_mic sink_properties=device.description="PulseEffects(mic)"device.class="sound" channels=2 rate=44100 37 module-alsa-card device_id="1" name="usb-Logitech_Logitech_USB_Headset-00" card_name="alsa_card.usb-Logitech_Logitech_USB_Headset-00" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes card_properties="module-udev-detect.discovered=1"
Las extensiones le ofrecen funcionalidades adicionales a a pulseaudio.
10. Listar dispositivos de entrada
pactl list sources short 0 alsa_output.pci-0000_00_1f.3.analog-stereo.monitor module-alsa-card.c s16le 2ch 48000Hz SUSPENDED 1 alsa_input.pci-0000_00_1f.3.analog-stereo module-alsa-card.c s16le 2ch 48000Hz SUSPENDED 2 combined.monitor module-combine-sink.c s16le 2ch 44100Hz SUSPENDED 5 PulseEffects_apps.monitor module-null-sink.c s16le 2ch 44100Hz RUNNING 6 PulseEffects_mic.monitor module-null-sink.c s16le 2ch 44100Hz SUSPENDED 7 alsa_output.usb-Logitech_Logitech_USB_Headset-00.analog-stereo.monitor module-alsa-card.c s16le 2ch 44100Hz IDLE 8 alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono module-alsa-card.c s16le 1ch 44100Hz SUSPENDED
11. Listar flujos de entrada
pactl list source-outputs short 2 5 89 protocol-native.c float32le 2ch 44100Hz
12. Examinar la configuración
Este comando es útil si tenemos algún problema y preguntamos en un foro. Proporcionar nuestra configuración nos va a permitir obtener más fácilmente una respuesta.
pacmd dump ### Configuration dump generated at Sun Aug 11 10:55:57 2019 load-module module-device-restore load-module module-stream-restore restore_device=false load-module module-card-restore load-module module-augment-properties load-module module-switch-on-port-available load-module module-udev-detect load-module module-alsa-card device_id="0" name="pci-0000_00_1f.3" card_name="alsa_card.pci-0000_00_1f.3" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes card_properties="module-udev-detect.discovered=1" load-module module-bluetooth-policy load-module module-bluetooth-discover load-module module-bluez5-discover load-module module-esound-protocol-unix load-module module-native-protocol-unix load-module module-gconf load-module module-native-protocol-tcp auth-anonymous=1 load-module module-esound-protocol-tcp auth-anonymous=1 load-module module-combine load-module module-combine-sink load-module module-switch-on-connect load-module module-default-device-restore load-module module-rescue-streams load-module module-always-sink load-module module-intended-roles load-module module-suspend-on-idle load-module module-systemd-login load-module module-position-event-sounds load-module module-role-cork load-module module-filter-heuristics load-module module-filter-apply load-module module-cli-protocol-unix set-sink-volume alsa_output.pci-0000_00_1f.3.analog-stereo 0xb018 set-sink-mute alsa_output.pci-0000_00_1f.3.analog-stereo no suspend-sink alsa_output.pci-0000_00_1f.3.analog-stereo no set-sink-volume combined 0x10000 set-sink-mute combined no suspend-sink combined yes set-source-volume alsa_output.pci-0000_00_1f.3.analog-stereo.monitor 0x10000 set-source-mute alsa_output.pci-0000_00_1f.3.analog-stereo.monitor no suspend-source alsa_output.pci-0000_00_1f.3.analog-stereo.monitor no set-source-volume alsa_input.pci-0000_00_1f.3.analog-stereo 0x3039 set-source-mute alsa_input.pci-0000_00_1f.3.analog-stereo no suspend-source alsa_input.pci-0000_00_1f.3.analog-stereo yes set-source-volume combined.monitor 0x10000 set-source-mute combined.monitor no suspend-source combined.monitor yes set-card-profile alsa_card.pci-0000_00_1f.3 output:analog-stereo+input:analog-stereo set-default-sink alsa_output.pci-0000_00_1f.3.analog-stereo set-default-source alsa_input.pci-0000_00_1f.3.analog-stereo ### EOF
13. pamixer
Este programa se puede descargar desde su sitio en GitHub.. Se instala compila e instala sencillamente con los pasos make
y make install
.
Tiene varios comandos útiles, sirve para activar o desactivar el estado mudo de un dispostivo:
./pamixer -t
14. pulsemixer
Esta herramienta se puede instalar como dice en su sitio de GitHub
Luego al ejecutarlo el comando pulsemixer
:
Las teclas de función permite fácilmente alternar entre los dispositivos de salida, entrada, y las placas de audio.
15. Reiniciar pulseaudio como usuario
systemctl restart --user pulseaudio
16. Configurar un dispositivo de salida predeterminado
pactl set-default-sink alsa_card.usb-Logitech_Logitech_USB_Headset-00
17. Configurar un dispositivo de entrada predetermianda
pactl set-default-source alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono
Conclusión
Desde luego que existen herramientas gráficas para realizar casi todas estas operaciones. No obstante, al usarlas desde la línea de comandos nos permite entender un poco más como funciona el sistema de sonido en Linux, que ciertamente no carece de cierta complejidad. Digno es de mencionar que muchas de las configuraciones se pueden guardar y hacer permanentes en el el archivo ~/.config/pulse/default.pa.