UMGUM.COM (лучше) 

Linux + USB Audio Controller HY554 ( Изучение возможностей USB "звуковой карты". )

5 ноября 2011  (обновлено 31 января 2015)

OS: Debian GNU/Linux Squeeze and Microsoft Windows XP SP3.
Hard: External USB 2.0 Audio Controller with support Virtual 5.1-Surround and 3D (Ac-3) Sound Track (HY554).

Заметил давеча на полке, среди мелкого барахлишка, в магазине "Модерн Компьютер" (РК, Павлодар, Академика Сатпаева, 27-12; +7 (7182) 78-10-31) штуковину зеленоватого цвета, в два раза короче моего мизинца, называющую себя "звуковой картой" и заявляющую о следующих возможностях:

USB 2.0 data interface;
Powered directly by USB, no other power source required;
Features 3.5mm stereo earphone and microphoine jacks;
Supports Window 98SE/ME/2000/XP/2003/Vista/Linux/Mac OS;
Driver-free installation when used with modern Operating Systems;
Virtual surround 5.1 DSP processor.

размер: 320 400 640 800 1024 1280
External USB 2.0 Audio Controller HY554: Вид с торца.
External USB 2.0 Audio Controller HY554: Вид с торца.


External USB 2.0 Audio Controller HY554: Вид сверху.
External USB 2.0 Audio Controller HY554: Вид сверху.

External USB 2.0 Audio Controller HY554: Вид снизу.
External USB 2.0 Audio Controller HY554: Вид снизу.

По первым трём пунктам всё очевидно; то, что это USB - ясно, по нашим временам делать что-то на USB 1.1 было бы странно, ещё более странным было бы для столь мелкого устройства привлекать сторонние источники электрического питания. Не заметить два разъёма для подключения стерео входа и выхода, опять-же, трудновато.

А вот дальше шло уже интересненькое. Во первых, как в столь мелкое устройство умудрились всунуть совместимость со всем, что гудит и реагирует на нажатие кнопок, да ещё и обеспечили инсталляцию без сторонних драйверов? Во вторых, припомним, какого размера были звуковые адаптеры ещё пятёрку-десятку лет назад, даже не обладающие никакими иными возможностями, кроме выноса звука из корпуса компьютера во внешнюю среду? - и что мы видим сейчас? Три разъёма, зажатая между ними мелкая платка, с тремя электролитическими конденсаторами, прячущими под собой крохотную капельку микросхемы. Где там чудо, делающее то, что должно? После нескольких лет работы с громко ревущими и греющимися устройствами, вроде тракторов Т-150 и серверов HP Proliant на два-четыре "юнита", с компонентами по два-три килограмма, я просто не смог отойти от штучки весом в "0.67 oz", не проверив её в действии.

Чего разговоры говорить, втыкаем штучку в USB разъём моего ноутбука:

# dmesg

....
usb 4-2: new full speed USB device using uhci_hcd and address 2
usb 4-2: New USB device found, idVendor=0c76, idProduct=1607
usb 4-2: New USB device strings: Mfr=0, Product=1, SerialNumber=0
usb 4-2: Product: USB Headphone Set
usb 4-2: configuration #1 chosen from 1 choice
input: USB Headphone Set as /devices/pci0000:00/0000:00:1d.2/usb4/4-2/4-2:1.3/input/input10
generic-usb 0003:0C76:1607.0002: input,hidraw1: USB HID v1.00 Device [USB Headphone Set] on usb-0000:00:1d.2-2/input3
usbcore: registered new interface driver snd-usb-audio
....

Эра переосмысления понятия расходного материала, теперь даже у вполне себе полноценных устройствах нет серийного номера. Зачем? Попользовался и выкинул. Зато есть идентификаторы производителя и серии продукта: "idVendor=0c76, idProduct=1607". Сразу скажу, я лопатил выдачу поисковиков в течении половины рабочего дня, выискивая "datasheet" устройства - ничего не нашёл. Видимо используемая микросхема достаточно свежая, чтобы схемотехника ещё не разошлась по рукам.

Сразу проверяю, не опознала ли операционная система, как было обещано, в автоматическом режиме, звуковое устройство:

# cat /proc/asound/cards

0 [Intel  ]: HDA-Intel - HDA Intel
  HDA Intel at 0xe8580000 irq 21

1 [Set    ]: USB-Audio - USB Headphone Set
  USB Headphone Set at usb-0000:00:1d.2-2, full speed

Опознало. Смотрим, что оно может:

# cat /proc/asound/pcm

00-00: AD198x Analog : AD198x Analog : playback 1 : capture 1
00-06: Si3054 Modem : Si3054 Modem : playback 1 : capture 1
01-00: USB Audio : USB Audio : playback 1 : capture 1

Хм, и воспроизводить звуковой поток может и принимать его. Пока не врут, однако. На всякий случай перезапускаю звуковую подсистему:

# alsa reload

Утилита конфигурирования звуковых устройств видит и может управлять новым интерфейсом:

$ alsamixer => F6

Поднастраиваем уровни громкости и убеждаемся в том, что устройство звучит:

$ mplayer -ao alsa:noblock:device=hw=1.0 /path-to-file.mp3

В моём случае Alsa припарковало устройство на идентификатор "hw:1,0". Теперь любое приложение, использующее Alsa для воспроизведения и приёма звукового потока сможет работать с картой. Я попробовал VLC, MPlayer, Clementine, Audacity и Skype - всё просто работает.

Ладно, работает себе и работает, а вот почему? Покопался в теме и выяснил, что USB - это не просто проводной интерфейс, а целая подсистема абстракций, регламентирующая методы взаимодействия устройств, чётко их классифицируя. Для установления взаимопонимания между устройствами по USB интерфейсу существует многоуровневая система идентификации, называемая "class device". Одно USB устройство может нести разнообразный функционал, идентифицируемый определёнными классами, для которых чётко описаны методы взаимодействия. Система классов не "плоская", функционал разбивается на блоки, каждый их которых описывается своим подклассом.

Так вот, для устройств "USB Audio" все основные методы взаимодействия давно уже определены, прослойка абстракций USB всех распространённых операционных систем их поддерживают и производители, следующие стандарту, могут выпускать буквально "driverless device", устройства, не нуждающиеся в сопровождении их специфичными драйверами.

Хорошо, система всё понимает, значит и мы можем по ответу устройства оценить его возможности:

# lsusb --verbose

....
Device Descriptor:
....
  # Похоже на то, что реклама малость соврала - устройство USB 1.1
  bcdUSB    1.10
....
  # Глубоко раскрывающее суть устройства название
  iProduct  1 USB Headphone Set
....
  Configuration Descriptor:
....
    # Всего активно четыре интерфейса взаимодействия с устройством
    bNumInterfaces  4
....
    # Первый интерфейс - предназначен для управления устройством
    Interface Descriptor:
....
      bInterfaceNumber  0
....
      bInterfaceClass     1 Audio
      bInterfaceSubClass  1 Control Device
....
      # Мы можем управлять двухканальным выходом
      AudioControl Interface Descriptor:
....
        wTerminalType  0x0101 USB Streaming
....
        bNrChannels     2
        wChannelConfig  0x0003
          Left Front (L)
          Right Front (R)
....
      # Мы можем управлять одноканальным микрофонным входом
      AudioControl Interface Descriptor:
....
        wTerminalType      0x0201 Microphone
....
        bNrChannels          1
        wChannelConfig  0x0001
          Left Front (L)
....
      # Конкретно для двухканального выхода мы можем управлять индивидуальным уровнем звука и общим включением/выключением
      AudioControl Interface Descriptor:
....
        bmaControls( 0)  0x01
          Mute
        bmaControls( 1)  0x02
          Volume
        bmaControls( 2)  0x02
          Volume
....
      # Для одноканального микрофонного входа мы можем управлять уровнем звука, включением/выключением микрофонного входа и активацией/деактивацией режима автоматической адаптации уровня звука
      AudioControl Interface Descriptor:
....
        bmaControls( 0)  0x43
          Mute
          Volume
          Automatic Gain
....

    # Здесь описаны возможности интерфейса двухканального выхода
    Interface Descriptor:
....
      bInterfaceNumber  1
....
      bInterfaceClass     1 Audio
      bInterfaceSubClass  2 Streaming
....
      AudioStreaming Interface Descriptor:
....
        bDelay      1 frames
        wFormatTag  1 PCM
....
        bNrChannels         2
        bSubframeSize       2
        bBitResolution     16
        bSamFreqType        1 Discrete
        tSamFreq[ 0]    48000
....

    # Здесь описаны возможности интерфейса одноканального входа
    Interface Descriptor:
....
      bInterfaceNumber    2
....
      bInterfaceClass     1 Audio
      bInterfaceSubClass  2 Streaming
....
      AudioStreaming Interface Descriptor:
....
        bDelay            1 frames
        wFormatTag        1 PCM
      AudioStreaming Interface Descriptor:
....
        bNrChannels         1
        bSubframeSize       2
        bBitResolution     16
        bSamFreqType        1 Discrete
        tSamFreq[ 0]    48000
....
    # А здесь заявлена поддержка контроллером подключения пульта управления (только вот она не активна, если я верно понял)
    Interface Descriptor:
....
      bInterfaceNumber    3
....

      bInterfaceClass     3 Human Interface Device
      bInterfaceSubClass  0 No Subclass
....

Итак, после беглого изучения устройства, оформилось следующее о нём представление:

Штучка является простейшим из возможных цифро-аналоговым преобразователем средней части диапазона воспринимаемых человеческим ухом звуковых частот с минимально достаточным набором средств управления;

Богатством поддерживаемых цифровых частот и глубин не блещет, но для абсолютного большинства задач исполняемых персональным компьютером имеющегося хватает более чем;

С нагрузкой низшего потребительского класса (колонки, наушники), имеющей сопротивление от 30 до 300 Ом обеспечивает звучание, в котором на слух вполне можно выделить верхние, средние и низкие частоты.

В общем, для просмотра тайком на рабочем месте фильмов, разговоров по Skype и тому подобных задач устройство отлично подходит. Следует только подключать его через удлинитель, чтобы спрятать мигающий раз в две секунды ярко красный индикатор, расположенный на передней стороне плате. Так-же, нужно ещё иметь в виду, что с устройством не стоит сопрягать наушники с реально широким частотным диапазоном воспроизведения, так как устройство "шумит" на низкой частоте (подозреваю, что это помехи от мигающего индикатора; в наушниках появляется тихий плавающий "нойс", типа того, что в дальнобойной рации бывает, статика дальних миров - прикольно, будто буржуйское "Радио Свобода" в восьмидесятые слушаешь).


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )