it-swarm-ru.tech

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

60
endolith

Ответ 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 (и вот страницу man ), которая позволит устройствам получать одинаковое имя устройства при подключении.

45
quack quixote

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

18
John T