Ввімкнення Night Shift на застарілих Маках

Опублікував Сергій Макаренко 28-03-2017 об 20:25

Вчора, встановивши чергове оновлення macOS, я був засмучений через кілька причин, серед яких була і та, що для мого старенького Mac Pro (Early 2008) року випуску режим Night Shift не передбачено. Це, звичайно, змусило мене пошукати якісь варіанти вирішення цієї проблеми і я був дуже здивований тим фактом, що вже вранці сьогодні в мережі з’явилися рецепти, які дозволяли увімкнути Night Shift для таких же старих бідолах, як і мій Mac Pro.

Рецепт я знайшов в блозі такого собі Пайка, жадібного фана Apple, як він сам себе називає. В режимі Night Shift температура кольорів контролюється через фреймворк CoreBrightness.framework. Для то, щоб ви побачили панель керування налаштуваннями та, відповідно, мали змогу увімкнути цю функцію, у вас повинен бути комп’ютер Apple з переліку, наведеного нижче (ось, що каже з цього приводу сама Apple):

  • MacBookPro9,1;
  • iMac13,1;
  • Macmini6,1;
  • MacBookAir5,1;
  • MacPro6,1;
  • MacBook8,1.

Мене звісно цікавив Mac Pro, тому я не вагаючись почав експериментувати. MacPro6,1 — це «смітник» в простонародді або Mac Pro (Late 2013) за класифікацією Apple. Mac Pro (Early 2008) власником якого я є має ідентифікатор моделі MacPro3,1. Не довго думаючи, я відкрив бінарник і знайшов рядок, в якому були біти, які треба було модифікувати. Відкрив для себе чудове: виявляється за допомогою vim можна переглядати бінарні файли та вносити в них зміни в шістнадцятковій системі числення. Для цього я відкрив файл наведеною нижче командою:

vim /System/Library/PrivateFrameworks/CoreBrightness.framework/Versions/A/CoreBrightness

Коли файл відкрився в рядку виконання команд vim я запустив наступну команду:

:% ! xxd

І ось перед моїми очима вміст бінарного файлу в ґексі.

Місце, в якому потрібно змінити номер моделі комп'ютера

Після цього роблю необхідні правки згідно з вказівками Пайка та зберігаю пропатчений файл за допомогою команди, яку ввожу, як і попередню в командному рядку vim:

:% ! xxd -r

Після цього я вийшов з vim стандартним способом (це :x, але можна і по-дідівськи, використовуючи :wq). Пробую підписати модифікований файл і отримую помилку:

CoreBrightness: replacing existing signature
CoreBrightness: main executable failed strict validation

Після нетривалого гугління знаходжу відповідь на сайті для розробників Apple на питання, чого утиліта для підпису скаржиться на те, що підписаний файл не пройшов перевірку:

You may be using a third party development product that hasn't been brought up to date, or post-processed your file in unsupported ways.

Ну, можливо і так. Не мені ж з Apple сперечатися. Вірогідно, vim не православний інструмент для того, щоб правити бінарники. І спробував те ж саме зробити в Xcode. З підписуванням файлу відредагованого за допомогою рідного інструментарію для розробників не виникло ніяких проблем. Після перезавантаження на моєму Mac Pro з’явилася панель для налаштування Night Shift.

Так виглядає панель з налаштуваннями Night Shift

Пізніше, коли я впорядковував і вичитував все написане тут з’ясувалося експериментальним шляхом, що vim теж згодиться, як інструмент для цієї справи. Для того, щоб все пройшло як слід не потрібно після того, як ви внесете всі зміни виконувати команду :% ! xxd -r. Треба просто вийти з vim звичайним шляхом зі збереженням внесених зміни. І все запрацює. Хочу нагадати, що якщо ви наважитеся зробити дії, які я тут описав, то повинні повністю усвідомлювати, що робите їх на свій власний розсуд. До того ж, зайвий раз нагадаю, що оригінальний бінарник потрібно забекапити в обов’язковому порядку.