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

Что означают такие устройства ALSA, как "hw:0,0"? Как понять, какое из них использовать?

Я искал снова и снова и не могу найти никакого объяснения тому, что означает “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? Существуют ли другие способы идентификации устройств? Где я могу найти документацию по любому из них?

Ответы (2)

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

Ответ ДжонТа дает хорошие основы. Я прослежу, как найти устройства в вашей системе. Используйте “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, и посмотрите, достаточно ли они умны, чтобы уловить изменения.

Сложный способ, если вы не делаете этого с настольной системой, становится … интересным. Возможно, вам сойдет с рук использование псевдонимов device вместо “hw:X,Y” – это то, что показывает вывод “aplay -L”. Вещи “something: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 (и вот страница man ), которые позволят устройствам получать одно и то же имя устройства при подключении.

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

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

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

6
10
10
5
7