Busqueda sobre Linux y software libre

Noticias sobre linux y software libre - Google 

Devs audio en linux

Pregunta

Una consulta y creo que estuve un buen rato leyendo...

como puedo saber cual es la dirección de mi entrada de audio (microfono, linea)
a ver... 
por ejemplo un dispositivo de video es como /dev/video0 y luego se va asignando los demás como van entrando /dev/video1, etc, etc, etc... 
ahora bien se supone que la entrada de audio deberia ser /dev/dsp , etc...
pero yo no la tengo!! bueno, ahora bien tengo una tarjeta de sonido y al parecer funciona muy bien... pero no se donde està montada sus devices 
osea, al parecer /dev/snd/ .... hay varios... pero por ejemplo si hago un cat a /dev/video0/ entonces sale un montòn de caracteres prueba de que hay algo que esta haciendo... pero haciendo lo mismo en alguno de los devices de /dev/snd/ no pasa nada!
Pero la tarjeta funciona muy bien, solo que necesito saber donde estan sus devices..

Respuesta

Excelente pregunta.

Desde hace unos años /dev/snd/ es el lugar donde están los
dispositivos de sonido. En estos tiempos, el viejo sistema de mezclado
(OSS - Open Sound System - responsable del /dev/dsp) ya no se usa y
generalmente no está presente sin configuración adicional:

Si necesitas los dispositivos viejos, siempre puedes subir los módulos
de compatibilidad:

[root@fenix device]# ls /dev/dsp
ls: cannot access /dev/dsp: No such file or directory
[root@fenix device]# modprobe snd-mixer-oss
[root@fenix device]# modprobe snd-pcm-oss
[root@fenix device]# ls /dev/dsp
/dev/dsp


Claramente estos viejos no son necesarios. Por curiosidad, veamos
quién usa los dispositivos de sonido.

[root@fenix ~]# lsof /dev/snd/*
COMMAND    PID    USER  FD  TYPE DEVICE SIZE/OFF NODE NAME
pulseaudi 2011 marcelo  mem    CHR  116,4          6829 /dev/snd/pcmC0D0p
pulseaudi 2011 marcelo  20u  CHR  116,7      0t0 6832 /dev/snd/controlC0
pulseaudi 2011 marcelo  21u  CHR  116,4      0t0 6829 /dev/snd/pcmC0D0p
pulseaudi 2011 marcelo  22u  CHR  116,7      0t0 6832 /dev/snd/controlC0
pulseaudi 2011 marcelo  27u  CHR  116,7      0t0 6832 /dev/snd/controlC0
pulseaudi 2011 marcelo  29u  CHR  116,7      0t0 6832 /dev/snd/controlC0

En mi caso es pulseaudio quien está usando estos dispositivos. No
conozco bien pulseaudio pero imagino que algún pipe sirve como entrada
del micrófono (en mi caso es PID 2011):

[root@fenix ~]# lsof -p 2011
COMMAND    PID    USER  FD      TYPE            DEVICE SIZE/OFF      NODE NAME
pulseaudi 2011 marcelo  cwd      DIR                8,5    4096      128 /
...
pulseaudi 2011 marcelo    3u    unix 0xffff8803feaa9a00      0t0
14058 socket
pulseaudi 2011 marcelo    4u    unix 0xffff88038660f400      0t0
1327106 /run/user/1000/pulse/native
...
pulseaudi 2011 marcelo    9u    unix 0xffff8804078f6080      0t0
17501 socket
pulseaudi 2011 marcelo  10u      REG                8,5    8192
1783054 /home/marcelo/.pulse/1a1c41003ca544b1b74d3285e3d8f066-device-volumes.tdb
pulseaudi 2011 marcelo  11u      REG                8,5    12288
4083442 /home/marcelo/.pulse/1a1c41003ca544b1b74d3285e3d8f066-stream-volumes.tdb
pulseaudi 2011 marcelo  12u      REG                8,5    32768
1783055 /home/marcelo/.pulse/1a1c41003ca544b1b74d3285e3d8f066-card-database.tdb
pulseaudi 2011 marcelo  14u  netlink                        0t0
16187 KOBJECT_UEVENT
pulseaudi 2011 marcelo  15u    unix 0xffff88040764b740      0t0
16188 socket
...
pulseaudi 2011 marcelo  20u      CHR              116,7      0t0
6832 /dev/snd/controlC0
pulseaudi 2011 marcelo  21u      CHR              116,4      0t0
6829 /dev/snd/pcmC0D0p
pulseaudi 2011 marcelo  22u      CHR              116,7      0t0
6832 /dev/snd/controlC0
...
pulseaudi 2011 marcelo  27u      CHR              116,7      0t0
6832 /dev/snd/controlC0
pulseaudi 2011 marcelo  29u      CHR              116,7      0t0
6832 /dev/snd/controlC0
pulseaudi 2011 marcelo  30u    unix 0xffff8804078f63c0      0t0
17496 socket
pulseaudi 2011 marcelo  31r      DIR                8,5    4096
1210749 /home/marcelo
pulseaudi 2011 marcelo  32r      DIR              0,29      60
16189 /tmp/.esd-1000
pulseaudi 2011 marcelo  33u    unix 0xffff88040764a700      0t0
16191 /tmp/.esd-1000/socket
pulseaudi 2011 marcelo  34u    unix 0xffff880407649380      0t0
16194 /run/user/1000/pulse/native
pulseaudi 2011 marcelo  35r    FIFO                0,8      0t0    16196 pipe
pulseaudi 2011 marcelo  36r  a_inode                0,9        0
6112 inotify
pulseaudi 2011 marcelo  37u    unix 0xffff88040764a3c0      0t0
16202 /run/user/1000/pulse/dbus-socket

Seguramente alguno de estos sockets sirve de forma similar a los
viejos dispositivos.


Para Ver las características del dispositivo como tal hay que dar
algunas vueltas:

[root@fenix ~]# udevadm info -q all -n /dev/snd/controlC0
P: /devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0
N: snd/controlC0
S: snd/by-path/pci-0000:00:1b.0
E: DEVLINKS=/dev/snd/by-path/pci-0000:00:1b.0
E: DEVNAME=/dev/snd/controlC0
E: DEVPATH=/devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0
E: ID_PATH=pci-0000:00:1b.0
E: ID_PATH_TAG=pci-0000_00_1b_0
E: MAJOR=116
E: MINOR=7
E: SUBSYSTEM=sound
E: TAGS=:uaccess:
E: USEC_INITIALIZED=34650

Ahora puedes ver más datos mediante el sistema de archivos /sys
(simplemente prefija /sys al DEVPATH que salió arriba)

[root@fenix ~]# cd /sys/devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0
[root@fenix controlC0]#  cd device/device
[root@fenix device]#  ls -l
total 0
-rw-r--r-- 1 root root  4096 Apr  3 18:04 broken_parity_status
-r--r--r-- 1 root root  4096 Apr  3 09:39 class
-rw-r--r-- 1 root root  4096 Apr  3 00:39 config
.....

Ahora tienes un montón de información a tu disposición. Por ejemplo,
el enlace con el módulo del linux

[root@fenix device]# cat modalias
pci:v00008086d00001C20sv00001043sd00008444bc04sc03i00

Con eso puedes ver el módulo del linux
[root@fenix device]# modinfo
pci:v00008086d00001C20sv00001043sd00008444bc04sc03i00
filename:
/lib/modules/3.8.4-1-ARCH/kernel/sound/pci/hda/snd-hda-intel.ko.gz
description:    Intel HDA driver
....

Ads by CJ - Linux Foundation

Share This