Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
You might be out of luck if your firmware is not 64-bit enabled. I haven't yet tested on MacBook Pros. I am quite confident that IMac 9,1+, MBP5,1+, MBA1,1+, MM4,1+, MB5,1+ work and I suspect that MBP4,1 might work also, but for the Mac Pros, I have no clue. I think I could download a firmware and look it up but I don't have my system with me (where I have all the tools). A good start (though not necessarily enough) might be if your Mac has EFI64, which you can check with ioreg.

I believe my Mac Pro does in fact have a 64-bit based EFI firmware. I created a 64-Bit EFI Grub boot on a USB stick to install Fedora 16 using the information here:

http://fedora64.org/Members/jmontleon/installing-fedora-16-on-macbooks-using-grub2-efi

Please note that I did in fact skip steps 4-6. I do apologize, I have a Mac Pro 4,1, as noted in this link:

http://support.apple.com/kb/SP506

Not only was I able to actually load the Grub prompt, but since I did receive the prefix error, I was able to set root to (hd1,gpt1) and locate my USB stick and actually netinstall Fedora 16. I REALLY want Windows on my Mac Pro via EFI booting and I have been vying for a way to get it on here. I'm all for contributing to this project. Very excited we MAY be able to get this to work.
 
@DaGr8Gatzby and for future reference:

A easy wat to check if your Mac uses a 64-bit EFI is to pull up a terminal and paste the following:

Code:
ioreg -l -p IODeviceTree | grep firmware-abi

Also: I might come up with a easy reference table, if I can't google it, that just says: "If your computer is ye old, it does not have 64-bit EFI". No promises though :)
 
@DaGr8Gatzby and for future reference:

A easy wat to check if your Mac uses a 64-bit EFI is to pull up a terminal and paste the following:

Code:
ioreg -l -p IODeviceTree | grep firmware-abi

Also: I might come up with a easy reference table, if I can't google it, that just says: "If your computer is ye old, it does not have 64-bit EFI". No promises though :)

Already did this. I definitely have 64-bit firmware. I already managed to get Fedora and OS X booting with Grub only. Just waiting for Windows. It seems to be possible with an automated installer. I tried booting the efi shell with grub manually and it does appear to go through and my caps lock key works. I really need to setup an unattended install, but I really wish I had a little more guidance in this.
 
Already did this. I definitely have 64-bit firmware. I already managed to get Fedora and OS X booting with Grub only. Just waiting for Windows. It seems to be possible with an automated installer. I tried booting the efi shell with grub manually and it does appear to go through and my caps lock key works. I really need to setup an unattended install, but I really wish I had a little more guidance in this.

Ah! Should have read your posts more thoroughly! I'm going to attempt to put together an unattended install for my own Mac Pro after New Years anyways and I'll share anything I learn along the way if it helps. I haven't built unattended installs since XP so this will be interesting.
 
Finally got it running well, stable for 24 hours in EFI mode running the 9400M.

I've managed a script to run

(mm 0100003E 8, 00300004 7, 0x750 2)

which disables the discreet card and boots to 7 on the 9400.

How would I do the opposite, and boot from the 9600M while disabling the integrated chip?
 
Code:
REM Enabling VGA on the PCI Bridge that the NVidia card is connected to
REM Setting Bridge Control Register (0x3e) to 8
mm 0010003E 8 -PCI

REM Enabling NVidia Card "I/O Space Access" and setting it as Bus Master
REM Setting Command Register (0x04) to 7
mm 03000004 7 -PCI

hi, i have a macbook pro 3,1 with gf8600mgt only, can anyone of you give me the right efi shell commands to find out the needed registers, and an explaination how to find out the needed value for it?

My plan is to boot ubuntu efi, which comes with nouveaufb, so the only thing to do for me, correct me please if I'm wrong, is to enable these 2 registers correctly.

best regards, chief
 
Last edited:
I'm also searching for the right "mm"-command.

I have an MacbookAir3,1 with Geforce320M.


Thank you :)
 
Finally got it running well, stable for 24 hours in EFI mode running the 9400M.

I've managed a script to run

(mm 0100003E 8, 00300004 7, 0x750 2)

which disables the discreet card and boots to 7 on the 9400.

How would I do the opposite, and boot from the 9600M while disabling the integrated chip?

Would it be possible for you to describe each step that you are taking in order to get at least the install working? Are you using an unattended install? Do you run the mm command in EFI shell first? I have been following each post in this thread, but it just seems like people are jumping around. Maybe a wiki should be made.
 
Start to finish on a 5,1 Macbook Pro (9400M / 9600M GT)

I created an unattended install of Windows 7 Professional using RT-Seven Lite. I took a factory ISO, stripped out a bunch of stuff I didn't need, and added the latest nVidia drivers (extracted from the downloaded .exe).

I booted ubuntu from a flash drive, wiped my hard drive, formatted to GPT, then created a 200mb EFI partition, 300mb Windows System Reserved partition, and a ~480gb primary NTFS partition.
(It seems my autounattend DID NOT format over what I had there, but YMMV. Be ready to restore refit (or some other efi shell) to your EFI partition.)

I restored my customized efi folder to the EFI partition, containing refit, devil's files (currently not using), and some documentation.

The install completed perfectly, however I'm only able to get output from the integrated (9400M) card so far. This requires setting 2 PCI config bytes, and one I/O register in the EFI shell.

Code:
set 8 to  >  mm 0010003E -PCI
set 7 to  >  mm 03000004 -PCI
set 2 to  >  mm 0750 -IO

  • Setting register 3E on bus 00 device 10 (PCI Bridge controlling the integrated graphics) to "8" enables VGA.
  • Setting register 04 on bus 03 device 00 (the 9400M device) to "7" enables I/O access and sets Bus Master.
  • Changing I/O 0x750 from "3" to "2" disables power to the 9600M card, extending battery life, reducing heat, and in my case, allowing graphical output.

I have to change each of those values on each reboot before navigating to fs0:\EFI\boot\ and running bootx64.efi No loading screen, 9400M output begins when windows loads the nvidia driver for desktop.

I've spent days trying various configurations, PCI config space, I/O values, NVRAM dumps/edits/loads, yet I cannot get the 9600M to work. The 9600 is on Bus 2, and checking the PCI configuration returns all F's. That tells me something else in the config is disabling it, I just can't find it.

I can get 00-0c (PCI-X bus for 9600) to enable VGA, set the gmux (pulled IO reg's from the ubuntu driver), but haven't figured out how to get GraphicsOutput or the other NVRAM values to migrate from device E7 to E5. That's where I've been banging my head...

tl;dr:
if you're happy with only using integrated graphics, this method works on the 5,1.




I don't have the bandwidth to share my install .iso, but I'll include my autounattend below.

Again, use rt7 to include nvidia drivers, and make sure you're able to use the EFI shell once windows has installed, or even the 9400m won't function.

PHP:
<?xml version="1.0" encoding="utf-8"?>
<!--This answer file generated by RT Seven Lite-->
<unattend xmlns="urn:schemas-microsoft-com:unattend">
  <settings pass="windowsPE">
    <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="NonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <SetupUILanguage>
        <UILanguage>en-US</UILanguage>
      </SetupUILanguage>
      <InputLocale>en-US</InputLocale>
      <UserLocale>en-US</UserLocale>
      <UILanguage>en-US</UILanguage>
      <SystemLocale>en-US</SystemLocale>
    </component>
    <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="NonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <DiskConfiguration>
        <Disk wcm:action="add">
          <DiskID>0</DiskID>
          <WillWipeDisk>true</WillWipeDisk>
          <CreatePartitions>
            <CreatePartition wcm:action="add">
              <Order>1</Order>
              <Type>EFI</Type>
              <Size>100</Size>
            </CreatePartition>
            <CreatePartition wcm:action="add">
              <Order>2</Order>
              <Type>MSR</Type>
              <Size>128</Size>
            </CreatePartition>
            <CreatePartition wcm:action="add">
              <Order>3</Order>
              <Type>Primary</Type>
              <Extend>true</Extend>
            </CreatePartition>
          </CreatePartitions>
          <ModifyPartitions>
            <ModifyPartition>
              <Order>1</Order>
              <PartitionID>1</PartitionID>
              <Label>System</Label>
              <Format>FAT32</Format>
            </ModifyPartition>
            <ModifyPartition>
              <Order>2</Order>
              <PartitionID>3</PartitionID>
              <Letter>C</Letter>
              <Format>NTFS</Format>
              <Label>Windows</Label>
            </ModifyPartition>
          </ModifyPartitions>
        </Disk>
      </DiskConfiguration>
      <ImageInstall>
        <OSImage>
          <InstallFrom>
            <MetaData wcm:action="add">
              <Key>/IMAGE/NAME</Key>
              <value>Windows 7 PROFESSIONAL</value>
            </MetaData>
          </InstallFrom>
          <InstallTo>
            <DiskID>0</DiskID>
            <PartitionID>3</PartitionID>
          </InstallTo>
          <InstallToAvailablePartition>false</InstallToAvailablePartition>
          <WillShowUI>OnError</WillShowUI>
        </OSImage>
      </ImageInstall>
      <UserData>
        <ProductKey>
          <Key>HYF8J-CVRMY-CM74G-RPHKF-PW487</Key>
          <WillShowUI>OnError</WillShowUI>
        </ProductKey>
        <Organization>efi</Organization>
        <FullName>away</FullName>
        <AcceptEula>true</AcceptEula>
      </UserData>
    </component>
  </settings>
  <settings pass="oobeSystem">
    <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="NonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <UserAccounts>
        <LocalAccounts />
        <AdministratorPassword>
          <Value>password</Value>
        </AdministratorPassword>
      </UserAccounts>
      <AutoLogon>
        <Password>
          <Value>password</Value>
        </Password>
        <Enabled>true</Enabled>
        <LogonCount>9999</LogonCount>
        <Username>Administrator</Username>
      </AutoLogon>
      <OOBE>
        <NetworkLocation>Home</NetworkLocation>
        <HideEULAPage>true</HideEULAPage>
        <ProtectYourPC>3</ProtectYourPC>
        <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
        <SkipMachineOOBE>true</SkipMachineOOBE>
        <SkipUserOOBE>true</SkipUserOOBE>
      </OOBE>
      <DisableAutoDaylightTimeSet>true</DisableAutoDaylightTimeSet>
      <TimeZone>Central Standard Time</TimeZone>
      <Display>
        <ColorDepth>32</ColorDepth>
        <HorizontalResolution>1440</HorizontalResolution>
        <VerticalResolution>900</VerticalResolution>
        <RefreshRate>60</RefreshRate>
      </Display>
    </component>
  </settings>
  <settings pass="specialize">
    <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="NonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <ComputerName>mbp</ComputerName>
    </component>
    <component name="Microsoft-Windows-Security-Licensing-SLC-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="NonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <SkipAutoActivation>true</SkipAutoActivation>
    </component>
  </settings>
</unattend>

also, don't use ^^^this^^^ if you aren't able to read it. I'm not liable if you break your stuff with my code :)
 
Last edited:
hi, i have a macbook pro 3,1 with gf8600mgt only, can anyone of you give me the right efi shell commands to find out the needed registers, and an explaination how to find out the needed value for it?

My plan is to boot ubuntu efi, which comes with nouveaufb, so the only thing to do for me, correct me please if I'm wrong, is to enable these 2 registers correctly.

best regards, chief

Here you go chief.

https://help.ubuntu.com/community/UEFIBooting#Apple_Mac_EFI_systems

should have everything you need :)

----------

You do realize you just occupied my entire night correct? haha. Thank you so much.

After a few all-nighters, I never thought I'd be so happy to see a windows desktop. Hopefully I can save you a few headaches :) Good luck!
 

thanks for response, I already have tried most of this stuff, ubuntu efi is booting, using the free nouveaufb. but as soon as X starts up, i cannot see anything, so I'm ending up in console. I thought the problem is, that I have to enable my gf in efi shell before the boot, like u do before your win boot.
but I don't know how to find out my registers and which value I should set them.

why you know for example, that 8 enables the bridge?
 
thanks for response, I already have tried most of this stuff, ubuntu efi is booting, using the free nouveaufb. but as soon as X starts up, i cannot see anything, so I'm ending up in console. I thought the problem is, that I have to enable my gf in efi shell before the boot, like u do before your win boot.
but I don't know how to find out my registers and which value I should set them.

why you know for example, that 8 enables the bridge?

Lots of trial and error. It's all old school computer science stuff regarding the PCI Configuration space. Here's an article that helped me out.

http://www.cs.ucla.edu/~kohler/class/04f-aos/ref/hardware/vgadoc/PCI.TXT
 
away8907 & d3vi1,

After scanning threw thread i gather you guys are working on on Native UEFI loader? Is it in Beta Stage?

I run triple boot on all 3 systems, "Lion, Ubuntu & Win7x64"

Im interested in testing. I have 2010 MacPro, 2011 MacBook Pro 17', & Z68 Hackintosh.

MacPro i use Quadro 4000 for Mac & Areca 1880ix PCIe controllers with 2 Hard RAID 0's for boot Drives. Osx Seperate from Window & Ubuntu. All 3 systems use SATA 3 6Gbps SSD's.

Could either one of you or both send me PM with more info.

Thanks,
mac-hacks
 
Last edited:
away8907 & d3vi1,

After scanning threw thread i gather you guys are working on on Native UEFI loader? Is it in Beta Stage?

I run triple boot on all 3 systems, "Lion, Ubuntu & Win7x64"

Im interested in testing. I have 2010 MacPro, 2011 MacBook Pro 17', & Z68 Hackintosh.

MacPro i use Quadro 4000 for Mac & Areca 1880ix PCIe controllers with 2 Hard RAID 0's for boot Drives. Osx Seperate from Window & Ubuntu. All 3 systems use SATA 3 6Gbps SSD's.

Could either one of you or both send me PM with more info.

Thanks,
mac-hacks

I'm honored to have my name included, but d3vil is the real prodigy here, he's coding the app to make my method unnecessary. That said, I'm sure we would all benefit from some experience with RAIDs and SSD's, as enabling AHCI means a lot more to you than it does to me with a 500GB spinny.

We should set up a wiki / IRC channel, anyone here good enough with IRC to do that? I'd hang out in there as much as I could so you could pick my brain...

____

Edit: Right now I'm working on a buglist of issues I've run into the last few days with my install. So far none are real dealbreakers, but it's far from perfect. Reminds me of running the original boot camp beta when they first released it.
 
Edit: Right now I'm working on a buglist of issues I've run into the last few days with my install. So far none are real dealbreakers, but it's far from perfect. Reminds me of running the original boot camp beta when they first released it.

I think we should compile some of those issues - there may not be a fix for them, though. I've on running EFI on a MacbookPro 5,3 and this is what I'm seeing:

- Brightness keys don't work at all. Would really help the battery life if I had the ability to control that.

- Running on 9400M, but sometimes coming out of standby Windows 7 seems to detect the 9600GT video card (esp. if I do a scan for new hardware in device manager). Tries to install the driver, and after a reboot (even with the PCI registers set in efi shell) Windows won't boot. Have to do a last known good configuration to get it to boot after that. Only happened a handful of times to me, but could be scary if you don't know how to get around it.


I seem to remember both of these issues when I tried to install ubuntu on efi on this machine a year or so ago. Don't know if they ever fixed either one there; I'll take a look at the ubuntu forums and see.
 
I think we should compile some of those issues - there may not be a fix for them, though. I've on running EFI on a MacbookPro 5,3 and this is what I'm seeing:

- Brightness keys don't work at all. Would really help the battery life if I had the ability to control that.

- Running on 9400M, but sometimes coming out of standby Windows 7 seems to detect the 9600GT video card (esp. if I do a scan for new hardware in device manager). Tries to install the driver, and after a reboot (even with the PCI registers set in efi shell) Windows won't boot. Have to do a last known good configuration to get it to boot after that. Only happened a handful of times to me, but could be scary if you don't know how to get around it.


I seem to remember both of these issues when I tried to install ubuntu on efi on this machine a year or so ago. Don't know if they ever fixed either one there; I'll take a look at the ubuntu forums and see.

The issue with brightness control is that it requires modification of IO registers. Specifically 0x774. There's an interesting bitmask on it, but after tearing apart a few linux apps made for ubuntu, I've at least got a general idea of what they are. I've been able to raise and lower the brightness level in the EFI shell, but so far unable to effect the values from windows.

In regards to the GPU switching, I've run into the same issue a few times, I've found zapping NVRAM and PRAM fix it, but enabling the 9600M is still #1 on my buglist.
 
Also, if anyone here is better at EFI scripting than I am, see if you can make this happen.


Code:
echo -off
echo Setting PCI registers
mm 0010003E -PCI 8
mm 03000004 -PCI 7
echo Disabling discreet graphics
mm 0750 -IO 2
echo Executing bootloader
fs0:
cd efi
cd boot
bootx64.efi

That's the manual entry version, but I can't seem to get the syntax right in a startup.nsh script...
 
What I don't quite get, would it be on Apples or Microsofts part to fix the issue with booting/installing in EFI Mode?

Don't rely on Apple "fixing" anything with regards to running/installing Windows on their computers. For starters, they need to start following the UEFI standard. I doubt Microsoft will do anything with regards to this either, since any effort from their side can be rendered useless if Apple doesn't agree to follow standards.
 
Also, if anyone here is better at EFI scripting than I am, see if you can make this happen.


Code:
echo -off
echo Setting PCI registers
mm 0010003E -PCI 8
mm 03000004 -PCI 7
echo Disabling discreet graphics
mm 0750 -IO 2
echo Executing bootloader
fs0:
cd efi
cd boot
bootx64.efi

That's the manual entry version, but I can't seem to get the syntax right in a startup.nsh script...

Some old macbook does not understand script in that way.
That stupid script took me a long time to figure out.

Code:
mm 0010003E 1 ;PCI :8
mm 02000004 1 ;PCI :7
fs0:
EFI\Microsoft\Boot\Bootmgfw.efi

this is my code but you should be able to write your own based on mine.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.