Регулировка яркости на ноутбуках (10.12.4+)

Привет! 

Всем обладателям хакинтош-ноутбуков уже давно известно, что начиная с macOS Sierra 10.12.4 компания Apple, ради своих новых макбуков, довольно прилично испортила нам жизнь.

Связана проблема с регулировкой яркости в системе, механизмы поменялись, и теперь любой сторонний кекст типа IntelBacklight или ACPIBacklight от Rehabman’a не работает.
Все ожидали увидеть обновленные кексты в течении пару месяцев, но этого не случилось.


Но не беда!

Дядюшка Rehabman изобрел довольно хитромудрый способ (а скорее дал жизнь старому) и яркость снова заработает должным образом.

Ремарка #1: всё-таки попадаются случаи, когда подсветка снова начинает работать после удаления IntelBacklight и включения SetIntelBacklight в конфиге Clover в секции Devices.

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


Приступим!

Требования к железу.

Любой ноутбук с работающей встроенной графикой от Intel. От Arrandale до Kaby Lake.

NVIDIA / ATI не рассматриваются – у них совсем другой механизм регулировки яркости, владельцам увы придется остаться на стабильной 10.11.6 El Capitan или 10.12.3 Sierra.


Подготовка к работе.

Часть работы будет проводиться в терминале, так что нам нужно убедиться, что всё готово.

  • Открываем терминал, набираем команду git
    Если инструменты разработчика XCode еще не установлены, система сама предложит их установить.
  • После того, как всё установилось, создаём папки.
    mkdir ~/Projects
    cd ~/Projects
  • Клонируем репозиторий RehabMan’a.
    git clone https://github.com/RehabMan/HP-ProBook-4x30s-DSDT-Patch probook.git
    git clone https://github.com/RehabMan/OS-X-Clover-Laptop-Config.git guide.git
  • Убедитесь, что у вас в системе присутствует iasl.
    Если же его нет, придётся его скачать.

    cd ~/Downloads
    curl --remote-name --progress-bar --location https://bitbucket.org/RehabMan/acpica/downloads/iasl.zip
    unzip iasl.zip
    sudo cp iasl /usr/bin
  • Теперь приступаем к сборке кекста и SSDT.
    cd ~/Projects/guide.git
    make

Установка.

После выполнения команд вам требуется найти в папке пользователя следующие файлы:

  1. /Projects/guide.git/build/SSDT-PNLF.aml
  2. /Projects/probook.git/kexts/AppleBacklightInjector.kext
  3. /Projects/guide/config_patches.plist

Как вы уже наверное догадываетесь, чтобы всё заработало нам нужно, чтобы

  1. SSDT-PNLF.aml лежал в EFI разделе в папке /CLOVER/ACPI/patched
  2. AppleBacklightInjector.kext был установлен в /Library/Extensions (не путать с /S/L/E)
  3. Патч кекста AppleBacklight в секции KernelAndKextPatches файла config_patches.plist находился так же в вашем конфиге.

SSDT-PNLF.

  • Первое условие работы этого SSDT – отключение патча AddPNLF в кловере и отстутвие девайса PNLF в DSDT. Если у вас девайс уже там прописан, после патчей, вы можете его просто убрать ручками. 🙂
    Примерно так, как показано на скриншоте. Ваш PNLF может отличаться.
  • Второе условие работы этого SSDT – девайс GFX0/VGA/VID должен быть переименован в IGPU. И это нужно сделать не с помощью кловера, а с помощью maciASL.
    Если вы еще не знаете, что такое патчить DSDT, пройдите по этой ссылке.
    https://osxpc.ru/faq/acpi-manual/
  • Третье условие работы этого SSDT – крайне желательно, чтобы он загружался после всех OEM-таблиц. Сделать это довольно просто. Нужно просто создать секцию SortedOrder, если ее еще нет, и вписать по аналогии с моими таблицами ваши, и в конец поставить SSDT-PNLF.

Установка AppleBacklightInjector.kext.

  • Первым делом следует удалить все кексты на яркость из системы и из кловера.
    К примеру, IntelBacklight, ACPIBacklight, GenericBrightness и подобные. Системный AppleBacklight трогать не нужно!
  • Следующим шагом будет непосредственно сама установка кекста.
    Открываем терминал и прописываем команду:
    sudo cp -R ~/Projects/probook.git/kexts/AppleBacklightInjector.kext /Library/Extensions

Добавление патча AppleBacklight.

Открываем наш config.plist с помощью XCode или PlistEdit Pro и вписываем этот патч.
Или копируем и вставляем патч из полученого файла ~/Projects/guide/config_patches.plist – так будет надежнее, поскольку патч может меняться со временем.


Завершение установки.

  • После выполнения этих инструкций, перезагружаемся. Это будет первой загрузкой с использованием AppleBacklight. Вероятнее всего, ползунок яркости появится, но она будет регулироваться неправильно.
  • Поэтому, чтобы система поняла, что в неё установили новый кекст, нам следует пересобрать кэш, делаем это ручками, а не с помощью Kext Utility. Открываем терминал и пишем:
    sudo kextcache -i /
  • Теперь снова можно перезагружаться и проверять, всё ли работает! 🙂

Напоследок.

Как уже было написано в начале, у некоторых ноутбуков данный способ может не сработать. Что же, есть пару идей, которые имеют право на жизнь.

  • Так как регулировка яркости тесно связана с EDID монитора, проблема может скрываться как раз в нём. Можно попробовать с помощью кловера проделать
    /Graphics/EDID/Inject=YES
    /Graphics/EDID/ProductID=0x9c7c

    Или подменить ProductID в самом EDID’e, если используется инжекция параметров Intel через Arbitrary.
    Подробнее: https://osxpc.ru/zavod/notebook/lvds-prefpane/

  • Следует убедиться, что у вас работает NVRAM. Его неработоспособность будет характеризоваться отсутствием сохранения уровня подсветки после перезагрузки. Если он всё таки не работает, следует установить драйвер EmuVariableUefi-64.efi и RC-скрипты.
  • Также убедитесь в том, что в config.plist параметр /SystemParameters/BacklightLevel отсутствует, или имеет значение отличное от нуля. Из-за этого при загрузке может отключаться подсветка экрана.

Вот и всё!

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


Оригинальный материал: tonymacx86.com, RehabMan: “[Guide] Laptop backlight control using AppleBacklightInjector.kext”

Перевод, дополнения: osxpc.ruВлад Деригин

4 комментария to “Регулировка яркости на ноутбуках (10.12.4+)

  • Первое условие работы этого SSDT – отключение патча AddPNLF в кловере и отстутвие девайса PNLF в DSDT. Если у вас девайс уже там прописан, после патчей, вы можете его просто убрать ручками.
    Тоесть нужно удалить всё что выделено? Секцию PNLF удалять?

  • Андрей Козаров
    4 месяца ago

    Здравствуйте! У меня такая ситуация, поставил сиеру (10.12.2), обновился до 10.12.6. Начал заводить все постепеноо, заметил что яркость у меня полуфункционирует. То есть ползунок двигается, клавиши работают, но яркость не меняется. Но есть одна фишка, когда я ноутбук перевожу в сон и из него пробуждаю, то яркость начинает работать. Или второй вариант, когда я меняю разрешение ноутбука, то тоже могу менять яркость. Вроде и работает и вроде что бы работала надо делать такие действия, не подскажете куда копнуть?
    P.S. По статье пытался завести яркость, я вообще убил ее, даже ползунка не было, приходилось откатываться

    • Влад Деригин
      4 месяца ago

      Здравствуйте! Вам следует описать железо для начала.
      В начале статьи написано, что этот метод нужен только для тех, у кого не работает SetIntelBacklight и AddPNLF в кловере.
      Если ноутбук на HD4000, есть отдельный патч кекста на яркость, который избавляет конкретно от вашей проблемы.

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

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

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