1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Патчим AppleHDA с помощью загрузчика

Тема в разделе 'Звуковые карты', создана пользователем BIM167, 3 апр 2013.

  1. BIM167

    BIM167 iГуру

    Симпатии:
    311
    Тут будет шапка :)

    to be continue...

    Ну коль winlog выделил Клеверный патчинг HDA в отдельную тему - начнём по молясь...

    Большая часть описанного ниже имеет отношение к загрузчику ХРС равно, как и к загрузчику Клевер.

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

    Для нормальной работы звука на основе AppleHDA нужно выполнить ряд условий (патчей) в DSDT, в самом драйвере и в его плагинах. Этими условиями являются:
    а) создание устройства HDEF в DSDT, в котором прописан наш Layout;
    б) бинарный патч AppleHDA;
    в) внесение информации о конфигурации пинов нашего кодека в плист плагина AppleHDAHardwareConfigDriver (папка PlugIns в AppleHDA.kext);
    г) внесение описания наших входов/выходов в layoutXX.xml.zlib (папка Resources в AppleHDA.kext);
    д) внесение цепочек нод, соответствующих нашим входам/выходам в Platforms.xml.zlib (папка Resources в AppleHDA.kext).

    Как справиться с пунктом "а" описано достаточно подробно в документации к Клеверу. В config.plist Клевера достаточно внести в секции ACPI патчи DTGP и HDEF, и в секции PCI прописать номер своего layout в графе HDAInjection. Подробно этой части патча касаться тут не будем, т. к. она и без этого топика достаточно подробно рассмативалась многократно и достаточно подробно описана.

    Бинарный патч (пункт "б") осуществляется путём подмены ID подходящего нативного кодека на свой. Иногда такая подмена бывает достаточно трудоёмка из-за своеобразной системы "свой-чужой" встроенной в AppleHDA. В этом случае приходится занулять ряд идентификаторов других кодеков, тем самым обходя систему идентификации, либо прописывать под свой ID прямой выход на соответствующий виджет. Подробнее об этом можно прочесть в теме: http://www.applelife.ru/threads/applehda-from-mountain-lion.36232/

    С пунктом "в" можно решить проблему имитируя легаси-кекст путём внесения соответствующей информации в info.plist Фейка, а учитывая то, что этому драйверу-инжектору самое место не в S/L/E системы, а в загрузчике, мы получим этот "легась" в рабочем состоянии сразу "из коробки", причём ещё на этапе установки системы.

    С пунктами "г" и "д" дело обстоит несколько хуже - эти патчи приходится вносить на уже установленной системе. И не смотря на то, что методика распаковки/запаковки злибов подробно рассмотрена в топике http://www.applelife.ru/threads/applehda-from-mountain-lion.36232/ , методики исправлений описания входов/выходов и цепочек необходимых для обеспечения работоспособности звука, как и методики получения рабочего пинконфига, не менялись (за исключением расположения, названия и расширения плистов) со времён Леопарда (10.5.Х), они остаются самым узким местом патчинга AppleHDA. Начнём с того, что эти патчи пока невозможно осуществить ДО установки ОС силами только лишь загрузчика, либо элементов легаси-кекста внесенными в config.plist Фейка. Не смотря на предложенный abxite в посте http://www.applelife.ru/threads/Патчим-applehda-с-помощью-clover.39406/#post-353652 способ обмана AppleHDA, этот способ не может быть использован без внесения изменений в уже установленной системе. Но именно отсутствие такой возможности и делает патчинг AppleHDA как-бы изгоем в общем ряду патчей, проводимых через загрузчик. Так например подмена ID в плистах, осуществляемая средствами Клевера, будет работать "из коробки" без вмешательства в сам драйвер ни при установке ОС, ни после оной. С AppleHDA при всём арсенале современных средств коррекции драйверов всё равно остаётся необходимость вмешательства в систему после её установки. Это вмешательство в уже установленную систему необходимо из-за того, что невозможно выделить ресурсы драйвера в отдельный легаси-кекст, или ему подобный легаси-участок плиста стороннего драйвера (например внесение легаси-участка в плист Фейка, как это делается с легаси-участком плиста AppleHDAHardwareConfigDriver.kext) - ресурсы AppleHDA должны находиться в нём самом. Не возможно, так-же, и наложение бинарного патча, т. к., по всей видимости, злибы каждый раз берутся из ресурсов драйвера и разархивируются в память средствами самой ОС уже тогда, когда загрузчик своё отработал. Соответственно добавить layoutXX.zml.zlib и Platforms.zml.zlib (переименовано по приведенному выше мануалу от abxite) можно только на уже установленной системе.

    Ну а теперь о самом главном - кто что думает по этому поводу?
     
    iDark Soul нравится это.
  2. medik

    medik Технический Специалист Команда форума

    Симпатии:
    2`661
    Это про патч плистов.
     
    volodiakon нравится это.
  3. SunKi

    SunKi GURU Гуру

    Симпатии:
    570
    Сейчас, ради интереса, создал uncompressed kernelcache, открыл его hex-редактором, и попробовал поискать в нем сначало текст из Platforms.xml, а потом последовательность байт из Platforms.xml.zlib. В обоих случаях результат нулевой.
    Похоже что если они и попадают в кэш, то не в первозданном виде.
    А если подменить допустим Platforms.xml.zlib на неработоспособный, поправить права, но не пересобирать кэш, после перезагрузки звук ломается?
     
  4. abxite

    abxite iГуру

    Симпатии:
    1`317
    А если в Кловере сделать бинарный патч AppleHDA, меняющий поиск файла с Platforms на Platform2 например? ;)
    Снимок экрана 2013-04-03 в 8.53.30.

    Решение здесь.
     
    vladlenas, SunKi и clubber_77 нравится это.
  5. SunKi

    SunKi GURU Гуру

    Симпатии:
    570
    ;)
     
  6. abxite

    abxite iГуру

    Симпатии:
    1`317
    Это, на мой взгляд более изящный вариант патчинга.

    hex: 786D6C2E7A6C на 7A6D6C2E7A6C
    В плист-редакторе XCode патч выглядит так:
    Снимок экрана 2013-04-05 в 19.16.22.
    Этот патч делает замену xml.zl на zml.zl бинарнике AppleHDA, подходит для любого ХДА-кодака, заводимого через AppleHDA.

    От пользователя требуется добавить данный патч в клевер (или другой загрузчик, поддерживающий бин-патчинг кекстов) а в AppleHDA переименовать свои Platforms.xml.zlib и layoutXX.xml.zlib в Platforms.zml.zlib и layoutXX.zml.zlib соответственно, где XX - номер вашего лэйаута.

    Это исправление для того, чтобы при обновлении Apple на заменяла ваши патченные файлы на свои.
     
    gress, John98, and1 и 5 другим нравится это.
  7. abxite

    abxite iГуру

    Симпатии:
    1`317
    Этот патч менее изящный, но тем не менее рабочий!

    Так как Apple обновляет Platforms.xml.zlib гораздо чаще чем layoutXX.xml.zlib, то можно кекст-патчером кловера (на лету) сделать такую замену байтов в AppleHDA:
    732E786D6C заменяем на 322E786D6C, затем в AppleHDA переименовываем
    Platforms.xml.zlib в Platform2.xml.zlib, благодаря этому патчу AppleHDA при запуске будет искать не Platforms.xml.zlib а Platform2.xml.zlib следовательно обновление Platforms.xml.zlib нам больше не поломает звук :)
     
    and1, GLXOZ, clubber_77 и 4 другим нравится это.
  8. SunKi

    SunKi GURU Гуру

    Симпатии:
    570
    ну вобщем как и предпологалось кекст сам уже подтягивает эти файлы с диска, в кэше их нет. а сделать пач на другие расширения - хорошая находка, только вот пинконфиг и все остальный Info.plist будет сложновато пропачить...
     
  9. abxite

    abxite iГуру

    Симпатии:
    1`317
    легась, дсдт, gfx-strings.
     
    iDark Soul нравится это.
  10. abxite

    abxite iГуру

    Симпатии:
    1`317
    Xmedik перенеси пж обсуждения связанные с AppleHDA в более подходящую тему :)
     
  11. vladlenas

    vladlenas iЮзер

    Симпатии:
    90
    abxite,
    Молоток!
    У меня сработало.
    Типо теперь,да пошли они со своими обновлениями.:D
     
  12. abxite

    abxite iГуру

    Симпатии:
    1`317
    Ага. Теперь неплохо бы обзавестись рабочим легасем, что то самому делать не хочется :)
     
  13. vladlenas

    vladlenas iЮзер

    Симпатии:
    90
    А та в Фейк закинь,спасибо CLXOZ за эту идею.
     

    Вложения:

    • Info.plist.zip
      Размер файла:
      3.5 КБ
      Просмотров:
      89
    Sergey_Galan и abxite нравится это.
  14. TimeWalker

    TimeWalker iГуру

    Симпатии:
    919
    перенесите в тему по зук в 10.8.
    у себя в кекст патчер прописал
    PHP:
    <key>MachOPatch7</key>
    <
    dict>
    <
    key>Apply</key>
    <
    integer>1</integer>
    <
    key>SystemVersion</key>
    <
    string>0x000</string>
    <
    key>Description</key>
    <
    string>Replace ACL855 with ALC888</string>
    <
    key>FileName</key>
    <
    string>AppleHDA</string>
    <
    key>Search</key>
    <
    string>8508ec10</string>
    <
    key>Replace</key>
    <
    string>8808ec10</string>
    </
    dict>
     
    <
    key>MachOPatch8</key>
    <
    dict>
    <
    key>Apply</key>
    <
    integer>1</integer>
    <
    key>SystemVersion</key>
    <
    string>0x000</string>
    <
    key>Description</key>
    <
    string>xml.zl - > aml.zl</string>
    <
    key>FileName</key>
    <
    string>AppleHDA</string>
    <
    key>Search</key>
    <
    string>786d6c2e7a6c</string>
    <
    key>Replace</key>
    <
    string>616d6c2e7a6c</string>
    </
    dict>
    и в ресурсах layout-99.xml.zlib и Platforms.xml.zlib переименовал в *.aml.zlib
    пинконфиг давно в фейке, спасибо GLXOZ и vladlenas, что когда-то надоумили.
    исход положителен. спасибо за идею, abxite! теперь по теории яблы ниочегошеньки "обновить" не могут, разве только что структуру.
     
  15. Sergey_Galan

    Sergey_Galan iГуру

    Симпатии:
    820
    Народ! Дайте оригинальный AppleHDA от бетки 10.8.4 , не терпится попробовать.
    Спасибо.
     
  16. alex1960

    alex1960 iГуру Помог материально!

    Симпатии:
    370
    Привет, Сергей, держи
     

    Вложения:

    Sergey_Galan нравится это.
  17. Gen4ig

    Gen4ig iПрофи

    Симпатии:
    95
    abxite, Спасибо тебе, работает, пинконфиг пока закинул в Fake
    После обновления на бету 10,8,4 звук остался:)
     
  18. winlog

    winlog iМодератор Команда форума

    Симпатии:
    439
    Поделишься кекстом и плистами потом?

    п.с. посты "по звуку" переношу в правильную тему!

    п.с.с. с тебя инструкция для шапки как и что сделать ;)
     
  19. iDark Soul

    iDark Soul iЮзер

    Симпатии:
    132
    По методу abxite сделал рабочий звук на оригенальном AppleHDA с подпихнутыми и переименованными платформ и лейаут злибами. Пин конфиг перенес в FakeSMC. Все работает и не боится обновлений спасибо огромное abxite! Одно но! По неизвесным мне причинам теперь нет автодетекта на наушники и микрофон и фообще в настройках пропали эти выходы. Грешу на еще один недостоющий патч но понятия не имею как его сделать.

    Для ALC889 выглядит так:
    Код:
    <key>0</key>
                <dict>
                    <key>Name</key>
                    <string>AppleHDA</string>
                    <key>Find</key>
                    <data>hQjsEA==</data>
                    <key>Replace</key>
                    <data>iQjsEA==</data>
                </dict>
                <key>1</key>
                <dict>
                    <key>Name</key>
                    <string>AppleHDA</string>
                    <key>Find</key>
                    <data>eG1sLnps</data>
                    <key>Replace</key>
                    <data>em1sLnps</data>
                </dict>
                <key>2</key>
                <dict>
                    <key>Name</key>
                    <string>AppleHDA</string>
                    <key>Find</key>
                    <data>cy54bWw=</data>
                    <key>Replace</key>
                    <data>Mi54bWw=</data>
                </dict>
     

    Вложения:

    • zlibALC889.zip
      Размер файла:
      8.1 КБ
      Просмотров:
      29
  20. Sergey_Galan

    Sergey_Galan iГуру

    Симпатии:
    820
    ALC889
    Немного опоздал, но предложу свой вариант.
    И так
    1. layout12.zml.zlib и Platforms.zml.zlib копируем в папку Resources оригинального AppleHDA.kext (AppleHDA.kext/Contents/Resources). Оригинальный AppleHDA можно скачать здесь - #16
    2. AppleHDA.kext копируем в папку Extensions (/System/Library/Extensions)
    3. ALC889Rear3.kext если на мат. плате сзади 3 аудио разъёма или ALC889Rear5.kext если на мат. плате сзади 6 аудио разъёмов (должны работать только 5), копируем в папку Extensions (/System/Library/Extensions)
    4. Восстанавливаем права например кекст утилитой.
    5. Копируем бинарный патч в конфиг плист Кловера
    6. Перезагружаемся
    Всё работает как и раньше ))))))))))))))
    Примечание: В папке Rear3 находятся layout12.zml.zlib и Platforms.zml.zlib для трёх аудио разъёмов сзади.
    В папке Rear5 находятся layout12.zml.zlib и Platforms.zml.zlib для пяти аудио разъёмов сзади.
    З.Ы. Так как благодаря Козлеку FakeSMC часто обновляется, решил через него пока не инжектировать пинконфиг, но есть и такой вариант - смотрите выше #13
    З.З.Ы. С последними версиями кловера структура конфига изменилась. Выкладываю обновлённый конфиг
     

    Вложения:

    Moorre, joedm, Qwerыч и 3 другим нравится это.
Similar Threads: Патчим AppleHDA
Форум Заголовок Дата
Звуковые карты Не работает звук на dell 7348. пробовали все варианты, ни AppleHDA ни VodooHDA не дают звука 10 фев 2016
Звуковые карты AppleHDA для Realtek ALC272 (10.8, 10.9) - Lenovo Y570 (20091) 16 сен 2013
Звуковые карты AppleHDA OLD Archive 22 апр 2012
Звуковые карты Applehda Conexant Cx20588 Решено 99%, Огромное Спасибо Clubber_77 И Iscander 4 ноя 2011

Поделиться этой страницей