parczefal Posted January 16, 2015 Share Posted January 16, 2015 Hey Guys! Sorry if this is not the appropriate forum, or if this has been done already (I found no related posts). Long story short, I have the Iris Pro on the 15" Macbook (Mid 2014 with dGPU) partially working on Windows 8.1. I created a triple boot installation (Mac, Win 8.1, Arch Linux), patched Grub to fake the "booting-into-os-x" procedure, and forced the iris pro 5200 driver installation on windows. So far, I can only see the two devices working in safe mode, see screenshot below: I have tried uninstalling the nVidia card drivers and something weird happens after windows load, looks like there's a secondary screen, with a different resolution to the right of the "main" screen. I can move the mouse and everything, but I can't log in. If I disable the nVidia card, I just get a black screen after windows load. Any ideas? Suggestions? I was thinking maybe I could get my hands dirty with nVidia CUDA and code an applet to manage this stuff. I'm good with C/C++ but I don't know if that's possible at all. I can reveal more details if you want. Thanks! - - - Updated - - - This is basically the Grub hack: http://lists.gnu.org/archive/html/grub-devel/2013-12/msg00442.html I was thinking, maybe it's possible to completely disable the nVidia card from the Grub EFI console. Does anybody have any experience with that? Quote Link to comment Share on other sites More sharing options...
tre87 Posted January 16, 2015 Share Posted January 16, 2015 Have you seen this post: Win7 x64 booting natively via EFI (no BIOS emulation) - Page 42 - MacRumors Forums?And tried their tool? I was gonna test it later today..https://github.com/0xbb/gpu-switch Quote Link to comment Share on other sites More sharing options...
parczefal Posted January 16, 2015 Author Share Posted January 16, 2015 Update!I changed the nVidia driver in the Device Manager for it to use the Microsoft Basic Display Adapter. After the reboot, I was able to see the color I chose for the login screen. I tabbed twice, typed in my password and managed to get into the windows desktop!At first, it was using some type of "extended virtual desktop", but I managed to tweak some settings in the screen resolution applet to make the Color LCD my main desktop.I'm also able to reach the Intel Graphics Control Panel.Stay Tuned!- - - Updated - - -Have you seen this post: Win7 x64 booting natively via EFI (no BIOS emulation) - Page 42 - MacRumors Forums?And tried their tool? I was gonna test it later today..https://github.com/0xbb/gpu-switchHey Tre87!Actually, I found the hint to do this on those pages! Haven't had the chance to compile his code but I'll give it a go, I'll keep you updated! Quote Link to comment Share on other sites More sharing options...
tre87 Posted January 16, 2015 Share Posted January 16, 2015 Hey Tre87!Actually, I found the hint to do this on those pages! Haven't had the chance to compile his code but I'll give it a go, I'll keep you updated! It would be so awesome to get this working, not only for the eGPU part, but also for the battery performance in Windows So keep those updates comming! Quote Link to comment Share on other sites More sharing options...
parczefal Posted January 18, 2015 Author Share Posted January 18, 2015 I'll Probably need some help around here!So far I can boot to Win 8.1 using the Intel Iris Pro driver (5200) hooked to a "Virtual Display". Looks like the LCD panel is still hooked to the nVidia card with a Generic Driver.I've tried a couple of different things:Using reFind:Cloned the process outlined here: [GUIDE] 2012 15" Macbook Pro Retina + GTX560Ti@8Gbps-TB1 (TH05) + Win8.1 , however, the screen just goes black and I have to force shutdown my computer. This is how my .nsh code looks like:mm 7C2 1 ;IO :1stall 100000mm 7D4 1 ;IO :28stall 100000echo Switch Displaymm 7C2 1 ;IO :2stall 100000mm 7D4 1 ;IO :10stall 100000echo Switch DDCmm 7C2 1 ;IO :2stall 100000mm 7D4 1 ;IO :40stall 100000echo Power down discrete graphicsmm 7C2 1 ;IO :1stall 100000mm 7D4 1 ;IO :50stall 100000mm 7C2 1 ;IO :0stall 100000mm 7D4 1 ;IO :50echo enable iGPUmm 0001013E 1 ;PCI :8stall 100000mm 00020004 1 ;PCI :7stall 100000echo Boot Grubfs0:\EFI\Boot\bootx64.efiecho Switch selectThis is what the pci command drops in the EFI Shell:Vendor 8086 Device 0D04 Prog Interface 0[/FONT][FONT=arial]00 00 01 00 => Bridge Device - PCI/PCI BridgeVendor 8086 Device 0D01 Prog Interface 0[/FONT][FONT=arial]00 00 01 01 => Bridge Device - PCI/PCI BridgeVendor 8086 Device 0D05 Prog Interface 0[/FONT][FONT=arial]00 00 02 00 => Display Controller - VGA/8514 ControllerVendor 8086 Device 0D05 Prog Interface 0[/FONT][FONT=arial]00 00 03 00 => Multimedia Device - UNDEFINEDVendor 8086 Device 0D0C Prog Interface 0[/FONT][FONT=arial]00 00 14 00 => Serial Bus Controllers - USBVendor 8086 Device 8C31 Prog Interface 30[/FONT][FONT=arial]00 00 16 00 => Simple Communications Controllers - Other CommunicationsVendor 8086 Device 8C3A Prog Interface 0[/FONT][FONT=arial]00 00 1B 00 => Multimedia Device - UNDEFINEDVendor 8086 Device 8C20 Prog Interface 0[/FONT][FONT=arial]00 00 1C 00 => Bridge Device - PCI/PCI bridgeVendor 8086 Device 8C10 Prog Interface 0[/FONT][FONT=arial]00 00 1C 02 => Bridge Device - PCI/PCI bridgeVendor 8086 Device 8C14 Prog Interface 0[/FONT][FONT=arial]00 00 1C 03 => Bridge Device - PCI/PCI bridgeVendor 8086 Device 8C16 Prog Interface 0[/FONT][FONT=arial]00 00 1C 04 => Bridge Device - PCI/PCI BridgeVendor 8086 Device 8C18 Prog Interface 0[/FONT][FONT=arial]00 00 1F 00 => Bridge Device - PCI/ISA BridgeVendor 8086 Device 8C4B Prog Interface 0[/FONT][FONT=arial]00 00 1F 03 => Serial Bus Controllers - System Management BusVendor 8086 Device 8C22 Prog Interface 0[/FONT][FONT=arial]00 01 00 00 => Display Controller - VGA/8514 ControllerVendor 10DE Device 0FE9 Prog Interface 0[/FONT][FONT=arial]00 01 00 01 => Multimedia Device - UNDEFINEDVendor 10DE Device 0E1B Prog Interface 0[/FONT][FONT=arial]00 03 00 00 => Network Controller - Other Network ControllerVendor 14E4 Device 43A0 Prog Interface 0[/FONT][FONT=arial]00 04 00 00 => Multimedia Device - Other Multimedia DeviceVendor 14E4 Device 1570 Prog Interface 0[/FONT][FONT=arial]00 05 00 00 => Mass Storage Controller - UndefinedVendor 144D Device 1600 Prog Interface 1[/FONT][FONT=arial]00 06 00 00 => Bridge Device PCI/PCI bridgeVendor 8086 Device 156D Prog Interface 0[/FONT][FONT=arial]00 07 00 00 => Bridge Device - PCI/PCI bridgeVendor 8086 Device 156D Prog Interface 0[/FONT][FONT=arial]00 07 03 00 => Bridge Device - PCI/PCI bridgeVendor 8086 Device 156D Prog Interface 0[/FONT][FONT=arial]00 07 04 00 => Bridge Device - PCI/PCU bridgeVendor 8086 Device 156D Prog Interface 0[/FONT][FONT=arial]00 07 05 00 =>Bridge Device - PCI/PCI bridgeVendor 8086 Device 156D Prog Interface 0[/FONT][FONT=arial]00 07 06 00 => Bridge Device - PCI/PCI bridgeVendor 8086 Device 156D Prog Interface 0[/FONT][FONT=arial]00 08 00 00 => Base System Peripherals - Other system peripheralVendor 8086 Device 156C Prog Interface 0[/FONT][FONT=arial]00 00 00 00 => Bridge Device - Host/PCI Bridge Quote Link to comment Share on other sites More sharing options...
parczefal Posted January 18, 2015 Author Share Posted January 18, 2015 I've also tried this using grub, same blackscreen result:## It is automatically generated by grub-mkconfig using templates# from /etc/grub.d and settings from /etc/default/grub#### BEGIN /etc/grub.d/00_header ###insmod part_gptinsmod part_msdosif [ -s $prefix/grubenv ]; then load_envfiif [ "${next_entry}" ] ; then set default="${next_entry}" set next_entry= save_env next_entry set boot_once=trueelse set default="0"fiif [ x"${feature_menuentry_id}" = xy ]; then menuentry_id_option="--id"else menuentry_id_option=""fiexport menuentry_id_optionif [ "${prev_saved_entry}" ]; then set saved_entry="${prev_saved_entry}" save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=truefifunction savedefault { if [ -z "${boot_once}" ]; then saved_entry="${chosen}" save_env saved_entry fi}function load_video { if [ x$feature_all_video_module = xy ]; then insmod all_video else insmod efi_gop insmod efi_uga insmod ieee1275_fb insmod vbe insmod vga insmod video_bochs insmod video_cirrus fi}if [ x$feature_default_font_path = xy ] ; then font=unicodeelseinsmod part_gptinsmod ext2set root='hd0,gpt6'if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 b53dd552-9d3e-4447-bec4-8dd6e231e1baelse search --no-floppy --fs-uuid --set=root b53dd552-9d3e-4447-bec4-8dd6e231e1bafi font="/usr/share/grub/unicode.pf2"fiif loadfont $font ; then set gfxmode=auto load_video insmod gfxterm set locale_dir=$prefix/locale set lang=en_US insmod gettextfiterminal_input consoleterminal_output gfxtermif [ x$feature_timeout_style = xy ] ; then set timeout_style=menu set timeout=5# Fallback normal timeout code in case the timeout_style feature is# unavailable.else set timeout=5fi### END /etc/grub.d/00_header ###### BEGIN /etc/grub.d/10_linux ###menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-b53dd552-9d3e-4447-bec4-8dd6e231e1ba' { apple_set_os load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2 set root='hd0,gpt6' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 b53dd552-9d3e-4447-bec4-8dd6e231e1ba else search --no-floppy --fs-uuid --set=root b53dd552-9d3e-4447-bec4-8dd6e231e1ba fi echo 'Loading Linux linux ...' linux /boot/vmlinuz-linux root=UUID=b53dd552-9d3e-4447-bec4-8dd6e231e1ba rw quiet rootflags=data=writeback libata.force=noncq echo 'Loading initial ramdisk ...' initrd /boot/initramfs-linux.img}menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-b53dd552-9d3e-4447-bec4-8dd6e231e1ba' { apple_set_os load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2 set root='hd0,gpt6' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 b53dd552-9d3e-4447-bec4-8dd6e231e1ba else search --no-floppy --fs-uuid --set=root b53dd552-9d3e-4447-bec4-8dd6e231e1ba fi echo 'Loading Linux linux ...' linux /boot/vmlinuz-linux root=UUID=b53dd552-9d3e-4447-bec4-8dd6e231e1ba rw quiet rootflags=data=writeback libata.force=noncq echo 'Loading initial ramdisk ...' initrd /boot/initramfs-linux-fallback.img}### END /etc/grub.d/10_linux ###### BEGIN /etc/grub.d/20_linux_xen ###### END /etc/grub.d/20_linux_xen ###### BEGIN /etc/grub.d/30_os-prober ###menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-6877-AB9C' { outb 0x7C2 1 outb 0x7D4 0x28 outb 0x7C2 2 outb 0x7D4 0x10 outb 0x7C2 2 outb 0x7D4 0x40 outb 0x7C2 1 outb 0x7D4 50 outb 0x7C2 0 outb 0x7D4 50 apple_set_os insmod part_gpt insmod fat set root='hd0,gpt1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 6877-AB9C else search --no-floppy --fs-uuid --set=root 6877-AB9C fi chainloader /efi/Microsoft/Boot/bootmgfw.efi}### END /etc/grub.d/30_os-prober ###### BEGIN /etc/grub.d/40_custom #### This file provides an easy way to add custom menu entries. Simply type the# menu entries you want to add after this comment. Be careful not to change# the 'exec tail' line above.### END /etc/grub.d/40_custom ###### BEGIN /etc/grub.d/41_custom ###if [ -f ${config_directory}/custom.cfg ]; then source ${config_directory}/custom.cfgelif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then source $prefix/custom.cfg;fi### END /etc/grub.d/41_custom ###### BEGIN /etc/grub.d/60_memtest86+ ###### END /etc/grub.d/60_memtest86+ ### ## DO NOT EDIT THIS FILEIris Pro is working Flawlessly in Gentoo - Arch. Quote Link to comment Share on other sites More sharing options...
parczefal Posted January 18, 2015 Author Share Posted January 18, 2015 I Got it to Work!!I'll describe my procedure in the next post, in broad terms, all you need to do is:1. Wipe out your Hard Drive2. Install Win 8.1 EFI Mode3. Install OS X4. Install Arch EFI Mode5. Install grub on arch applying the following patch: [PATCH] Add apple_set_os command6. Set your grub boot drive as your default in OS X startup disk applet.7. Modify grub.cfg and compile your new bootx64.efi bootloader.8. Download and compile https://github.com/0xbb/gpu-switch9. Run sudo ./gpu-switch -i10. Reboot from linux11. Start windows from grub loader.12. Install Intel Driver! 2 Quote Link to comment Share on other sites More sharing options...
parczefal Posted January 18, 2015 Author Share Posted January 18, 2015 ¡WARNING! This process will require you to wipe out your hard drive, you might get it to work with pre-installed systems but I haven't had the chance to do so. As of now, brightness is not working on bootcamp, I'll need to research the issue. Detailed step by step guide: 1. Create a Win 8.1 EFI bootable flash drive using Rufus. 2. Create an Arch Linux bootable flash drive using Rufus. 3. Create a OS X Yosemite bootable flash drive using createinstallmedia. 4. Boot your computer using the Win 8.1 install flash drive. 5. When you get to the Windows install screen, press shift+F10 to get to the MS Shell. 6. Execute the following commands: 6.1 diskpart 6.2 select disk 0 6.3 clean 6.4 convert gpt 6.5 create partition efi size=200 6.6 format fs=fat32 6.7 create partition msr size=128 6.8 create partition primary size=102400 (You might want to set your own size here) 6.9 format fs=ntfs quick label=Windows 6.10 exit 7. Proceed with Windows Installation 8. Once in Windows, click on start menu then type "cmd" 9. Launch diskpart again 10, Create your OS X Partition with the following commands: 10.1 create partition primary size=204800 (Set your own size here) 10.2 format fs=ntfs quick label=OSX (Don't worry about the filesystem, we'll reformat it using Disk Utility later) 10.3 exit 11. Restart your computer and boot into the OS X Yosemite installer 12. Launch Disk Utility 13. Erase your newly created partition using HFS+ as the filesystem 14. Close disk utility and install OS X in there. 15. Boot into OS X. 16. You'll now have both Windows 8.1 and OS X installed in EFI Mode, now you'll need to install Arch Linux. 17. Boot your computer into the Arch Linux installation USB. 18. Launch the Arch Console. 19. Execute the following commands: 19.1 Select your keymap by typing "loadkeys keymap_file (available keymaps are located in /usr/share/kbd/keymaps)" 19.2 Launch gdisk 19.3 Create a new partition for your root mountpoint 19.4 Create a new partition for your swap mountpoint 19.5 Creae a new partition for your boot mountpoint using EFI boot 19.6 Create a new partition for you extra boot mountpoint using EFI boot 19.7 Format your newly created partitions (mkfs.ext4 for root, mkswap for your swap partition and mkfs.vfat for your EFI boot partitions) 19.8 Mount your root partition on /mnt and your first boot patition on /mnt/boot/efi (You'll need to create this folder). "swapon" your swap partition. 19.9 I used a USB to Ethernet adapter, and the installation CD configured it automatically. If you need to configure wireless settings, please refer to the ARCH Wiki Guide: https://wiki.archlinux.org/index.php/Wireless_network_configuration 19.10 Edit the /etc/pacman.d/mirrorlist and comment out any unnecessary mirrors. 19.11 Execute the following command "pacstrap /mnt base" 19.12 Wait for the base packages to download and install 19.13 Generate your fstab file by issuing the following command: "genfstab -U -p /mnt >> /mnt/etc/fstab" 19.14 "chroot" into your newly created environment by typing this command: "arch-chroot /mnt /bin/bash" 19.15 Uncomment the needed locales in /etc/locale.gen, then generate them with: "locale-gen" 19.16 Execute the following command: # echo LANG=your_locale > /etc/locale.conf (where your_locale matches your keyboard and language settings) 19.17 Create a new initial RAM disk with: "mkinitcpio -p linux" 19.18 Set your root password with "passwd" 19.19 Create a new user for yourself with the following command: "useradd -m -G wheel <username>" 19.20 Set password for your user with "passwd <username>" 19.21 Upgrade pacman db with "pacman-db-upgrade", allocate the repositories with "pacman -Syy" and Install the sudo package with "pacman -S sudo" 19.22 Add your newly created user to the sudoers file located in "/etc/sudoers" 19.23 Switch to your newly created user with "su <username>" 19.24 Go into your user home directory "/home/<username>" 19.25 Install packer dependencies with "sudo pacman -S base-devel fakeroot jshon expac git" 19.26 Create a new directory to download pkgbuild "mkdir pkgbuild" 19.27 Install wget and vim with "sudo pacman -S wget vim" 19.28 Get into the pkgbuild directory and run "wget -c https://aur.archlinux.org/packages/pa/packer/PKGBUILD" 19.29 Execute the "makepkg" command inside that directory 19.30 Install the newly created package with "sudo pacman -U packer-*-pkg.tar.xz" 19.31 Go up one level 19.32 Download my pre-patched, pre-compiled grub2 binary from "http://www.nocreado.com/grub-git.tar.gz" (this one includes Andreas Heider patch to trick the bootloader with "apple_set_os") 19.33 Run "tar xvzf grub-git.tar.gz" 19.34 Switch to the grub-git directory 19.35 Run the following command: "makepkg -si --skippgpcheck" to install my version of grub 19.36 If everything went fine, then you're ready to install and configure grub. First thing you'll need to do is tweak the "/etc/default/grub" file and add "libata.force=noncq" to the GRUB_CMDLINE_LINUX_DEFAULT parameter, it should end up looking like this: GRUB_CMDLINE_LINUX_DEFAULT="quiet libata.force=noncq" 19.37 Install grub with the following command: "grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --recheck --debug" 19.38 Generate your grub configuration file with the following comand "grub-mkconfig -o /boot/grub/grub.cfg" (This should reconize your vmlinuz images and your Windows installation). 19.39 If everything went well, go to your / and create a new mountpoint for your extra boot partition (e.g. sudo mkdir /loader). 19.40 Mount your patition there, switch to that folder. 19.41 Touch a file named "mach_kernel" 19.42 Create the following path inside the folder: "System/Library/CoreServices" 19.43 Switch to that newly created directory (CoreServices) and vim a file named SystemVersion.plist with the following contents: Edit: Please refer to https://wiki.archlinux.org/index.php/MacBookPro11,x for the file contents configuration 19.44 In that same directory, generate your boot.efi image by issuing the following command: "grub-mkstandalone -o boot.efi -d /usr/lib/grub/x86_64-efi -O x86_64-efi /boot/grub/grub.cfg" 19.45 Reboot into OS X. 19.46 Mount your extra boot partition with diskutil "sudo diskutil mount /dev/diskXsY" 19.47 Bless your new partition with the following commands: sudo bless --folder= --file=/System/Library/CoreServices/boot.efi --setBoot sudo bless --mount= <dev device=""> --file= /System/Library/CoreServices/boot.efi --setBoot 19.48 If everything went well, restart your computer holding the option key. You should be able to reach your arch installation by selecting the "efi boot" Volume and Arch Linux from the grub boot menu. 19.49 Once back in arch, download and compile https://github.com/0xbb/gpu-switch 19.50 Reboot into OS X, select the new EFI Volume "Arch Linux" as your main disk in the Startup Disk Applet. 19.51 Reboot your computer, you should be able to reach Grub without holding down the option key 19.52 Boot into Arch, execute sudo ./gpu-switch -i 19.53 Do "sudo reboot" 19.54 Once you're back in grub, click the "c" key to enter the console, type the command "apple_set_os" in the prompt. 19.55 Click "esc" and boot into windows, You should be able to see 2 display adapters!!! Now, the first time I installed the bootcamp drivers I just selected the windows partition while holding the option key at startup. This to avoid the dual video card config. Then I deactivated the nvidia card, executed the gpu-switch command, booted into windows and installed the newest intel drivers, this is how my device manager looks like: Enjoy! Greetings Jose M. References: https://wiki.archlinux.org/index.php/MacBookPro11,x https://wiki.archlinux.org/index.php/GRUB#Alternative_install_method http://www.tswartz.net/blog/how-to-install-packer-the-archlinux-aur-helper http://www.reddit.com/r/mac/comments/2fy3be/by_popular_demand_my_better_than_bootcamp_guide/ https://wiki.archlinux.org/index.php/installation_guide http://lists.gnu.org/archive/html/grub-devel/2013-12/msg00442.html https://github.com/0xbb/gpu-switch Special Thanks to Andreas Heider and Tre87! </dev></username></username></username></username> 6 Quote Link to comment Share on other sites More sharing options...
tamer1009 Posted January 18, 2015 Share Posted January 18, 2015 That's a great job! Would it be possible to automate this? Patch the bootloader without installing Linux?It would be great to develop a tray icon for Windows, so we can switch between nVidia and Intel gpu. Quote Link to comment Share on other sites More sharing options...
parczefal Posted January 18, 2015 Author Share Posted January 18, 2015 That's a great job! Would it be possible to automate this? Patch the bootloader without installing Linux?It would be great to develop a tray icon for Windows, so we can switch between nVidia and Intel gpu.I was thinking about that last night! Maybe if we compile this script as a grub module or executable file. I don't see any linux specific functions in the code. I'll give it a shot later!Another bug I found is that Hibernate/Sleep isn't working correctly in Windows. Maybe the "null" driver get's installed based on the computer firmware or something. Quote Link to comment Share on other sites More sharing options...
Verizon Posted February 13, 2015 Share Posted February 13, 2015 Hi guys,so has somebody with a rmbp with gt 750 already tried this one with an egpu?Or have you been successful with your iMac?Best regardsDaniel Quote Link to comment Share on other sites More sharing options...
nguyendamducthoai Posted March 13, 2015 Share Posted March 13, 2015 I've also tried this using grub, same blackscreen result:## It is automatically generated by grub-mkconfig using templates# from /etc/grub.d and settings from /etc/default/grub#### BEGIN /etc/grub.d/00_header ###insmod part_gptinsmod part_msdosif [ -s $prefix/grubenv ]; then load_envfiif [ "${next_entry}" ] ; then set default="${next_entry}" set next_entry= save_env next_entry set boot_once=trueelse set default="0"fiif [ x"${feature_menuentry_id}" = xy ]; then menuentry_id_option="--id"else menuentry_id_option=""fiexport menuentry_id_optionif [ "${prev_saved_entry}" ]; then set saved_entry="${prev_saved_entry}" save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=truefifunction savedefault { if [ -z "${boot_once}" ]; then saved_entry="${chosen}" save_env saved_entry fi}function load_video { if [ x$feature_all_video_module = xy ]; then insmod all_video else insmod efi_gop insmod efi_uga insmod ieee1275_fb insmod vbe insmod vga insmod video_bochs insmod video_cirrus fi}if [ x$feature_default_font_path = xy ] ; then font=unicodeelseinsmod part_gptinsmod ext2set root='hd0,gpt6'if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 b53dd552-9d3e-4447-bec4-8dd6e231e1baelse search --no-floppy --fs-uuid --set=root b53dd552-9d3e-4447-bec4-8dd6e231e1bafi font="/usr/share/grub/unicode.pf2"fiif loadfont $font ; then set gfxmode=auto load_video insmod gfxterm set locale_dir=$prefix/locale set lang=en_US insmod gettextfiterminal_input consoleterminal_output gfxtermif [ x$feature_timeout_style = xy ] ; then set timeout_style=menu set timeout=5# Fallback normal timeout code in case the timeout_style feature is# unavailable.else set timeout=5fi### END /etc/grub.d/00_header ###### BEGIN /etc/grub.d/10_linux ###menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-b53dd552-9d3e-4447-bec4-8dd6e231e1ba' { apple_set_os load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2 set root='hd0,gpt6' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 b53dd552-9d3e-4447-bec4-8dd6e231e1ba else search --no-floppy --fs-uuid --set=root b53dd552-9d3e-4447-bec4-8dd6e231e1ba fi echo 'Loading Linux linux ...' linux /boot/vmlinuz-linux root=UUID=b53dd552-9d3e-4447-bec4-8dd6e231e1ba rw quiet rootflags=data=writeback libata.force=noncq echo 'Loading initial ramdisk ...' initrd /boot/initramfs-linux.img}menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-b53dd552-9d3e-4447-bec4-8dd6e231e1ba' { apple_set_os load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2 set root='hd0,gpt6' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 b53dd552-9d3e-4447-bec4-8dd6e231e1ba else search --no-floppy --fs-uuid --set=root b53dd552-9d3e-4447-bec4-8dd6e231e1ba fi echo 'Loading Linux linux ...' linux /boot/vmlinuz-linux root=UUID=b53dd552-9d3e-4447-bec4-8dd6e231e1ba rw quiet rootflags=data=writeback libata.force=noncq echo 'Loading initial ramdisk ...' initrd /boot/initramfs-linux-fallback.img}### END /etc/grub.d/10_linux ###### BEGIN /etc/grub.d/20_linux_xen ###### END /etc/grub.d/20_linux_xen ###### BEGIN /etc/grub.d/30_os-prober ###menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-6877-AB9C' { outb 0x7C2 1 outb 0x7D4 0x28 outb 0x7C2 2 outb 0x7D4 0x10 outb 0x7C2 2 outb 0x7D4 0x40 outb 0x7C2 1 outb 0x7D4 50 outb 0x7C2 0 outb 0x7D4 50 apple_set_os insmod part_gpt insmod fat set root='hd0,gpt1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 6877-AB9C else search --no-floppy --fs-uuid --set=root 6877-AB9C fi chainloader /efi/Microsoft/Boot/bootmgfw.efi}### END /etc/grub.d/30_os-prober ###### BEGIN /etc/grub.d/40_custom #### This file provides an easy way to add custom menu entries. Simply type the# menu entries you want to add after this comment. Be careful not to change# the 'exec tail' line above.### END /etc/grub.d/40_custom ###### BEGIN /etc/grub.d/41_custom ###if [ -f ${config_directory}/custom.cfg ]; then source ${config_directory}/custom.cfgelif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then source $prefix/custom.cfg;fi### END /etc/grub.d/41_custom ###### BEGIN /etc/grub.d/60_memtest86+ ###### END /etc/grub.d/60_memtest86+ ### ## DO NOT EDIT THIS FILEIris Pro is working Flawlessly in Gentoo - Arch.you are using grub2code. If you have a linux system let's trysudo update-grubthen grub2 will auto update menu boot if detect efi file of OS Quote Link to comment Share on other sites More sharing options...
eeevan Posted March 29, 2015 Share Posted March 29, 2015 Could this lead to enabling optimus with discreet gpu MacBooks? Has anyone tried yet? Quote Link to comment Share on other sites More sharing options...
Tech Inferno Fan Posted March 29, 2015 Share Posted March 29, 2015 Could this lead to enabling optimus with discreet gpu MacBooks? Has anyone tried yet?That is what I'd suggest users with this machine try to do even without having an eGPU to gain extra battery life. Optimus will power down the dGPU when not in use using the much more efficient iGPU to drive the LCD.Notebookcheck found idle of the Iris Pro model to be 7.6W (MacOSX) compared to 17.4W of the GT750M model under bootcamp. That's a HUGE 10W difference. http://www.notebookcheck.net/Apple-MacBook-Pro-Retina-15-Late-2013-Notebook-Review.120330.0.htmlSo if the machines sat idle, the 85Wh battery would see the Iris Pro model would get 11.2hrs of battery life while the GT750M would get 4.8hrs, less than half! Quote Link to comment Share on other sites More sharing options...
eeevan Posted April 3, 2015 Share Posted April 3, 2015 Hi @parczefal,Did you ever manage to automate any of the bootloader stuff? I would be willing to try with my 750m/akitio setup but some of the steps in arch go above my head. It would be nice to finally have some conclusive proof of Optimus working on a 750m model.Cheers. Quote Link to comment Share on other sites More sharing options...
ah- Posted May 5, 2015 Share Posted May 5, 2015 Hi everyone, you might be interested in this: https://github.com/0xbb/apple_set_os.efiDownload it from releases, install refind, sudo mount -t msdos /dev/disk0s1 /efi, copy apple_set_os.efi to /efi/EFI/custom/apple_set_os.efi.You should then see an entry for apple_set_os.efi in refit. Before you boot Windows, just quickly start that, which will flash the screen while it runs and then just boot Windows. This enables the Intel GPU so it's visible in the device manager. No more grub/Linux required. (To clarify, this disables the hiding of the Intel GPU and makes it appear in the device manager, nothing else. NVIDIA could still remain your primary GPU).There is now also a Windows version of gpu-switch at https://github.com/0xbb/gpu-switch, which you can use to set the primary GPU for the next boot.I just tested it and was able to use the Intel GPU, but booting with both GPUs active and the NVIDIA driver installed often gives me black screens after booting. I have no idea why, when I uninstall the NVIDIA driver it works perfectly, I just see two displays, one for each GPU. 4 Quote Link to comment Share on other sites More sharing options...
eeevan Posted May 7, 2015 Share Posted May 7, 2015 Thanks @ah-, It worked!! For some reason reFit would always freeze in the EFI shell after running apple_set_os.efi. I tried using reFind and that was the solution! @Evo* do you think it might be possible to activate optimus internal LCD mode? Quote Link to comment Share on other sites More sharing options...
Tech Inferno Fan Posted May 7, 2015 Share Posted May 7, 2015 Thanks @ah-, It worked!!For some reason reFit would always freeze in the EFI shell after running apple_set_os.efi. I tried using reFind and that was the solution! @Evo* do you think it might be possible to activate optimus internal LCD mode? Firstly, check whether your NVidia control panel Manage 3D section to see if you now have a "Preferred graphics processor" option along with a list of programs you can choose this for like shown here.Then run say Resident Evil 5 benchmark comparing the result when running on the GT750M versus when the iGPU is enabled.I'd be very much interested in someone confirming that the iGPU works.Another way of testing if the iGPU is activated and working is to use batterybar software to measure idle power consumption on battery. With the iGPU enabled and driving the internal LCD, idle power consumption be noticably lower. Quote Link to comment Share on other sites More sharing options...
eeevan Posted May 7, 2015 Share Posted May 7, 2015 Hi Nando, Here are a few benchmarks. Resident Evil 5 Benchmark Iris 750m 3Dmark 11 (note the changing clock speeds) Iris 750m Cinebench Iris 750m Nvidia/Intel Control Panel w/ switching Quote Link to comment Share on other sites More sharing options...
Tech Inferno Fan Posted May 7, 2015 Share Posted May 7, 2015 Hi Nando,Iris does surprisingly well. Would you mind installing batterybar, booting the system up with each gpu as primary, pulling AC power anf checking the reported battery duscharge at idle? Iris should be noticeably lower making this iris switched mode desirable for on the road battery life. Quote Link to comment Share on other sites More sharing options...
eeevan Posted May 7, 2015 Share Posted May 7, 2015 Iris 750m Quote Link to comment Share on other sites More sharing options...
Tech Inferno Fan Posted May 7, 2015 Share Posted May 7, 2015 Iris750m 750M adds another 58% power consumption at idle. Though your 21.05W with the iGPU is still far higher than the 7.6W notebookcheck recorded under OSX that I describe here. Consider applying the tweaks at http://forum.techinferno.com/hp-business-class-notebooks/2537-12-5-hp-elitebook-2570p-owners-lounge.html#post38399 to see if can get it nearer to that 7.6W figure. Quote Link to comment Share on other sites More sharing options...
ah- Posted May 7, 2015 Share Posted May 7, 2015 I'm not sure if the NVIDIA driver does any power management, on Linux the dedicated GPU just stays powered up even if you boot with Intel as the primary. Somebody wrote a GMUX driver that can cut the power, see here: MacRumors Forums - View Single Post - Win7 x64 booting natively via EFI (no BIOS emulation)It's rather crude and probably won't work if you want to use the NVIDIA GPU at all, but maybe it decreases power consumption.Also, did you have any issues with black screens at all? What software/versions are you running? Quote Link to comment Share on other sites More sharing options...
eeevan Posted May 8, 2015 Share Posted May 8, 2015 750M adds another 58% power consumption at idle. Though your 21.05W with the iGPU is still far higher than the 7.6W notebookcheck recorded under OSX that I describe here. The 750m is definitely still consuming a lot of power while the Iris is active, even while "disabled". Brightness control isn't functioning as well, and it appears to force 80-90% brightness at all times. Perhaps I'll try that GMUX driver and see if it makes a difference.Also, did you have any issues with black screens at all? What software/versions are you running?I used the windows version of gpu-switch + apple_set_os.efi + reFind 0.87 to boot Windows 8.1 (bootcamp install). No issues with black screens. @ah- Do you know how I would go about using the Optimus.dmg tool described in this post with apple_set_os.efi? Could I patch reFind with whatever EFI tweaks are inside the dmg? My main purpose for trying to get the Iris working is to unlock optimus internal LCD output on discreet gpu macbooks. I think it would be extremely useful to everyone if we could conveniently enable it.Thanks! Quote Link to comment Share on other sites More sharing options...
ah- Posted May 8, 2015 Share Posted May 8, 2015 I used the windows version of gpu-switch + apple_set_os.efi + reFind 0.87 to boot Windows 8.1 (bootcamp install). No issues with black screens. @ah- Do you know how I would go about using the Optimus.dmg tool described in this post with apple_set_os.efi? Could I patch reFind with whatever EFI tweaks are inside the dmg? My main purpose for trying to get the Iris working is to unlock optimus internal LCD output on discreet gpu macbooks. I think it would be extremely useful to everyone if we could conveniently enable it.Thanks!I looks like Optimus.dmg is the old grub implementation of apple_set_os.efi, which does exactly the same thing as apple_set_os.efi, just as a grub command instead of a standalone EFI application. You don't need both, one is enough and I think apple_set_os.efi is the better implementation. In particular since less can go wrong, like grub not finding stuff.I'm a bit surprised to see that it does anything on systems without a dedicated GPU, but who knows what exactly Apple does. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.