2015-04-17

MacOSX10.10.3 追加アップデート後にThunderbolt経由でGPUを認識しない場合

4月中旬から配信されている「OSX Yosemite 10.10.3 追加アップデート」をインストールした後に、Thunderbolt経由のGPUが動作しない場合があります。
これはOSのバージョンが微妙に異なる為にkextファイル内のOSバージョンと違うと判断されて動作しなくなるものと思われます。
具体的な症状としてはNVIDIA Driver ManagerからNVIDIA Web Driverが選択不可になってしまう(OSX Driverが選択されて変更出来ない)というものがあります。

※注)今現在は既に追加アップデートが入った形の10.10.3が配布されているので、これから10.9ー>10.10 Yosemiteへアップグレードした場合、同様の問題に遭遇します。

ここではその対処方法を記します。

上記アップデートを当てた際に症状が出るケースがあります

----必ずバックアップを取り作業については自己責任でおこなってください!----

まず動作しなくなった場合、以下の情報を集めます。
アップルメニューの「このMacについて」-「システムレポート」から「ソフトウェア」をクリックします。システムソフトウェアの概要が見れますのでシステムのバージョンを確認します。
システムアップデート後、システムのバージョンが「OSX 10.10.3 (14D136)」になっているとします。そのウィンドウを開いておきます。


次にシステム/ライブラリ/Extensions/NVDAStartup.kextをTextWranglerで開きます。
Contents下のInfo.plistをクリックして中を確認します。その中に以下の文があると思います。(TextWranglerは必ず開発元からダウンロード出来る物を使用すること)

<key>NVDARequiredOS</key>
<string>14D131</string>

この『14D131』の部分を上記システムのバージョンに書かれている数字(この場合は『14D136』)に書き換えます。
書き換え後保存し、ターミナルから以下のコマンド(キャッシュのクリア)を実行します。

sudo kextcache -system-prelinked-kernel
sudo kextcache -system-caches

これで再起動後にNVIDIA Driver Managerから「NVIDIA Web Driver」が選択出来るか確認してください。万一まだ出来ない場合はキャッシュのクリアがちゃんと出来ているか、kextファイルの書き換えを正確におこなっているかを再度確認してください。

2015-04-16

MacOSX10.10.3におけるThunderboltを経由した外部GPU設定について

先日MacOSXがマイナーアップデートされ10.10.3になりましたが、外部GPUを使う設定について記したいと思います。
特に難しい事は無いのですが、作業の際には必ずバックアップをとってからおこなってください。

-----ここからは自己責任です-----

既にNA-211TB等を利用して外部GPUを利用しているという前提で書きます。

Step1) 
システム環境設定内にある「NVIDIA Driver Manager」をクリックし「Updates」タブからCheck Nowを押すと最新ドライバをダウンロードしてインストールが開始されます。

Step2)
同じくCUDAの最新ドライバをインストールします。これもシステム環境設定内の「CUDA」から「Install CUDA Update」をクリックしてインストール可能です。

Step3)
キャッシュをクリアします。
下記の文をターミナルから入力します。

  sudo kextcache -system-caches

これで作業は完了ですので、再起動すればこれまで通りに外部GPUが使用出来ると思います。

GIGABYTE ビデオカード Geforce GTX970搭載 ショート基板モデル GV-N970IXOC-4GD
日本ギガバイト (2014-11-07)
売り上げランキング: 2,269

2015-04-03

(MacOSX 10.10.2 edition) How to recognize GPGPU via Thunderbolt external PCIe Box at MacOSX

Hi Geeks,

This is an article about how to recognize GPU via Thunderbolt external PCIe box at MACOSX 10.10.2 Yosemite.

Ingredients

  1. Mac (MacBookPro Early2013)
  2. Thunderbolt PCI-Express NA211TB
  3. NVIDIA製GPU board (Gigabyte GeForce GTX970)
  4. TextWrangler (Text Editor)
  5. NVIDIA CUDA driver

Recipes
  1. Download NVIDIA WebDriver
  2. To be able to install the driver other than Mac Pro, modify the downloaded driver.
  3. Install the driver (*modified version)
  4. Install CUDA driver
  5. Rewrite a kernel extension file
  6. Type the command at Terminal
  7. Restart, Check the operation of GPU

Step1) Download NVIDIA WebDriver
There is the latest version of the NVIDIA WebDriver below.
This driver supports MacOSX 10.2.2.

---The following operation is at your own risk---
We strongly recommend that you take a backup necessary before starting work.

Step2) To be able to install the driver other than Mac Pro, modify the downloaded driver.
The downloaded drivers typically can be installed only on MacPro (2008,2009,2010 model).
So, you can create a driver to avoid the driver installation check with the following tasks.
  • Start Terminal.app, and type the following command.
      pkgutil --expand WebDriver-343.01.01f03.pkg expanded.pkg
  • expanded.pkg file is completed. Select "Show Package Contents" it by right-clicking.
  • Contents of expanded.pkg appears. Right-click on the "Distribution" file in it. And "Open with" -> select the "TextEdit".
  • Will be displayed the contents of the Distribution file, there is a "InstallationCheck" method in it.

           function InstallationCheck() 
                {   
                    if (!validateHardware()) return false;
                    if (!validateSoftware()) return false;
                    return true;
                }

   Comment out the above false line, set constantly return true.

//if (!validateHardware()) return false;
//if (!validateHardware()) return false;
                *// is comment out setting
  • Save the file.and close it.
  • In order to restore the the expanded package, then type the following command at the terminal.
        pkgutil --flatten expanded.pkg ModifiedWebDriver.pkg
  • ModifiedWebDriver.pkg is completed. This is the modified Web driver that avoids the installation check.

Step3) Install the driver 
Install the WebDriver made of step2, but requires work at Terminal before it. Security become strictly from Yosemite, so-called selfish drivers do not work anymore. Enter the following command from the terminal in order to avoid it.

  sudo nvram boot-args="kext-dev-mode=1 nvda_drv=1"

And if there is a no problem with Step2, then install the driver that you created. You should be able to install it avoiding an installation check.
Once after reboot, open the "NVIDIA Driver Manager" in the System Preferences, please be sure to check that it is to use the NVIDIA Web Driver. If "OSX Default Graphics Driver" is selected, GPU does not work.
Please try to use the NVIDIA driver to release the lock by pressing the "Click the lock to prevent further changes" under the panel.
If when you can not change remain gray even if you press here, run again the above command, you should be able to select after the reboot.
Check the NVIDIA Web Driver is selected

Step4) Install CUDA driver
CUDA is required. Please be sure to update already if CUDA is installed. You can update the "CUDA" System Preferences --> "Install CUDA Update".
Please install the latest version be sure if it is not installed.
Download from the following.
The current version is 7.0.29(2015/3/26)

Step5) Rewrite a kernel extension file
Please refer to the previous article.
"Rewrite the kext file" section.

6) Type the command at Terminal 
Last, Enter the command to clear the cache of the kernel extension in terminal.
  
  sudo kextcache -system-caches

7) Restart, Check the operation of GPU
Turn off power, and then mounting the GPU board to NA211TB, confirmation of the auxiliary power supply cable, and turn on the power to the PC via the confirmation of Thunderbolt cable.
GTX970 works at MacBook Pro.
MacBook Pro and NA211TB with Dual Display.

How did it go?
Let's check to review the procedure if it does not work. Especially easy to failure is rewriting the kext file. Please do not miss the CFBundleIdentifier.