O que significam dispositivos ALSA como “hw: 0,0”? Como faço para descobrir qual usar?

57

Eu pesquisei várias vezes e não consigo encontrar nenhuma explicação do que significa "hw: 0,0". Como faço para determinar o número da minha placa de áudio USB? O MPD exige que eu digite algo assim:

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

Se eu fizer "alsamixer -c 1", ele abre o controle de volume da placa USB, mas isso realmente não me ajuda.

Onde posso encontrar uma lista de nomes / números de dispositivos no meu sistema? Eles são resilientes a mudanças de hardware? Se eu remover o cartão 2, o cartão 3 se torna o cartão 2? Existem outras maneiras de identificar dispositivos? Onde posso encontrar documentação para isso?

    
por endolith 11.10.2009 / 19:32

2 respostas

44

A resposta de JohnT dá uma boa base. Vou acompanhá-lo com a forma de encontrar os dispositivos no seu sistema. Use "aplay -l" para obter uma lista dos dispositivos em seu sistema. O hw: X, Y vem desse mapeamento do seu hardware - nesse caso, X é o número da carta , enquanto Y é o dispositivo número.

$ 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

Como esses são dispositivos USB que nem sempre recebem os mesmos números de dispositivo sempre que estão conectados, o dispositivo hw: X, Y pode mudar. A resposta mais simples é, para um sistema de desktop, experimentar as ferramentas de configuração do GNOME / KDE / Xfce e ver se elas são inteligentes o suficiente para captar as mudanças.

A maneira complexa, se você não está fazendo isso com um sistema desktop, fica ... interessante. Você pode conseguir usar o usando alias de dispositivos em vez de " hw: X, Y "- isto é o que a saída de" aplay -L "mostra. O material "something: CARD = FOO, DEV = Y" é o alias e provavelmente não será alterado entre diferentes plug-ins de dispositivo, onde o X em "hw: X, Y" pode. (Supondo que você esteja usando o mesmo dongle USB de cada vez.)

$ 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

Assim, seu comando aplay se tornaria "aplay -D front: CARD = CK804, DEV = 0 somefile.wav" e você pode usar o mesmo devicename em seu .asoundrc.

Se você precisar de algo mais estável em um nível ainda mais baixo, os dispositivos de kernel reais, udev é o que você quer - é o sistema que permite dispositivos hotplug no sistema. Você pode escrever regras para o udev (e aqui está o man page ) que permitirá que os dispositivos obtenham o mesmo nome de usuário quando conectados.

    
por 11.10.2009 / 20:12
17

hw:0,0 especifica o dispositivo padrão, na placa de som padrão. Para acessar o primeiro dispositivo da sua segunda placa de som, você deve especificar hw:1,0 . Estes são especificados em seu .asoundrc . Mais sobre tudo isso aqui .

    
por 11.10.2009 / 19:40