macOS High Sierraの「Night Shift」を古いMacで有効にする方法

macOS Sierra から「High Sierra」にアップグレードしましたが、Night Shift の機能を判定するモデル ID が追加され変更になったので、High Sierra 用の記事を作成しました。
macOS Sierra をお使いの方は、macOS Sierraの「Night Shift」を古いMacで有効にする方法を参考にしてください。

ディスプレイの色温度を低くして目への負担を軽減してくれる「Night Shift」機能が、macOS Sierraの 10.12.4 からMacでも使用できる様になりました。設定は、システム環境設定のディスプレイから可能です。

Night Shift の対応機種は、macOS Sierra 10.12.4 〜 を搭載した以下のMacになります。Mac で Night Shift を使う方法 – Apple サポートより引用

  • MacBook (Early 2015 以降)
  • MacBook Air (Mid 2012 以降)
  • MacBook Pro (Mid 2012 以降)
  • Mac mini (Late 2012 以降)
  • iMac (Late 2012 以降)
  • Mac Pro (Late 2013 以降)

外部ディスプレイを使う場合は以下の製品を使う必要があります。

  • Apple LED Cinema Display
  • Apple Thunderbolt Display
  • LG UltraFine 5K Display
  • LG UltraFine 4K Display

2011 年製の MacBook Pro は対応機種では無いので享受するとこはできませんが、ハードウェアレベルのチェックで無く、システムファイル(CoreBrightness.framework)の数値を変更するだけなので、Night Shiftを有効にしてみました。

対応していない Mac で Night Shift を有効
対応していない Mac で Night Shift を有効

非対応のMacでNight Shift(ナイトシフト)を有効にする手順

Supported Mac models for Night Shift in High Sierra 10.13.2 – Pike’s Universumを参考に数値やコマンドを引用させて頂きました。

Night Shift を有効にする Mac の機種は、MacBook Pro 15 Early 2011 で、macOSX High Sierra のバージョンは、10.13.6 です。
Apple の開発アプリの Xcode もしくは、hex エディターが必要です。この記事では、Xcode を使用しています。Xcode は、Mac App Store からダウンロードできます。

Mac のセキュリティ整合性保護機能(SIP:System Integrity Protection)を一時的に無効にして、システムファイルを編集しますので、ご注意ください。

手順1 SIPを無効にする

リカバリモード(Command + R を押しながら)で Mac を起動。Apple ロゴとプログレスバーが表示されたらキーを離してもOKです。

起動後に画面上部にあるメニューの「ユーティリティ」にある「ターミナル」をクリックして、ターミナルを起動。SIP を無効にするために以下のコマンドを実行します。

csrutil disable
macOS リカバリモードで起動し、ターミナルでSIPを無効
macOS リカバリモードで起動し、ターミナルでSIPを無効

成功すると、Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect. と表示されますので、Macを再起動します。

手順2 CoreBrightness.frameworkのバックアップ

CoreBrightness.framework は以下のディレクトリになりますので、Finder メニューの「移動」->「フォルダへ移動」をクリックして、以下のディレクトリに移動します。

/System/Library/PrivateFrameworks/

CoreBrightness.frameworkは、フォルダになっていますので全てバックアップ。
イレギュラーな方法ですので、元に戻す場合に備えてオリジナルは、安全な場所に別途保存をおすすめします。
※ SIP が無効になっていない場合は、CoreBrightness.framework の中身が表示されません。SIP を無効にしてください。

手順3 XcodeでCoreBrightness.frameworkを開く

Xcode を立ち上げて、メニュー「File」-> 「Open…」で CoreBrightness.framework の中にある「CoreBrightness」を開きます。ショートカットアイコンのように矢印がついているアイコンです。

CoreBrightness ディレクトリ
CoreBrightness ディレクトリ

ファイルを開いた状態で、Shift + Command + J で Project navigator を表示して、以下の画像のように左カラムの CoreBrightness を右クリック ->「Open As」 -> 「Hex」で開きます。

Xcode Hexとして開く
Xcode Hexとして開く

手順4 Macの機種IDの数値を変更する

Xcode で CoreBrightness を開いた状態
Xcode で CoreBrightness を開いた状態

CoreBrightnessを開いた状態で、Command + F で以下の文字列を検索します。

0900 0000 0100 0000 0d00 0000 0600 0000 0500 0000 0600 0000 0800 0000

上記の数値で、Night Shift に対応する機種か否かを判定しているので、数値の変更のみで有効にすることができます。

具体的には、機種 ID と対応する数値は以下になっています。
※機種IDは、Finderの「このMacについて」「システムレポート…」で確認することが可能です。

  • MacBookPro9,x = “09”
  • iMacPro1,x = “01”
  • iMac13,x = “0d”
  • Macmini6,x = “06”
  • MacBookAir5,x = “05”
  • MacPro6,x = “06”
  • MacBook8,x = “08”

今回 Night Shift を有効にするのは MacBook Pro なので、上記の数値(0900 0000)から MacBookPro9,x の機種がデフォルトで Night Shift を利用することができます。

私の MacBook Pro 15 Early 2011 の場合、機種 ID は MacBookPro8,2 になるので、本来は有効にできませんが MacBookPro9,x を意味する「09」の部分を MacBookPro8,2 の「08」に変更することで Night shift を有効にして使用することが可能になります。
以下が変更した数値になります。
変更箇所は先頭の「08」のみ。

0800 0000 0100 0000 0d00 0000 0600 0000 0500 0000 0600 0000 0800 0000

変更時のカーソルの位置が分りづらいですが、2つの数値を選択して入力する方法が入力しやすかったです。
変更後保存して、CoreBrightness.framework を /System/Library/PrivateFrameworks/ に上書きします。

手順5 変更した数値をシステムに反映させる

ターミナル.app で以下のコマンドを実行して、署名をし直す必要があります。
※最初は、パスワードは2回聞かれました。

sudo codesign -f -s - /S*/L*/PrivateFrameworks/CoreBrightness.framework/Versions/Current/CoreBrightness

※エラーが表示された場合は、再度 Xcode で確認してください。

今回手順 5 のシステムに反映させるのを忘れてしまい、かつ CoreBrightness.framework を保存し終了にする時に Xcode が落ちたまま再起動したことにより、macOSが起動しなくなりました。原因は、CoreBrightness.framework が適切に保存されておらず、手順 5 を実施していればエラーが表示されトラブルを防げたかと思います。
リカバリモード(Command + R を押しながら)で Mac を起動し、ターミナル.app から CoreBrightness.framework を削除して無事に起動しました。

以上で、編集作業は終了です。

手順6 SIPを有効にして完了

手順 1 で SIP を無効にしたので、元の状態に戻します。
Command + R を押しながら Mac を起動。起動後に画面上部にあるメニューの「ユーティリティ」にある「ターミナル」をクリックして、ターミナルを起動。SIP を有効にするために以下のコマンドを実行します。

csrutil enable

SIP を有効にしたとのメッセージの表示後にMacを再起動。システム環境設定のディスプレイに、Night Shift のタブが表示されていれば成功です!
SIP が有効になっているか否かは、以下のコマンドで確認することができます。有効になっている場合は、enabled と表示されます。

csrutil status

Night Shift機能をメニューバーから操作するアプリ「Shifty」

「Shifty」は、f.luxのようにメニューバーからNight Shiftのオン/オフ, 色温度の調整, アプリごとの設定、1時間のみ無効、開始終了時間の無効の操作が行えるので、便利ですね。
※再起動などのログイン時に起動させるには、PreferencesのLaunch Shifty at Loginをオンにする必要があります。

Night Shift機能をメニューバーから操作「Shifty」
Night Shift機能をメニューバーから操作「Shifty」

Shiftyのダウンロードは、Shifty – Get more control over Night Shiftになります。ソースコードはGitHub – thompsonate/Shiftyにて公開されています。

macOSのアップデート後について

macOS をアップデートすると Night Shift を有効にするために編集した CoreBrightness.framework がデフォルトに戻ってしまい Night Shift が無効になるので、再度設定が必要になる場合があります。

MOST READ 昨日のアクセス数ランキング

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です