ru:os2faq:os2mm:os2mm.022

[Q]: Где найти драйвер к звуковой карте AC'97 или High Definition Audio?

[A]: Andrew Belov (2:5020/181.2)

AC'97 (Audio Codec'97) - это обозначение аналоговой части многих звуковых карт (его функции - преобразование АЦП/ЦАП, микширование каналов PC Speaker'а, модема и т.д.).

Единого “драйвера” для AC'97 не существует - работой с чипом занимается контроллер; в случае интегрированных звуковых карт на материнской плате это, как правило, south bridge чипсета.

В спецификации AC'97 v 1.02 (май 1996 г.) от “решения на базе AC'97” требовалась поддержка изменяемой частоты дискретизации от 8000 до 48000 Гц; кодек должен был поддерживать режим стерео 16-бит и выдерживать соотношение “сигнал-шум” не менее 80 дБ. Впоследствии появились “урезанные” (умеющие только 48 кГц) и “полупрофессиональные” (с разной самодеятельностью: баланс, эквалайзер, surround, S/P DIF и т.д) варианты, которые позволяли себе отклоняться от требований AC'97. Новым общим знаменаталем для этих технологий является High Definition Audio (HDA).

Для доступа к настройкам AC'97 из MMPM/2 в фирме Crystal/Cirrus был специально разработан API IOCtl90. Рекомендуется выбрать драйвер с его поддержкой и установить IOCtl90-микшер - например, LBMix.

Последовательность поиска драйвера:

1. Если используется чип C-Media:

  1. CMI8738 - см. соответствующий open-source драйвер (CMEDIA019.ZIP).

Строго говоря, это не AC'97, хотя по возможностям отличается несильно.

  1. C-Media производит и “настоящие” AC'97 (например, CMI9739A - известен

как сверхдешевое решение), для которых описанный драйвер не подходит; с

   этого момента рекомендуется забыть про "кодек от C-Media" и
   ориентироваться на пп. (2), (4), (5) и (6).

2. Пробуем ALSA/2 (AKA “Universal Audio Driver”, “UniAudio”) - это довольно

 обширная коллекция мини-драйверов по принципу "все в одном" со всей
 необходимой обвязкой для MMPM/2. Для HDA это по сути единственный вариант.
 По состоянию на 15/03/2007 проект обитает на http://uniaud.netlabs.org, но
 пока - без мейнтейнера.
 Драйвер может выпускаться в версии с KEE (для OS/2 v 4.5+) и без KEE (для
 3.0+), хотя при наличии GPL-исходников можно пересобрать в требуемом
 варианте самостоятельно.

3. Если установлен AC'97-кодек от Realtek (он же Avance Logic), следует

 попробовать драйвер от Realtek'а:
 ftp://210.51.181.211/pc/ac97/alc650/os2warp4_141.exe
 По состоянию на 13/09/2003 знает чипсеты образца середины 2002 года.
 Недостаток - не поддерживает передискретизации для кодеков ALC-100/101
 производства все того же Realtek (см. проблему [2]).

4. Если чипсет от Intel (440MX, ICHn, …) - следует искать драйвер к кодеку

 на матплате, в случае неудачи можно пропатчить драйвер SoundMax, чтобы он
 понимал любые типы кодеков.
 Сохраняем один из следующих патчей в файле в директории \MMOS2 (файл
 можно назвать patch.txt):
  1. Для версии 3.19 (2004-02-17 13:29:58 44800 ichcsnd.sys)

или 3.18 (2003-11-26 09:55:58 44754 ichcsnd.sys)

Cut

FILE ICHCSND.SYS VER 5C82 31C0 CHA 5C82 B001

Cut

  1. Для версии 3.11 (архив ad188xos2_311.zip 402882 2002/05/21)

Cut

FILE ICHCSND.SYS VER 5DE2 31C0 CHA 5DE2 B001

Cut

 Применяем патч (patch patch.txt /a), перезагружаемся.

5. Если чипсет от VIA:

  1. KT133A/Apollo Pro 133A и ниже: драйвер на http://www.viaarena.com

(не обновлялся с 2001 года - иногда нужен патч VIASP09C.ZIP @

   hobbes.nmsu.edu)
 - KT266...600/P4X266...533/Apollo Pro 266: 823X*.ZIP @ hobbes.nmsu.edu.

6. Для всех прочих чипсетов ищем (пытаемся найти) унифицированный драйвер

 под южный мост у соответствующего производителя чипсета.

Возможные проблемы:

[1] Звука в DOS-сессиях не будет. В DOS'овские игры играем в DosBox'е или в Virtual PC. Исключение - AC'97 в чипсетах VIA KT133, где еще сохранялся режим совместимости с Sound Blaster'ом, который обозвали словом “legacy” (рекомендуется поискать VIA Solution Pack by Vit Timchishin, VIASP*.ZIP). При отсутствии в комплекте драйвера под Win-OS/2 используем generic-драйвер. MIDI в любом случае нужен будет программный, т.е. TiMidity.

[2] Часто применяются кодеки AC'97 v 1.x с фиксированной частотой 48 кГц. Результат - “ускоренное” воспроизведение всех записей с меньшей частотой дискретизации (а они почти всегда 44.1 кГц и ниже). Решение этой проблемы (программное преобразование в 48 кГц) ведется в ALSA/2; экспериментальная поддержка встречается в ряде других драйверов. Режим совместимости с SB у старых чипсетов VIA позволял варьировать частоту, но давал только 8-bit.

[3] Поскольку контроллер - PCI-устройство, то часто возникает проблема IRQ-sharing'а. Если прерывание, на котором сидит контроллер AC'97, занимают другие устройства (а выяснить это можно, например, с помощью PCI Sniffer'а, PCI*VK.ZIP), то при возникновении любых проблем с инсталляцией драйвера первым шагом должно стать разведение устройств в BIOS'е по различным IRQ. В современных драйверах AC'97 поддержка shared IRQ присутствует почти всюду, чего нельзя сказать о драйверах NIC и прочих потенциальных сожителей AC'97.

На более поздних (> 2004 г.) чипсетах проблемы с PCI-ресурсами встречаются повсеместно, и имеет смысл поставить ACPI.PSD (при условии ядра 4.5x), а в качестве драйвера единственным вариантом остается свежая версия ALSA/2.