Работа с ACPI. О сложных вещах простым языком.

Приветствуем на нашем ресурсе.

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

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

Надеемся, всё готово. Приятного чтения!



Предисловие

Для того, чтобы завести некоторые функции в OS X (в особенности на ноутбуках), мы вынуждены прибегать к изменению DSDT и SSDT. В этом мануале мы расскажем основополагающие понятия работы с вашими оригинальными файлами ACPI.

Вы, конечно, можете использовать чужой DSDT и прочие файлы (config.plist, какие-то кастомные кексты), но это не гарантирует полноценной работоспособности, и даже наоборот приводит к непонятным, жутким, дичайшим багам. Вы банально не можете проверить происхождение этих файлов, и разобраться в них вы тоже вряд ли сможете. Любое маленькое изменение в настройках биоса, любое маленькое отличие по железу (будь то даже жёсткий диск другой модели), приводит к трагическим последствиям, вплоть до чрезмерного накала процессора, ведущего к износу компонентов железа.

Поэтому, давайте договоримся сразу — используем только оригинальные файлы, к которым причастны только производитель и мы.

Основные принципы работы с ACPI:

Процесс патчинга происходит в несколько этапов:

  1. Извлечение оригинальных файлов;
  2. Разбор (disassembling) нативных файлов;
  3. Анализ и фильтрация;
  4. Патчинг;
  5. Компилирование, и установка файлов.

Также, в статье есть несколько лайфхаков, как можно подправить некоторые вещи. Список «Якорей»:


Начинаем.


1. Извлечение оригинальных файлов.

Любой биос сообщает ACPI-таблицы операционной системе. Следовательно, их можно извлечь из любой ОС, для дальнейшей работы по корректировке файлов.
Успешное извлечение возможно в Linux, OS X, Windows, а так же с помощью Clover’а. Нативные файлы в целом идентичны, но могут иметь различные названия (в зависимости от софта). В этой статье мы сфокусируемся на трёх методах извлечения: Используя patchmatic в OS X; Используя Clover; Используя Debian-образный Linux.

Рекомендуем ознакомиться со всеми, чтобы выбрать для себя что-то наиболее подходящее.

Извлечение с помощью Patchmatic:

Извлечение с помощью Clover:

Извлечение через Linux:

 


2. Дизассемблирование ACPI-файлов.

Хотя извлеченные родные файлы могут быть открыты непосредственно в MaciASL, это не рекомендуется. Открытие файла .aml непосредственно в MaciASL заставит MaciASL разобрать файл, и сделать его автономным. И, если .aml имеет упоминания других .aml, он неправильно его разберёт. Из-за чего вы будете мучатся, исправляя кучу ошибок. Особенно сильно это касается синтаксиса.

Как результат, лучше разобрать все файлы в виде группы с помощью iASL в Терминале. Подготовим файлы: соберите все DSDT и SSDT файлы в одной папке (не копируйте ACPI файлы, которые не начинаются с DSDT или SSDT), и измените имена, таким образом, чтобы они имели .aml расширение (если это не так). Вам понадобится последняя версия iASL, чтобы правильно их разобрать, которая лежит здесь: https://bitbucket.org/RehabMan/acpica/downloads. Вы можете положить iASL так, чтобы был быстрый доступ из терминала (Опять же, ZIP в /usr/bin).

В терминале OS X:

cd "путь к папке, куда вы положили DSDT и SSDT файлы"
iasl -da -dl *.aml

Примечание: Не пытайтесь разобрать другие ACPI файлы с помощью флага «-da«. Это банально не будет работать.

Новая версия iASL в конечном итоге будут доступна по ссылке на Bitbucket выше, но для тех, кто хочет быть на 'передовой'...

С этого момента, вы будете работать исключительно с вытекающими *.dsl файлами при помощи MaciASL. Конечно, чтобы использовать их необходимо сохранить как «ACPI Machine Language Binary» с расширением .aml, и разместить их, где они будут загружены клевером (~/EFI/Clover/ACPI/patched). Но, мы рекомендуем иметь исправленные файлы .dsl, на случай необходимости изменить что-либо в будущем.

Позвольте мне заявить довольно понятным языком (потому что это самая частая ошибка, которая происходит из-за невнимательности, и после чего приходит много жалоб): Если вы открываете файл .aml непосредственно в MaciASL, и нажимаете «Compile», вы делаете это НЕПРАВИЛЬНО. Пусть это сохранится в вашем  сером веществе между ушами в течение минуты. (Оригинальная мысль автора сохранена).


Дизассемблирование refs.txt.

Иногда бывают дополнительные обращения к внешним названиям (названия, которые находятся в таблице, отличной от DSDT/SSDT). iASL дизассемблер будет пытаться к ним обратиться, но это далеко не всегда срабатывает. Вы можете исправить это, предоставляя компилятору информацию о них в текстовом файле. К примеру, вот некоторые внешние названия (будь то метод, или девайс): SGPO, ECRD, ECWT, и MMTB.

Для начала создайте файл refs.txt в той же папке, где лежат ваши DSDT/SSDT файлы, с следующим содержимым:

External(_SB_.PCI0.PEG0.PEGP.SGPO, MethodObj, 2)
External(_SB_.PCI0.LPCB.H_EC.ECWT, MethodObj, 2)
External(_SB_.PCI0.LPCB.H_EC.ECRD, MethodObj, 1)
External(_GPE.MMTB, MethodObj, 0)

После чего мы его сохраняем, и дизассемблируем, подобно тому, что мы делали во втором пункте:

В терминале OS X:

iasl -da -dl -fe refs.txt *.aml

iASL дизассемблер будет учитывать эти обращения к внешним таблицам для всего кода. В то же время, это не есть хорошо. Большую часть времени вам необходимо будет таскать внешние файлы за собой, вместо того, чтобы они были просто частью кода. Это станет очевидно, как только вы получите ошибку от внешнего обращения к файлу, который отсутствует в refs.txt.


3. Фильтрация ACPI файлов.

Для старых компьютеров (Sandy Bridge и старее), SSDT, связанные с CPU, могут вызвать проблемы. Если дело обстоит именно так (подразумевается, что вы уже попробовали альтернативные методы дропа таблиц), то вы не должны оставлять такие SSDT в ~/ACPI/patched.

Я бы включил все SSDT в их первоначальном виде, и патчить их надлежащим образом, если известно, что они не вызывают проблем.

Примечание: таблицы с пометкой «X» для клевера, а так же таблицы, взятые из папки динамических таблиц в Linux, являются динамичными таблицами, которые являются изменёнными в процессе загрузки (и из-за других параметров). Такие таблицы никогда не кладутся в ~/ACPI/patched!

После того как вы успешно дизассемблировали свои файлы, рассмотрим каждый из них, в попытке определить роль того или иного SSDT. Если это SSDT процессора, которые, как известно, любят вызывать проблемы, откиньте их в сторону, и не кладите их в свой окончательный набор для инжекции через загрузчик. По большей части, SSDT, которые имеют в оглавлении «_PR.CPUx», и есть SSDT процессора.

Вот типичные SSDT, которые вы можете найти:

  • CPU: уже обсуждалось выше. Включить в набор, если проблем не возникает.
  • SATA: можете включить, а можете и не включать. На ваш выбор.
  • PTID: обычно этот файл бесполезен OS X, и, к тому же, содержит много ошибок. В редких случаях (например, на ноутбуках Acer и HP), это может дать информацию системе, как читать скорость вентилятора, температуру, и другие датчики.
  • IAOE: Если это SSDT присутствует, то он, как правило, является выходцем из DSDT (метод _WAK). Без него сон может не работать, или работать кривым образом.
  • GFX0: Обычно SSDT с GFX0 существует для интегрированной графики. Этот SSDT вы патчите для контроля подсветки. На старых ноутбуках, GFX0 обычно находится в DSDT. А в ноутбуках Haswell и выше, она обычно находится в SSDT (хотя она также может быть и в DSDT).
  • PEGP: PEGP обычно существует для дискретной карты в конфигурациях с двумя GPU. Таких SSDT может быть более одного, и обычно вы должны будете включить всю группу, чтобы достигнуть каких-либо значимых исправлений. Эти SSDT должны быть исправлены, если вы хотите отключить дискретную карту при запуске OS X. (см. Optimus)
  • Остальные SSDT следует рассматривать в отдельности. Если, конечно, они вам встретились.

Как мне кажется, было бы неплохо вести заметки о том, какие SSDT вам нужно дропнуть, какие SSDT вам нужно модифицировать, а какие SSDT вам нужно оставить неизменными.


4. Исправление ошибок (Патчинг).

Даже когда вы дизассемблировали все таблицы сразу (iASL с флагом -da), оригинальные файлы по-прежнему могут содержать ошибки. В дизассемблированном состоянии файлы имеют ошибки, связанные с изменениями в самом iASL (обновления), недостатками в iASL, и различии в компиляции среды между нашими компьютерами и производителем. Распространенной причиной ошибок (согласно моей теории), например, в том, что некоторые из упомянутых методов, на самом деле, существуют только внутри Windows (Например, MMTB и MDBG (их, кстати, можно смело удалять, если вы не планируете использовать эти таблицы и для Windows)). Также существуют случаи, когда были допущены ошибки в коде, или же код был написан умышленно неправильно (иногда трудно отличить).

Так что… После определения того, какие файлы вам нужны, вы должны исправить их, чтобы они скомпилировались без ошибок. Есть много общих патчей для таких ошибок, в репозиториях патчей для MaciASL.

Примечание: Мы не проверяем патчи с помощью DSDT Editor. Он имеет слишком много ошибок, и очень старую версию iASL. Пожалуйста, не спрашивайте нас и RehabMan’а об этом.

Чтобы быть уверенным, всегда читайте README, чтобы загружать из правильного места, и для того, чтобы настройки MaciASL были правильными. Патчи для задач синтаксисических ошибок начинаются с «[syn]» в названии. Типичные примеры для старых DSDT: «Fix _PLD Buffer/Package Error», «Fix TNOT Error», and «Fix FPED Parse Error». Для того чтобы определить, какие патчи вам нужны, вы можете посмотреть на сообщение об ошибке, поступающей из iASL компилятора, и кода, на какой линии была обнаружена ошибка. Вы можете также попытаться применить патч, чтобы посмотреть, вносит ли он изменения, как показано в окне предварительного просмотра в MaciASL. Если вы не знакомы с ошибками, это может занять некоторое время, полное экспериментов, проб и ошибок.

Для некоторых ошибок, вы можете просто удалить строку кода, вызвавшего ошибку. Но это зависит от того, является ли строчка необходимой для правильной работы кода, или нет. Например, ошибки, причиной которых являются «внешние» («External») параметры, решаются удалением строки.

Эти занятия помогают приобрести опыт в ACPI-спецификациях, и просто опыт программирования. А нынче, этот опыт очень полезен, согласитесь 🙂

Ваша цель — получить каждый файл .dsl, в котором не будет ошибок (Предупреждения/примечания/оптимизации приемлемы. Тем не менее, исправить предупреждения, всё-таки желательно.). Если у вас есть файлы, которые компилируются без ошибок, вы можете переходить к патчингу. А после патчинга, вы можете повторно установить OS X, с грамотными таблицами. И, как следствие, с грамотным NVRAM-переменными, и прочими прелестями.



Дополнительные сведения о патчинге.


Минимальные фиксы.

Как правило, DSDT патч применяется только после выявления его необходимой пользы. Но есть несколько патчей, которые необходимы по дефолту, и, обычно, не вызывают никаких проблем. Они находятся в репоизтории перечислены здесь:

  • Fix _WAK Arg0 v2;
  • HPET Fix;
  • SMBUS Fix;
  • IRQ Fix;
  • RTC Fix;
    *Очень сильно любит делать вид, что патч необходим, хотя нет отличий между Before и After в меню патчинга. Будьте внимательны.
  • OS Check Fix;
    *Не имеет ничего общего с версией Windows. Изучите описание, которое прилагается в MaciASL, а после решите — нужен ли вам патч.
  • Fix Mutex with non-zero SyncLevel;
  • Fix PNOT/PPNT;
    *Используется только при дропе CPU SSDT.
  • Add IMEI.

Проблема с моментальным пробуждением.

Проблема с сном:

Работа с USB.

Следующие патчи используйте только в соответствии с вашим железом:

  • 6-series USB
  • 7-series/8-series USB

Мультиплекс-патч на USB3 исправляет работу AppleUSBXHCI.kext, чтобы не прибегать к использованию GenericUSBXHCI.kext. Он основан на информации, опубликованной Mieze. Большинство DSDT нуждаются в этом патче. А так же, ProBook, например, использует модифицированную версию этого патча. А вот Lenovo U310/U410 может использовать его как есть. Ах, да. Имя патчу: «7-series USB3 Multiplex«.

Если вы используете GenericUSBXHCI.kext на 10.10, убедитесь, что вы используете только его. Кроме того, чтобы избежать мгновенного пробуждения, вам может понадобиться флаг ядра ‘-gux_defer_usb2′.


Чипсет.

На хасвелле существуют некоторые проблемы с подгрузкой AppleLPC.kext. Если у вас в загруженных кекстах нет AppleLPC, то примените этот патч: «Haswell LPC»


Немного о переименовании.

Переименовывание  должно быть «сбалансированным». То есть, переименование должно быть в равной степени как в DSDT, так и в SSDT. А так же это нужно, чтобы лучше соответствовать требованиям OS X (пример «Rename GFX0 to IGPU» для правильного управления питанием IGPU). В этом случае, во всех DSDT/SSDT, где есть ссылки на это имя, также должны быть переименованы.


Информация относительно идентификаторов дубликатов.

Вы должны быть уверены, что ваши патченные файлы не содержат дубликатов. Общим правилом можно считать добавление метода _DSM в один из SSDT, где производитель определил _DSM в другой SSDT. Чтобы избежать этой проблемы, можно использовать патч «Remove _DSM methods», в качестве одного из самых первых патчей, который вы применяете для всех DSDT/SSDT.



Исправления конкретных проблем.

Скоро будет перевод статей, а пока:

 


Примите во внимание!

Многие патчи образуют синергию с config’ом и кекстами, а по одиночке не имеют никакого смысла.


Патчи для AppleHDA.

С патченным AppleHDA, есть два момента, которые необходимо соблюсти:

  • IRQ Fix;
  • Audio Layout 12.
    *Изменяйте цифру на ту, что нужна вам, в соответствии с описанием кекстов.


5. Компиляция и установка файлов.


Использование файлов загрузчиком.

Для того, чтобы использовать свои патченные DSDT/SSDT файлы, необходимо сохранить в то место, откуда их подхватит загрузчик, и начнёт подгружать. Файлы должны быть сохранены в «ACPI Machine Language Binary» (MaciASL -> Сохранить как…). Сохранение файла .dsl с расширением .aml просто вызвает панику, или же очень странное поведение OS X.

Clover: сохраняем наши .dsl в .aml, и подкладываем все нужные файлы по пути ~/EFI/CLOVER/ACPI/patched. Клевер подхватит все .aml файлы, которые лежат по этому пути (начиная с версии 3062).

Для SSDT очень важен порядок в цифрах в названии. То есть, SSDT-1.aml, после всех изменений, должен быть именно SSDT-1.aml, а SSDT-5.aml — SSDT-5.aml. Это необходимо, потому что патченные файлы заменяют те, что подхватываются из биоса. Если назвать неправильно, то произойдёт дубляж одного и того же SSDT, что неминуемо приведёт к панике ядра.

В то же время, для DSDT порядок несколько иной — имя файла DSDT, который необходимо подхватывать, должен быть указан в config.plist, по пути Config.plist/ACPI/DSDT/Name, тип значения «string». К тому же, можно положить несколько DSDT с разными именами, например DSDT.aml, DSDT-original.aml, DSDT-test.aml, и прямо из GUI выбирать, с каким DSDT нужно загрузиться. Это удобно для тестов: если что-то пошло не так, можно просто взять и поменять название на один из лежащих вариантов, или же вообще загрузить оригинальный, указав имя BIOS.aml.
Примечание: если указано неверное имя, будет грузиться оригинальный DSDT, взятый из биоса.


«Плавающие» регионы.

В ACPI есть такая вещь, как регионы-операторы (Например: MMIO-регион, SystemMemory регион, EmbeddedControl регион, и т.д.). Эти регионы имеют фиксированные адреса, которые зависят только от компьютера, модели биоса, и настроек биоса. Малейшее изменение этих регионов приводит к краху весь дсдт, и как итог мы имеем паники, или неправильно работающую OS X. Это и называется «плавающие» регионы.

Так, исправляя DSDT/SSDT, мы делаем снимок этих адресов в тот момент, когда мы снимали таблицы. Они не могут совпасть, если вы меняли параметры биоса, меняли компоненты железа, и производили подобные операции. Такие регионы останутся, но будут доступны по другому адресу. Если это так, то вы заметите, что некоторые вещи начинают работать криво, или возникают другие проблемы со стабильностью. Которые, к слову, кажутся случайностью.

Чтобы избежать этого, нам необходимо использовать фикс клевера «Fix_Regions», который сравнивает регионы при каждой загрузке, и, при несовпадении, исправляет. Находится этот фикс рядом с остальными фиксами DSDT, а именно: Config.plist/ACPI/DSDT/Fixes.

Вот только с SSDT таких хитростей пока что не придумано. Лечения, следовательно, тоже нет. Единственное, что хочется отметить — регионы в SSDT не так сильно играют роль в поведении OS X, из-за чего сильного удара по юзабилити не предвидится. А исследования методов исправления выходит далеко за рамки этого мануала.


Вот и всё.

Надеемся, что вам было интересно, а главное — полезно.
Если у вас есть замечания к статье — пишите комментарии!


Оригинальный материал: tonymacx86.com, RehabMan: «[Guide] Patching LAPTOP DSDT/SSDTs».

Перевод, автор дополнений, локализация: osxpc.ru, Андрей Чернышов;
Перевод, адаптация: osxpc.ru, Дарья Чернышова.

 

53 комментария to “Работа с ACPI. О сложных вещах простым языком.

  • положил iasl в папку bin/ может что то не так делаю но не получается получить dsl после команды в терминале iMac-Igor:~ igor$ cd /Users/igor/Desktop/origin/ iasl -da -dl *.aml
    iMac-Igor:origin igor$
    вот и ничего не происходит (жальскрины не прилепить)

    • Андрей Чернышов
      1 год ago

      Попробуйте просто перетянуть иасл в окно терминала, а после выполнить всю команду дальше

      • теперь вот так получилось но ничего не появилось. ошибкак какя то
        iMac-Igor:~ igor$ /Users/igor/Downloads/iasl /Users/igor/Desktop/origin/ iasl -da -dl *.aml

        Intel ACPI Component Architecture
        ASL+ Optimizing Compiler version 20141107-64 [Jan 2 2015]
        Copyright (c) 2000 — 2014 Intel Corporation

        Error 6126 — Input file does not appear to be an ASL or data table source file

        Table Input: /Users/igor/Desktop/origin/ — 0 lines, 0 bytes, 0 fields

        Compilation complete. 1 Errors, 0 Warnings, 0 Remarks
        iMac-Igor:~ igor$

        • Андрей Чернышов
          1 год ago

          Первая команда
          cd /Users/igor/Desktop/origin/
          Вторая команда
          /Users/igor/Downloads/iasl -da -dl *.aml

          • Не алё…(( нем понятно все и с этими патчами репозиториями которые по ссылке. И еще бы прямо таки здорово бы было если бы сделать перевод значений тех самыхпатчей а то народ открывает .видит кучу всякой непонятной фигни и не знает что есть что и что им нужно а что нет и что для чего служит.

            • Андрей Чернышов
              1 год ago

              Переводить патчи это гигантский труд. Особенно если рехаб и пжлам в одном лице.
              Мы, конечно, попробуем перевести, но не обещаем.

  • ребят ,хотел пропатчить dsdt с помощью MaciASL что бы в поле PCI отоброжались устройства, но в патчах нет моей материнки GIGABYTE GA-Z97-HD3 как еще можно пропатчить

    • Андрей Чернышов
      12 месяцев ago

      Патч лежит в генеральном репозитории PJALM. Вот только… зачем? Это стоит делать только тем, кто разобрался со всем этим. Чисто косметика.

      • Так и все и сделал, осталось только это сделать, что бы в графе PCI отображались устройства зашёл в репазиторий там нет моей мамки есть только h97 но нет именно z97

        • Максим Антоненко
          12 месяцев ago

          pjalm.com в помощь

          • Перед тем как это писать загляни туда а то я тебя тоже туда могу послать )) нет там моей материнки

            • Андрей Чернышов
              12 месяцев ago

              Непробиваемость — залог крепких нервов.
              И в группе, и на сайте, и ещё много где уже говорил — ГЕНЕРАЛЬНЫЙ репозиторий PJALM, а не конкретно материнку.

        • А как ты исправлял синтаксические ошибки? 5 штук зависли и ни как ладу не могу дать. Патчи и так и эдак перепробовал…

          • Андрей Чернышов
            9 месяцев ago

            Правильное дизассемблирование почти всегда избавляет от синтакс-ошибок

            • Серега
              9 месяцев ago

              Да все делал как описано выше. При компиляции выплывает 7 синтаксических ошибок… Таблицы снимал в клевере

            • Андрей Чернышов
              8 месяцев ago

              Исправьте их. Можем помочь исправить, если дадите файлы.

            • Серега
              8 месяцев ago

              Вот посмотрите. Перерыл пол сети… Такие же ошибки попадаются, а вот конкретных ответов не нашел. В папке только ssdt dsdt Остальные удалил. Damplog только оставил. Использую iasl выходит 7 ошибок, брал iasl51 получаю 3… Посмотрите может чем помножите. Только как их вам дать? https://yadi.sk/d/OOXspDZDsYHeC

            • Андрей Чернышов
              8 месяцев ago

              Посмотрел. Ничего любопытного, обычная ситуация.
              К недизассемблированным таблицам примените такой патч:
              into device label PCI0 code_regex (\s+Zero){2,} removeall_matched;
              into method label ADBG replace_content begin Return(0) end;

              И продолжайте с ним работать. ССДТ у вас не нужные, их можно и дропнуть.
              Почему не дизассемблим? Потому что нет таких явных и необходимых связей дсдт и ссдт.

  • помогите пожалуйста разобраться в чем ошибка

    Last login: Fri Apr 8 23:57:58 on console
    MacBook-Pro-vit:~ vitmaks$ cd /Volumes/EFI/EFI/CLOVER/ACPI/origin
    MacBook-Pro-vit:origin vitmaks$ iasl -da -dl SSDT*.aml DSDT.aml

    Intel ACPI Component Architecture
    ASL+ Optimizing Compiler version 20160108-64
    Copyright (c) 2000 — 2016 Intel Corporation

    Input file SSDT-0.aml, Length 0x10A8 (4264) bytes
    ACPI: SSDT 0x0000000000000000 0010A8 (v01 TrmRef PtidDevc 00001000 INTL 20091112)
    External object resolution file DSDT.aml
    Input file DSDT.aml, Length 0x1383E (79934) bytes
    ACPI: DSDT 0x0000000000000000 01383E (v01 _ASUS_ Notebook 00000000 INTL 20091112)
    Pass 1 parse of [DSDT]
    Pass 2 parse of [DSDT]
    External object resolution file SSDT-6x.aml
    Input file SSDT-6x.aml, Length 0x119 (281) bytes
    ACPI: SSDT 0x0000000000000000 000119 (v01 PmRef ApCst 00003000 INTL 20091112)
    Pass 1 parse of [SSDT]
    Pass 2 parse of [SSDT]
    External object resolution file SSDT-5x.aml
    Input file SSDT-5x.aml, Length 0x73F (1855) bytes
    ACPI: SSDT 0x0000000000000000 00073F (v01 PmRef Cpu0Cst 00003001 INTL 20091112)
    Pass 1 parse of [SSDT]
    Pass 2 parse of [SSDT]
    External object resolution file SSDT-4x.aml
    Input file SSDT-4x.aml, Length 0x303 (771) bytes
    ACPI: SSDT 0x0000000000000000 000303 (v01 PmRef ApIst 00003000 INTL 20091112)
    Pass 1 parse of [SSDT]
    Pass 2 parse of [SSDT]
    External object resolution file SSDT-3x.aml
    Input file SSDT-3x.aml, Length 0x80B (2059) bytes
    ACPI: SSDT 0x0000000000000000 00080B (v01 PmRef Cpu0Ist 00003000 INTL 20091112)
    Pass 1 parse of [SSDT]
    Pass 2 parse of [SSDT]
    External object resolution file SSDT-2.aml
    Input file SSDT-2.aml, Length 0x996 (2454) bytes
    ACPI: SSDT 0x0000000000000000 000996 (v01 PmRef CpuPm 00003000 INTL 20091112)
    Pass 1 parse of [SSDT]
    Pass 2 parse of [SSDT]
    External object resolution file SSDT-1.aml
    Input file SSDT-1.aml, Length 0x80B (2059) bytes
    ACPI: SSDT 0x0000000000000000 00080B (v01 PmRef Cpu0Ist 00003000 INTL 20091112)
    Pass 1 parse of [SSDT]
    ACPI Error: [_PPC] Namespace lookup failure, AE_ALREADY_EXISTS (20160108/dswload-462)
    ACPI Exception: AE_ALREADY_EXISTS, During name lookup/catalog (20160108/psobject-310)
    Could not parse external ACPI tables, AE_ALREADY_EXISTS
    MacBook-Pro-vit:origin vitmaks$

    • Андрей Чернышов
      11 месяцев ago

      Скорее всего, вы используете при дизассемблировании ещё и динамические таблицы. Попробуйте либо избавится от них, либо использовать дизассемблирование с помощью файла refs.txt.

  • ACPI-таблицы DSDT_SSDT сняты склевером https://yadi.sk/d/EOaiyTIKqrF35

  • Добрый день. Ответьте пожалуйста на вопрос. Вот у вас перечислены патчи по дефолту. Необходимо ли их применять для десктопных компов? Или пропустить?

  • Доброй ночи. В Linux’е нативные файлы просто лежат на жёстком диске по путям /sys/firmware/acpi/tables. Пользуюсь xubuntu 16.04. По указанному пути есть все эти файлы, но…не открыть ни скопировать не получается (sudo) ничего не меняeт, в Live тоже самое.?

  • Или их не нужно открывать, а просто забрать, скажем так: cat /sys/firmware/acpi/tables/DSDT > dsdt.dat
    Я правильно понимаю..или все же нет?

    • Никомаров Евгений
      5 месяцев ago

      Есть простой метод получения нужных файлов, проверенный на Н97М-Е с помощью Убунту. Загружаем WinPE с любого LiveCD диска/флешки, например отсюда http://sergeistrelec.ru/. Запускаем portable RW everything отсюда (32/64 разрядная версия RW должна соответствовать 32/64 версии WinPE) http://rweverything.com/download/ .
      Жмем кнопку ACPI на верхнем ряду. Появится второй экран, сверху будут кнопки RSDP, XSDT и т.д.. Кликаем на каждую кнопку и жмем Shif-F2 (сохранить, как bin). Получаем до 16 файлов (в зависимости от биоса и платы). Если кнопок SSDT несколько, нумеруем последовательно слева направо сохраненные файлы — SSDT1, SSDT2 и т.д.. Динамические файлы, естественно, не совпадают с Линуксом, но они и не нужны. Нужные файлы начинаются с DSDT или SSDT, они совпадают с тем, что дает Линукс с гораздо большим трудом в смысле понимания. Если сохранять файлы клавишей F2 с расширением .rw, то вместе с бинарным кодом запишется дизассемблированный, там понятней, что значит данный код.

      • Андрей Чернышов
        5 месяцев ago

        Который будет с патчами, круто.

        • Никомаров Евгений
          5 месяцев ago

          Насчет дизассемблирования я сделал вывод только по внешнему виду файлов, пока не проверял через IASL. Как написана RW, мне неизвестно, ее активно используют для модификации биоса большие спецы по этой части на сайте https://forums.mydigitallife.info/ . Судя по их общему мнению, RW написана очень грамотно, она регулярно обновляется. Я в этом, к сожалению, не разбираюсь. Я могу прислать полный комплект этих файлов, снятых Убунту и RW. Посмотрите файлы *.rw, пожалуйста. Возможно, Вы увидите в программе RW что-то полезное. Прилагаю файлы таблицы RW https://yadi.sk/d/4nPU53IIwNqUP
          Ubuntu https://yadi.sk/d/slYxdEN9wNqg5

          • Андрей Чернышов
            5 месяцев ago

            Отличаются от клеверовых, всё таки берётся подстроенный под ось дсдт 🙂

            • Никомаров Евгений
              5 месяцев ago

              Уважаемый Андрей. Для проверки я снял с той же Н97М-Е таблицы с помощью Клевера. и сравнил с обоими вариантами. Сделал загрузочную флешку с Клевером, ничего не добавляя. Оказалось, что результат Клевера совпадает именно с результатом RW, а не Убунту. Клевер очень удобен, готов принять, как метод по умолчанию, но как Вы объясните этот результат? Может быть, отличия в первой строке вообще не играют роли, как я подозреваю?

            • Андрей Чернышов
              5 месяцев ago

              Пардон, вот тут накосячил. Открыл не те таблицы.
              Вы правы 🙂

            • Никомаров Евгений
              5 месяцев ago

              Вот таблицы, скопированные Клевером, может посмотреть и сравнить. https://yadi.sk/d/PgXLttY1wUreh . Может, я чего не так делаю?

          • Никомаров Евгений
            5 месяцев ago

            Извините. Поторопился с ответом — есть отличия в файлах, полученных через RW и Ubuntu — надо было все проверить. Отличия всегда в первой строке перед ALASKAA

            • Никомаров Евгений
              5 месяцев ago

              Так может, надо брать именно клеверовые — поскольку будем использовать клевер? И нет ли отличий между файлами из клевера и Убунту из-за отличий загрузчиков?

  • Никомаров Евгений
    5 месяцев ago

    Скажите, а старый метод извлечения DSDT посредством AIDA64 из под виндов годится или для современных биосов дает неверный результат?

    • Андрей Чернышов
      5 месяцев ago

      Извлечение дсдт из винды и патчи с помощью эдитора никогда не были верными методами 😀

      • Никомаров Евгений
        5 месяцев ago

        Скажите, CentOS извлекает таблицы также, как Ubuntu?

        • Андрей Чернышов
          5 месяцев ago

          Если это не патченный дистрибутив в плане низкоуровневого взаимодействия, то да, такие же ванильные. Но почему бы не делать клевером? Это проще, и в хаке в любом случае будет присутствовать!
          РВэвризинг не тестил, так что по ней ничего сказать не могу.

          • Никомаров Евгений
            5 месяцев ago

            С Убунтой разобрался — отвык от командной строки, и синтаксис непривычный. В RW тоже получается 16 файлов таблиц, но в Убунту они уже рассортированы, динамические отдельно

  • Скажите, что это значит и что дальше делать?
    Выполняю:
    iasl -da -dl -fe refs.txt *.aml

    Intel ACPI Component Architecture
    ASL+ Optimizing Compiler version 20160409-64(RM)
    Copyright (c) 2000 — 2016 Intel Corporation

    External object resolution file SSDT5.aml
    External object resolution file SSDT4.aml
    External object resolution file SSDT3.aml
    External object resolution file SSDT2.aml
    External object resolution file SSDT1.aml
    refs.txt: Importing method external (2 arguments) _SB_.PCI0.PEG0.PEGP.SGPO
    refs.txt: Importing method external (2 arguments) _SB_.PCI0.LPCB.H_EC.ECWT
    refs.txt: Importing method external (1 arguments) _SB_.PCI0.LPCB.H_EC.ECRD
    refs.txt: Importing method external (0 arguments) _GPE.MMTB
    refs.txt: Imported 4 external method definitions
    External object resolution file SSDT5.aml
    External object resolution file SSDT4.aml
    External object resolution file SSDT3.aml
    External object resolution file SSDT2.aml
    External object resolution file DSDT.aml
    refs.txt: Importing method external (2 arguments) _SB_.PCI0.PEG0.PEGP.SGPO
    refs.txt: Importing method external (2 arguments) _SB_.PCI0.LPCB.H_EC.ECWT
    refs.txt: Importing method external (1 arguments) _SB_.PCI0.LPCB.H_EC.ECRD
    refs.txt: Importing method external (0 arguments) _GPE.MMTB
    refs.txt: Imported 4 external method definitions
    External object resolution file SSDT5.aml
    External object resolution file SSDT4.aml
    External object resolution file SSDT3.aml
    External object resolution file SSDT1.aml
    External object resolution file DSDT.aml
    refs.txt: Importing method external (2 arguments) _SB_.PCI0.PEG0.PEGP.SGPO
    refs.txt: Importing method external (2 arguments) _SB_.PCI0.LPCB.H_EC.ECWT
    refs.txt: Importing method external (1 arguments) _SB_.PCI0.LPCB.H_EC.ECRD
    refs.txt: Importing method external (0 arguments) _GPE.MMTB
    refs.txt: Imported 4 external method definitions
    External object resolution file SSDT5.aml
    External object resolution file SSDT4.aml
    External object resolution file SSDT2.aml
    External object resolution file SSDT1.aml
    External object resolution file DSDT.aml
    refs.txt: Importing method external (2 arguments) _SB_.PCI0.PEG0.PEGP.SGPO
    refs.txt: Importing method external (2 arguments) _SB_.PCI0.LPCB.H_EC.ECWT
    refs.txt: Importing method external (1 arguments) _SB_.PCI0.LPCB.H_EC.ECRD
    refs.txt: Importing method external (0 arguments) _GPE.MMTB
    refs.txt: Imported 4 external method definitions
    External object resolution file SSDT5.aml
    External object resolution file SSDT3.aml
    External object resolution file SSDT2.aml
    External object resolution file SSDT1.aml
    External object resolution file DSDT.aml
    refs.txt: Importing method external (2 arguments) _SB_.PCI0.PEG0.PEGP.SGPO
    refs.txt: Importing method external (2 arguments) _SB_.PCI0.LPCB.H_EC.ECWT
    refs.txt: Importing method external (1 arguments) _SB_.PCI0.LPCB.H_EC.ECRD
    refs.txt: Importing method external (0 arguments) _GPE.MMTB
    refs.txt: Imported 4 external method definitions
    External object resolution file SSDT4.aml
    External object resolution file SSDT3.aml
    External object resolution file SSDT2.aml
    External object resolution file SSDT1.aml
    External object resolution file DSDT.aml
    refs.txt: Importing method external (2 arguments) _SB_.PCI0.PEG0.PEGP.SGPO
    refs.txt: Importing method external (2 arguments) _SB_.PCI0.LPCB.H_EC.ECWT
    refs.txt: Importing method external (1 arguments) _SB_.PCI0.LPCB.H_EC.ECRD
    refs.txt: Importing method external (0 arguments) _GPE.MMTB
    refs.txt: Imported 4 external method definitions

  • Решил воспользоваться рекомендуемым способом извлечения DSDT из под линукса. Скачал лайв сиди убунту, загрузился, зашел в папку /sys/firmware/acpi/tables, попытался скопировать нужные файлы, а тут облом — Acces denied. В общем не так все просто как написано в этой инструкции. Порылся немного в инете и методом проб нашел как это сделать, думаю кому-то может понадобиться:

    Чтоб скопировать файлы из под Ubuntu live cd нужно:

    запустите Terminal

    Чтоб скопировать DSDT файл на рабочий стол введите в терминале (обязательно соблюдать регистр букв!!!)

    cd ~/Desktop
    sudo cat /sys/firmware/acpi/tables/DSDT > DSDT.aml

    файл DSDT.aml появится на рабочем столе. Повторите действия для других файлов:

    sudo cat /sys/firmware/acpi/tables/SSDT1 > SSDT1.aml
    sudo cat /sys/firmware/acpi/tables/SSDT2 > SSDT2.aml

    и т.д.

    для файлов из папки dynamic:

    sudo cat /sys/firmware/acpi/tables/dynamic/SSDT6 > SSDT6.aml
    и т.д.

    После скинуть с рабочего стола на флешку.

    Если есть более лёгкий способ сделать это в линуксе, прошу подсказать. Спасибо

    • Спасибо. Но не проще ли это всё сделать вот так «sudo nemo»(или какой там файловый менеджер)? без кавычек, само собой

      • Да, я пытался найти инструкцию как запустить менеджер через sudo. Я использовал ubuntu 16.04 live cd для копирования файлов.
        файловый менеджер в убунту — nautilus. Попробовал так как предложили вы — «sudo nautilus», менеджер открывается, но без рут прав.
        https://www.youtube.com/watch?v=dqGRGKqrOoQ — вот видео инструкция как запустить файловый менеджер с правами админа, но эта инструкция не работает, возможно она не работает из под live cd. коротко из инструкции:
        введите команду «gksudo nautilus»
        после этого терминал пишет что программа gksu не установлена,но её можно установить введя команду
        «sudo apt install gksu»
        делаю это, он что-то загружает, но в итоге выходит ошибка — «E: Unable to licate package gksu»

        Что я делаю не так? Спасибо за ответы

  • Ruslan.N.Kipkeev@gmail.com
    3 месяца ago

    Никакие dsl файлы не появились. (((

Trackbacks & Pings

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.