├── 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 | 
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 | 
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 | 
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 |
--------------------------------------------------------------------------------