[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:
Строго говоря, это не AC'97, хотя по возможностям отличается несильно.
как сверхдешевое решение), для которых описанный драйвер не подходит; с
этого момента рекомендуется забыть про "кодек от 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):
или 3.18 (2003-11-26 09:55:58 44754 ichcsnd.sys)
FILE ICHCSND.SYS VER 5C82 31C0 CHA 5C82 B001
FILE ICHCSND.SYS VER 5DE2 31C0 CHA 5DE2 B001
Применяем патч (patch patch.txt /a), перезагружаемся.
5. Если чипсет от VIA:
(не обновлялся с 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.