คำตอบของ JohnT ให้พื้นฐานที่ดี ฉันจะติดตามมันด้วยวิธีการค้นหาอุปกรณ์ในระบบของคุณ ใช้ "aplay -l" เพื่อรับรายการอุปกรณ์ในระบบของคุณ HW: X, Yมาจากการทำแผนที่ของฮาร์ดแวร์ของคุณนี้ - ในกรณีนี้ X คือบัตรจำนวนขณะที่ Y เป็นอุปกรณ์จำนวน
$ 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
เนื่องจากอุปกรณ์เหล่านี้เป็นอุปกรณ์ USB ที่อาจไม่ได้รับหมายเลขอุปกรณ์เหมือนกันทุกครั้งที่เสียบอุปกรณ์ hw: X, Y อาจเปลี่ยนไป คำตอบที่ง่ายที่สุดคือสำหรับระบบเดสก์ท็อปลองใช้เครื่องมือกำหนดค่า GNOME / KDE / Xfce และดูว่าฉลาดพอที่จะรับการเปลี่ยนแปลงหรือไม่
วิธีที่ซับซ้อนหากคุณไม่ได้ทำสิ่งนี้ด้วยระบบเดสก์ท็อป คุณอาจสามารถหนีด้วยการใช้ชื่อแทนอุปกรณ์แทน "hw: X, Y" - นี่คือสิ่งที่เอาท์พุตของ "aplay -L" แสดง สิ่งที่ "บางสิ่งบางอย่าง: CARD = FOO, DEV = Y" เป็นชื่อแทนและอาจจะไม่เปลี่ยนแปลงระหว่างปลั๊กอินอุปกรณ์ต่าง ๆ โดยที่ X ใน "hw: X, Y" (สมมติว่าคุณกำลังใช้ดองเกิล 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
ดังนั้นคำสั่ง aplay ของคุณจะกลายเป็น "aplay -D front: CARD = CK804, DEV = 0 somefile.wav" และคุณสามารถใช้ devicename เดียวกันใน. asoundrc ของคุณ
หากคุณต้องการสิ่งที่มีเสถียรภาพมากขึ้นในระดับที่ต่ำกว่าอุปกรณ์เคอร์เนลที่แท้จริงudevคือสิ่งที่คุณต้องการ - เป็นระบบที่ช่วยให้อุปกรณ์ hotplugging เข้าสู่ระบบ คุณสามารถเขียนกฎสำหรับ udev (และนี่คือหน้าคน ) ที่จะช่วยให้อุปกรณ์ได้รับ devicename เดียวกันเมื่อเสียบเข้า