I wrote before about the phrase "4K" having several different meanings. Knowing whether your display is SST or MST is crucial. SST looks like it means "Super Speed Transport" but actually means Single Stream Transport. MST stands for Multi Stream Transport. This means that 2 distinct display signals get sent down the DP cable as if they are meant for 2 different displays, but instead they get sewn together for one display.
Apple has choosen to not allow the cMP to run 4K MST displays at 60Hz. But there is a way to enable it.
To start with you will need GTX6xx or newer and an MST 4K display. SST 4K displays work without help on the right GPUs.
First and foremost, I recomend "Display Menu" app. It gives you many more resolution options than Display Preferences and yet doesn't require an advanced degree in Calculus like the other app from France.
I am going to warn you that fiddling with this stuff is frustrating and frequently leads to multiple re-boots and plug yankings.
Most of us have a spare SATA drive or 3, I recomend creating another working install that you can boot from in case of trouble.
Because we need to modify one of Apple's kernel extensions you will need to run OS X in what is called "kext dev mode". This disables the requirement that every extension carry a digital signature approved by Apple to show that it hasn't been monkeyed with. This wasn't necessary in previous versions of OS X, but is now.
To do this, open Terminal and type:
sudo nvram boot-args="kext-dev-mode=1 nvda_drv=1"
You will be asked for your password but you won't see anything happen as you type it in. Hit return.
Next type in:
If you have done this correctly you will see:
boot-args kext-dev-mode=1 nvda_drv=1
Create 2 folders on your desktop, "AGC Virgin" and "AGC Modded". The virgin one is in case you bugger this up. That folder will be your easy fix.
Your Hard Drive ▸ System ▸ Library ▸ Extensions ▸ AppleGraphicsControl.kext
Drag that item into both folders, this will create a copy in each leaving the original in the Extensions folder.
Go to the one labeled "AGC Modded" and right click your way down to:
AppleGraphicsControl.kext ▸ Contents ▸ PlugIns ▸ AppleGraphicsDevicePolicy.kext ▸ Contents
Inside the "Contents" folder you will find some files.
Open the info.plist in an editor that you know. I suggest either Plistinator or TextWrangler
Find the little section I have pictured. These are the "black listed" machines.
ioreg -p IODeviceTree -r -n / -d 1
in terminal I find that my 4,1/5,1is F221BEC8.
Change it, one digit will do. I change mine to F221BEC7. Save the plist and replace the original kext in the Extensions folder with the one you just modded.
Next open Disk Utility and run a "repair permissions". If you have done this correctly you should see the various parts getting repaired, as in one of the images below.
Now is a good time to try MST mode. It is 10 irritatingly random button pushes on the Asus/Sharp 321 displays. Like they thought you would only do this once. Would be AWESOME if there was a simple toggle like Dell has for 5K/4K on UP2715K.
Now it gets exciting. Connect the MST display via an HDMI cable with display in the mode that allows you to choose form HDMI 1 or HDMI 2. If it is in "DUAL HDMI" mode it is looking for input from both. I believe it is the bottom button or next one up that lets you choose from "DisplayPort/HDMI 1/HDMI2". Once you have cable hooked to HDMI port, switch to that port. This should give you 4K at 30Hz, like you have been seeing on DP port. To be clear, you now have the 321 connected via both DP and HDMI, but you are viewing it through HDMI but leaving both cables connected. You will have a "ghost display" at this point, just remember that if the cursor vanishes.
The moment is here, reboot. Wait until the desktop is fully loaded on the HDMI port and all is settled. Now hit that button to cycle through the input ports again and choose "DisplayPort". If all has gone as planned you will see the desktop in full glorious 4K at 60Hz. Once you are here, remove the HDMI plug and the display will cycle again and you will be 100% on DP, with no ghost display.
Oddly, the only way to know via System Profiler or DisplayMenu is to NOT see "30Hz" after the 3840x2160 size. For some reason SST 4K will have "60Hz" after the size but MST leaves it blank.
The easy way to know for sure is to Google "UFO 60Hz", the top hit should be a site that validates display refresh rates. A little UFO will be zipping across the screen in both 30Hz and 60Hz if this is working. The 60Hz one will look smooth and fluid while 30Hz one will look like it is hopping it's way across. And you, appalled, will wonder how you ever looked at such a clunky refresh rate.
Remember if you do a PRAM reset that boot args line is going to lose both the Nvidia driver and the devmode and you will need to enable them again.
I only suggest this on the Asus/Sharp 321 twins with GTX600 or higher. (works on a GT640 with DP).
I have heard that the Dell 321 version is different.
This mod is easy to mess up, hence my encouragement to have a backup boot drive to do fixes from or to experiment on before your main drive gets messed up.
If you do get it working, please post about it here. Note that you have to do the HDMI trick on every boot. If not it will probably not get to desktop.
This is an email we get more than once a week. And 99% of the time it is one of two things.
1. Not having proper Nvidia Web Driver loaded and running
2. Not having power to needed pins on GPU
It is easy enough to check the web driver, it has a little icon at the top of your OS X desktop. Click on it and make sure it lists the Nvidia Web Driver and not the OS X default driver.
As far as #2 goes, there are different things that apply to different cards. If your card has dual 6 pin power inputs it should be pretty straightforward, plug them both in to the connectors on the Logic Board. (shown on our install page)
When there is a 6 pin and an 8 pin, things get more complicated. On many GTX680 cards the 8 pin is "optional". This means you can plug in a 6 pin and the card works fine. For many GTX770 and GTX780 cards we do a mod to the card that creates this same functionality. So you can just plug in the 2 @ 6 pin cables and it should boot right up.
For cards like the Titan And Titan Black we have historically not done this mod for the reason that there are cases where there will not be enough power from just 2 @ 6 pins. For these cards we recommend an external power supply. And here things get tricky again. To most people, a power supply that is plugged in and turned "on" would be ..."on". But they typically are NOT.
External power supplies take many forms. The Booster X5 and the VisionTek version of this both require a Molex plug that goes "live" to trigger them to turn on. In a Mac Pro 1,1 through 3,1 this is easy as the optical bay that these supplies fit in have those exact plugs sitting right there, and they do go live whenever the machine is on. For 4,1 and 5,1 Mac pros the plot thickens. To get a live Molex, you need to adapt one of the SATA power outputs to become a Molex that fits in the back of the PSU.
Here is an example:
You may need to break off one of the plastic tabs to plug this into the Mac Pro connector.
As far as using a regular PC power supply, most of these will require either a "paperclip trick" or the better choice, a SWEX. This gives you a nifty switch to flip. The easy way to tell when most PC PSUs are on is when their fan starts spinning.
If you decide to use a 6 to 8 adapter, be aware that some of them that use 2 @ 6pins to run into the 8 only one of the 6 pins coming in will give working output by itself. Oddly, it is the side with fewer wires that will work. I suggest only using such a thing for testing.
Let me know if anything here is unclear and I will try to make it easier to understand.
When we write the roms for our cards, we have to reverse engineer things that only Apple and Nvidia know. And they don't typically share that info. With the Fermi cards, (GTX470/480/570/580) the bytes that turned on the 5.0 speed also changed the number in the System Profiler. When we went to find the 5.0 speed for Kepler cards (GTX680/780/Titan, etc) we discovered how to turn on the 5.0 speed, but also discovered that the functional part and the cosmetic part were 2 separate things. We spent a little more time trying to find the cosmetic part but eventually gave up as it wasn't worth spending weeks on.
In fact, the 5.0 speed on both Kepler and Maxwell cards (GTX970/980 Titan-X) functions perfectly on both 3,1 and the newer 4,1/5,1 systems. This also applies to Windows when you use Bootcamp. In Windows it is easy to confirm this using GPU-Z. When you run the little "system stress" tool you will see the card jump into 2.0 speeds. (PCIE 1.0= 2.5, PCIE 2.0 = 5.0)
In OS X it is a little more difficult to see the actual speed. There are 3 ways that work. One way is to use the "Oceanwaves" OpenCl benchmark. Here is download link. Note that the actual benchmark won't run correctly, it will be capped by your screen refresh rate, typically 60 Hz so you will get 60 fps. But all you really need to see are the numbers on the right when you first open it. Under "Bandwidth Transfer Speeds" there are 3 numbers, the top one is CPU>PCIE>GPU and the second one is the reverse. If your card is running at PCIE 2.0, these numbers will both be 4 or higher. If you are stuck in PCIE 1.0 speed, these numbers will be in the 2 or 3 region. The final number is overall memory bandwidth on your GPU, it is not always accurate.
The 2nd way to see your actual PCIE speed is to install the correct CUDA driver and then download CUDA-Z. This will only work with Nvidia cards, if you have an AMD card you have to use the other 2 methods, or just look in System Profiler, as it is typically correct about AMD cards. Here is a download link for CUDA-Z. If you have the correct CUDA driver installed it will launch and again you are looking at the bandwidth transfer numbers. This time they are labeled "Host to Device" and "Device to Host". These numbers have a different unit and thus the decimal in a different place but same general rule, if they are 4,500 or above, you have PCIE 2.0. If they are in the 2,500 range, you are running at PCIE 1.0 speed.
The final method is to use lspci, which is a small terminal app that is a little more difficult to install and use. Here is a download link. After installing you need to restart. Once you have restarted, open terminal and type "lspci -vv". You should get a very long output, it is everything on your PCIE bus. Page through it for the Nvidia entries. Note that the Audio portion of the video cards also shows up even though OS X doesn't typically contain drivers. You will see 2 "Link speed" entries for your GPU. One represents what it is capable of, and one is what it is currently running at. If the current link status is 2.5, simply open up a benchmark app and run it in a window. Then click back on the terminal window and hit the "up arrow" key, this will let you re-enter last command typed in, then hit return. This time when you see the current link status it should indicate 5.0.
If any of this is unclear, please type in a question and I will try to clarify.
With Apple now changing their "Build Number" with every tiny little update we have had problems with the unsupported cards that require the Nvidia Web Driver. The root cause of this issue is the fact that Apple has stubbornly refused to add any additional cards into the OS X default drivers. The last OS that got new Nvidia cards was 10.8.5, believe it or not.
So, for all of 10.9 and now all of 10.10 any Nvidia card introduced after the GTX780 and GTX Titan has to have the Nvidia Web Drivers installed to run. Specifically:
GTX Titan Black
GTX960/970/980 (Requires 10.10 or later and Web Driver)
GTX Titan-X (Requires 10.10 or later and Web Driver)
If these cards have no EFI, you will never see anything without the Web Driver. If you have EFI, you will see the initial boot screen and progress bar but the machine will crash before reaching the desktop.
The Nvidia Web Drivers are matched to a specific "Build" of OS X. As a "for instance", when 10.10.3 was released it was Build 14D131, a day or two later when it required a "Supplemental Update" this changed the Build Number to 14D136. The new Build Number requires a new Web Driver.
You can find your "Build Number" by going into "About This Mac", then "System Report". Next, click on the "Software" tab and you will see the image with this post. The top line has the information that you need. System Version: OS X 10.10.3 (14D131)
So if I was looking for the right Web Driver for the machine in the image I would look for the one for 14D136.
At least once a day we get an email asking "Can card X do 4K?"
To which there is literally not a single answer. As in, there are MANY answers.
First up, the crucial question is WHICH DISPLAY? And this is crucial because there are already 3 different types of High-resolution displays out there.
5K Dual Cable
4K SST is what most new 4K displays are. SST means "Single Stream Transport". This requires a recent DisplayPort. For these displays, a single DisplayPort connection from a newer (Kepler or later Nvidia) card will give you the full 4K at 60Hz. Anything from the prior Fermi series (GTX4xx through GTX580 and Quadro 4000-6000) will only give you 2560x1440. No amount of driver fiddling or hacking will change this. That is all that these cards can do.
4K MST were the first 4K displays on the market. The Sharp & Asus 321 displays were soon followed by a Dell 321. They all have slight variations on the model number but all have "321" in their name. The Sharp and Asus are exactly the same display while the Dell came a little later and has some refinements but also some limitations. We got the Asus version when Apple announced that these displays were the supported ones for nMP. And what a frustrating experience it has been. And here is where it gets confusing, or at least more confusing. These displays have a "Dual HDMI" mode to do 4K 60Hz, but Apple will likely never have drivers for that so we forget about that mode. That leaves us single HDMI in or Single DP in. The Single HDMI in will always be limited to 30Hz. The DP input is the source of wonder and anger all at once. Many of the cards that CAN'T do 4K on a 4K SST display will actually do 4K on this port, but at 30Hz. And some cards that originally did 4K 60Hz on DP port stopped doing it later due to either OS updates or Firmware updates on the displays. There is a dirty little hack that allows all Kepler and later Nvidia cards with DP output to run these at 60Hz. I will be detailing that in a separate blog post, if you are desperate it is over at MacRumours in the Mac Pro section, it has "1984" in the title.
The above mentioned hack only works in 10.10 or later and didn't work well in 10.10.1 but by 10.10.3 it now works better. It requires running in Kext Dev Mode but is nice and smooth. There will never be a way to run Nvidia cards in MST 60Hz mode for 10.9.
Part of why this mode is so frustrating is the inane and mindless method of switching from one mode to the other. Instead of a "MST or SST" switch, it is the most mind-numbingly obnoxious series of button pushes. The buttons are unseen around the side of the display and are a short row of 8 buttons. You need to do 10 separate pushes on a variety of them to switch from one mode to the other. The display wants to "time out" of being in button pushing mode, sometimes 1 second after you have pushed a button. You must push them in exactly the right order and the topmost button is actually the "on/off" button so you will frequently turn off the display by accident in the midst of switching from one mode to the other, requiring you to turn it on again, wait for it to get back to normal mode, then start the button pushing again. Assuming you get all 10 pushes in the right order, it will switch modes. Sometimes you get what you want, sometimes it scrunches everything over to the left side and leaves the right side totally black.
"MST" means "Multi Stream Transport" and is actually a newer form of DP where 2 separate monitor feeds get sent down the same cable. So the left and right sides of screen are sent as 2 separate displays but then sewn together in the display. AMD cards from the 7xxx series worked for this starting in 10.9.3 or so. But then I updated the firmware from 1.00 to 1.10 on the Asus and it has never worked with AMD cards since. If anyone knows of a way to get the 1.00 firmware I will re-test. Until then, I can no longer use AMD cards on MST 4K. You get 2 desktops next to each other. Frustratingly you can drag something from one to the other and it looks perfect while it crosses, but that is the only way to see it work right. It would take Apple about 30 seconds to fix this, but they won't.
These are great displays, but they only work really well with the nMP, and even it doesn't get a boot screen. And the Dell variant has idiosyncrasies of it's own. I don't have one and can't speak for it.
Finally we come to 5K Dual Cable. Right now this means Dell UP2715K since it is the only 5K available. The nice thing about the Dell is that it has 2 modes, one of which is SST 4K and only requires a single DP cable. The 5K mode requires 2 @ DP cables, and they must go to the same card. So far, this is only supported on Nvidia cards, and you have to run a hack. (listed on this blog further down) With our Kepler EFI cards you will see a lovely 4K boot screen in SST mode. In 5K mode you will sometimes see a boot screen, but not always. The only Kepler cards that can run the 5K at full 5K are ones with 2 DisplayPorts. So a Quadro K5000 and a GTX760 that has 2 DisplayPorts can do it. If you find another Kepler card that has at least 2 @ DisplayPorts, we can most likely flash it for you.
So, to get back to where we started, the answer to "Can it do 4K?" is a long and messy one. The best way to find out for certain is to find someone who is using the same display that you are interested in, so do some Google searches. Keep in mind that sometimes a firmware or OS update will change things, so at the very least find out what OS is reported as working. The words of a independent 3rd party are usually a good indication when some particular combo works. I can only answer for the specific cards and displays we have. Every day there are more and m,ore 4K displays hitting the market. Most now are SST so it is possible that anything we post about the Dell in 4K SST mode will apply to those, but we can't guaranty that.
Currently the HDMI 2.0 spec can run 4K at 60Hz, sadly OS X doesn't have drivers for this yet. When it does, Maxwell Nvidia cards will in theory be able to run 4K 60HZ from HDMI ports. The reason this is important is that MANY 4K TVs only offer HDMI input, and until those drivers come into being, there is no way to drive one of those TVs with a Mac at 60Hz. Last I checked, only Panasonic had a 4K TV with DP. This is something to think about BEFORE the truck drops off a TV that you can't run properly.
And last but not least, how do you verify for CERTAIN that you are getting 4K 60Hz? There is a site that gives you an easy way to verify. Do a Google search for "UFO 60Hz" and it should be the first hit. Basically it is a site that scoots a little UFO across your screen. They will have one at 30Hz and one at 60Hz and they "lock" on your display and figure out what you are running. You will be able to see the 30Hz one hopping and skipping while the 60Hz UFO will smoothly slide across. And for this you don't need a 4K display, any old display will work.
I will revisit this post and clean up typos and poor phrasing. If you have specific questions, please ask.
Now build 14D136 is the result of running the "Supplemental Update".
Probably OK if you stuck with the "Beta" version of Web Drivers from Nvidia.
But anyone who has:
GTX Titan Black
Has to plan for this update. The last "real" driver (346.01.02f01) looks for 14D131 so I can verify that it "breaks" it. Those comfortable modding things can make this super easy. Right now there isn't a new Nvidia Web Driver available, but we can be certain that one will be here in a day or two. Meanwhile, if you are comfortable doing a teeny, tiny bit of modding some driver files, it can be an easy transition.
First and foremost, you need to be in "kext dev mode". If you are running "Trim Enabler" then you probably already are. In any case, typing nvram -p in terminal will let you see your current boot args. If none are listed, you can just type sudo nvram boot-args="kext-dev-mode=1". If you are running a current boot arg in addition to needing this one, just add it inside the quotes. What this does is to allow kernel extensions (kexts) that haven't gotten the Golden Kiss Seal of Approval from Tim Cook to run in OS X Yosemite. The instant you change a SINGLE character in any existing kext it becomes "unclean" and won't load anymore.
You can verify that you did this correctly by typing the "nvram -p" again, you should see whatever you entered now be listed as a boot arg. Once you are certain it is correct, you can now fix the driver preemptively. What we are going to do is have the Nvidia Web Driver now believe that it was destined for the new improved "Supplemental Update" version of 10.10.3. It is important that you do this in the right order, especially if you have a non-EFI card as otherwise it will be "black screen/get another card installed to fix the driver" time.
So now that we are in dev mode, it is time to mod a kext. Go into System/Library/Extensions and drag "
NVDAStartup.kext" to your desktop. What this does is create a copy of it. Now create a folder, called "NVStartup Virgin" and put the kext inside. Now click on this folder and do a "Apple D" which will make a duplicate called "NVStartup Virgin copy". Rename the copy to be "NVStartup modded". Now you will need some form of plist editor, Textwrangler works, as does plistinator pro or plistedit pro, I think there might even be one from Apple.
The important thing is that you open the kext by right clicking on it and hitting "show package contents" and then double click on the "Contents" folder. You will see the Info.plist. Open the plist with whatever app you choose and then click on the "IOKitPersonalities" to expand it, the field you need to mod is the "NVDARequiredOS". You will be changing this from "14D131" to "14D136". See the image at top for clarification.
Now save the plist. I suggest you reopen it and verify that the change "took". When you are certain that it is correct, time to install it. You can use some form of kext installing app, or you can do it by hand. In any case, you should throw the original that is in S/L/E (System/Library/Extensions) in the trash, and then install your modded one.
Even if you use an official kext installer, I strongly suggest that you run a "repair permissions" anyway. The second you dragged the kext to your desktop they became "under your control" and therefore officially "unclean" by OS X standards. When you put them back in the Extensions folder, they still have your stink on them so you need to run that "repair permissions" to make the system load it again. You should see pieces of your modded kext getting "corrected" as the repair runs.
DO NOT REBOOT YET !!! If you do, the driver won't load and you will be borked.
Now it is time to run the update that prompted this wall of text. You can either use the App Store or download it directly.
10.10.3 Supplemental Update
Only AFTER that update has run should you restart your computer. If you like being super neat & tidy, run another Repair Permissions.
If you did everything correctly, all should seem normal. If you borked it somehow, you still have that unmolested copy of the original kext sitting in the "Virgin" folder on your desktop. Using it should fix any issues created by incorrectly modding the kext but won't fix the driver issue itself.
For what it is worth, this is probably exactly what Nvidia is going to do, except they have the magical "Kext Blessing Golden Seal of Approval" that will let the kext load without the dev mode being enabled.
I just did this and had no downtime, no issues, just a simple reboot and back to normal Titan-X running in 10.10.3.
Despite the giant wall of text describing this, it really only took me 2 minutes to do.
Here is the order you need to do this:
1. Boot into 10.10.3 (Build 14D131) with Nvidia Driver 346.01.02f01 running.
2. Get kext dev mode running, verify with "nvram -p"
3. Change the build that Web Driver looks for from 14D131 to 14D136
4. Repair Permissions (not just "verify" actually repair, this is CRUCIAL)
4. Run the supplemental update
5. Reboot, all should be well
When the official Nvidia Driver is released we will describe how to install it painlessly.
Please let me know in comments if there is anything I could explain better or make clearer.
4/17/15 UPDATE: OK, so late last night Nvidia posted the official driver for 14D136. I downloaded it from the link on our Nvidia Drivers page and was able to run it on top of this fix I posted yesterday. Please note that I was NOT able to use the Nvidia Driver Control Panel to do this, no doubt because the hack made it think it was current. But by using the direct download I was able to update it easily. People who enabled kext dev mode just to run the hack would be able to go back to normal mode if they would like.
So today Apple released 10.10.3 which will of course cause issues with the cards that Apple refuses to put in the drivers. Specifically:
GTX Titan Black
GTX Titan X
Most other Nvidia cards don't absolutely REQUIRE the Web Driver so they don't need to be concerned with this fix.
There will be an "Official" Nvidia release for this, but until then we can use the latest Beta. (linked on our drivers page)
I am still working on a "Best" method to run this but I was able to do this without having to remove a GTX970. I recommend downloading the 10.10.3 Combo update from Apple instead of using App Store.
Running 10.10.2 I basically I went into System/Library/Core Services and opened "SystemVersion.plist" and changed the "14C1514" to "14D". This let me run the Nvidia Beta driver installer. This is where it got tricky. I needed to switch the plist back to "14C1514" in order to run the Apple 10.10.3 update. I ended up having to "repair permissions" and reboot but there might be a way to avoid that. I got a Java error with "14D" in the System Version when trying to run 10.10.3 Combo. In any case, with a working EFI you can easily fix things, though running with just EFI and no drivers is a bit sluggish.
Will update with an official procedure when I finalize. Happy to get feedback from folks who have tried this method or the nv_disable method.
So Nvidia released a driver update for 10.10.2