1#
2#  USB-Audio.conf - configuration for USB Audio devices
3#
4#
5#  DO NO EDIT; this is an internal ALSA file.
6#  If you want to add your own definitions, put them into /etc/asound.conf or
7#  ~/.asoundrc, with "cards." before the "USB-Audio", e.g.:
8#
9#  cards.USB-Audio.pcm.use_dmix."NoiseBlaster 3000" no
10#
11#  If your device requires such a definition to work correctly, please report it
12#  to <alsa-devel@alsa-project.org>.
13
14
15# If a device has sample formats not supported by dmix, dmix can be disabled
16# here.
17USB-Audio.pcm.use_dmix {
18	"AudioPhile" no    # uses big-endian 24-bit samples
19	"Audiophile USB (tm)" no
20}
21
22# If a device does not have a four-channel mode for the front/rear outputs,
23# other modes can be selected here.
24# six_channels       - for devices that route the last two of the four channels
25#                      to the center/LFE outputs
26# two_stereo_devices - for devices that have two stereo audio interfaces
27USB-Audio.pcm.surround40_type {
28	"AudioPhile" two_stereo_devices
29	"Audiophile USB (tm)" two_stereo_devices
30	"ICUSBAUDIO7D" six_channels
31	"OmniStudio" two_stereo_devices
32	"Quattro" two_stereo_devices
33	"SB Audigy 2 NX" six_channels
34	"USB AudioSport Quattro (tm)" two_stereo_devices
35}
36
37# If a device does not use the first PCM device for digital data, the device
38# number for the iec958 device can be changed here.
39USB-Audio.pcm.iec958_device {
40	# "NoiseBlaster 3000" 42
41	"USB Sound Blaster HD" 1
42	"SB Omni Surround 5.1" 1
43
44	"Xonar U7" 1
45	"Xonar U7 MKII" 1
46	"ASUS XONAR U5" 1
47	"XONAR U5" 1
48	"XONAR SOUND CARD" 1
49	"Xonar SoundCard" 2
50	
51	# The below don't have digital in/out, so prevent them from being opened.
52	"Andrea PureAudio USB-SA Headset" 999
53	"Blue Snowball" 999
54	"C-Media USB Headphone Set" 999
55	"Cmedia Audio" 999
56	"Corsair HS60 PRO Surround USB S" 999
57	"DELL PROFESSIONAL SOUND BAR AE5" 999
58	"HP Digital Stereo Headset" 999
59	"GN 9330" 999
60	"Logitech Speaker Lapdesk N700" 999
61	"Logitech G35 Headset" 999
62	"Logitech USB Headset" 999
63	"Logitech USB Headset H540" 999
64	"Logitech Wireless Headset" 999
65	"Plantronics Blackwire 3220 Seri" 999
66	"Plantronics GameCom 780" 999
67	"Plantronics USB Headset" 999
68	"Plantronics Wireless Audio" 999
69	"SB WoW Headset" 999
70	"Scarlett 2i2 4th Gen" 999
71	"Scarlett 2i2 USB" 999
72	"Scarlett 2i4 USB" 999
73	"Scarlett Solo 4th Gen" 999
74	"Scarlett Solo USB" 999
75	"Sennheiser USB headset" 999
76	"SWTOR Gaming Headset by Razer" 999
77	"ThinkStation P620 Main" 999
78	"ThinkStation P620 Rear" 999
79	"Thunderbolt Dock Audio Headset" 999
80	"Thunderbolt Dock Audio Module" 999
81	"USB Device 0x46d_0x821" 999
82	"USB Device 0x46d_0x992" 999
83	"WD15 Dock" 999
84	"WD19 Dock" 999
85	"ThinkPad USB-C Dock Gen2 USB Au" 999
86}
87
88# Second iec958 device number, if any.
89USB-Audio.pcm.iec958_2_device {
90	"PHIREE U2" 1  # 0 = PCM S/PDIF, 1 = non-PCM S/PDIF
91	"PHIREE U2SX" 1  # 0 = PCM S/PDIF, 1 = non-PCM S/PDIF
92}
93
94
95# If a device requires non-standard definitions for front, default, surround40,
96# surround51, surround71 or iec958, they can be defined here.
97
98# M-Audio AudioPhile USB:
99# device 0: analog output, digital input
100# device 1: digital output, analog input
101USB-Audio."AudioPhile".pcm.default "cards.USB-Audio.Audiophile USB (tm).pcm.default"
102USB-Audio."Audiophile USB (tm)".pcm.default {
103	@args [ CARD ]
104	@args.CARD { type string }
105	type asym
106	playback.pcm {
107		type plug
108		slave.pcm {
109			type hw
110			card $CARD
111			device 0
112		}
113	}
114	capture.pcm {
115		type plug
116		slave.pcm {
117			@func concat
118			strings [ "dsnoop:DEV=1,CARD=" $CARD ]
119		}
120	}
121}
122USB-Audio."AudioPhile".pcm.iec958 "cards.USB-Audio.Audiophile USB (tm).pcm.iec958"
123USB-Audio."Audiophile USB (tm)".pcm.iec958 {
124	@args [ CARD AES0 AES1 AES2 AES3 ]
125	@args.CARD { type string }
126	@args.AES0 { type integer }
127	@args.AES1 { type integer }
128	@args.AES2 { type integer }
129	@args.AES3 { type integer }
130	type asym
131	playback.pcm {
132		type hw
133		card $CARD
134		device 1
135	}
136	capture.pcm {
137		type hw
138		card $CARD
139		device 0
140	}
141}
142
143# For this card we can (and must to get IEC61937) set AES bits
144USB-Audio."MicroII".pcm.iec958 "cards.USB-Audio.Audio Advantage MicroII.pcm.iec958"
145USB-Audio."Audio Advantage MicroII".pcm.iec958 {
146	@args [ CARD AES0 AES1 AES2 AES3 ]
147	@args.CARD { type string }
148	@args.AES0 { type integer }
149	@args.AES1 { type integer }
150	@args.AES2 { type integer }
151	@args.AES3 { type integer }
152
153	type hooks
154	slave.pcm {
155		type hw
156		card $CARD
157	}
158
159	hooks.0 {
160		type ctl_elems
161		hook_args [
162			{
163				interface PCM
164				name "IEC958 Playback Default"
165				preserve true
166				optional true
167				value [ $AES0 $AES1 $AES2 $AES3 ]
168			}
169			{
170				name "IEC958 Playback Switch"
171				lock true
172				preserve true
173				value 1
174			}
175		]
176	}
177}
178
179################################################################################
180
181<confdir:pcm/front.conf>
182
183USB-Audio.pcm.front.0 {
184	@args [ CARD ]
185	@args.CARD { type string }
186	@func refer
187	name {
188		@func concat
189		strings [
190			"cards.USB-Audio."
191			{ @func card_name card $CARD }
192			".pcm.front:CARD=" $CARD
193		]
194	}
195	default {
196		# We could use softvol, but the driver might have guessed a
197		# wrong name for the real volume control.
198		type hw
199		card $CARD
200		device 0
201	}
202}
203
204USB-Audio.pcm.default {
205	@args [ CARD ]
206	@args.CARD { type string }
207	@func refer
208	name {
209		@func concat
210		strings [
211			"cards.USB-Audio."
212			{ @func card_name card $CARD }
213			".pcm.default:CARD=" $CARD
214		]
215	}
216	default {
217		type asym
218		playback.pcm {
219			type plug
220			slave.pcm {
221				@func refer
222				name {
223					@func concat
224					strings [
225						"cards.USB-Audio.pcm.default_playback_dmix_"
226						{
227							@func refer
228							name {
229								@func concat
230								strings [
231									"cards.USB-Audio.pcm.use_dmix."
232									{ @func card_name card $CARD }
233								]
234							}
235							default yes
236						}
237						":CARD=" $CARD
238					]
239				}
240			}
241		}
242		capture.pcm {
243			type plug
244			slave.pcm {
245				@func concat
246				strings [ "dsnoop:" $CARD ]
247			}
248		}
249	}
250}
251
252USB-Audio.pcm.default_playback_dmix_yes {
253	@args [ CARD ]
254	@args.CARD { type string }
255	@func concat
256	strings [ "dmix:" $CARD ]
257}
258
259USB-Audio.pcm.default_playback_dmix_no {
260	@args [ CARD ]
261	@args.CARD { type string }
262	type hw
263	card $CARD
264	device 0
265}
266
267<confdir:pcm/surround40.conf>
268
269USB-Audio.pcm.surround40.0 {
270	@args [ CARD ]
271	@args.CARD { type string }
272	@func refer
273	name {
274		@func concat
275		strings [
276			"cards.USB-Audio."
277			{ @func card_name card $CARD }
278			".pcm.surround40:CARD=" $CARD
279		]
280	}
281	default {
282		@func refer
283		name {
284			@func concat
285			strings [
286				"cards.USB-Audio.pcm.surround40_"
287				{
288					@func refer
289					name {
290						@func concat
291						strings [
292							"cards.USB-Audio.pcm.surround40_type."
293							{ @func card_name card $CARD }
294						]
295					}
296					default default
297				}
298				":CARD=" $CARD
299			]
300		}
301	}
302}
303
304USB-Audio.pcm.surround40_default {
305	@args [ CARD ]
306	@args.CARD { type string }
307	type hw
308	card $CARD
309	device 0
310}
311
312USB-Audio.pcm.surround40_six_channels {
313	@args [ CARD ]
314	@args.CARD { type string }
315	type route
316	ttable.0.0 1
317	ttable.1.1 1
318	ttable.2.4 1
319	ttable.3.5 1
320	slave {
321		pcm {
322			type hw
323			card $CARD
324			device 0
325		}
326		channels 6
327	}
328}
329
330USB-Audio.pcm.surround40_two_stereo_devices {
331	@args [ CARD ]
332	@args.CARD { type string }
333	type route
334	ttable.0.0 1
335	ttable.1.1 1
336	ttable.2.2 1
337	ttable.3.3 1
338	slave.pcm {
339		type multi
340		slaves {
341			a {
342				pcm {
343					type hw
344					card $CARD
345					device 0
346				}
347				channels 2
348			}
349			b {
350				pcm {
351					type hw
352					card $CARD
353					device 1
354				}
355				channels 2
356			}
357		}
358		bindings [
359			{ slave a channel 0 }
360			{ slave a channel 1 }
361			{ slave b channel 0 }
362			{ slave b channel 1 }
363		]
364	}
365}
366
367<confdir:pcm/surround21.conf>
368<confdir:pcm/surround41.conf>
369<confdir:pcm/surround50.conf>
370<confdir:pcm/surround51.conf>
371
372USB-Audio.pcm.surround51.0 {
373	@args [ CARD ]
374	@args.CARD { type string }
375	@func refer
376	name {
377		@func concat
378		strings [
379			"cards.USB-Audio."
380			{ @func card_name card $CARD }
381			".pcm.surround51:CARD=" $CARD
382		]
383	}
384	default {
385		type route
386		ttable.0.0 1
387		ttable.1.1 1
388		ttable.2.4 1
389		ttable.3.5 1
390		ttable.4.2 1
391		ttable.5.3 1
392		slave {
393			pcm {
394				type hw
395				card $CARD
396				device 0
397			}
398			channels 6
399		}
400	}
401}
402
403<confdir:pcm/surround71.conf>
404
405USB-Audio.pcm.surround71.0 {
406	@args [ CARD ]
407	@args.CARD { type string }
408	@func refer
409	name {
410		@func concat
411		strings [
412			"cards.USB-Audio."
413			{ @func card_name card $CARD }
414			".pcm.surround71:CARD=" $CARD
415		]
416	}
417	default {
418		type route
419		ttable.0.0 1
420		ttable.1.1 1
421		ttable.2.4 1
422		ttable.3.5 1
423		ttable.4.2 1
424		ttable.5.3 1
425		ttable.6.6 1
426		ttable.7.7 1
427		slave {
428			pcm {
429				type hw
430				card $CARD
431				device 0
432			}
433			channels 8
434		}
435	}
436}
437
438<confdir:pcm/iec958.conf>
439
440USB-Audio.pcm.iec958.0 {
441	@args [ CARD AES0 AES1 AES2 AES3 ]
442	@args.CARD { type string }
443	@args.AES0 { type integer }
444	@args.AES1 { type integer }
445	@args.AES2 { type integer }
446	@args.AES3 { type integer }
447	@func refer
448	name {
449		@func concat
450		strings [
451			"cards.USB-Audio."
452			{ @func card_name card $CARD }
453			".pcm.iec958:CARD=" $CARD
454			",AES0=" $AES0 ",AES1=" $AES1 ",AES2=" $AES2 ",AES3=" $AES3
455		]
456	}
457	default {
458		# FIXME: we cannot set the AES parameters
459		type hw
460		card $CARD
461		device {
462			@func refer
463			name {
464				@func concat
465				strings [
466					"cards.USB-Audio.pcm.iec958_device."
467					{ @func card_name card $CARD }
468				]
469			}
470			default 0
471		}
472	}
473}
474
475USB-Audio.pcm.iec958.1 {
476	@args [ CARD AES0 AES1 AES2 AES3 ]
477	@args.CARD { type string }
478	@args.AES0 { type integer }
479	@args.AES1 { type integer }
480	@args.AES2 { type integer }
481	@args.AES3 { type integer }
482	@func refer
483	name {
484		@func concat
485		strings [
486			"cards.USB-Audio."
487			{ @func card_name card $CARD }
488			".pcm.iec958_2:CARD=" $CARD
489			",AES0=" $AES0 ",AES1=" $AES1 ",AES2=" $AES2 ",AES3=" $AES3
490		]
491	}
492	default {
493		# FIXME: we cannot set the AES parameters
494		type hw
495		card $CARD
496		device {
497			@func refer
498			name {
499				@func concat
500				strings [
501					"cards.USB-Audio.pcm.iec958_2_device."
502					{ @func card_name card $CARD }
503				]
504			}
505			default 999
506		}
507	}
508}
509
510# vim: ft=alsaconf
511