├── README.md ├── SUMMARY.md ├── _config.yml ├── disabling-the-gpu ├── device.md ├── option-1-boot-flags.md ├── option-2-blocking-all-discrete-gpus.md └── option-3-patching-with-an-ssdt.md ├── igpu.md └── misc └── credit.md /README.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | ## How to disable your unsupported GPU for macOS 4 | 5 | So you got your shiny new RTX 2080ti BLOWYMATRON edition but you've probably noticed there's currently no support for your GPU in MacOS Mojave. Well for those who are running Maxwell, Pascal or Turing GPUs there is still some hope for you with options to spare! 6 | 7 | This is an information thread, for discussion please visit the r/hackintosh thread: [How to disable your unsupported GPU for macOS](https://www.reddit.com/r/hackintosh/comments/bu1wf8/how_to_disable_your_unsupported_gpu_for_macos/) 8 | 9 | ## Prerequisite 10 | 11 | * A Hackintosh built off the [Vanilla guide](https://hackintosh.gitbook.io/-r-hackintosh-vanilla-desktop-guide/)\(This is a must as you need to have a clean system for this to work properly\) 12 | * A GPU that is support in Mojave/Catalina\(generally this will be an iGPU for most users here, check the [GPU Buyers Guide](https://khronokernel-3.gitbook.io/catalina-gpu-buyers-guide/) to see if your GPU is supported. Keep in mind that using a Kepler GPU with Maxwell, Pascal or Turing GPUs will require more work\) 13 | * Up to date [Lilu.kext](https://github.com/vit9696/Lilu/releases) and [WhateverGreen.kext](https://github.com/acidanthera/WhateverGreen/releases) 14 | * A Plist editor: Clover configurator works fine 15 | 16 | ## BIOS Settings 17 | 18 | For those planning on using an iGPU, make sure to have the following enabled in your BIOS: 19 | 20 | * iGPU Multi-Monitor: Enabled 21 | * Primary Display: Enabled 22 | 23 | And make sure to have your displays connected to the motherboards display outs 24 | 25 | ## Can I use the iGPU for rendering but the video outs of my dGPU? 26 | 27 | Unfortunately not, and the reason being is actually quite similar to how Nvidia's Optimus technology functions. You would first need a way to grab/encode the iGPU's signal, send it towards the discrete GPU, then have said GPU decode the signal and display it. One small problem, decoding the signal would require proper GPU acceleration which your unsupported GPU doesn't have. So you will need to use your motherboard's video out ports no matter what 28 | 29 | ## Which Options should I choose? 30 | 31 | Option 1: 32 | 33 | * Disables all GPUs that aren't the iGPU 34 | * Quick and easy with little work, avoid when possible as it doesn't always work 35 | 36 | Option 2: 37 | 38 | * Disables all GPUs from one brand\(ie: all Nvidia GPUs\) 39 | * Only usable for Clover, Opencore users must use either options 1,3 or 4 40 | 41 | Option 3: 42 | 43 | * Disables a specific GPU 44 | * Recommended for those who run Kepler GPUs with Maxwell, Pascal or Turing 45 | 46 | Option 4: 47 | 48 | * Disables on a per slot basis 49 | * Recommended for those who run Kepler GPUs with Maxwell, Pascal or Turing 50 | 51 | ## OpenCore Users 52 | 53 | For those running OpenCore, I highly recommend reading the [Disabling GPU Guide](https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/post-install/spoof) found in the OpenCore guide as this has specific OSI fixes for SSDTs 54 | -------------------------------------------------------------------------------- /SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Table of contents 2 | 3 | * [Introduction](README.md) 4 | * [Setting up the iGPU](igpu.md) 5 | 6 | 7 | ## Disabling the GPU 8 | 9 | * [Option 1: Boot Flags](disabling-the-gpu/option-1-boot-flags.md) 10 | * [Option 2: Add Properties](disabling-the-gpu/option-2-blocking-all-discrete-gpus.md) 11 | * [Option 3: SSDT](disabling-the-gpu/option-3-patching-with-an-ssdt.md) 12 | * [Option 4: DeviceProperties](disabling-the-gpu/device.md) 13 | 14 | ## Misc 15 | 16 | * [Credit](misc/credit.md) 17 | 18 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate -------------------------------------------------------------------------------- /disabling-the-gpu/device.md: -------------------------------------------------------------------------------- 1 | # Option 4: DeviceProperties 2 | 3 | Options 3 and 4 are quite similar, they both disable a very specific GPU allowing you to use other GPUs of the same brand together like a GT 710 with a GTX 2080Ti. How the DevicePropertes patch differs from an SSDT is that it's easier to find the GPU's device path for a GPU from macOS. 4 | 5 | To start, you'll need the following: 6 | 7 | * [gfxutil](https://github.com/acidanthera/gfxutil/releases) 8 | * [Lilu.kext](device.md) 9 | * [WhateverGreen.kext](device.md) 10 | 11 | Now you'll want to open up terminal, drag the gfxutil and add -f and GFX0\(or whatever your GPU is called, you can check with IORegistryExplorer\): 12 | 13 | ```text 14 | /Users/(YourUsername)/Downloads/(gfxdownload folder)/gfxutil -f GFX0 15 | ``` 16 | 17 | And the output will result in something similar: 18 | 19 | ```text 20 | DevicePath = PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0) 21 | ``` 22 | 23 | With this, we can start the real work. 24 | 25 | Under `Devices -> Properties -> Devices`, we can add our PCI route with the following properties: 26 | 27 | Nvidia users: 28 | 29 | | Properties Key\* | Properties Value | Value Type | 30 | | :--- | :--- | :--- | 31 | | name | 23646973706C6179 | data | 32 | | IOName | \#display | string | 33 | | class-code | FFFFFFFF | data | 34 | 35 | AMD users: 36 | 37 | | Properties Key\* | Properties Value | Value Type | 38 | | :--- | :--- | :--- | 39 | | name | 23646973706C6179 | data | 40 | | IOName | \#display | string | 41 | | class-code | FFFFFFFF | data | 42 | | vendor-id | FFFF0000 | data | 43 | | device-id | FFFF0000 | data | 44 | 45 | and that XML goodness: 46 | 47 | ```text 48 | Properties 49 | 50 | PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0) 51 | 52 | IOName 53 | #display 54 | class-code 55 | 56 | /////w== 57 | 58 | name 59 | 60 | I2Rpc3BsYXk= 61 | 62 | 63 | 64 | ``` 65 | 66 | ![](https://i.imgur.com/kErJi0g.png) 67 | 68 | And voila! Your unsupported GPU is now hidden, do keep in mind other devices that go into that PCIe slot will also gain these properties disabling them\(_I may or may not have disabled my PCIe drives this way_\) 69 | 70 | -------------------------------------------------------------------------------- /disabling-the-gpu/option-1-boot-flags.md: -------------------------------------------------------------------------------- 1 | # Option 1: Boot Flags 2 | 3 | So this is probably the easiest of them all for users on here, all you need to do is add the following flag: 4 | 5 | ```text 6 | -wegnoegpu 7 | ``` 8 | 9 | Now all GPUs besides the iGPU will be disabled, this isn't guaranteed to always work and has the consequence of not allowing other discrete GPUs to be used instead 10 | 11 | -------------------------------------------------------------------------------- /disabling-the-gpu/option-2-blocking-all-discrete-gpus.md: -------------------------------------------------------------------------------- 1 | # Option 2: Add Properties 2 | 3 | This is going to be the most popular for users on here as you can disable your Nvidia card but still get to use supported AMD GPU for heavy lifting in MacOS. Main downsides of this method is that it will disable your Kepler GPU as well so you can't run an RTX 2080ti with your GT 710. 4 | 5 | So to start, you'll need to open up your config.plist and navigate towards Devices -> Add Properties where you'll add the following: 6 | 7 | | Devices | Key | Value | Disabled | Value Type | 8 | | :--- | :--- | :--- | :--- | :--- | 9 | | NVidia | name | 23646973706C6179 | | DATA | 10 | | NVidia | IOName | \#display | | STRING | 11 | | NVidia | class-code | FFFFFFFF | | DATA | 12 | 13 | And here's the XML for those who prefer Copy-paste: 14 | 15 | ```text 16 | AddProperties 17 | 18 | 19 | Device 20 | NVidia 21 | Disabled 22 | 23 | Key 24 | name 25 | Value 26 | 27 | I2Rpc3BsYXk= 28 | 29 | 30 | 31 | Device 32 | NVidia 33 | Disabled 34 | 35 | Key 36 | IOName 37 | Value 38 | #display 39 | 40 | 41 | Device 42 | NVidia 43 | Disabled 44 | 45 | Key 46 | class-code 47 | Value 48 | 49 | /////w== 50 | 51 | 52 | 53 | ``` 54 | 55 | And now all Nvidia GPUs will be blocked from your system 56 | 57 | ​ 58 | 59 | And for those with Navi or other unsupported AMD GPUs, there's also some luck for you as well 60 | 61 | ​ 62 | 63 | | Devices | Key | Value | Disabled | Value Type | 64 | | :--- | :--- | :--- | :--- | :--- | 65 | | ATI | name | 23646973706C6179 | | DATA | 66 | | ATI | IOName | \#display | | STRING | 67 | | ATI | class-code | FFFFFFFF | | DATA | 68 | | ATI | vendor-id | FFFF0000 | | DATA | 69 | | ATI | device-id | FFFF0000 | | DATA | 70 | 71 | And that XML Goodness: 72 | 73 | ```text 74 | AddProperties 75 | 76 | 77 | Device 78 | ATI 79 | Disabled 80 | 81 | Key 82 | name 83 | Value 84 | 85 | I2Rpc3BsYXkA 86 | 87 | 88 | 89 | Device 90 | ATI 91 | Disabled 92 | 93 | Key 94 | IOName 95 | Value 96 | #display 97 | 98 | 99 | Device 100 | ATI 101 | Disabled 102 | 103 | Key 104 | class-code 105 | Value 106 | 107 | /////w== 108 | 109 | 110 | 111 | Device 112 | ATI 113 | Disabled 114 | 115 | Key 116 | vendor-id 117 | Value 118 | 119 | //8AAA== 120 | 121 | 122 | 123 | Device 124 | ATI 125 | Disabled 126 | 127 | Key 128 | device-id 129 | Value 130 | 131 | //8AAA== 132 | 133 | 134 | 135 | ``` 136 | 137 | ![](https://i.imgur.com/mGr6aDw.png) 138 | 139 | -------------------------------------------------------------------------------- /disabling-the-gpu/option-3-patching-with-an-ssdt.md: -------------------------------------------------------------------------------- 1 | # Option 3: SSDT 2 | 3 | For most this is considered the hardest as this requires the most amount of work, we'll be using [Rehabman's SSDT patching](https://www.tonymacx86.com/threads/fix-window-server-service-only-ran-for-0-seconds-with-dual-gpu.233092/) to accomplish our Spoofing. The benefit of this method is that you can use a Kepler GPU with your system without any issues as we'll be blocking a device on the PCIe level 4 | 5 | To start, you'll need the following: 6 | 7 | * An SSDT/DSDT dump\(done by pressing F4 at Clover boot screen\) 8 | * [AISL Compiler](https://bitbucket.org/RehabMan/acpica/downloads/) 9 | * [MaciASL](https://sourceforge.net/projects/maciasl/) 10 | 11 | If you open your EFI and go within EFI/CLOVER/ACPI/origin, you'll find a bunch of .aml files. These are the files we'll be playing with so grab them and put them in a folder somewhere on your hack 12 | 13 | Now you'll want to grab an AISL Complier to analyze these files, you can grab Rehabman's Compiler [here](https://bitbucket.org/RehabMan/acpica/downloads/). 14 | 15 | Within finder, press Command+Shift+G, enter /usr/bin and paste the IASL file here\(you will need to authenticate\) 16 | 17 | Now in terminal, running the following command will disassemble our .aml files: 18 | 19 | ```text 20 | cd "to directory where you placed all SSDT/DSDT" 21 | iasl -da -dl DSDT.aml SSDT*.aml 22 | ``` 23 | 24 | Now you'll find a bunch of .dsl files in that folder as well 25 | 26 | Next lets try and find \_OFF, this is what is needed for disabling your GPU 27 | 28 | ```text 29 | cd "to directory where you placed all SSDT/DSDT" 30 | grep -l Method.*_OFF *.dsl 31 | ``` 32 | 33 | Terminal should return a list of SSDT's with \_OFF within them 34 | 35 | Example: 36 | 37 | ```text 38 | SSDT-2-PegSsdt.dsl 39 | SSDT-3-Ther_Rvp.dsl 40 | ``` 41 | 42 | We can also check where the \_INI files are, these files are likely going to have some that match with \_OFF which are likely the files we want 43 | 44 | ```text 45 | cd "to directory where you placed all SSDT/DSDT" 46 | grep -l Method.*_INI *.dsl 47 | ``` 48 | 49 | Terminal should return a list of SSDT's with \_INI within them 50 | 51 | Example: 52 | 53 | ```text 54 | SSDT-2-PegSsdt.dsl 55 | ``` 56 | 57 | You'll need to open both of these files and examine, we want the file that corresponds to your GPU. My GPU was found under SSDT-2 but this isn't the same for everyone, you'll need to check whether the \_OFF method is within a PowerShell macro or by itself\(We want it by itself\) 58 | 59 | My GPU was found here: 60 | 61 | ```text 62 | \_SB.PCI0.PEG0.PEGP 63 | ``` 64 | 65 | And for those having issues finding the device path, you can also find it in windows by following the ACPI path in device Manager. 66 | 67 | > Properties->Details of the Nvidia device, scroll through the properties until you find "BIOS name" 68 | > 69 | > * Rehabman 70 | 71 | Now we can create our SSDT! 72 | 73 | Let's open MaciASL, create a file, paste the text below and replace the device path with the one you have: 74 | 75 | For Nvidia Users: 76 | 77 | ```text 78 | DefinitionBlock ("", "SSDT", 2, "hack", "spoof", 0) 79 | { 80 | Method(_SB.PCI0.PEG0.PEGP._DSM, 4) 81 | { 82 | If (!Arg2) { Return (Buffer() { 0x03 } ) } 83 | Return (Package() 84 | { 85 | "name", Buffer() { "#display" }, 86 | "IOName", "#display", 87 | "class-code", Buffer() { 0xFF, 0xFF, 0xFF, 0xFF }, 88 | }) 89 | } 90 | } 91 | ``` 92 | 93 | For AMD users: 94 | 95 | ```text 96 | DefinitionBlock ("", "SSDT", 2, "hack", "spoof", 0) 97 | { 98 | Method(_SB.PCI0.PEG0.PEGP._DSM, 4) 99 | { 100 | If (!Arg2) { Return (Buffer() { 0x03 } ) } 101 | Return (Package() 102 | { 103 | "name", Buffer() { "#display" }, 104 | "IOName", "#display", 105 | "class-code", Buffer() { 0xFF, 0xFF, 0xFF, 0xFF }, 106 | "vendor-id", Buffer() { 0xFF, 0xFF, 0, 0 }, 107 | "device-id", Buffer() { 0xFF, 0xFF, 0, 0 }, 108 | }) 109 | } 110 | } 111 | ``` 112 | 113 | Now save your file as a ACPI Machine Language Binary and place it in EFI/Clover/ACPI/patched/SSDT-DiscreteSpoof.aml 114 | 115 | \(Don't forget to specify it in your Config.plist\) 116 | 117 | -------------------------------------------------------------------------------- /igpu.md: -------------------------------------------------------------------------------- 1 | So this little section is for those who are wanting to run their iGPU as their primary/sole display output. 2 | 3 | 4 | ## Setting up your config.plist 5 | 6 | So to setup your iGPU for dsplay tasks, we need to set a framebuffer appropriate for this task. To setup a framebuffer, we'll need specify the PCIRoot path. Luckily for us, intel has stayed consistent on this path for all of their iGPUs: 7 | 8 | ``` 9 | PciRoot(0x0)/Pci(0x2,0x0) 10 | ``` 11 | 12 | 13 | Now we need to to find a framebuffer approrpiate for our iGPU, you can find a list of these values in the [GPU Buyers Guide](https://khronokernel-3.gitbook.io/catalina-gpu-buyers-guide/) or in the [Intel Framebuffer Patching Guide](https://www.insanelymac.com/forum/topic/334899-intel-framebuffer-patching-using-whatevergreen/?tab=comments#comment-2626271). For the majority you can find your iGPU here: 14 | 15 | **Ivy Bridge**: 16 | 17 | * HD 4000 18 | * `0A006601` 19 | 20 | **Haswell**: 21 | 22 | * HD 4600 23 | * HD 4400 24 | * `0300220D` 25 | 26 | * **NOTE**: HD 4400 isn't natievly supported, you will need to spoof it into an HD 4600 which is supported: 27 | 28 | |Properties Key\*|Properties Value|Value Type| 29 | |:-|:-|:-| 30 | |device-id|12040000|Data| 31 | 32 | 33 | **Skylake**: 34 | 35 | * HD 530 36 | * `00001219` 37 | 38 | **Kabylake**: 39 | 40 | * HD 630 41 | * `00001659` 42 | 43 | **Coffeelake**: 44 | 45 | * UHD 630 46 | * `07009B3E` 47 | 48 | Now with all the nessary values, we can put this in our config.plist: 49 | 50 | Under `Devices` -> `Properties` you'll want to add your PCIRoot on the left and our framebuffer properties on the right: 51 | 52 | |Properties Key\*|Properties Value|Value Type| 53 | |:-|:-|:-| 54 | |AAPL,ig-platform-id|00001219|Data| 55 | * NOTE: Swap `00001219` for the framebuffer appropriate for your GPU 56 | 57 | And for those who cannot set their iGPU's memory to 64MB in the BIOS will also need to add this patch to decrease the requirement to 19MB: 58 | 59 | |Properties Key\*|Properties Value|Value Type| 60 | |:-|:-|:-| 61 | |framebuffer-patch-enable|01000000|Data| 62 | |framebuffer-stolenmem|00003001|Data| 63 | 64 | ![Clover Configurator](https://i.imgur.com/zoa9YR6.png) 65 | 66 | ## Having either color or display out issues? 67 | 68 | Sometimes macOS won't be able to correctly tell which display out is which so it may apply displayPort properties onto an HDMI port or vise versa. To fix this, you can refer to the [Pink/ Purple Tint section in the r/Hackintosh Vanilla Guide](https://hackintosh.gitbook.io/-r-hackintosh-vanilla-desktop-guide/config.plist-per-hardware/coffee-lake#pink-purple-tint) 69 | 70 | 71 | -------------------------------------------------------------------------------- /misc/credit.md: -------------------------------------------------------------------------------- 1 | # Credit 2 | * [DhinakG](https://github.com/dhinakg) 3 | * Correction on IOName 4 | Sources: 5 | 6 | * ["Window Server Service only ran for 0 seconds" with dual-GPU](https://www.tonymacx86.com/threads/fix-window-server-service-only-ran-for-0-seconds-with-dual-gpu.233092/) 7 | * [Disabling discrete graphics in dual-GPU laptops](https://www.tonymacx86.com/threads/guide-disabling-discrete-graphics-in-dual-gpu-laptops.163772/) 8 | * [Patching LAPTOP DSDT/SSDTs](https://www.tonymacx86.com/threads/guide-patching-laptop-dsdt-ssdts.152573/) 9 | * [Device location in Windows](https://www.tonymacx86.com/threads/fix-window-server-service-only-ran-for-0-seconds-with-dual-gpu.233092/page-2#post-1592455) 10 | 11 | --------------------------------------------------------------------------------