Apa artinya perangkat ALSA seperti "hw: 0,0"? Bagaimana cara mencari tahu yang harus digunakan?

63

Saya telah mencari berulang-ulang dan tidak dapat menemukan penjelasan apa arti "hw: 0,0". Bagaimana cara menentukan jumlah kartu audio USB saya? GKG mengharuskan saya untuk memasukkan sesuatu seperti ini:

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

Jika saya melakukan "alsamixer -c 1" itu membuka kontrol volume kartu USB, tapi itu benar-benar tidak membantu saya.

Di mana saya dapat menemukan daftar nama / nomor perangkat di sistem saya? Apakah mereka tahan terhadap perubahan perangkat keras? Jika saya mengeluarkan kartu 2, apakah kartu 3 menjadi kartu 2? Apakah ada cara lain untuk mengidentifikasi perangkat? Di mana saya dapat menemukan dokumentasi untuk semua ini?

endolith
sumber
jadi apa yang akhirnya berhasil?
Quack quixote
Beralih ke PulseAudio berfungsi, semacam. :) Tapi saya harus login secara lokal dan memodifikasi routing audio. Lalu saya memutuskan MPD sucks dan menyerah.
endolith
Sebenarnya "hw: 1,0" mungkin bekerja, tetapi dikatakan perangkat itu digunakan (oleh Pulse?) Saya tidak mencoba metode lain, tapi mudah-mudahan ini akan membantu orang lain.
endolith

Jawaban:

48

Jawaban JohnT memberikan dasar yang bagus. Saya akan menindaklanjutinya dengan cara menemukan perangkat di sistem Anda. Gunakan "aplay -l" untuk mendapatkan daftar perangkat di sistem Anda. The hw: X, Y berasal dari pemetaan ini hardware Anda - dalam hal ini, X adalah kartu nomor, sedangkan Y adalah perangkat nomor.

$ 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

Karena ini adalah perangkat USB yang mungkin tidak selalu mendapatkan nomor perangkat yang sama setiap kali mereka terhubung, perangkat hw: X, Y mungkin berubah. Jawaban paling sederhana adalah, untuk sistem desktop, coba alat konfigurasi GNOME / KDE / Xfce, dan lihat apakah mereka cukup pintar untuk mengambil perubahan.

Cara yang rumit, jika Anda tidak melakukan ini dengan sistem desktop, menjadi ... menarik. Anda mungkin bisa lolos dengan menggunakan alias perangkat alih-alih "hw: X, Y" - inilah yang ditunjukkan oleh keluaran "aplay -L". Item "something: CARD = FOO, DEV = Y" adalah alias, dan mungkin tidak akan berubah di antara berbagai perangkat plug-in, di mana X di "hw: X, Y" mungkin. (Dengan asumsi bahwa Anda menggunakan dongle USB yang sama setiap kali.)

$ 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

Jadi perintah aplay Anda akan menjadi "aplay -D front: CARD = CK804, DEV = 0 somefile.wav", dan Anda dapat menggunakan nama alat yang sama di .asoundrc Anda.


Jika Anda memerlukan sesuatu yang lebih stabil pada tingkat yang lebih rendah, perangkat kernel aktual, udev adalah apa yang Anda inginkan - itu adalah sistem yang memungkinkan perangkat hotplugging masuk ke sistem. Anda dapat menulis aturan untuk udev (dan inilah halaman manual ) yang akan memungkinkan perangkat untuk mendapatkan nama alat yang sama saat dicolokkan.

quack quixote
sumber
3
Aha! Saya telah diberitahu aplay -L, yang tidak memberikan output yang sama dengan aplay -l. sigh
endolith
1
Bagaimana Anda bisa tahu bahwa surround40:CARD=CK804,DEV=0adalah hw:0,1? Sejauh yang saya tahu itu hw:0,0diberikan bahwa itu merujuk DEV=0, tetapi dalam konfigurasi yang berbeda (4 saluran daripada 2 seperti dalam front:CARD=CK804,DEV=0).
zpon
19

hw:0,0menentukan perangkat default, pada kartu suara default. Untuk mengakses perangkat pertama kartu suara kedua Anda, Anda akan menentukan hw:1,0. Ini ditentukan dalam .asoundrc. Lebih lanjut tentang semua ini di sini .

John T
sumber
5
Khususnya di sini: alsa-project.org/main/index.php/…
endolith