On my MacBook5,2 (Nvidia 9400m video card) if the drivers are installed in Windows, Windows does not boot. Windows is installed in EFI mode, if that matters.

  • What driver version exactly? Did it work before? What precisely happens during boot? (Errors?) – slhck Nov 9 '13 at 9:50
  • Version from 30 August 2013, the most current version offered by WU. – kinokijuf Nov 9 '13 at 13:34
  • This is a common problem in Windows 8 and newer on Mac-EFI. (Windows 7 doesn't support Apple-EFI, which is EFI 1.x.) It seems to be due to the Nvidia drivers not working in EFI mode, for two reasons: 1) in EFI mode the setup is different and Apple probably got it wrong, but doesn't care (Mac-EFI is Apples responsibilty!), and 2) Nvidia doesn't bother to produce a workaround. Keep in mind that this setup, Windows 8/8.1/10 in EFI mode, is totally unsupported by Apple though Boot Camp. The Nvidia drivers work well in CSM (BIOS emulation) mode, so Apple's supported way works! – luttztfz Nov 15 '19 at 14:10

I entered the following into the startup.nsh file of the EFI Shell:

mm 0010003E 1 ;PCI :8
mm 02000004 1 ;PCI :7

Now if there only was a way to set those registers in an EFI variable…

Technical info: While Windows 8 no longer expects an EFI system to have VGA-compatible video, Nvidia drivers apparently still do and crash if they don’t detect it. The above commands are supposed to enable the VGA support in the graphics card.


For those of you that are having trouble on older Macs, try to change startup.nsh values to:

mm 0010003E 1 ;PCI :8
mm 03000004 1 ;PCI :7

First of all, @kinokijuf worked perfectly, but it was painful for me to understand what's going on under the hood.

First, this solution worked for me on a Windows 10 with Macbook 5,2 (White/2009)

If you are not used about what is an EFI, I will try my explanation: It's a new way to boot systems, you have a partition on disk for that and a bunch of small EFI programs. This partition usually exists on a Mac/Windows (if installed using EFI option), and you don't see it, unless you mount it.

For mounting on mac:

diskutil list
sudo mkdir /Volumes/efi
sudo mount -t msdos /dev/disk0s1 /Volumes/efi
  • where /dev/disk0s1 is your EFI partition that was listed on first command.


For mounting on Windows, Open prompt with administration privilegies and:

mountvol S: /S

OK and why do I need to know that?

You need to boot your windows but prior to that you need to run this damn commands before, so my recommendation is to first of all INSTALL a better bootloader. I recommend rEFInd, it helped me a lot, and I always use it.

Website: http://www.rodsbooks.com/refind/ Download page: http://www.rodsbooks.com/refind/getting.html Install on Windows or Mac page: http://www.rodsbooks.com/refind/installing.html#windows

Have you done that?

If yes, you currently know that exists an EFI partition and you have already copied all refind files to that place. You can boot and you will see refind taking place of the boot loading process.

You know too that during the process you copied a file called refind.conf, right?

On this file you can configure a "Special Manual Windows Entry", mine is like this:

menuentry "Windows via shell script" {
    icon \EFI\refind\icons\os_win.png
    loader \EFI\tools\Shell_Full.efi
    options "fs0:\EFI\tools\startup.nsh"

If you check you will find out that there's one very similar to this on the conf file actually.

This entry will show up, but for it to work you need another step! I have created on my EFI partition (inside EFI folder) a folder called tools, and inside it I copied a EFI program that I have download from Intel, usually called EFI Shell 2, the file name is Shell_Full.efi.

Here's the source: https://svn.code.sf.net/p/edk2/code/trunk/edk2/EdkShellBinPkg/FullShell/X64/Shell_Full.efi

I will not lie, I don't know exactly what this does, but is a program, you put on the tools folder and YOU WILL PASS A SHELL SCRIPT TO BE RUNNED AS A PARAMETER TO THIS PROGRAM.

So, as you can see on this part of my refind.conf entry, here's the parameter:

options "fs0:\EFI\tools\startup.nsh"

You should CREATE this file that was passed as a parameter too, and there you will put that damn commands that solve yout life. Mine (startup.nsh) as follows:

mm 0010003E 1 ;PCI :8
mm 02000004 1 ;PCI :7

So that's it, here I am writing from my Windows 10 with this damn Nvidia Driver 341.74 that took me 2 entire days rebooting, repairing, reinstalling, updating, until I finally found the complete solution.

So if you get this repair / restart / loop installing Windows 10 on EFI, this is the way to go. I expect in future to find a way with less intermediate programs to boot my macbook.


This startup.nsh code worked on my MacBook 5,3 to startup Windows with integrated card only

set -v efishellmode 1.1.2 mm 0750 -IO 0 set -v efishellmode 1.1.2 mm 02000004 -PCI 7 set -v efishellmode 1.1.2 mm 0010003E -PCI 8 set -v efishellmode 1.1.2 mm 03000004 -PCI 7

The main difference from code from other posts is the first line that disables 9600 off. Without it, Windows cannot decide which one graphics card to use and goes to black screen. (The credits goes to this great post https://forums.macrumors.com/threads/win7-x64-booting-natively-via-efi-no-bios-emulation.696523/page-42#post-20529412)

The code renews environment variable efishellmode to 1.1.2 to get advantage of advanced mm command syntax.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.