Jump to content
Tech Inferno Fan

[GUIDE] DSDT override to fix error 12

Recommended Posts

Okay, this tweak definitely depends on the compiler you are using. The 2016 Intel AML compiler generates these buffer objects that seem to be defined constants in an array. This is normally named "ToPLD()," and is passed in instead of the older Buffer() functions instead. Therefore, I succeeded by first finding a 2012 copy of DSDTEditor which has IASL within the same directory. I also used the Version 4.0 of the Windows ASL program:

 

http://olarila.com/dsdt/DSDTEditor_Linux_Windows.zip

http://download.microsoft.com/download/2/c/1/2c16c7e0-96c1-40f5-81fc-3e4bf7b65496/microsoft_asl_compiler-v4-0-0.msi

 

I used the interface of DSDTEditor to dump the DSDT info, and then did a test compile on the resulting decompiled .dsl file. Viola, same errors, but these were the older style and both were simply corrected by pressing "Fix Errors." The first item was fixed as defined above, and now I actually has Buffer() functions which were simply replaced with Package() functions instead.

 

I then plopped the QWord code within the appropriate section, and compiled it again. Then, I used the Windows ASL program to override the existing info, and rebooted. Finally, it works!

device.thumb.png.c07cc372f0bb3bc00b868f4

 

However, I then installed the express card adapter, restarted, and then was hit again with the ACPI blue screen issue. Therefore, it seems like the ACPI info I patched was specific only to current devices installed, and once the BIOS adds the GPU in, Windows no longer works with the other patched ACPI info.

 

If I remove the card and reboot (with last safe configuration,) I get back into Windows no issue with the device manager as shown above. Maybe there is an issue with installing something like a GTX 770 (such as the 2GB of memory on it that needs to be mapped?) So close...

 

Update: I finally got it working. You absolutely cannot boot up with the GPU attached as this always causes ACPI bluescreens. However, while I also had issues with hotplugging at first, I figured it out.

 

Initially, when I plugged the Expresscard in when in Windows, it would just sit there with the fan at full blast, and no GPU detected anywhere. Some posts mentioned vague yammering of a missing 3.3v connection, but as I had an ATX PSU installed (Seasonic SS-600ET,) this didn't make much sense at all as the ATX connector went right to the PSU. However, I hotplugged it in another time, and then proceeded to unplug a fan going to the PSU. It went off completely.

 

This seemed odd to me, and almost seemed like the PSU didn't have enough load on it (or the boot sequence wasn't properly initialized for the ATX standard.) Therefore, I just overrode the power on jumper on the P4C, and attached it to the computer even though the fan was running on full blast. It was detected instantly (so it seems like these PSUs need to be initially started, and have some sort of extra load afterwards or an "ATX initialization code.")

 

Now my T420 has a GTX 770 that is hotpluggable (which is great,) but still no go for a BIOS to Windows cold boot with it installed. The link seems to be at 2.0 1x, but still not sure if this has compression enabled.

ss.thumb.png.a44a03f9f418f37b7cc79a39b4d

 

Edited by Omicron
Somewhat fixed the issue.

Share this post


Link to post
Share on other sites

^, Using DSDT Editor I compiled the dsdt Qwordmemory fix. How do I use the ASL program to override the existing info?  new to all this stuff thanks.

 

Edited by BenJ08
issue resolved

Share this post


Link to post
Share on other sites

Hey @Tech Inferno Fan i paid for the eGPU 1.3 but the Mediafire link is private. Can you please send me the link again or give me access?? Thanks

Share this post


Link to post
Share on other sites

Could someone help me solve these problems:

 

warnings.thumb.jpg.fbe97bb13e6849ad504c1

 

Spoiler

Method (_PRW, 0, NotSerialized)
            {
                If (PMEE)
                {
                    Return (Package (0x02)
                    {
                        0x09, 
                        Zero
                    })
                    Return (Package (0x02)
                    {
                        0x09, 
                        Zero
                    })
                }
            }
            Name (PR02, Package (0x04)
            {
                Package (0x04)
                {
                    0xFFFF, 
                    Zero, 
                    LNKA, 
                    Zero
                }, 
                Package (0x04)
                {
                    0xFFFF, 
                    One, 
                    LNKB, 
                    Zero
                }, 
                Package (0x04)
                {
                    0xFFFF, 
                    0x02, 
                    LNKC, 
                    Zero
                }, 
                Package (0x04)
                {
                    0xFFFF, 
                    0x03, 
                    LNKD, 
                    Zero
                }
            })
            Name (AR02, Package (0x04)
            {
                Package (0x04)
                {
                    0xFFFF, 
                    Zero, 
                    Zero, 
                    0x10
                }, 
                Package (0x04)
                {
                    0xFFFF, 
                    One, 
                    Zero, 
                    0x11
                }, 
                Package (0x04)
                {
                    0xFFFF, 
                    0x02, 
                    Zero, 
                    0x12
                }, 
                Package (0x04)
                {
                    0xFFFF, 
                    0x03, 
                    Zero, 
                    0x13
                }
            })

 

Spoiler

Method (_BCM, 1, NotSerialized)
                {
                    If (^^^LPCB.SNC.ASCS)
                    {
                        Store (Arg0, BRTL)
                        Store (One, ^^^LPCB.SNC.INTS)
                        ^^^LPCB.SNC.SNNE (0x04)
                        Return (Zero)
                    }
                    If (LAnd (LGreaterEqual (Arg0, Zero), LLessEqual (Arg0, 0x64)))
                    {
                        Store (Match (VTBL, MEQ, Arg0, MTR, Zero, 0x02), Local0)
                        If (LEqual (Local0, Ones))
                        {
                            Return (Zero)
                        }
                        Subtract (Local0, 0x02, Local0)
                        AINT (One, GBRT (Local0))
                        Store (Arg0, BRTL)
                    }
                }

 

I thank anyone who can help me.

 

Share this post


Link to post
Share on other sites

i finished all step. and change code the error 35.

 

what's wrong?

Share this post


Link to post
Share on other sites

Hi guys,

 

here's my setup

 

elitebook 8460p

radeon r9 380

windows 7 professional 64b

 

I've successfully modified though dsdt parching the OS and created the lager memory block, but the eGPU insist on not allocating on that memory space!!!!

 

Also I see that the guy selling setup 1.x is off for a while, is there anny other way to get it?

 

PLEASE HELP GUYS!

 

 

 

 

Share this post


Link to post
Share on other sites

I have the same situation as you. Can't get past code 12 without Setup 1.3. The only thing you can do is to send the money to Tech Inferno Fan, and ask somebody to sent you his copy, and show him the payment confirmation.

I've asked one person here on the forums, but unfortunately something went wrong and I didn't receive his copy.

Actually see this thread:

 

 

Share this post


Link to post
Share on other sites

I managed to get the manual DSDT Override to work on my x230 and afaik its looking good. My GTX960 was recognized succesfully too (after a few reboots). Unfortunately the graphic card is working odd. In GPU-Z it is recognized as PCI-e gen 2 instead of 3 and when I try to start the render benchmark of GPU-Z or 3dmark06, it just doesn't work.

Did anyone had a similar odd behaving?

 

thanks

Share this post


Link to post
Share on other sites

Can anyone could help me to fix the 201 error from my dsdt.dsl file extracted using dsdt editor.

Even I clicked fixed in the compile, it will only fix minor errors but I'm stuck on it...

I attached the extracted file.

extracted dsdt.rar

Share this post


Link to post
Share on other sites

@a_chicken thanks m8, i managed to buy the soft directly here from the site!!!!

 

well here's the thing:

 

worked!

 

setup 1.x aka pre-allocation the pci-e memory its been the ONLY way to force windows to place the eGPU on the large memory block.

 

I'm going to create another post in case someone wants to ask about my conf.

 

@Tech Inferno Fan nando m8, i wish you recover soon, thank you for your software, its a really clever idea and a nice piece of engineering. get well soon! :)

Share this post


Link to post
Share on other sites

Hello Everybody!

Who knows how to fix this problem ?

Or this because of hardware?

 

Share this post


Link to post
Share on other sites

Hi there:)

 

I hope you guys can help me with the related case. I have Quadro K3100M and I want to change the Device ID to some Geforce (780m for example). Problem is - I don't know how to patch DSDT right for that. The Device ID for K3100M is "11B6", for GTX 780M is "119F". DSDT table attached. Device is PEG0 in _SB.PCI0 scope (string 12493).

dsdt.7z

Share this post


Link to post
Share on other sites
On 8/17/2014 at 10:22 AM, Tech Inferno Fan said:

Win8/10: Perform a DSDT substitution within Setup 1.30 to overcome TOLUD issues

Win8 enumerates the DSDT table from the in-memory copy on every boot as it's default behaviour. The only way to get it to allow a Win7 style DSDT override is to enable test signing for the Windows bootloader (bcdedit) as described here.

An alternative method was also discovered to overcome this Win8 limitation without resorting to a DSDT override. The way it works is by substituting the in-memory DSDT table with one that extends the PCI bus into 36-bit PCI space done within the DIY eGPU Setup 1.30 pre-boot environment. Steps to do this are below:

 

  1. Identify your DSDT table's starting address using r-w everything. The example screenshot shows it is 0xC6FF3198 for my E6230.
     
  2. Obtain the system DSDT table ('iasl -g'), then add the QWordMemory entry to extend the root bridge out to 36-bit space as described in the DSDT override to [file].dsl.
     
  3. Compile the new DSDT table 'iasl [file].dsl' and compare the resultant dsdt.aml size to your [file].dat obtained using 'iasl -g'. Now here's the tricky bit. The dsdt.aml file must be *smaller* than the original in-memory DSDT ([file].dat]) otherwise it overwrites some additional ACPI tables beyond the DSDT and will cause Win8 boot to crash.

    To get my compiled dsdt.dml to a size smaller than [file].dat, I removed the unnecessary Win95/XP/WinME entries in the _OSI method from my [file].dsl then compiled it with 'iasl [file].dsl'.
     
  4. Copy your resultant dsdt.aml to your Setup 1.30 disk image or USB key \config directory.
     
  5. Boot Setup 1.30. Load your modified DSDT table into memory with 'pt MEM writefromfile 1 [address of DSDT table] dsdt.aml'. In my case this command was 'pt MEM writefromfile 1 0xC6FF3198 dsdt.aml'
     
  6. Perform PCI 36-bit PCI compaction on the eGPU by setting the endpoint to match the override, ie: 56.25GB. This may not be strictly necessary as Win8 cleverly relocates devices in available PCI space when 32-bit PCI space is tight. In this example, my Dell E6230 had TOLUD=3.25 meaning plenty of 32-bit PCI space for an iGPU+eGPU. I forced allocated the iGPU into 36-bit space using Setup 1.30's compaction just as a proof-of-concept.
     
  7. Chainload to Win8. It will enumerate the DSDT based off the in-memory substituted version.
     
  8. Automating it. Once confirmed it all works, use startup.bat->!Edit (Setup 1.30 menus) or edit v:\config\startup.bat (Windows) and add your 'pt MEM writefromfile' line from (5) so you can boot and just select Setup 1.30: automated startup via startup.bat or just let it countdown to select that by default.


Does this work? Indeed it does!! Below we see the new 'Large Memory Area' indicating the PCI BUS now extends into 36-bit PCI space with the iGPU relocated into that 36-bit space.

 

1CZSkkU.png

 

The same process also useful to certain systems whose fan profiles can be altered in the DSDT table.

Avoid Win8's Secure Boot

Anybody upgrading to Win8 is advised to disable their bios UEFI/secure boot so it uses MBR boot instead. Then Setup 1.30 can chainload to Win8 without any problems. Otherwise users requiring Setup 1.30 functionality would need to do a Win8 re-install to change the partitions from UEFI to MBR.

 

Can I ask how to do the number 4, where to copy it? And also explain further for the number 5....
thanks in advance

Share this post


Link to post
Share on other sites

Hello, I am trying to attach an R9 390 with a PE4C to a PowerPro I 9:7 (which seems to be basically the same as an MSI GE70). I can get the graphics card to detect by hotswapping it with my wireless card, but I get an error 12. I've tried doing a DSDT override, both using the loadtable method, and using setup 1.3, but I can't get that extra memory to show up in device manager. The table has indeed been overridden, evidenced by the fact that when I dump the DSDT now it shows the edits I made. I cannot get my laptop to startup with the egpu attached, so I don't think I can use compaction correctly. Either my laptop won't boot, or it will boot but the fans will spin up to full and it won't be detected. I am running windows 10, an i7-3630qm, 12GB of ram, an HD4000, and a GTX 660M. Here is my edited dsdt.dsl, with the relevant qword at line 2156. Thank you for any help, I'm really hoping to get this working before tuesday! If you need any further information please let me know.

Share this post


Link to post
Share on other sites

Hi mcguinnessdr! how do you can do the hotswapping? If you don't do the hotswapping the eGPU is detected?

Share this post


Link to post
Share on other sites

I boot up my laptop with the wifi card connected. I then put my computer to sleep, swap out the wifi card for the egpu, then wake it back up. I haven't been able to get it to detect any other way.

Share this post


Link to post
Share on other sites
On 8/17/2014 at 8:22 AM, Tech Inferno Fan said:

Win8/10: Perform a DSDT substitution within Setup 1.30 to overcome TOLUD issues

Win8 enumerates the DSDT table from the in-memory copy on every boot as it's default behaviour. The only way to get it to allow a Win7 style DSDT override is to enable test signing for the Windows bootloader (bcdedit) as described here.

An alternative method was also discovered to overcome this Win8 limitation without resorting to a DSDT override. The way it works is by substituting the in-memory DSDT table with one that extends the PCI bus into 36-bit PCI space done within the DIY eGPU Setup 1.30 pre-boot environment. Steps to do this are below:

 

  1. Identify your DSDT table's starting address using r-w everything. The example screenshot shows it is 0xC6FF3198 for my E6230.
     
  2. Obtain the system DSDT table ('iasl -g'), then add the QWordMemory entry to extend the root bridge out to 36-bit space as described in the DSDT override to [file].dsl.
     
  3. Compile the new DSDT table 'iasl [file].dsl' and compare the resultant dsdt.aml size to your [file].dat obtained using 'iasl -g'. Now here's the tricky bit. The dsdt.aml file must be *smaller* than the original in-memory DSDT ([file].dat]) otherwise it overwrites some additional ACPI tables beyond the DSDT and will cause Win8 boot to crash.

    To get my compiled dsdt.dml to a size smaller than [file].dat, I removed the unnecessary Win95/XP/WinME entries in the _OSI method from my [file].dsl then compiled it with 'iasl [file].dsl'.
     
  4. Copy your resultant dsdt.aml to your Setup 1.30 disk image or USB key \config directory.
     
  5. Boot Setup 1.30. Load your modified DSDT table into memory with 'pt MEM writefromfile 1 [address of DSDT table] dsdt.aml'. In my case this command was 'pt MEM writefromfile 1 0xC6FF3198 dsdt.aml'
     
  6. Perform PCI 36-bit PCI compaction on the eGPU by setting the endpoint to match the override, ie: 56.25GB. This may not be strictly necessary as Win8 cleverly relocates devices in available PCI space when 32-bit PCI space is tight. In this example, my Dell E6230 had TOLUD=3.25 meaning plenty of 32-bit PCI space for an iGPU+eGPU. I forced allocated the iGPU into 36-bit space using Setup 1.30's compaction just as a proof-of-concept.
     
  7. Chainload to Win8. It will enumerate the DSDT based off the in-memory substituted version.
     
  8. Automating it. Once confirmed it all works, use startup.bat->!Edit (Setup 1.30 menus) or edit v:\config\startup.bat (Windows) and add your 'pt MEM writefromfile' line from (5) so you can boot and just select Setup 1.30: automated startup via startup.bat or just let it countdown to select that by default.


Does this work? Indeed it does!! Below we see the new 'Large Memory Area' indicating the PCI BUS now extends into 36-bit PCI space with the iGPU relocated into that 36-bit space.

 

1CZSkkU.png

 

The same process also useful to certain systems whose fan profiles can be altered in the DSDT table.

Avoid Win8's Secure Boot

Anybody upgrading to Win8 is advised to disable their bios UEFI/secure boot so it uses MBR boot instead. Then Setup 1.30 can chainload to Win8 without any problems. Otherwise users requiring Setup 1.30 functionality would need to do a Win8 re-install to change the partitions from UEFI to MBR.

 

Hey guys, i want to get my eGPU to work really bad. Trying to use  GTX 750 on my Hp Elitebook 8570w (win10) with my expresscard slot and i think i need to do this DSDT override. However i am a complete noob when it comes to this stuff so i really do not understand what i am supposed to do in the above guide. Is there anyone willing to explain to me what i should do in more noob-friendly terms? Any help would be greatly appreciated!

Share this post


Link to post
Share on other sites

If you are playing with dsdt override don't forget to run "bcdedit.exe -set TESTSIGNING ON" as admin.

Your other problem looks similar to mine but I have an asus notebook with r9 390x [guide link] so its worth to mention that if your bios hangs while egpu is connected then try playing with the #clk/#perst delay switches on your adapter and if your bios hangs on all settings then try to isolate pin22 on the mpcie connector and set the #perst delay to max on your adapter. Just put a small electrical tape on the PIN and always do shutdown/reboot instead of restart and don't forget to wait the #perst delay(egpu fans will start and some LED action goes on your adapter) before entering to setup 1x. Hope it helps and good luck.

 

mpcie Pinout:

Spoiler

1284991373.png

:

Share this post


Link to post
Share on other sites

I have followed the guide and got no errors but in device manager I don't see "Large memory" section.. that means I failed somewhere?

 

in my dsdt.dsl header, there is

 

/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20160318-32
 * Copyright (c) 2000 - 2016 Intel Corporation
 * 
 * Disassembling to symbolic ASL+ operators
 *
 * Disassembly of dsdt.dat, Sun Apr 10 10:52:22 2016
 *
 * Original Table Header:
 *     Signature        "DSDT"
 *     Length           0x0000C9D4 (51668)
 *     Revision         0x01 **** 32-bit table (V1), no 64-bit math support
 *     Checksum         0xF6
 *     OEM ID           "HP    "
 *     OEM Table ID     "INSYDE  "
 *     OEM Revision     0x00000000 (0)
 *     Compiler ID      "MSFT"
 *     Compiler Version 0x01000013 (16777235)
 */

 

does the "no 64-bit math support" means something?

Share this post


Link to post
Share on other sites
On 4/6/2016 at 3:59 AM, Thawsome said:

Hey guys, i want to get my eGPU to work really bad. Trying to use  GTX 750 on my Hp Elitebook 8570w (win10) with my expresscard slot and i think i need to do this DSDT override. However i am a complete noob when it comes to this stuff so i really do not understand what i am supposed to do in the above guide. Is there anyone willing to explain to me what i should do in more noob-friendly terms? Any help would be greatly appreciated!

please note that in windows 8 and windows 10, you have to type "bcedit -set TESTSIGNING ON" after the "asl /loadtable dsdt.aml for it to work...otherwise the large memory will not show.

Share this post


Link to post
Share on other sites

I managed to g et large memory to appear but when i boot with Exp Gdc beast connected..i get a bsod a few seconds after the windows logo appears. I am on win7 64bit...any idea?

 

The bsod disappears too quick (restarts) I cant read what is on it

Share this post


Link to post
Share on other sites

Hi,

 

I have a problem with my eGPU, I cant get rid of Code 12. I have the following stuff:

 

Acer 5750G (2630QM, 540m (deactivated in BIOS), HD 3000, 8GB RAM) (There seem to be several people who use an eGPU with this notebook, so it should work somehow)

650W PSU

EXP GDC 8 mpcie

Gigabyte GTX 960 4GB

 

I did the DSDT override and the device manager shows me the large memory, but it doesn't use it. I also tried the pci compaction in Setup 1.3 and set it to 36-Bit and followed different instructions I found on the web, but Code 12 stays. Even if I try to only get the iGPU in 36-Bit space, it doesn't work.

 

Could my DSDT Override have been faulty somehow? Even if it shows the large memory section in the device manager?

 

If you have any idead, please write! Thanks in advance :)

 

EDIT: Can you do a PCI Compaction 36 Bit without a DSDT override? In that case I'd try.

Edited by MisterKewl

Share this post


Link to post
Share on other sites

[Working Solution: End-to-End Guide for DSDT Override AND PCI Compaction to get eGPU running on Dell Latitude E6510 with 8GB of RAM installed]

 

Hi everybody,

 

first of all, I want to endlessly thank Nando for his support that helped me get running my eGPU system setup - that is now used on a regular base

The Villagetronic support (the vendor for my hardware and enclosure) failed to help me.

 

I want hereby share my success story to you. I took me over a year to get my eGPU hardware running. Maybe there is someone out there who can overcame "error 12" with this guide too.

 

My system parameters:
Dell Latitude E6510
BIOS Version: A016
8 GB RAM (2x 4GB)
Intel Core i5 CPU
Windows 7 x64 SP1 (still in test signing mode after DSDT override)
Villagetronic ViDock Nano (320W)
Gainward GTX 750 TI OC Golden Sample 2GB (a very quite and very cost efficient card, power consumption is about 50 watt)


0. Prerequisites
- download and install the Windows Driver Kit (WDK), which contains the Windows ASL Compiler
- Install Java by running "jxpiinstall.exe"
- extract "DSDTEditor_Linux_Windows.zip"

- start with a fresh Windows 7 installtion (no driver installed for the eGPU graphics chip) or uninstall ALL existing NVidia (eGPU) and Intel drivers (iGPU), then use "ddu" software (Display Driver Uninstaller) to clear registry entries of both and Reinstall both drivers

 

1. Create an .aml-File by running "DSDT Editor.bat" within directory "DSDTEditor-Linux-Mac-Win"
- run DSDT Editor.bat
- run menu item "File\ Extract DSDT"
- Wait a bit, then click 'Device PCI0' - it should be just after your Processor

 

1.png

 

- Scroll down until you see your DWordMemory stuff, go to the bottom of this list
- Under the last DWordMemory entry in that area, add a 'QWordMemory' (64-bit) entry  shown as the second paragraph below. I ensure that I stay in the 36-bit range (< 64GB) so the location is compatible with the PAE-capable Win7 32-bit. I also chose a location above 48GB so we won't have issues with maxxed out memory. The range chosen was 48.5GB to 56.25GB.
- At the bottom add:

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)

- the result looks like this:

 

2.png

 

- run menu item "IASL\ Compile" (or hit F5)

 

3.png

 

 

- click button "Fix errors" if you have any
- locate remaining found error(s) and manually correct the syntax errors
   e.g.: Error "10742    Error    Invalid leading asterisk (*pnp0c14)"

 

4.png

 

Reason (found in a german forum):
"Einerseits haben wir hier den Asterisk (*) der das Problem verusacht, aber wir müssen den String eben auch gross schreiben.
Also aus Name (_HID, "*pnp0c14") wird Name (_HID, "PNP0C14")"

 

Solution is to replace the following line:
    Name (_HID, "*pnp0c14")
with line:
    Name (_HID, "PNP0C14")

 

If all errors are fixed re-compile the DSDT.dsl file again:

 

5.png
 
- run menu item "File\ Save DSL as..." which is now enabled
 - named file "dsdtoverride.aml"
- put this file in the DSDT program directory with asl.exe and iasl.exe
- close the editor
- the following files were created while the editing process:

 

6.png

 

2. Loading the dsdt.aml file into into the registry as a DSDT override

- you must be an admin user for this to be successful so open up command prompt as admin
- change directory to where WDK was installed, much likely "C:\Program Files (x86)\Windows Kits\8.1\Tools\x64\ACPIVerify\asl.exe"
(or set a corresponding environment variable for that path)
saved your "dsdtoverride.aml" file in command prompt
- run command:

asl -loadtable "C:\Temp\WBT\dsdtoverride.aml"

 

7.png

 

3. Restart the system and check the device manager for the successfully create new large memory

 

8.png

 

4. Enable test signing mode for the registry override to apply

(otherwise I got an error message everytime I shut down windows)

- you must be an admin user for this to be successful
- run following command:
bcdedit -set TESTSIGNING ON

 

5. Perform PCI compaction with the new bounds:
endpoint = 56.25GB-64bit
scope = eGPU or iGPU+eGPU
closeunusedbridges = off or on

 

Try each of the above (will give you 4 different permutations). After each, Chainload to Windows using "Chainloader -> Test Run". Confirm Windows stability and that error 12 is eradicated against the eGPU.

 

6. Start Windows, install eGPU graphics chip drivers and enjoy your second graphics card on your notebook

 

Best regards,

Lake

Share this post


Link to post
Share on other sites
On 13.4.2016 at 0:40 AM, Lake said:

[Working Solution: End-to-End Guide for DSDT Override AND PCI Compaction to get eGPU running on Dell Latitude E6510 with 8GB of RAM installed]

 

Hi everybody,

 

first of all, I want to endlessly thank Nando for his support that helped me get running my eGPU system setup - that is now used on a regular base

The Villagetronic support (the vendor for my hardware and enclosure) failed to help me.

 

I want hereby share my success story to you. I took me over a year to get my eGPU hardware running. Maybe there is someone out there who can overcame "error 12" with this guide too.

 

My system parameters:
Dell Latitude E6510
BIOS Version: A016
8 GB RAM (2x 4GB)
Intel Core i5 CPU
Windows 7 x64 SP1 (still in test signing mode after DSDT override)
Villagetronic ViDock Nano (320W)
Gainward GTX 750 TI OC Golden Sample 2GB (a very quite and very cost efficient card, power consumption is about 50 watt)


0. Prerequisites
- download and install the Windows Driver Kit (WDK), which contains the Windows ASL Compiler
- Install Java by running "jxpiinstall.exe"
- extract "DSDTEditor_Linux_Windows.zip"

- start with a fresh Windows 7 installtion (no driver installed for the eGPU graphics chip) or uninstall ALL existing NVidia (eGPU) and Intel drivers (iGPU), then use "ddu" software (Display Driver Uninstaller) to clear registry entries of both and Reinstall both drivers

 

1. Create an .aml-File by running "DSDT Editor.bat" within directory "DSDTEditor-Linux-Mac-Win"
- run DSDT Editor.bat
- run menu item "File\ Extract DSDT"
- Wait a bit, then click 'Device PCI0' - it should be just after your Processor

 

1.png

 

- Scroll down until you see your DWordMemory stuff, go to the bottom of this list
- Under the last DWordMemory entry in that area, add a 'QWordMemory' (64-bit) entry  shown as the second paragraph below. I ensure that I stay in the 36-bit range (< 64GB) so the location is compatible with the PAE-capable Win7 32-bit. I also chose a location above 48GB so we won't have issues with maxxed out memory. The range chosen was 48.5GB to 56.25GB.
- At the bottom add:


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)

- the result looks like this:

 

2.png

 

- run menu item "IASL\ Compile" (or hit F5)

 

3.png

 

 

- click button "Fix errors" if you have any
- locate remaining found error(s) and manually correct the syntax errors
   e.g.: Error "10742    Error    Invalid leading asterisk (*pnp0c14)"

 

4.png

 

Reason (found in a german forum):
"Einerseits haben wir hier den Asterisk (*) der das Problem verusacht, aber wir müssen den String eben auch gross schreiben.
Also aus Name (_HID, "*pnp0c14") wird Name (_HID, "PNP0C14")"

 

Solution is to replace the following line:
    Name (_HID, "*pnp0c14")
with line:
    Name (_HID, "PNP0C14")

 

If all errors are fixed re-compile the DSDT.dsl file again:

 

5.png
 
- run menu item "File\ Save DSL as..." which is now enabled
 - named file "dsdtoverride.aml"
- put this file in the DSDT program directory with asl.exe and iasl.exe
- close the editor
- the following files were created while the editing process:

 

6.png

 

2. Loading the dsdt.aml file into into the registry as a DSDT override

- you must be an admin user for this to be successful so open up command prompt as admin
- change directory to where WDK was installed, much likely "C:\Program Files (x86)\Windows Kits\8.1\Tools\x64\ACPIVerify\asl.exe"
(or set a corresponding environment variable for that path)
saved your "dsdtoverride.aml" file in command prompt
- run command:

asl -loadtable "C:\Temp\WBT\dsdtoverride.aml"

 

7.png

 

3. Restart the system and check the device manager for the successfully create new large memory

 

8.png

 

4. Enable test signing mode for the registry override to apply

(otherwise I got an error message everytime I shut down windows)

- you must be an admin user for this to be successful
- run following command:
bcdedit -set TESTSIGNING ON

 

5. Perform PCI compaction with the new bounds:
endpoint = 56.25GB-64bit
scope = eGPU or iGPU+eGPU
closeunusedbridges = off or on

 

Try each of the above (will give you 4 different permutations). After each, Chainload to Windows using "Chainloader -> Test Run". Confirm Windows stability and that error 12 is eradicated against the eGPU.

 

6. Start Windows, install eGPU graphics chip drivers and enjoy your second graphics card on your notebook

 

Best regards,

Lake

 

Quote

Here are additional pictures and screenshots for you:

- the Villagetronic ViDock Nano (320W) came with two notebook PSUs: one passive 100 watt PSU and one 220 watt very noisy actively cooled PSU

- I only need to connect the quiet and passively cooled PSU to power ViDock Nano enclosure

eGPU System Setup.jpg

 

- I ran benchmarks with 3DMark with picture output only to the internal screen (as seen above) and with output only to an external monitor.

- I found out that the benchmark/ rendering performance is about five time better when the output from the eGPU is directly send to an external monitor:

 

I did IT - external Monitor 1.jpg

 

Share this post


Link to post
Share on other sites

Hi guys,

i have tried the DSDT Override as shown by nando 4 on my Thinkpad x230 in order to run my eGPU (GTX 560Ti); from what the console said, the Override was successfull, but I had no Large Memory-Entry in the Device-Manager. After I restarted the system, I get a 'ACPI_BOOT_ERROR' everytime I boot. All efforts to repare or reconstruct the systems have failed. I tried via cmd to reset the override but iasl and asl are not active in the bootmanager. Bios-Reset was unsuccessful. There are no restore points for Windows...

I have the setup 1.30 running too.

Windows 10, BIOS v2.65

Does anyone have an idea what I can do to restore my system ? Thanks in advance !

Edited by shockrave

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Similar Content

    • By Drozof
      Has any company out there launched a laptop with an external MXM port? 
       
      Just curious since with the boom in the gaming laptop market and some companies launching eGPU thunderbolt enclosures, isnt the MXM faster?
       
      Is it because of licensing issues? or hardware problems?
       
    • By Iwillsolo
      Hello guys ...

      i wanna make sure that everything is going to work fine with my laptop so i got some questions

      First of all my laptop is Lenovo Z51-70
      CPU: I5-5200U 2.2ghz
      iGPU Intel HD 5500
      dGPU:AMD R9 M375
      Ram: 8GB (will raise it to 16GB)
      HDD: 1TB stock one
      SSD: 120GB (for my games and windows only)

      now i investigated  a little about eGPUs and found that i need a M.2 or thunderbolt, i've found that my wifi card use a M.2 a/e key aka ngff, so i will be using the GDC Beast NGFF version

      to the bad part / question part

      What do i need to know other than the stuff above?
      what is the white-listing thing? i found on support forums that my laptop support some wifi cards only and it's bios cann't be modified according to bios modifying forums (not here)
      in same time saw some posts on reddit that says if ur bios have UMA graphic option then you will need to disable PAX / WIRELESS and enable UMA and it will work fine, the question is that true?

      i wasn't able to find anyone who did it on Z51-70 i found only 1 post on reddit for Z41-70 (which after research found that both are using same M.2 a/e key slot and also same bios... but the one who posted only replied that it's recognized with some errors and never replied back with any updates so still not sure about it.....

       
    • By Bullfrog098
      Hi, just a quick question what would be the best EGPU adapter, because i see the really expensive ones but then you have the 400$ dollar one that Lowspecgamer used. Which do you guys recommend ?
    • By zepvalue
      Hello guys,
      Thanks for this incredible forum, I hope I will learn a lot from the gurus ! 

      I am trying to make my eGpu MSI GT X970 work on my laptop   with K1100M integrated GPU. 
       
      This are my specs:
      CPU: 2.7GHz Intel Core i7-4800MQ (quad-core, 6MB cache, up to 3.7GHz with Turbo Boost) PSU : ??? Graphics: NVIDIA Quadro K1100M / Intel HD Graphics 4600 RAM: 32 GB Storage: 1TB

      I got a V8.0 EXP GDC Laptop External Independent Video Card Dock  with the express card version ( I am not really hw savy) and I am looking for a good psu to power my MSI GTX 970 4G  
      Could you kindly suggest a good PSU that i could use to power this GPU ? I am also willing to do as many experiments needed
       
      Thanks for reading my post
      -zepvalue
       
       
       
    • By egovanno
      Hello everyone.
       
      I put on a eGpu setup after quite a bit struggle 2 years ago and I used play games just fine. After a while I sold my graphics card gtx 970.
      Now since 2 days I am trying to put the eGpu setup back again this time with a Gtx 770.
      I couldn't understand the problem. I can shut my dGpu off with diy 1.30 setup. ( usb booted)
      And my laptop sees  gtx 770 along with my igpu Intel HD graphics 4000.
      After driver installation when I try to play a game laptop is tring to use iGpu instead of Egpu. (tried to delete and install driver few times)
      With MSI afterburner I can see  eGpu is  %0 all the time.
      Can it be power problem cause graphic cards fans ( Msi gtx 770 twinfrost ) are working all the time they dont stop.
      Or what else can it be. 
      Thx.
       
       

×

Important Information

By using this site, you agree to our Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.