[Sticky] [GUIDE] DSDT override eGPU error 12 fix  

Page 1 / 2 Next
  RSS

nando4
Honorable Member
Joined: 3 months  ago
Posts: 404
December 23, 2016 11:20 am  

Guide: DSDT override eGPU error 12 fix (Windows only) [started 2012@NBR ]

 

Introduction

 

A Windows system's DSDT table root bridge definition (ACPI PNP0A08 or PNP0A03) is usually confined to a reserved 32-bit space (under 4GB) budgetted to be large enough to host the notebook's PCIe devices. A watermark TOLUD value is then set and locked in the system firmware. Windows OS honors the root bridge definition and will allocate PCIe devices within it. macOS ignores the root bridge constraints as too does Linux when booted with the 'pci=noCRS' parameter. Neither of those OS require a DSDT override and can allocate freely in the huge 64-bit PCIe address space.

 

When retrofitting a eGPU, an error 12 (This device cannot find enough free resources that it can use) can occur against an eGPU in Windows' device manager making it inoperable. This can indicate there is insufficient 32-bit addressing space available to host the eGPU. An eGPU requires a relatively large PCIe config space to allocate into.  Decreasing TOLUD by reducing RAM to 2GB offers a somewhat impractical workaround. Rather, the definitive solution is below.

 


This three step solution removes Window's 32-bit PCIe allocation constraint in order to resolve the eGPU error 12:

 

Step 1. Create a dsdt-modified.aml DSDT file with a 36-bit root bridge

 

Step 2. Load your dsdt-modified.aml as registry override or in-memory substitution



Step 3. Confirm success with a 'Large Memory' area in Device Manager

 

 

macOS users: refer instead to Mikeal's post that covers these steps titled GUIDE: an in-memory DSDT override using MaciASL+Clover [UEFI Windows on Macbooks only].

 


 

Step 1. Create a dsdt-modified.aml DSDT file with a 36-bit root bridge

 

i. Download and install required tools:

 

ii. Copy the ASL compiler into the \dsdt directory and dump your ACPI tables to disk files (dsdt.asl and dsdt.dat). Do this by opening Command Prompt (run as administrator) and copy-and-paste the appropriate section for your system below. The created dsdt.asl is copied here as dsdt-modified.asl which is used later on to make our required modifications.

 

If 64-bit Windows is installed: [ copy-and-paste ]

c: & cd \dsdt
copy "C:\Program Files (x86)\Windows Kits\10\Tools\x64\ACPIVerify\asl.exe" c:\dsdt
acpidump -b -z
asl /tab=DSDT
copy dsdt.asl dsdt-modified.asl


If 32-bit Windows is installed:
[ copy-and-paste ]

c: & cd \dsdt
copy "C:\Program Files (x86)\Windows Kits\10\Tools\x86\ACPIVerify\asl.exe" c:\dsdt
acpidump -b -z
asl /tab=DSDT
copy dsdt.asl dsdt-modified.asl

 

iii.  here is a public repository of previously created 36-bit DSDT override files for various systems. If one exists for your system then can download it along with Winmerge . Together they can be used to merge the requires changes in step 1 below on your dsdt-modified.dsl/asl work file.

 

iv. You now can choose either the Intel method or Microsoft method (with blue dsdt-modified.dsl or magenta dsdt-modified.asl work file respectively) to generate a dsdt-modified.aml file, even trying both to maximize success. Consider:

- For systems other than Lenovo, use the Intel method as their DSDT usually has an Intel creation signature.

- Lenovo Thinkpad X220, T420, W530, T540P and likely other 2nd-4th gen i-core Lenovo Thinkpad systems are known to require the Microsoft method . The Intel method causes a "ACPI BIOS ERROR" on Windows bootup there.
 

_____________________________________
OPTION 1: Use the Intel method
_____________________________________

 

i. Save this >> refs.txt file << to your c:\dsdt folder. What is it used for? From tonymacx86: The iasl disassembler will attempt to guess the number of arguments [for unresolved symbols not defined in any file] but often guesses poorly. You can correct it by providing the external declarations in a refs.txt text file. It contains some common (and not so common) missing symbols . . .

 

ii. From the Command Prompt (admin), decompile dsdt.dat as dsdt.dsl . The refs.txt file is used here. dsdt.dsl is then copied as  dsdt-modified.dsl on which we'll make the required changes on.

iasl -da -dl -fe refs.txt dsdt.dat
copy dsdt.dsl dsdt-modified.dsl

 

iii. With Notepad++, open the resultant c:\dsdt\dsdt-modified.dsl file and search for ResourceProducer. Beneath it will be a series of "DWordMemory" resource entries. Under the last DWordMemory entry in that area, typically above the _CRS method, add a 'QWordMemory' (64-bit) entry as shown in red below. The range chosen is in the 36-bit range (< 64GB) to maintain compatibility with PAE-capable 32-bit Windows. A location above 48GB was chosen to alleviate issues with 32GB equipped systems. Here we use between 48.5GB to 56.25GB. Once systems start shipping with 64GB of RAM, this will need to be revised to use a 64-bit address.

 

DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
   0x00000000,         // Granularity
   0x000A0000,         // Range Minimum
   0x000BFFFF,         // Range Maximum
   0x00000000,         // Translation Offset
   0x00020000,         // Length
   ,, , AddressRangeMemory, TypeStatic)
QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
   0x0000000000000000, // Granularity
   0x0000000C20000000, // Range Minimum,  set it to 48.5GB
   0x0000000E0FFFFFFF, // Range Maximum,  set it to 56.25GB
   0x0000000000000000, // Translation Offset
   0x00000001F0000000, // Length calculated by Range Max - Range Min.
   ,, , AddressRangeMemory, TypeStatic)
})
   Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings

 

iv. Create a dsdt-modified.aml file with 'iasl -ve -oa dsdt-modified.dsl', where '-ve' disables warning messages and '-oa' disables all optimizations which makes a larger file with greater likelihood of compilation.

iasl -ve -oa dsdt-modified.dsl

 

It is unlikely this will succeed first time as the compiler is very strict. Errors reported will need to be looked at with Notepad++ on the line they occur on.  Search for a unique error keyword from your dsdt-modified.dsl error line within dsdt-modified.asl (it may look a bit different) and the just swap the lines above/below into your dsdt-modified.dsl file and compile. This was sufficient to get a Dell XPS 9350, Dell E6540, 2016 15" Macbook Pro DSDT override all done perfectly.

 

If stuck then there are other fixes like described at [Guide] Patching LAPTOP DSDT/SSDTs (tonymacx86). Consider also asking for guidance at the DSDT-centric tonymacx86.com DSDT forums . Then try compiling your DSDT again.

 

Once successfully compiled a dsdt-modified.aml file, attempt to again with optimizations enabled to generate a smaller dsdt-modified.aml file.

iasl -ve dsdt-modified.dsl

 

v . Proceed to Step 2 to load your dsdt-modified.aml file.

 

_________________________________________
OPTION 2: Use the Microsoft method
_________________________________________

 

i. With Notepad++, find the working area in your c:\dsdt\dsdt-modified.asl file as shown in screenshots below. In that area, make the following two edits. These are annonated in those screenshots.

 

EDIT 1: use Windows' calc in programmers mode to add hexidecimal 2E (46 decimal) to your "Buffer(value)" line. Examples:

  • "Buffer(0x1C0)" becomes "Buffer(0x1EE)"
  • "Buffer(0x1D4)" becomes "Buffer(0x202)"


EDIT 2
: replace "0x79, 0x00" in the hex table end with the following 46 hex values, also ending with "0x79, 0x00". This adds the same 36-bit QWordMemory resource entry shown in the Intel method but as a hex table.

 

[ copy-and-paste this table ]

0x8a, 0x2b, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0c, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x79, 0x00   

 

For Lenovo Systems  [ CLICK on images to zoom ]

 

 

 

For other systems  [ CLICK on images to zoom ]

 

 

 

ii. At the Command Prompt (admin), compile your dsdt-modified.asl file to generate a dsdt-modified.aml file:

asl /Fo=dsdt-modified.aml dsdt-modified.asl

 

This will almost certainly fail to generate a dsdt-modified.aml on your first compile attempt due to to error lines requiring further editting of your dsdt-modified.asl file, like the ones below (further example here), followed by another compile attempt. A successful compilation with many warnings is OK.

- ATMC() - error: ATMC is not a method -> swap ATMC with \_SB_.PCI0.LPC_.EC__.ATMC()
- Zero - error: unexpected ASL term type -> add  'Zero' as bracketted argument to line above it, eg: GLIS (Zero)
- Arg0 - error: unexpected ASL term type -> add  'Argo0' as bracketted argument to line above it, eg: GDCK (Arg0)

 

iii. Open c:\dsdt with Windows explorer. Compare the size of your created dsdt-modified.aml file against the memory dumped dsdt.dat. They should be within +/- 10% of each other in size. If not, repeat the above process to make sure no mistakes were made.

A HP Elitebook 8440P saw the generated dsdt-modified.aml being only 15% the size of the memory dumped dsdt.dat. There this process simply did not work. For such cases use the Intel method instead.

 

iv . Proceed to Step 2 to load your dsdt-modified.aml file.

 

 

Step 2. Load your dsdt-modified.aml as a registry override or in-memory substitution

 

OPTION 1: Load your dsdt-modified.aml as a registry override with Windows test signing mode enabled

 

This step is useful to confirm your dsdt-modified.aml does provide a 'Large Memory' area. Do note that a registry override can cause a BSOD on bootup with an invalid dsdt-modified.aml file. Furthermore, Windows test signing mode can be problematic for app compatibility. Both these issues can be avoided by using OPTION 2: Load your dsdt-modified.aml as an in-memory DSDT substitution below.

 

i. At the Command Prompt (admin) type:

c: & cd \dsdt
asl /loadtable dsdt-modified.aml  

 

ii. Enable TESTSIGNING mode for the registry override to apply. At the Command Prompt (admin) type:

bcdedit -set TESTSIGNING ON

 

If get an error like below when do this, then disable SECURE BOOT in your BIOS.

An error has occurred setting the element data
The value is protected by Secure Boot policy and cannot be modified or deleted

 

iii. Reboot your system and check for 'large memory' in step 3.

 

OPTION 2: Load your dsdt-modified.aml as an in memory DSDT substitution

 

Here we avoid the problematic registry override & test signing mode altogether by loading the DSDT as an in-memory substitution before Windows loads with these steps:

 

i. Disable the previous registry DSDT override and test signing mode.

bcdedit -set TESTSIGNING OFF

 

ii. check whether you are using a MBR or UEFI Windows installation by viewing Device Manager->Disk Drives->[double-click boot drive]->Volumes->Populate->Partition Style. If it says "MBR", then it's a MBR install. If it says "GPT" then it's a UEFI install. This will determine which next step to apply.

 

 

iii. [ MBR mode ] Load the dsdt-modified.aml as an in-memory substitution via DIY eGPU Setup 1.35 in the next post.

 

iv. [ UEFI mode] Load the dsdt-modified.aml as an in-memory substitution via Clover bootloader as follows:

 

- Mount your EFI volume as s: drive and backup your existing \EFI\BOOT\BOOTX64.efi file. At Command Prompt (admin) type:

mountvol s: /s
copy s:\EFI\BOOT\BOOTX64.efi s:\EFI\BOOT\BOOTX64.win

 

- Download the Clover ISO file and install it by extracting with 7-zip the clover.tar.lzma->clover.tar->clover.pkg->\EFI folder to s:\EFI. Be sure to use the the 7-zip interface to extract to s: drive as Windows explorer refuses to allow viewing of the s: EFI volume.

 

- Copy your dsdt-modified.aml file as dsdt.aml to s:\EFI\CLOVER\ACPI\Windows, the directory Clover uses to preload it. If your source dsdt-modified.aml file is not in c:\dsdt then use this workaround to copy-and-paste it. Locate your dsdt-modified.aml file with Explorer, right-click, rename to dsdt.aml, right-click, copy. Then hit CTRL+ALT+DEL, task manager, File->New task. Explore the s:\EFI\CLOVER\ACPI\WINDOWS directory and paste it there.

Otherwise at the Command Prompt (admin) type:

copy c:\dsdt\dsdt-modified.aml s:\EFI\CLOVER\ACPI\WINDOWS‌\dsdt.aml

 

- Reboot via Clover -> Windows EFI menu and proceed to step 3 to confirm it worked.

 

 

Step 3. Confirm success with a 'large memory' area in Device Manager

 

Check you now have a new Large Memory entry in Device Manager as shown below to confirm your dsdt-modified.aml was a success:

 

Success stories

 

nando4 - HP ZBook 17 G2 + AKiTiO Thunder2 + GTX970. SUCCESS! Allocated the eGPU into 36-bit space.
Mikeal - 2016 15" Macbook Pro + Razer Core + GTX1070. SUCCESS! Allocated the eGPU into 36-bit space.
theitsage - 2016 13" Macbook Pro + AKiTiO Thunder3 + GTX980Ti. SUCCESS! Allocated the eGPU into 36-bit space.
batist - 2013 15" Lenovo T540 + EXP GDC + GTX680.  SUCCESS! Allocated the eGPU into 36-bit space.

 

FAQ

 

1. I still have an error 12 with the 'large memory' area present. How can I fix it?

 
If Win10 doesn't automatically allocate your eGPU into the 36-bit space and still see error 12 then there are some further options to pursue:
 

i. Use the bcdedit forcedisable option to override the advanced PCI Express features and use legacy PCI Express behavior as explained by Microsoft. madjester confirmed this fixed error 12 on 2015 13" MBP after doing a DSDT override here (thank you!)

bcdedit.exe -set PCIEXPRESS FORCEDISABLE

 

ii. Re plug'n'play the devices. Go into Device Manager -> Video cards, delete the eGPU. Also go into Device Manager -> System devices and delete the PCI Express Root Port x entries.

Window should now be clever enough to re-allocate the eGPU into 36-bit space upon realizing there is insufficient 32-bit space to host it.

Can go one step further and delete your eGPU NVidia/ATiAMD driver, restart the system and reload it. That may help as well.

 

iii. [MBR only] Force allocate the eGPU into 36-bit PCI space before booting Windows with DIY eGPU Setup 1.35 software:

  • At Windows boot menu, select Setup 1.35
  • Boot Setup 1.35 -> menu-based
  • Select PCI compaction->Endpoint=56.25GB (36-bit)
  • Select PCI compaction->Run compact. When prompted for the scope select eGPU.
  • Select Chainloader->Test Run
  • At Windows boot menu, select Windows.

 

Your result will be then be like shown in step 3 above, but you'll have the eGPU rather then the (example) HD8790M dGPU allocated into 36-bit PCI space.

 

2. How do I disable the registry DSDT override?

The easiest method is to disable TESTSIGNING. If your system fails to boot with the DSDT override in place then boot in Safe Mode and disable TEST SIGNING.

bcdedit -set TESTSIGNING OFF 

 

Remove the DSDT override from the registry:

c: & cd\dsdt
asl /loadtable -d dsdt-modified.aml

 

.. or remove this DSDT key in the registry. Windows will create a new one derived from your system bootup ACPI DSDT table upon restart:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX\services\ACPI\Parameters\DSDT

* where XXX are 001, 002, 003 & so on.

and

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\ACPI\Parameters\DSDTfcho
Edited: 2 hours  ago

DIY eGPU Setup 1.35eGPUing since '09


ReplyQuote
nando4
Honorable Member
Joined: 3 months  ago
Posts: 404
December 23, 2016 9:11 pm  

GUIDE: an in-memory DSDT override using DIY eGPU Setup 1.35 [MBR partitions only]

 

Windows 10 or 8 enumerates the DSDT table from the in-memory copy on every boot. The only way to change that is to either:

- perform a registry DSDT override with test signing enabled as described in the above post. Do not that some apps are either problematic or refuse to run with test signing enabled.

- perform an in-memory DSDT table substitution using the DIY eGPU Setup 1.35 pre-boot environment which eliminates the need to alter your registry or enable test signing as explained in this post.

 

How to do a in-memory DSDT override using DIY eGPU Setup 1.35?

 

1. Generate a dsdt-modified.aml file as described in step1 of the opening post.

 

2. Check your dsdt-modified.aml is smaller than your memory dumped dsdt.dat like shown.

It must be smaller or will corrupt other ACPI tables and cause Win10/8 boot to crash. To achieve a smaller dsdt-modified.aml file, incrementally remove sections listed below in your  dsdt-modified.dsl  (Intel method) or  dsdt-modified.asl  Microsoft method), followed by a recompile with 'iasl -ve  dsdt-modified.dsl '  or 'asl /Fo=dsdt-modified.aml dsdt-modified.asl ' respectively. Then re-do the file size comparison.

i. remove unnecessary Linux and older Windows entries in the _OSI section of the file like highlighted here.

ii. remove unused PEG0, PEG1, PEG2, used to host a dGPU.  If do have a dGPU then keep PEG0.

iii. remove non-existent LPT (parallel ports).

 

3. Copy your resultant dsdt-modified.aml as dsdt.aml to Setup 1.35  v:\config directory.   If using a USB Setup 1.35 installation then copy to the [USB]:\config directory.

c:\eGPU\eGPU-setup-mount  
copy c:\dsdt\dsdt-modified.aml v:\config\dsdt.aml

 

4. Boot DIY eGPU Setup 1.35 -> automated startup via startup.bat (default). It will automatically load this dsdt.aml file and present the Windows bootloader where you then select Windows. Check for the 'Large Memory' area to indicate a successful in-memory DSDT override like shown below. Then check for error 12 against your eGPU..

 

5. If there is an error 12. then force allocate the eGPU into the DSDT override's 36-bit PCI space using DIY eGPU Setup 1.35.

  • At Windows boot menu, select Setup 1.35
  • Boot Setup 1.35 -> menu-based
  • Select PCI compaction->Endpoint=56.25GB (36-bit)
  • Select PCI compaction->Run compact. When prompted for the scope select eGPU.
  • Select startup.bat->Test Run.
  • Select Chainloader->Test Run
  • At Windows boot menu, select Windows.

 

Does this work?

 

Yes.  Below we see the new 'Large Memory Area' indicating the PCI BUS now extends into 36-bit PCI space with the iGPU (no eGPU at hand) relocated into that 36-bit space.

 

Edited: 6 days  ago

DIY eGPU Setup 1.35eGPUing since '09


theitsage liked
ReplyQuote
nando4
Honorable Member
Joined: 3 months  ago
Posts: 404
December 24, 2016 1:57 am  
Posted by: SamuelFDias

 Hello there! 🙂 no problem.

@nando4 I still have the same problem.. the eGpu insists to connect to other Pci root port, instead the one created under the large memory... What should I do?

I already unistall all the ports, the eGPU and the nvidia drivers, but it still not connect to the large memory..

Posted by: Yukikaze

Samuel, I think that Setup 1.35 should be able to fix that, because I believe you can force it to allocate the eGPU to the large/high memory area. I am not sure if there is a way to do it without Setup 1.35, but nando might know how to.

 

If the eGPU won't auto-allocate to the 'Large Memory' area, then revert to using eGPU Setup 1.35 software to hard allocate it in a pre-boot environment.

@everyone, the opening post is presented with an up-to-date DSDT override example using a 4th gen i-core Dell E6540. Unfortunately previous discussion was deleted along with the thread due to an offsite issue.  Sincerest apologies there.

Edited: 2 weeks  ago

DIY eGPU Setup 1.35eGPUing since '09


theitsage liked
ReplyQuote
theitsage
Reputable Member
Joined: 3 months  ago
Posts: 249
January 2, 2017 7:56 pm  

Thank you Nando4! I was able to solve Error 12 on the 2016 15" MacBook Pro following your DSDT Override instructions. No BSOD and Large Memory shows up in Device Manager.

Edited: 2 months  ago

nando4 liked
ReplyQuote
sobi123
New Member
Joined: 1 month  ago
Posts: 1
January 13, 2017 4:20 am  

Thanks @nando4, that did the trick It wouldn't run without setup 1.35 and compacting. After 2 days of tinkering with DSDT. I needed to cut "If (COND) FPED" statement and paste to where OS's are listed. Also added QWORD. Now that I know what I'm doing it's 2 min.

For reference my config is HP 2570p (i5 3360m) - Win 10 x64 + Asus GTX 1060 6GB Turbo + EXP GDC V8 ExpressCard PCIe x2 + 8GB 1600Mhz. Witcher 3 on Ultra Avg 40-50FPS 1080p.

Many thanks

Sobi

Edited: 4 weeks  ago

nando4 liked
ReplyQuote
Yukikaze
Reputable Member
Joined: 3 months  ago
Posts: 201
January 13, 2017 1:06 pm  

In my experience with my X230 and an Expresscard eGPU, the latest Lenovo X230 BIOS has no TOLUD problems. My HD7950 worked with it without any DSDT overrides or any Setup1.3x remapping of the eGPU. As far as I know, though, the X220 never got such a BIOS update.

Edited: 2 weeks  ago

nando4 liked
ReplyQuote
Mikeal
Active Member
Joined: 1 month  ago
Posts: 7
January 17, 2017 9:39 pm  

GUIDE: an in-memory DSDT override using MaciASL+ Clover [UEFI Windows on Macbooks only]

 

I have this working on a 2016 15" Macbook Pro MBP w/touch RX460 1TB with Clover loading a modified DSDT and the problematic Win10 test signing disabled.  Thank you to nando4 for pointing out using Clover for DSDT link for UEFI installations,  instructions in the opening post and formatting this post.

 

1. Boot into Windows and disable test mode if enabled using Command Prompt (admin)

bcdedit -set TESTSIGNING OFF‌‌ 

 

2. Reboot into macOS. Install / Load MaciASL. We will use MaciASL in MacOS to extract, edit, and compile the DSDT table.

 

 

3.  Make the QWordMemory modification as detailed in opening thread post, copied here:


Search for "ResourceProducer".  Beneath it will be a series of "DWordMemory" resource entries. Under the last DWordMemory entry in that area, typically above the _CRS method, add a 'QWordMemory' (64-bit) entry as shown in red below. The range chosen is in the 36-bit range (< 64GB) to maintain compatibility with the PAE-capable 32-bit Windows. A location above 48GB was chosen to alleviate issues with 32GB equipped systems. Here we use between 48.5GB to 56.25GB. Once systems start shipping with 64GB, this will need to be revised to 64-bit space.

 

DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
   0x00000000,         // Granularity
   0x000A0000,         // Range Minimum
   0x000BFFFF,         // Range Maximum
   0x00000000,         // Translation Offset
   0x00020000,         // Length
   ,, , AddressRangeMemory, TypeStatic)
QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
   0x0000000000000000, // Granularity
   0x0000000C20000000, // Range Minimum,  set it to 48.5GB
   0x0000000E0FFFFFFF, // Range Maximum,  set it to 56.25GB
   0x0000000000000000, // Translation Offset
   0x00000001F0000000, // Length calculated by Range Max - Range Min.
   ,, , AddressRangeMemory, TypeStatic)
})
   Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings

Save as DSDT.aml‌

 

4.  Download clover‌

 

5. Insert / automount a usb drive‌

 

6. Run the Clover package installer, and select the USB drive as the destination drive‌

 

7. Open Terminal:

sudo bash ‌
mkdir /Volumes/EFI‌
mount -t msdos /dev/disk0s1 /Volumes/EFI‌‌

leave this window open‌

 

8. Open Finder

 Look for the usb device, go into the EFI folder, copy the CLOVER folder‌
Paste CLOVER folder into /Volumes/EFI/EFI/‌

9. Go back to the elevated terminal window‌ and copy your DSDL.aml file to /Volumes/EFI/EFI/CLOVER/ACPI/WINDOWS‌.  Alternatively, use Finder to copy-and-paste your dsdt.aml file there.

cp ~/Documents/DSDT.aml /Volumes/EFI/EFI/CLOVER/ACPI/WINDOWS‌

 

The final file structure looking like this:

 

10. Reboot into Clover, select Windows, /clap && open beer to celebrate full Windows (no test signing mode) & eGPU functionality with 'large memory' area in Device Manager to indicate DSDT override was a success.

[ click to zoom ]

 

 

Update:  I still have an error 12 with the 'large memory' area present. How can I fix it?

 
If Win10 doesn't automatically allocate your eGPU into the 36-bit space and still see error 12 then there are some further options to pursue:
 

i. Use the bcdedit forcedisable option to override the advanced PCI Express features and use legacy PCI Express behavior as explained by Microsoft. madjester confirmed this fixed error 12 on 2015 13" MBP after doing a DSDT override here (thank you!)

bcdedit.exe -set PCIEXPRESS FORCEDISABLE

 

ii.  Work through https://egpu.io/forums/mac-setup/2016-macbook-pro-solving-egpu-error-12-in-windows-10/

 

Update: my internal soundcard doesn't work after applying this fix. What can I do?

See solution at https://egpu.io/forums/implementation-guides/2016-macbook-13-tb-akitio-thunder3-evga-gtx-1060-6gb/#post-2614

Edited: 3 days  ago

nando4 liked
ReplyQuote
Devaspark
New Member
Joined: 1 month  ago
Posts: 2
January 19, 2017 6:51 pm  

Just wanted to let you know how it went for me. I also have the late 2016 MacBook Pro 460. I tried Mikeal's method and it worked perfectly.

However, one issue/side effect. If I boot up with both the Razer Core and the USB-C to USB adapter, it would give me the Code 12 Error. Only when I disconnected it and boot up with the RC, does it work. (to be clear, adapter with an usb device attached such as mouse or keyboard)

After booting up, you can connect the adapter normally.

It's kinda weird or maybe something wrong with my system allocation but the adapter somehow screws up the reallocation.

Hope this helps.


nando4 liked
ReplyQuote
Mikeal
Active Member
Joined: 1 month  ago
Posts: 7
January 19, 2017 10:02 pm  

Hi Devaspark,

Are you using the USB adapter on the same side the core is connected?  I stopped using that one because I was having issues and thought it was because they shared the thunderbolt controller.  I switched to a cheap ankar USB-C to 4 port USB 3.1 adapter on the other side.  Even if the core side 2nd adapter was working for me, it got bad performance(Oculus complained about tracking).  I have no problem running all 3 sensors and the Rift off the other side though.


ReplyQuote
StevenOmg
New Member
Joined: 1 month  ago
Posts: 3
January 19, 2017 10:12 pm  

Hi,Devaspark @ Devaspark

I have the Macbook pro 450 and I also use Mikeal's way to deal with the problem of the Code 12 Error. However, I have the issue of the DSDT compilation. Do you have this error: code 4096, unexpected PARSEOP_IF, expecting“,"or")"

If you have fixed the same errors, would you like to tell me how to do? Thank you.


ReplyQuote
Mikeal
Active Member
Joined: 1 month  ago
Posts: 7
January 19, 2017 11:23 pm  

Hi Steven

Are you using MaciASL as the editor?  I had issues with other editors I used introducing errors, but MaciASL didn't show any.  If you're following the reddit post for the guy that used the java client, he gave up and used MaciASL too he just didn't post about it.  

Edited: 1 month  ago

ReplyQuote
Creativity
New Member
Joined: 1 month  ago
Posts: 2
January 19, 2017 11:39 pm  

Is it normal to have internal speakers not functioning after the override? Everything works for me, but the audio...


ReplyQuote
nando4
Honorable Member
Joined: 3 months  ago
Posts: 404
January 20, 2017 12:03 am  
Posted by: StevenOmg

 

Hi,Devaspark @ Devaspark

I have the Macbook pro 450 and I also use Mikeal's way to deal with the problem of the Code 12 Error. However, I have the issue of the DSDT compilation. Do you have this error: code 4096, unexpected PARSEOP_IF, expecting“,"or")"

If you have fixed the same errors, would you like to tell me how to do? Thank you.

   

I just moved the offending if statement on it's own separate line as shown below. It compiled OK and theitsage confirmed (earlier)  that loading the resultant dsdt.aml file as a registry override did result in the 'large memory' area appearing in Device Manager -> View -> Resources By Type, confirming it was a success.

1483345772-MBPdsdtfix.png

Posted by: theitsage

 

@nando4 I'm trying this DSDT override on a 2016 15" MBP but got 4 errors in Step 1. Can you give me a hand?

Compiler aborting due to parser-detected syntax error(s)
dsdt.dsl   9794:                 0x01020015, Zero), If (((Arg0 == 0x03) || (Arg0 == 0x04)))
Error    6126 -                                     ^ syntax error, unexpected PARSEOP_IF, expecting PARSEOP_CLOSE_PAREN or ','
dsdt.dsl   9795:                 {
Error    6126 -                 ^ syntax error, unexpected '{'
dsdt.dsl   9798:                 })
Error    6126 -                  ^ syntax error, unexpected PARSEOP_CLOSE_PAREN
dsdt.dsl   9814:
Error    6126 - syntax error, unexpected PARSEOP_METHOD, expecting $end and premature End-Of-File
ASL Input:     dsdt.dsl - 9814 lines, 313616 bytes, 3565 keywords
Compilation complete. 4 Errors, 0 Warnings, 0 Remarks, 0 Optimizations

  

Edited: 1 month  ago

DIY eGPU Setup 1.35eGPUing since '09


ReplyQuote
Devaspark
New Member
Joined: 1 month  ago
Posts: 2
January 20, 2017 2:15 am  

I tried doing the windows way of modifying the dsdt and got roughly the same errors as other people reported. However, even when I fixed the error and and loaded it via windows method, I never could get rid of the error 12.
The only way way I was able to get it working was via the Maciasl way, which, when I extracted and modified it, did not have any errors.

i assume you did the windows way using the windows kit and all that?

If so, I recommend doing via Mac OS side via maciasl and save some of the trouble I had to go through. Hope that helps. It does take some time to install and get maciasl working but it's a wayyyy smoother process.

 

Edited: 2 weeks  ago

ReplyQuote
StevenOmg
New Member
Joined: 1 month  ago
Posts: 3
January 20, 2017 9:58 pm  

I follow all the steps but no thing happen. I can do all the steps except step 10, cuz I don't know choice which one to boot the system.  Should I boot with the clover and than chose the Microsoft from the EFI?  Thank you.Mikeal,nando4

 


ReplyQuote
ELLIOTTCABLE
New Member
Joined: 1 month  ago
Posts: 3
January 21, 2017 9:33 pm  

Okay; so I finally got Clover installed (the method I had to follow was not described in any of the above posts; so I'm not sure how you guys did it — I had to exercise some of my own knowledge of the UEFI boot-process, and re-arrange 1. the pre-existing Apple EFI programs, and 2. the Clover EFI program). The DSDT patch took, and I've got the aforementioned “Large Memory” area in the Device Manager.

Unfortunately, this has changed nothing: the GTX 1080 is still Code 12'ing. I've tried the other above suggestions (right-click → ‘uninstall device’, checked the ‘uninstall drivers’ box, rebooted). No luck — after the drivers re-install, it's still Code 12'ing. Nothing appears to have been allocated to the “Large Memory” area.

Is there any other ways to force Windows to allocate the graphics card to the newly-allocated 36-bit address-space? /=


ReplyQuote
nando4
Honorable Member
Joined: 3 months  ago
Posts: 404
January 21, 2017 9:45 pm  
Posted by: ELLIOTTCABLE

 

The DSDT patch took, and I've got the aforementioned “Large Memory” area in the Device Manager.

Unfortunately, this has changed nothing: the GTX 1080 is still Code 12'ing. I've tried the other above suggestions (right-click → ‘uninstall device’, checked the ‘uninstall drivers’ box, rebooted). No luck — after the drivers re-install, it's still Code 12'ing. Nothing appears to have been allocated to the “Large Memory” area.

Is there any other ways to force Windows to allocate the graphics card to the newly-allocated 36-bit address-space? /=

   

Some additional techniques for solving error 12 on Apple systems are given below:

1. https://egpu.io/forums/mac-setup/2016-macbook-pro-solving-egpu-error-12-in-windows-10/

2. Certain Macbooks, listed in the link, running MBR Windows can have error 12 solved with https://egpu.io/egpu-setup-13x/

Edited: 2 weeks  ago

DIY eGPU Setup 1.35eGPUing since '09


ReplyQuote
ELLIOTTCABLE
New Member
Joined: 1 month  ago
Posts: 3
January 21, 2017 9:48 pm  
Posted by: nando4   

Some additional techniques for solving error 12 on Apple systems are given below:

1. https://egpu.io/forums/mac-setup/2016-macbook-pro-solving-egpu-error-12-in-windows-10/

2. Certain Macbooks, listed in the link, running MBR Windows can have error 12 solved with https://egpu.io/egpu-setup-13x/

Unfortunately, most of those tricks seem to be for MBR-formatted MacBooks? On new hardware like the Mac Pro and the 2016 Macbook Pro (like mine), Bootcamp doesn't create a hybrid-MBR; it sets up a UEFI boot of Windows.

As for the ‘uninstall the root-bridge’ one … like I said, just tried that one (although there's nothing called a “root bridge,” nor any “downstream ports” like in the screenshot, on the 15" Macbook Pro — I just tried to emulate the same process on the “PCI-to-PCI Bridge” entries that show up on my installation.)

I'm running out of things to try!

(If anyone else is trying to do this over the next few days, feel free to come chat in realtime on Freenode: http://ell.io/IRC . Name there is the same as here — if I don't respond immediately, leave the window open, and I'll reply when I'm at the computer.)

Edited: 2 weeks  ago

ReplyQuote
ELLIOTTCABLE
New Member
Joined: 1 month  ago
Posts: 3
January 21, 2017 10:19 pm  

Okay, WTF: I get completely different results with each Thunderbolt port on my machine.

  1. Rear-left: The behaviour I've been describing thus far — the Razer Core is recognized, and my “NVIDIA GeForce GTX 1080” shows up, but Code 12's.

  2. Front-left: Against all expectations, this works! I get display output rendering from my card, and it shows up in the Display preferences!

  3. Rear-right, front-right: I just see a generic “Video Controller (VGA Compatible)”; Windows claims there are no drivers installed for it.

    Worse, when the Core is plugged into the right-hand ports, my system becomes extremely unstable: the Windows install goes black and reboots, without any warning, a few moments after logging in. (I think it's trying to install a driver and failing?)

So, it's a great step forward that it renders, at least from one port; unfortunately, that port isn't reachable from the final install location of my Core (damned short Thunderbolt 3 active cabling!) … so I gotta figure out why the right-hand ports are crashing Windows.

My next step is probably a reinstall from scratch, I suspect. If I do get this working, I'm going to write my own tutorial, including actual instructions for installing Clover. 😛


ReplyQuote
StevenOmg
New Member
Joined: 1 month  ago
Posts: 3
January 23, 2017 11:06 am  

Hi nando4 and Mikeal,thank you for your guys' help and I can use my razer core now. 

And after many times tries, I want to say that the method of Mikeal is good and it is very easy to success. However, I still have the issue of the Step 9 which I followed first time but the error 12 still have and there was no large memory.

So, after the  step 9, I did one more step:  copy the DSDT.aml  from the Documents and paste it directly to the USB driver--EFI--CLOVER--ACPI--WINDOWS

I hope this can be helpful for some people. 

 


nando4 liked
ReplyQuote
Mikeal
Active Member
Joined: 1 month  ago
Posts: 7
January 26, 2017 10:33 am  

@ElliottCable     I've had mixed results with the ports as well.  The right side seems to work best for me, and running nothing else off that thunderbolt controller.  That is where I originally had it plugged in.  Using the other side gives me the VGA device showing as you had.

Also the boot issue with clover might be because I previously had refind installed. 

Edited: 4 weeks  ago

ReplyQuote
confidantduck
Active Member
Joined: 3 weeks  ago
Posts: 9
February 5, 2017 9:40 am  

Hey Nando4,

I managed to do it! The large memory is there and all! Which is great. But it still doesn't work :/ unsure why

 

2016 13" MBP (no touchbar)
Powercolor Devil Box + GTX 980 (succeeded somewhat), RX480 Nitro+ 4GB(attempted but failed)


ReplyQuote
veriestVarlet
Active Member
Joined: 1 month  ago
Posts: 11
February 5, 2017 9:43 am  

Another potential Code 12 fix. For my uncooporative 2015 13" MBP, running "bcdedit.exe -set PCIEXPRESS FORCEDISABLE" (with the Graphics Card totally uninstalled) then installing the card fixed allocation (after a DSDT override.)

(Someone knowledgable should probably try this, discover pitfalls, explain why it works, all that.)

Early 2015 13" MBP with Thunder2 RX 470 on Windows 10 and MacOS 10.1


theitsage and nando4 liked
ReplyQuote
nando4
Honorable Member
Joined: 3 months  ago
Posts: 404
February 5, 2017 10:09 am  
Posted by: madjester

 

Another potential Code 12 fix. For my uncooporative 2015 13" MBP, running "bcdedit.exe -set PCIEXPRESS FORCEDISABLE" (with the Graphics Card totally uninstalled) then installing the card fixed allocation (after a DSDT override.)

(Someone knowledgable should probably try this, discover pitfalls, explain why it works, all that.)

   

Nice work figuring that out. I've added it to the opening post linking your finding. Would you mind including your eGPU + notebook specs in your sig? I'm curious if it was with an AMD or NVidia card that this worked with.

Edited: 3 weeks  ago

DIY eGPU Setup 1.35eGPUing since '09


ReplyQuote
veriestVarlet
Active Member
Joined: 1 month  ago
Posts: 11
February 5, 2017 10:19 am  

Will do, full post on the Mac side with details. Edit though, this is with the startup.nsh script also!

Early 2015 13" MBP with Thunder2 RX 470 on Windows 10 and MacOS 10.1


nando4 liked
ReplyQuote
vsod99
Active Member
Joined: 3 weeks  ago
Posts: 11
February 6, 2017 10:22 am  

Hey Everyone,

I've followed the dsdt override guide (test mode) to the letter and no large memory section appears for me at all (and I'm still getting error code 12). I'm on an HP Elitebook 8470p using expresscard for the eGPU. 

Any help would be appreciated. 

 

Edit: Forgot to mention I'm running Windows 7 on the machine at the moment. 

 

Actually, turns out I got large memory working, but I still have error code 12 occur with my GPU. Where do I go from here?

Edited: 3 weeks  ago

Main rig: i7-6850k, EVGA 980ti Classified, HX850 PSU, 16GB DDR4-2133, X99 MSI SLI PLUS motherboard
Current (WIP) eGPU setup - HP Elitebook 8470p/16GB ram/i5-3220m/980ti
Past eGPU setup - Dell Vostro 1520 with Intel Core 2 Duo and GTX 760


ReplyQuote
nando4
Honorable Member
Joined: 3 months  ago
Posts: 404
February 6, 2017 10:55 am  
Posted by: vsod99

 

Hey Everyone,

I've followed the dsdt override guide (test mode) to the letter and no large memory section appears for me at all (and I'm still getting error code 12). I'm on an HP Elitebook 8470p using expresscard for the eGPU. 

Any help would be appreciated. 

 

Edit: Forgot to mention I'm running Windows 7 on the machine at the moment. 

 

Actually, turns out I got large memory working, but I still have error code 12 occur with my GPU. Where do I go from here?

   

See the FAQ item: 1. I still have an error 12 with the 'large memory' area present. How can I fix it? on the opening post.

DIY eGPU Setup 1.35eGPUing since '09


ReplyQuote
JasonConig
New Member
Joined: 2 weeks  ago
Posts: 2
February 8, 2017 2:49 pm  

I got this working successfully after some finagling. Each port appears to act different. My back left port even allows for hot plugging! My only issue, which I'm hoping someone can help with, is I need to use the USB to access Clover every time. The large memory disappears if I skip booting through Clover on the USB (which makes sense if I follow how this works correctly), but it looked like 7-9 were supposed to enable Clover without the USB.

 

If I didn't explain this clearly, I'd be happy to provide more explanation. To summarize, the Clover edit still requires the USB. Thank you for the help! Also, if there are any questions about how I got mine working, I'd be happy to provide information!


nando4 liked
ReplyQuote
JasonConig
New Member
Joined: 2 weeks  ago
Posts: 2
February 8, 2017 4:42 pm  
Posted by: nando4

Hitting OPTION before booting would presumably give the Macbook several EFI items you can choose. Just work through them one at a time until same Clover screen appears instead of Windows. It's unmistakeable when Clover boots.

 

I am sorry for not explaining this better. When the USB is plugged in, Clover is a boot option when viewing the EFI items. However, when the USB is removed, the option disappears, and the only other option is the "vanilla" Windows option.

I just checked, and the /Volumes/EFI directory gets deleted on reboot, which explains why Clover is not an option on boot. I do not, however, know what is causing macOS to decide to remove this directory. To be clear, after performing the steps there is a /Volumes/EFI folder, then, after reboot, there is no longer a /Volumes/EFI folder.

 

Edit: diskutil list is showing EFI as present. Now to just figure out how to get this to show up in the boot menu.. I will trouble shoot

Edited: 2 weeks  ago

nando4 liked
ReplyQuote
Mikeal
Active Member
Joined: 1 month  ago
Posts: 7
February 10, 2017 12:25 am  

@JasonConig, the /Volumes/EFI directory is only deleted because you were using it as a mount point.  If you remake the directory, and remount it, all the same information will be in it.  

I copied the clover folder from the USB, into /Volumes/EFI/EFI/Clover.  After you make the DSDT related changes copy that folder into /Volumes/EFI/EFI/boot.  This will give you the clover boot loader option every time you reboot.  If I want to go into OS X and I was last in windows, I reboot and hold the option key then select the macox drive (which is my only selection in that menu now).

I subscribed to the thread now didn't realize I wasn't getting notified.

Edited: 2 weeks  ago

ReplyQuote
Page 1 / 2 Next

eGPU

11 User(s) Online Join Server
  • AquaeAtrae
  • Markcus
  • CharlieWax
  • Mikeal
  • Wasabi
  • DitIsTijn
  • navalava
  • James2406
  • jahrudz
  • -2EZ
  • A§H»rUnRiÕt
  
Working

Please Login or Register