2009-10-11 17:32:47 +0000 2009-10-11 17:32:47 +0000
67
67

O que significam dispositivos ALSA como "hw:0,0"? Como é que descubro quais utilizar?

Tenho procurado repetidamente e não consigo encontrar qualquer explicação sobre o significado de “hw:0,0”. Como posso determinar o número da minha placa de áudio USB? MPD requer que eu introduza algo como isto:

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

Se eu fizer “alsamixer -c 1” abre o controlo 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? São eles resistentes a mudanças de hardware? Se eu remover o cartão 2, o cartão 3 torna-se cartão 2? Existem outras formas de identificar dispositivos? Onde posso encontrar documentação para qualquer um destes dispositivos?

Respostas (2)

53
53
53
2009-10-11 18:12:29 +0000

A resposta de JohnT dá uma boa base. Vou segui-la com a forma de encontrar os dispositivos no seu sistema. Use “aplay -l” para obter uma lista dos dispositivos no seu sistema. O hw:X,Y vem deste mapeamento do seu hardware – neste caso, X é o número do cartã, enquanto Y é o device 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 estes são dispositivos USB que podem nem sempre obter os mesmos números de dispositivos cada vez que estão ligados, o dispositivo hw:X,Y pode mudar. A resposta mais simples é, para um sistema desktop, experimentar as ferramentas de configuração GNOME/KDE/Xfce, e ver se são suficientemente inteligentes para captar as alterações.

A forma complexa, se não estiver a fazer isto com um sistema de ambiente de trabalho, torna-se … interessante. Talvez consiga escapar com usando device aliases em vez do “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 mudará entre diferentes plug-ins de dispositivos, onde o X em “hw:X,Y” poderá. (Assumindo que está a usar sempre o mesmo dongle USB.)

$ 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

Então o seu comando aplay tornar-se-ia “aplay -D front:CARD=CK804,DEV=0 somefile.wav”, e pode usar o mesmo nome de dispositivo no seu .asoundrc.


Se precisar de algo mais estável a um nível ainda mais baixo, os dispositivos de kernel actuais, udev* é o que pretende – é o sistema que permite a ligação de dispositivos de hotplug ao sistema. Pode escrever regras para udev (e aqui está a página man ) que permitirá que os dispositivos obtenham o mesmo nome de dispositivo quando ligados.

19
19
19
2009-10-11 17:40:05 +0000

hw:0,0 especifica o dispositivo padrão, na placa de som padrão. Para aceder ao primeiro dispositivo da sua segunda placa de som, especificaria hw:1,0. Estes são especificados no seu .asoundrc. Mais sobre tudo isto aqui .