web-dev-qa-db-fra.com

Que signifient les périphériques ALSA tels que "hw: 0,0"? Comment puis-je savoir lequel utiliser?

J'ai cherché encore et encore et ne trouve aucune explication sur ce que "hw: 0,0" signifie. Comment déterminer le numéro de ma carte audio USB? MPD m'oblige à entrer quelque chose comme ceci:

audio_output {
        type                    "alsa"
        name                    "Sound Card"
        device                  "hw:0,0"     # optional
        format                  "44100:16:2" # optional
}

Si je fais "alsamixer -c 1", il ouvre le contrôle du volume de la carte USB, mais cela ne m'aide vraiment pas.

Où puis-je trouver une liste de noms/numéros d'appareils sur mon système? Sont-ils résilients aux modifications matérielles? Si je retire la carte 2, la carte 3 devient-elle la carte 2? Existe-t-il d'autres moyens d'identifier les périphériques? Où puis-je trouver de la documentation pour cela?

60
endolith

La réponse de JohnT donne une bonne base. Je vais suivre avec comment trouver les périphériques sur votre système. Utilisez "aplay -l" pour obtenir une liste des périphériques de votre système. Le hw: X, Y provient de ce mappage de votre matériel - dans ce cas, X est la carte nombre, alors que Y est le périphérique nombre.

$ aplay -l   # note lower-case "L" option
**** List of PLAYBACK Hardware Devices ****
card 0: T71Space [Terratec Aureon 7.1-Space], device 0: ICE1724 [ICE1724]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: T71Space [Terratec Aureon 7.1-Space], device 1: IEC1724 IEC958 [IEC1724 IEC958]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: T71Space [Terratec Aureon 7.1-Space], device 2: ICE1724 Surrounds [ICE1724 Surround PCM]
  Subdevices: 3/3
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2

Etant donné que ce sont des périphériques USB qui peuvent ne pas toujours recevoir les mêmes numéros de périphérique à chaque fois qu’ils sont branchés, le périphérique hw: X, Y peut changer. La réponse la plus simple est, pour un système de bureau, essayez les outils de configuration GNOME/KDE/Xfce et voyez s'ils sont assez intelligents pour accepter les modifications.

La manière complexe, si vous ne le faites pas avec un système de bureau, devient ... intéressante. Vous pourrez peut-être utiliser en utilisant alias de périphérique au lieu de "hw: X, Y" - c'est ce que montre le résultat de "aplay -L". Le "quelque chose: CARD = FOO, DEV = Y" est l'alias, et ne changera probablement pas entre différents plug-ins de périphérique, où le X dans "hw: X, Y" pourrait. (En supposant que vous utilisez le même dongle USB à chaque fois.)

$ aplay -L
default:CARD=CK804
    NVidia CK804, NVidia CK804
    Default Audio Device
front:CARD=CK804,DEV=0                 # hw:0,0
    NVidia CK804, NVidia CK804
    Front speakers
surround40:CARD=CK804,DEV=0            # hw:0,1
    NVidia CK804, NVidia CK804
    4.0 Surround output to Front and Rear speakers

Ainsi, votre commande aplay deviendrait "aplay -D front: CARD = CK804, DEV = 0 somefile.wav" et vous pourrez utiliser le même nom de périphérique dans votre fichier .asoundrc.


Si vous avez besoin de quelque chose de plus stable à un niveau encore plus bas, de périphériques réels du noyau, udev est ce que vous voulez - c'est le système qui permet de connecter à chaud des périphériques. Vous pouvez écrire les règles pour udev (et voici la man page ) qui permettra aux périphériques d’obtenir le même nom de périphérique lorsqu’ils sont branchés.

45
quack quixote

hw:0,0 spécifie le périphérique par défaut, sur la carte son par défaut. Pour accéder au premier périphérique de votre deuxième carte son, vous devez spécifier hw:1,0. Ceux-ci sont spécifiés dans votre .asoundrc. Plus sur tout cela ici .

18
John T