Установка Mac OS X на PC. Часть 9: Заводим звук

Девятая статья нашего цикла об установке Mac OS X на PC будет посвящена основным вопросам, связанным с настройкой звуковых карт на хакинтошах. Очевидно, что это вопрос не первой необходимости, как, к примеру, налаживание работы загрузчика или видеокарты. Тем не менее, невозможность послушать в Mac OS X любимую музыку или полноценно посмотреть кино всё-таки портит жизнь.

Успех настройки звука на хакинтошах весьма переменчив. Проще всего сделать это для встроенных аудиокарт, присутствующих на любой современной материнской плате. Чем более редкой является карта, тем меньше шансов на положительный исход, поэтому рассчитывать на звук 7.1 на каком-нибудь древнем экземпляре от сторонних производителей не приходится.

В отличие от видеокарточек, где есть три взаимоисключающих способа «заводки» — дополнительные кексты-инжекторы, «стринги» в файле com.apple.Boot.plist и правка DSDT, с аудиокартами ситуация более запутанная. Это вызывает много трудностей у новичков, недоумевающих, почему для нормальной работы такой мелочи, как звуковая карточка, требуется столько сил и времени.

Итак, сегодня для того, чтобы заставить работать более-менее массовую звуковую карточку в Mac OS X, есть два различных пути:

Путь первый: правка стандартного кекста AppleHDA

Это целое искусство. Если не верите, попробуйте почитать полный мануал по данному вопросу на английском. Если не осилите чтение, то хотя бы оцените размеры материала.

Вкратце, решение проблемы данным путём требует преодоления целого ряда неприятных препятствий:

  • ручной правки бинарного файла драйвера в 4 местах
  • редактирования файлов настроек (plist) ещё в трёх драйверах
  • инжектированию или правке DSDT для того, чтобы система смогла опознать звуковую карту именно как звуковую карту, а не как неведомое устройство

Самое сложное — это второй пункт. Дело в том, что нужно знать, что прописывать. Для того, чтобы понять, как и через что звук попадает к вам в колонки, не обойтись без тщательного анализа чертежей и схем к аудиокарточке, на которых нанесены связи всех входов и выходов. Пример такой схемы приводим ниже:

Проблему усугубляет тот факт, что где-то данные прописаны в десятеричной системе, а где-то — в шестнадцатиричной. Более того, некоторые цифры приходится побитно переворачивать. Итогом всех этих манипуляций становятся сведения о «цепочках» входов, выходов и обработчиков звука. Именно эти цепочки вводятся в файлы драйверов. Но правильно ввести цепочку мало для того, чтобы всё работало. Как правило, выходы таким способом завести достаточно просто (если слово «просто» вообще применимо к этим действиям :), а вот для входов нужно задавать ещё ряд дополнительных параметров. Дольше всего обычно приходится воевать с микрофоном.

Как видите, самостоятельно заниматься всем этим можно только в том случае, если вы обладаете вагоном свободного времени, пытливым умом и отсутствием более продуктивных способов потратить это самое время. Для более ленивых людей на специализированных форумах вроде того же InsanelyMac собрались огромные коллекции готовых решений — уже отредактированных вариантов AppleHDA.kext под определённые аудиокарточки (например, ALC888, ALC889, ALC662 и пр.).

Но тут есть неприятный момент: одинаковость аудиокарточек не означает одинаковости строения цепочек входов и выходов. Об этом можно говорить только тогда, когда у вас и у автора пропатченного AppleHDA.kext одинаковая материнская плата одинаковой ревизии. В противном случае возможны дополнительные глюки или полностью нерабочий звук.

Одно время высшим пилотажем в мире хакинтоша считалось заведение звука без прямой правки AppleHDA.kext. В этом случае по особой методике создавался кекст-пустышка, в котором содержались все параметры. Этот кекст вкупе с правленным DSDT, по идее, должен был бы обеспечивать хакинтошникам спокойную жизнь — ведь после переустановки системы никаких звуковых кекстов переделывать не пришлось бы (особенно, если кекст-пустышку положить на флешку или отдельный раздел диска). Но не тут-то было: после первого же обновления Mac OS X всё пошло прахом. Теперь Apple по непонятной причине особенно полюбила любое обновление системы сопровождать переделкой кекста AppleHDA.kext, что делает затруднительным поиск новых алгоритмов его правки.

Путь второй: VoodooHDA

Команда Voodoo, отметившаяся выпуском хакинтошных драйверов практически для всех возможных устройств, не обошла стороной звук. Драйвер VoodooHDA задумывался как альтернатива AppleHDA: это совершенно самостоятельный драйвер, обеспечивающий вывод звука без участия кода от Apple. Более того, пробовать совмещать AppleHDA и VoodooHDA на одной машине небезопасно — это грозит паникой ядра при загрузке.

VoodooHDA — на редкость универсальный драйвер. Он без всяких правок умеет работать примерно с 70-75% имеющихся аудиокарт (а с редактированием — и того больше). Вы спросите: если он такой замечательный, то зачем тогда люди прибегают к гораздо более геморройному первому методу? Ответ прост — несмотря на всю свою сложность, первый путь при удовлетворении всех требований и соблюдении всех условий может обеспечить полное использование потенциала карточки. Иными словами, он позволяет заставить нормально работать все аудиовыходы и входы, без появления каких-то лишних, фантомных устройств в сведениях о системе и без глюков вроде вывода звука с микрофона прямо в колонки в обход компьютера.

Но VoodooHDA развивается достаточно активно (причём не только усилиями самой Voodoo-команды), так что через несколько месяцев всё написанное выше может стать неправдой.

Кстати, VoodooHDA — отнюдь не единственный сторонний аудиодрайвер. Например, отдельная ветвь разработок ведётся для звуковых карт Creative.

Резюме

Заставить работать звуковую карту хакинтоша намного труднее, чем кажется на первый взгляд. Во-первых, прочешите все западные и отечественные тематические форумы на предмет наличия уже пропатченных кекстов AppleHDA под вашу материнскую плату. Если не найдёте, пробуйте VoodooHDA.kext. Если будете недовольны результатом (или такового не будет), то можете пробовать самостоятельно редактировать AppleHDA.kext, но учтите — это занятие требует значительного мастерства и терпения.

В юбилейной, десятой статье цикла мы поговорим о настройке беспроводной сети на хакинтошах.