Отсутствие файла SSDT-EC-USBX.aml в папке EFI/OC/ACPI — одна из самых частых причин, по которой Hackintosh зависает на этапе загрузки с сообщением о AppleIntelCPUPowerManagement или не видит часть USB-портов после установки macOS. Эта ACPI-таблица решает сразу две задачи: подменяет встроенный контроллер Embedded Controller (EC), несовместимый с macOS, и задаёт корректные параметры питания для USB-портов через объект USBX.
Без корректного SSDT-EC система может вести себя непредсказуемо: не работать сон, «отваливаться» периферия, неправильно отображаться статус батареи на ноутбуках. Разберёмся, как устроена эта таблица, когда она обязательна, а когда её наличие, наоборот, навредит, и как создать файл под конкретную материнскую плату.
Что такое SSDT-EC-USBX и зачем он нужен
SSDT (Secondary System Description Table) — это дополнительная ACPI-таблица, которая загружается поверх заводского DSDT прошивки материнской платы. Загрузчик OpenCore подставляет такие таблицы до старта ядра macOS, позволяя исправить несовместимости оборудования без перепрошивки BIOS.
Файл SSDT-EC-USBX.aml объединяет два патча. Первый создаёт фиктивное устройство EC с идентификатором PNP0C09: macOS требует наличия Embedded Controller, но настоящий EC десктопных плат вызывает конфликты и панику ядра. Второй блок — объект USBX, который сообщает системе параметры питания USB: ток для портов и режимы зарядки. Без него macOS использует значения по умолчанию, что иногда ломает быструю зарядку устройств и работу портов в сне.
Когда таблица обязательна, а когда вредна
Нужен ли вам этот SSDT, зависит от типа машины и версии macOS. Универсального ответа нет — проверяйте по конфигурации.
- 🖥️ Десктопы — SSDT-EC почти всегда обязателен: реальный EC отсутствует или несовместим, macOS ждёт устройство
PNP0C09. - 💻 Ноутбуки — фиктивный EC применять нельзя: там есть настоящий контроллер, управляющий батареей и клавиатурой. Обычно требуется лишь переименование методов или отдельный SSDT-EC без подмены устройства.
- 🔌 Объект USBX актуален преимущественно для Skylake и новее; на старых платформах его можно опустить.
- ⚙️ Двойная загрузка с Windows — корректно собранный SSDT активируется только под macOS (проверка
_OSI), поэтому Windows он не затрагивает.
⚠️ Внимание: установка десктопного SSDT-EC с фиктивным устройством EC на ноутбук — типичная причина неработающей батареи, клавиш яркости и сна. Для ноутбуков используйте вариант, рассчитанный на сохранение родного контроллера.
Способы получения SSDT-EC-USBX.aml
Существует три рабочих пути: скачать готовый файл из репозитория OpenCorePkg или сборок Dortania, сгенерировать таблицу утилитой SSDTTime либо скомпилировать её вручную из исходника на языке ASL.
Наиболее надёжный вариант — SSDTTime. Утилита анализирует дамп именно вашего DSDT и генерирует SSDT-EC с учётом реального пути устройства EC в прошивке. Готовые универсальные файлы работают на большинстве плат, но при нестандартных именах устройств могут не сработать.
Создание таблицы через SSDTTime
Утилита SSDTTime запускается из Windows, Linux или macOS и требует установленного Python. Порядок действий выглядит так:
- 📥 Запустите
SSDTTime.bat(Windows) илиSSDTTime.command(macOS) от имени пользователя с нужными правами. - 🧩 В главном меню выберите пункт генерации SSDT-EC — утилита сама найдёт путь к EC в дампе DSDT.
- 📂 Готовый файл появится в папке
Resultsрядом со скриптом. - 📋 Скопируйте SSDT-EC.aml в
EFI/OC/ACPIи добавьте запись о нём вconfig.plistв разделеACPI → Add.
☑️ Проверка после добавления SSDT-EC-USBX
После перезагрузки проверьте результат: в IORegistryExplorer должно появиться устройство EC и объект USBX, а загрузка системы — проходить без зависаний на ACPI-этапе.
⚠️ Внимание: перед любыми правками EFI сохраните заведомо рабочую копию раздела EFI на USB-флешку. Если система перестанет грузиться после добавления таблицы, вы сможете загрузиться с внешнего носителя и откатить изменение.
Ручная компиляция из ASL-исходника
Если нужен полный контроль, таблицу пишут на языке ASL и компилируют утилитой iasl. Типовой исходник содержит блок, который под macOS создаёт фиктивный EC, а для десктопов дополнительно отключает реальный контроллер через _STA, возвращая ноль.
iasl SSDT-EC-USBX.dsl
На выходе получится SSDT-EC-USBX.aml. Ошибки компиляции обычно указывают на строку с проблемой — чаще всего это неверный путь к устройству вида \_SB.PCI0.LPCB.EC, который в вашей прошивке может называться иначе (EC0, H_EC). Точный путь смотрите в дампе DSDT своей платы.
Как узнать путь к EC в своём DSDT
Снимите дамп ACPI-таблиц (например, через SSDTTime или acpidump), откройте DSDT в MaciASL и найдите устройства с HID PNP0C09. Полный путь вида \_SB.PCI0.LPCB.EC0 и нужно подставить в исходник SSDT.
Сравнение вариантов получения таблицы
| Способ | Сложность | Учёт особенностей платы | Кому подходит |
|---|---|---|---|
| Готовый файл из OpenCore/Dortania | Минимальная | Нет, универсальный | Новичкам на типовых платах |
| Генерация через SSDTTime | Низкая | Да, анализ вашего DSDT | Большинству пользователей |
| Ручная правка ASL + iasl | Высокая | Полный контроль | Опытным, при нестандартном EC |
| Готовый конфиг чужой сборки | Минимальная | Риск несовпадения | Только при идентичной плате |
Типичные ошибки и их диагностика
Самая частая проблема — таблица добавлена в папку ACPI, но не прописана в config.plist, поэтому загрузчик её просто игнорирует. Второе место занимают конфликты: одновременно подключены несколько SSDT, патчащих EC, либо включён ACPI-ренейм, который дублирует логику таблицы.
Для диагностики включите в OpenCore отладочный лог и проверьте, что таблица реально подгружается. Если после добавления SSDT появилась паника ядра — вероятнее всего, путь к устройству EC в таблице не совпадает с вашим DSDT, и файл нужно перегенерировать под конкретную плату.
Часто задаваемые вопросы
Можно ли загрузить macOS вообще без SSDT-EC?
На части плат macOS стартует и без этой таблицы, но возможны нестабильность сна, ошибки управления питанием и проблемы с USB. Для десктопных сборок корректный SSDT-EC считается обязательным элементом настройки.
Чем SSDT-EC отличается от SSDT-EC-USBX?
SSDT-EC содержит только фиктивный Embedded Controller. Версия с USBX дополнительно описывает объект питания USB-портов. Для платформ Skylake и новее обычно рекомендуют комбинированный вариант.
Нужно ли менять таблицу при обновлении macOS?
Как правило, нет: SSDT привязан к железу, а не к версии системы. Пересматривать его стоит только при смене материнской платы, обновлении BIOS с изменением ACPI или появлении специфических проблем с USB и сном.
Почему SSDTTime не находит EC на ноутбуке?
На ноутбуках EC присутствует всегда, но может называться нестандартно или находиться в другом пространстве имён. Проверьте дамп DSDT вручную через MaciASL и помните: для ноутбука фиктивный EC создавать нельзя — нужен иной тип патча.