Что означают устройства ALSA, такие как «hw: 0,0»? Как мне определить, какой использовать?

164039
endolith

Я искал снова и снова и не могу найти никакого объяснения того, что означает "hw: 0,0". Как определить номер моей звуковой карты USB? MPD требует от меня ввести что-то вроде этого:

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

Если я сделаю «alsamixer -c 1», он откроет регулятор громкости на USB-карте, но это мне не поможет.

Где я могу найти список имен / номеров устройств в моей системе? Устойчивы ли они к аппаратным изменениям? Если я удалю карту 2, станет ли карта 3 картой 2? Существуют ли другие способы идентификации устройств? Где я могу найти документацию для всего этого?

58
так что же получилось? quack quixote 15 лет назад 0
Переключение на PulseAudio сработало, вроде. :) Но я должен был войти в систему локально и изменить аудио маршрутизацию. Тогда я решил MPD отстой и сдался. endolith 15 лет назад 0
На самом деле «hw: 1,0», вероятно, сработало, но в нем говорилось, что устройство использовалось (Pulse?). Я не пробовал другой метод, но, надеюсь, это поможет другим. endolith 15 лет назад 0

2 ответа на вопрос

45
quack quixote

Ответ 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», и вы можете использовать то же имя устройства в вашем .asoundrc.


Если вам нужно что-то более стабильное на еще более низком уровне, на реальных устройствах ядра, udev - это то, что вам нужно - это система, позволяющая подключать устройства к системе. Вы можете написать правила для udev (и вот справочную страницу ), которые позволят устройствам получать одинаковое имя устройства при подключении.

Ага! Мне сказали `aplay -L`, который не обеспечивает такой же вывод, как` aplay -l`. *вздох* endolith 15 лет назад 3
Как вы можете сказать, что `round40: CARD = CK804, DEV = 0` равно `hw: 0,1`? Насколько я могу судить, это `hw: 0,0`, учитывая, что оно ссылается на` DEV = 0`, но в другой конфигурации (4 канала, а не 2, как в `front: CARD = CK804, DEV = 0` ). zpon 7 лет назад 1
17
John T

hw:0,0указывает устройство по умолчанию на звуковой карте по умолчанию. Чтобы получить доступ к первому устройству вашей второй звуковой карты, вы должны указать hw:1,0. Они указаны в вашем .asoundrc. Подробнее обо всем этом здесь .

В частности, здесь: http://www.alsa-project.org/main/index.php/Asoundrc#The_naming_of_PCM_devices endolith 15 лет назад 4

Похожие вопросы