Jump to content

[GUIDE] DSDT override to fix error 12


Recommended Posts

no more 4GB+ system RAM issues: use a DSDT override to extend the root bridge into 36-bit space (Windows 7/8/10 only - MacOS/Linux are unaffected)
 

Introduction>>>


This problem and solution is only relevant to Windows operating systems. MacOS ignores the root bridge and can allocate in 64-bit space as kizwan found here. Linux has a "noCRS" kernel parameter to ignore the root bridge boundaries so the OS can also also allocate in full 64-bit pci-e space.

The this process aims to solve the problem of seeing an error 12 (This device cannot find enough free resources that it can use) issues against a eGPU in Windows Device Manager due to insufficient 32-bit addressing space. By manually adding a memory range outside of this 32-bit space, we can force Windows to operate in 36-bit space instead to host eGPUs.

Know systems that will require this process are Dell Latitude Ex410 series, Samsung Series-4, Sony F-Series and MSI CRx20, HP-Elitebook/Probook xx60x/xx70x with AMD GPUs. Those have insufficient free 32-bit PCI space to accomodate a eGPU if have 4GB or more of RAM installed. They can't use Setup 1.30's PCI compaction to create sufficient space because they either have TOLUD=3.5GB, have lower TOLUD like 3.25GB but with an unmovable systemboard device occupying candidate free pci space making it unusable or are using an AMD or GTX650/GTX750 card that requires over 256MB contiguous space. Refer to Pre-Purchase FAQ #2(>> 2. How can I check if my notebook is compatible with an eGPU?) for details on how to check your TOLUD.

The same solution can be applied to any 3-gens old PM965 chipsets (2007) or newer system. They have a 64-bit CPU and chipset so are fully PAE-36-bit/64-bit compatible. Dell Inspiron 1440/1525 (core2duo) and Dell Vostro 1015 (core2duo) have BIOS-configured 36-bit root bridges already so don't require this workaround.

I happened to run into one of these problematic systems. A Dell E4310 with TOLUD=3.5G which can be maxxed out at 16GB of RAM. It's too nice an ultraportable to be need to downgrade RAM to 3GB of RAM to use an eGPU. I set of in pursuit of how to add a DIY eGPU to it which is documented below.

Using Setup 1.30's 36-bit PCI compaction on the eGPU to relocate it in such space will see the eGPU still give an error 12 in Device Manager. Why is that? Avlan confirmed that the 32-bit root bridge definition limited allocation only to 32-bit space. The fix being a modified DSDT loaded as a registry override that extends the root bridge (ACPI PNP0A08 or PNP0A03 device) into 36-bit space. Avlan's fix was cryptic so wasn't attempted on other systems.

After a bit of digging from the following references I found the QWORDMemory DSDT static resource entry can be used to easily extend root bridge entry into 36-bit space. Ref: [Qemu-devel] [PATCH 6/6] 64bit PCI range in _CRS table plus two examples at virtualbox and Coreboot.
 

Tools required>>>


The iasl and asl tools used are in 2570P-dsdt-override or (older) DELL-36b-root-bridge.rar. Allternatively, can download them from their original sources:
 

  • The latest Windows Binary Tools  (WBT): Download

  • The Windows Driver Kit (WDK), which contains the Windows ASL Compiler: Download

  • Notepad++ (or any other text editor)


 

Step-by-step DSDT override>>>


Need a 36-bit root bridge DSDT override

The test Dell E4310's root bridge was extended into 36-bit space with the steps below. See also http://forum.techinferno.com/diy-e-g...html#post49833 , user angerthosenear's alternative instructions to those presented below where can use a DSDT Editor to simply the patching process if experience a compilation error:

Spoiler

 

 

 

dan said:
 

 


NOTE: kizwan expands steps 1-3 here. Useful if you need more assistance with these steps. Kizwan also provides a video tutorial

.

1. Identify the resources used by the PNP0A08 or PNP0A03 devices in Windows. This can be found by perusing Device Manager->Resources by connection->Memory. Then check the last PCI BUS entry. Eg:
n7965Ck.jpg

Spoiler

 

2. Capture the DSDT table using command below. This gives a raw dump of the ACPI tables in .dat files. dsdt.dat is the one we will be using. Newer versions of iasl no longer having the "-g" option in which case use acpidump instead.

iasl -g
acpidump -b

3.Decompile dsdt.dat to get an output dsdt.dsl text file that can be editted:

iasl dsdt.dat

4. Open the resultant dsdt.dsl file and look for the PNP0A08/PNP0A03 'DWordMemory' resource entries. 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.

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)


5. Create a dsdt.aml file with the 'iasl -oa dsdt.dsl' compiler directive. '-oa' disables all optimizations found necessary to get working solutions. It is unlikely this will succeed first time, as the compiler is very strict. In general warnings are acceptable, but errors may require some fiddling. Those will need to be corrected with common patches in Common DSDT patches for Ivy/Sandy/Haswell laptops, How to fixed DSDT errors? (kizwan). Consider asking for guidance at tonymacx86.com DSDT forums. DSDT editting alone could have it's own forum. Then try compiling your DSDT again.

 

iasl -oa dsdt.dsl

6. Load the dsdt.aml file into into the registry as a DSDT override. You must be an admin user for this to be successful.

asl /loadtable dsdt.aml

7. [Windows 8.x/10] Enable test signing mode for the registry override to apply. You must be an admin user for this to be successful.

bcdedit -set TESTSIGNING ON

An alternative to disabling testsigning in Win8/10 is to do a Win8: Perform a DSDT substitution within Setup 1.30 to overcome TOLUD issues. Win7 users who don't want to do the registry override can also do this DSDT substitution.

8. Check you now have a new Large Memory entry in Device Manager->Resources by Connection->Memory as shown below:
 

Spoiler

SUMKJnp.jpg

 

9. The same fix was done on a Dell E4300 and Win7 did automatically allocate the eGPU into the 36-bit space. If you still see error 12 then there are two options to pursue:

 

 

  • 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.

    Upon restarting the system, halt Win7 startup with F8, attach and power on your eGPU and then proceed to load Win7. Win7 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.
     
  • Hard allocate the eGPU into 36-bit PCI space before booting Win7 using Setup 1.30. Select PCI compaction->Endpoint=56.25GB (36-bit) and then select Run compact. When prompted for the scope select eGPU.

    The result will be similar to that shown in the spoiler in step 8 above, but with the eGPU rather then the Intel HD iGPU being in 36-bit PCI space. Can then proceed to automate this by editting your %DRV%:\config\startup.bat (or V:\config\startup.bat in windows) so can just select the Automated startup via startup.bat Setup 1.30 bootitem and have it do everything for you:
    call speedup lbacache
    call vidwait 300
    call vidinit -d %eGPU%
    call pci
    call chainload mbr

     

 

Testing results>>>


* Lenovo X230 (jay_dark_dry): SUCCESS! Allocated the eGPU into 36-bit space.

* Lenovo T430 (arteart) : SUCCESS! Allocated the eGPU into 36-bit space.

* HP 2570P (Tech Inferno Fan): SUCCESS! Allocated the eGPU into 36-bit space.

* Dell E4310 (Tech Inferno Fan): SUCCESS! I relocated the Intel HD iGPU into 36-bit space using Setup 1.30 as shown in step 8 above freeing 256MB of contiguous 32-bit space to host an eGPU, so it will definitely work. Plus there is plenty of 36-bit space for the eGPU too. Unfortunately my PE4L 2.1 isn't working so I can't show the iGPU+eGPU both being active but it will work :D

* Dell Studio 1557 (Kizwan): SUCCESS! His HD5870 successfully relocated to 36-bit pci-e space.

 

 

FAQ>>>


1. When do I need to hotplug my eGPU to overcome the error12 with a DSDT override?(kizwan)

 

kizwan said:
 

 


2. How to clean the DSDT override properly? (kizwan)

(*We will need to delete DSDT key in registry)

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\DSDT

I didn't really tested whether deleting "DSDT" key in ControlSetXXX (XXX are 001, 002, 003 & so on) really necessary but I will test this when I test your latest Setup 1.30. For sure deleting "DSDT" key in CurrentControlSet is necessary. You can access registry via command line. So, you can put it in .bat file.

 

  • Thumbs Up 4
Link to comment
Share on other sites

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.

 

  • Thumbs Up 1
Link to comment
Share on other sites

Not sure if I am being completely blind, but I am running a Dell Precision M6500 that has 8GB of RAM. I have managed to get the DSL file (that part was easy), but trying to edit it, isnt proving to be easy. I cannot seem to find any DWordMemory entries under PCI0 which is PNP0A03.

My device manager breakdown looks like...

post-28711-14494998188812_thumb.png

The DSL file can be found here...

https://www.dropbox.com/s/wc3fokq9y82ozk8/dsdt.dsl

Any ideas?

Link to comment
Share on other sites

Not sure if I am being completely blind, but I am running a Dell Precision M6500 that has 8GB of RAM. I have managed to get the DSL file (that part was easy), but trying to edit it, isnt proving to be easy. I cannot seem to find any DWordMemory entries under PCI0 which is PNP0A03.

My device manager breakdown looks like...

[ATTACH=CONFIG]12275[/ATTACH]

The DSL file can be found here...

https://www.dropbox.com/s/wc3fokq9y82ozk8/dsdt.dsl

Any ideas?

Looks like the M6500 uses DSDT code that matches exactly what that noted in Avlan's research. The same code snippet can be found above the first "Return (CRS0)" line you find in yor dsdt.dl file.

Suggest incorporating the 36-bit root bridge addition code Avlan highlights.

  • Thumbs Up 1
Link to comment
Share on other sites

Ok, that has done it.

I used the DSDT editor that is available in this thread...

http://forum.techinferno.com/diy-e-gpu-projects/3539-guide-dsdt-override-simultaneous-igpu-dgpu-egpu.html#post49833

And made those changes, and after compile, install and reboot, I now have the large memory! Thanks a million.

So, my modified DSL file saved from the editor can be found here...

https://www.dropbox.com/s/m7yokrfhwch6n5j/dsdt_post_override.dsl

and the original DSL file before the changes for comparison can be found here...

https://www.dropbox.com/s/6z1h3mx1bg9osuy/dsdt_pre_override.dsl

This is in case anyone else running an M6500 wants to do this. Cheers

  • Thumbs Up 1
Link to comment
Share on other sites

  • 3 weeks later...
I managed to DSDT override my T430 with some black magic and luck. First of all I updated the BIOS, something I had not done yet since I had the second most recent and I don't know if this alone does the trick but it might and in this case I'm an idiot and wasted way too much time. I used this compiler right here [url]http://download.microsoft.com/download/2/c/1/2c16c7e0-96c1-40f5-81fc-3e4bf7b65496/microsoft_asl_compiler-v4-0-0.msi[/url] Dump with asl /tab=DSDT Open said DSDT file and find Device(Pci0) and the part where you allocate memory for _CRS I changed mine from
Name(_CRS, Buffer(0x1c0)            {
	0x88, 0x0d, 0x00, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
	0x00, 0x00, 0x00, 0x01, 0x47, 0x01, 0xf8, 0x0c, 0xf8, 0x0c, 0x01, 0x08,
	0x88, 0x0d, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x0c,
	0x00, 0x00, 0xf8, 0x0c, 0x88, 0x0d, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x00,
	0x00, 0x0d, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf3, 0x87, 0x17, 0x00, 0x00,
	0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff,
	0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x87, 0x17,
	0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
	0xff, 0x3f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
	0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
	0x0c, 0x00, 0xff, 0x7f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
	0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x80, 0x0c, 0x00, 0xff, 0xbf, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
	0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0xff, 0xff, 0x0c, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0xff, 0x3f, 0x0d, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00,
	0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0d, 0x00, 0xff, 0x7f,
	0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17,
	0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0d, 0x00,
	0xff, 0xbf, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
	0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
	0x0d, 0x00, 0xff, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
	0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x0e, 0x00, 0xff, 0x3f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x40, 0x0e, 0x00, 0xff, 0x7f, 0x0e, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0xff, 0xbf, 0x0e, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00,
	0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0e, 0x00, 0xff, 0xff,
	0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17,
	0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
	0xff, 0xff, 0xbf, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xfe,
	0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0xd4, 0xfe, 0xff, 0xbf, 0xd4, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
	0x00, 0x00, 0x79, 0x00
            })
to
Name(_CRS, Buffer(0x1ee)            {
	0x88, 0x0d, 0x00, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
	0x00, 0x00, 0x00, 0x01, 0x47, 0x01, 0xf8, 0x0c, 0xf8, 0x0c, 0x01, 0x08,
	0x88, 0x0d, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x0c,
	0x00, 0x00, 0xf8, 0x0c, 0x88, 0x0d, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x00,
	0x00, 0x0d, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf3, 0x87, 0x17, 0x00, 0x00,
	0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff,
	0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x87, 0x17,
	0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
	0xff, 0x3f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
	0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
	0x0c, 0x00, 0xff, 0x7f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
	0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x80, 0x0c, 0x00, 0xff, 0xbf, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
	0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0xff, 0xff, 0x0c, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0xff, 0x3f, 0x0d, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00,
	0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0d, 0x00, 0xff, 0x7f,
	0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17,
	0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0d, 0x00,
	0xff, 0xbf, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
	0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
	0x0d, 0x00, 0xff, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
	0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x0e, 0x00, 0xff, 0x3f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x40, 0x0e, 0x00, 0xff, 0x7f, 0x0e, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0xff, 0xbf, 0x0e, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00,
	0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0e, 0x00, 0xff, 0xff,
	0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17,
	0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
	0xff, 0xff, 0xbf, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xfe,
	0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0xd4, 0xfe, 0xff, 0xbf, 0xd4, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
	0x00, 0x00, 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
            })
This of course varies from laptop to laptop.
  • Thumbs Up 2
Link to comment
Share on other sites

Quote

I managed to DSDT override my T430 with some black magic and luck.

First of all I updated the BIOS, something I had not done yet since I had the second most recent and I don't know if this alone does the trick but it might and in this case I'm an idiot and wasted way too much time.

I used this compiler right here

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

Dump with asl /tab=DSDT

Open said DSDT file and find Device(Pci0) and the part where you allocate memory for _CRS

I changed mine from

Name(_CRS, Buffer(0x1c0)            {

0x88, 0x0d, 0x00, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,

0x00, 0x00, 0x00, 0x01, 0x47, 0x01, 0xf8, 0x0c, 0xf8, 0x0c, 0x01, 0x08,

0x88, 0x0d, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x0c,

0x00, 0x00, 0xf8, 0x0c, 0x88, 0x0d, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x00,

0x00, 0x0d, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf3, 0x87, 0x17, 0x00, 0x00,

0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff,

0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x87, 0x17,

0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,

0xff, 0x3f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,

0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,

0x0c, 0x00, 0xff, 0x7f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,

0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,

0x00, 0x80, 0x0c, 0x00, 0xff, 0xbf, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,

0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0xff, 0xff, 0x0c, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0xff, 0x3f, 0x0d, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00,

0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0d, 0x00, 0xff, 0x7f,

0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17,

0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0d, 0x00,

0xff, 0xbf, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,

0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,

0x0d, 0x00, 0xff, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,

0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x0e, 0x00, 0xff, 0x3f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,

0x00, 0x00, 0x00, 0x40, 0x0e, 0x00, 0xff, 0x7f, 0x0e, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03,

0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0xff, 0xbf, 0x0e, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00,

0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0e, 0x00, 0xff, 0xff,

0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17,

0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,

0xff, 0xff, 0xbf, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xfe,

0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0xd4, 0xfe, 0xff, 0xbf, 0xd4, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,

0x00, 0x00, 0x79, 0x00

})


to

Name(_CRS, Buffer(0x1ee)            {

0x88, 0x0d, 0x00, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,

0x00, 0x00, 0x00, 0x01, 0x47, 0x01, 0xf8, 0x0c, 0xf8, 0x0c, 0x01, 0x08,

0x88, 0x0d, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x0c,

0x00, 0x00, 0xf8, 0x0c, 0x88, 0x0d, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x00,

0x00, 0x0d, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf3, 0x87, 0x17, 0x00, 0x00,

0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff,

0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x87, 0x17,

0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,

0xff, 0x3f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,

0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,

0x0c, 0x00, 0xff, 0x7f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,

0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,

0x00, 0x80, 0x0c, 0x00, 0xff, 0xbf, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,

0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0xff, 0xff, 0x0c, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0xff, 0x3f, 0x0d, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00,

0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0d, 0x00, 0xff, 0x7f,

0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17,

0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0d, 0x00,

0xff, 0xbf, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,

0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,

0x0d, 0x00, 0xff, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,

0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x0e, 0x00, 0xff, 0x3f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,

0x00, 0x00, 0x00, 0x40, 0x0e, 0x00, 0xff, 0x7f, 0x0e, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03,

0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0xff, 0xbf, 0x0e, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00,

0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0e, 0x00, 0xff, 0xff,

0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17,

0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,

0xff, 0xff, 0xbf, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xfe,

0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0xd4, 0xfe, 0xff, 0xbf, 0xd4, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,

0x00, 0x00, 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

})


This of course varies from laptop to laptop.





I have been trying to do DSDT override to my E430 laptop. I wasn't sure what u did with the code. Did you use the asl generated DSDT.ASL file, and directly add the red color code to that file? or u added the red code to the .dsl file generated by "iasl dsdt.dat" command? also where did you get the red color code from?? Thanks!!
Link to comment
Share on other sites

I really suck at explaining but I think the best way to go at it is this one.

Use the iasl.exe to dump the table and decompile it.

Add the QWordMemory part and compile it.

If loading the table with asl /loadtable doesn't work then do the following.

Take the .aml file that came out of iasl.exe and take it to the folder with asl.exe (The version that I linked worked for me, the one in WDK 8.1 did not.)

Decompile that file with asl /u filename

Rename that file into something else and open it with your editor of choice.

Now dump your DSDT table with asl /tab=DSDT

This makes another asl file, open it up with your editor.

Get to Device(PCI0) in both and compare the two buffers. The one that you disassembled from iasl.exe should have differences like the one I posted (First line and last few lines) Since you added the 32 bit allocation with QWordMemory.

Pretty much copy the buffer from the iasl.exe decompiled ASL to the asl.exe dumped ASL.

Save, run asl filename (The one you just saved of course.)

This compiles, it gave me a few errors for a method which I commented/deleted out. Loaded it with /loadtable and now I have my large memory thingie. I haven't gotten my PCI adaptor yet but I will test it soon.

It is of course not recommended to just delete something out of your table to make it compile so you might find another workaround for that.

  • Thumbs Up 1
Link to comment
Share on other sites

  • 2 months later...
I really suck at explaining but I think the best way to go at it is this one.

Use the iasl.exe to dump the table and decompile it.

Add the QWordMemory part and compile it.

If loading the table with asl /loadtable doesn't work then do the following.

Take the .aml file that came out of iasl.exe and take it to the folder with asl.exe (The version that I linked worked for me, the one in WDK 8.1 did not.)

Decompile that file with asl /u filename

Rename that file into something else and open it with your editor of choice.

Now dump your DSDT table with asl /tab=DSDT

This makes another asl file, open it up with your editor.

Get to Device(PCI0) in both and compare the two buffers. The one that you disassembled from iasl.exe should have differences like the one I posted (First line and last few lines) Since you added the 32 bit allocation with QWordMemory.

Pretty much copy the buffer from the iasl.exe decompiled ASL to the asl.exe dumped ASL.

Save, run asl filename (The one you just saved of course.)

This compiles, it gave me a few errors for a method which I commented/deleted out. Loaded it with /loadtable and now I have my large memory thingie. I haven't gotten my PCI adaptor yet but I will test it soon.

It is of course not recommended to just delete something out of your table to make it compile so you might find another workaround for that.

After **myriad** attempts, each one of which came within a hair's breadth of bricking my laptop, this method worked for me. I'm exhausted from the effort and will try to recreate my precise steps and post them here only in a few days, but the following might be useful signposts for others who, like me, never realized how much free time they have on their hands :). (If I spent as much time and devoted as much grey matter to my job, I'd be CEO by now):

1. The basic idea is this: use nando64's excellent instructions to stick a QWordMemory allocation into your DSDT, but don't panic when you get all these useless, arcane, and incomprehensible errors at compile-time. Instead of trying to actually turn this into a good .dsl file, just comment everything away AS LONG AS YOU PRESERVE perfectly the initialization of the _CRS table. Slash and burn as much as you like, as long as when iasl the file, you get no errors and you do produce an .aml file, and then when you apply asl /u to that .aml file, you get something with a _CRS table that sorta looks a lot like artearte's.

Doing this preserves both your sanity -- because you don't have to do things like worry about how to replace "Buffer" with "Package" when the word "Buffer" doesn't actually appear in the .asl code -- and also your laptop's sanity, because you never are going to load this emasculated .aml or .asl into its registry. All you want is that longer table, written out in ascii hex. (My values were slightly different than artearte's, although the length 0x1ee was the same. Doh, 0x1ee is 36-bits of length that we all are trying to achieve).

Once you have the table, THEN, you start again, and this time be as focused and careful as Elmer Fudd hunting Wabbits: You extract your DSDT with asl /tab=DSDT; then carefully change the definition of the _CRS table to be the longer table from the file you made in the previous part, and now you might have an .asl file which will compile ("asl filename.asl"), then load ("asl /loadtable filename.aml") without incident.

One has to assume that it's the author(s) of iasl who need to be taken out and executed. It seems that iasl can't create a file which doesn't produce mind-bendingly annoying errors when compiled. But one can rely on it to produce correct snippets of .asl file, as long as one plays along with its little game of pretending to be a decompiler, and verifies the correctness of its output by commenting out most of it and compiling the rest. grrrrrrrrrrrrrrrrrrrr.

The other perhaps useful thing to know is how to recover if you DO load a table which is bad. In my case, every attempt I made at truly fixing the output of iasl produced in the end and .aml file which loaded fine. But unfortrunately when I rebooted, the machine would BlueScreen a second or two after the Windows Logo appeared -- which according to posts here is exactly when DSDT is loaded. No ordinary fix method of any kind ever got me past this; I was, however, able to boot and get a command prompt using installation media. And from there I was able to bring up regedit and clear out the bad DSDT entries in the non-active C:-drive registry. (it seems to be a little-known if life-saving fact that you can edit the registry of an installation which is not the one you are actually running: see Load a hive into the registry: Core Services).

I now have a great big large memory, into which my GTX 760 can easily fit. I'm not sure if my memory is big enough for me to remember why it is I began this project, however. What **WAS** I thinking? Oh yes, I remember.... well, perhaps the eGPU will work now.

Thank you so much to all who helped.

  • Thumbs Up 1
Link to comment
Share on other sites

Hi sbp, I followed you advice and also mow have a nice an juicy large memory available. However it seems not trivial to make my GTX 770 use this space. Please share your progress as the chase to nirvana does not seem to end with DSDT override. I have the 5200NVS card in my machine already. Your setup might be different?

Link to comment
Share on other sites

  • 3 months later...
I really suck at explaining but I think the best way to go at it is this one.

Use the iasl.exe to dump the table and decompile it.

Add the QWordMemory part and compile it.

If loading the table with asl /loadtable doesn't work then do the following.

Take the .aml file that came out of iasl.exe and take it to the folder with asl.exe (The version that I linked worked for me, the one in WDK 8.1 did not.)

Decompile that file with asl /u filename

Rename that file into something else and open it with your editor of choice.

Now dump your DSDT table with asl /tab=DSDT

This makes another asl file, open it up with your editor.

Get to Device(PCI0) in both and compare the two buffers. The one that you disassembled from iasl.exe should have differences like the one I posted (First line and last few lines) Since you added the 32 bit allocation with QWordMemory.

Pretty much copy the buffer from the iasl.exe decompiled ASL to the asl.exe dumped ASL.

Save, run asl filename (The one you just saved of course.)

This compiles, it gave me a few errors for a method which I commented/deleted out. Loaded it with /loadtable and now I have my large memory thingie. I haven't gotten my PCI adaptor yet but I will test it soon.

It is of course not recommended to just delete something out of your table to make it compile so you might find another workaround for that.

Hi artearte,

Please could you upload your modified *.dsl file for T430? I'm struggling with DSDT Override on my notebook, without success so far... I've changed from Windows 7 64 on MBR to Windows 8.1 64 on GPT and I'm trying to make it work with PE4C and GTX660.

Link to comment
Share on other sites

  • 3 months later...

I want to post my experiences, since I think my experiences will help with troubleshooting. I have been around computers my whole life, and I am a middle-aged man - have mostly worked with computers for utility, but have had programmer friends and consider myself a novice programmer. There are steps in this process that aren't entirely clear, so I will show how I got the egpu setup to work:

(1)I ran up against a detection issue (Error 43) when installing the egpu. I have a Lenovo Thinkpad T400 (running Windows 8.1). I have a beast pcie board, 650w earthwatts antec psu, zotac gtx 660 graphics card, and viewsonic vt1900led. I used an HDMI connection to connect video card to monitor. I tried to simply install recent drivers, but this did not fix the issue. I realized that I could not do anything more with just the hardware set up, so I contacted nando (and got the setup 1.3 software).

Note:-> This may seem like a silly thing, but it is something worth mentioning. Originally, I questioned whether my PSU was actually working. I also did not have the exact same size power connector cables in my PSU to match the cables provided by PCIE board to connect it to PSU. (The connector cable of 24 pin cable was slightly larger - and also there were no six pin connectors coming from PSU - only 8 pin). Long story short, PSU only activates when entire setup is connected to computer. Otherwise, you won't see it activated. Also, the fact that the power connectors coming from PSU had slightly more pins didn't matter - they could still be connected to the cables provided with PCIE board to connect to PCIE board.

(2) I didn't do anything fancy to set up the software. I simply followed nando's instructions, so there aren't really any issues I can talk about that I ran into related to this part.

(3) I initialized the setup 1.3 software after restarting computer. I chose "menu-based" option and hit F5 (eGPU setup had to be on). The software recognized it. The new software allows you to hit F1 to get explanations of menu items which is helpful. I think I chose PCI ports -> Enable all ports - and the Zotac showed up in the box to the side with the port where it is attached to.

(4) I realized at this point that I would have to do a DSDT override (to ensure that I would have enough available memory freed to run card). There were a couple of interesting parts to this journey:

-Instead of using the WBT Tools link (where software didn't fully work for me), I had to navigate to DIY eGPU experiences 2.0 thread page 27, where user spanning provides a link to a DSDT editor Linux_Windows that actually did work for me.

-The WDK kit software did not work for me. I had to navigate to link in this thread artearte provides for the 4.0 ASL compiler. This did work for me.

(5) I should mention that at this point, I think I was having some trouble with the DSDT process, or I just decided to run a compaction in setup 1.3 - chose the large option (I think it is 48GB or something) and chose to compact IGPU & EGPU - and restrict EGPU to 32 bit. This did not solve my problem of error 43, but I thought it is worth noting that I tried this step.

(6) I had originally followed all the DSDT override code steps up to inserting the code QWord Memory items into the dst file. When I opened dsl file (used notepad ++ for this), I originally could not find the DWord Memory entries. I had searched and found nothing. I actually had to physically scroll down to find them (a simple step I know - but something worth noting). Upon pasting the code, this step worked out.

(7) Another thing worth noting has to do with the aml file. For those who are new to programming, you actually have to drag that file into the compiler folder before initiating it with command prompt code. Again - this seems like a simple thing, but not everybody who is doing this have been programming for years.

(8) The other code steps went through fairly straightforward, and now it was time to return to setup 1.3 (at this point I'm still getting code 43). I run compaction again (this time same 48GB option - or the larger memory option - and chose eGPU for compaction only and chose no restriction for 32 bit space). I restarted crossing my fingers - and again - code 43.

(9) Here's where things get interesting. I read in some forum about eGPU (can't remember what post) where simply inserting expresscard after boot does something. So I did it. There was nothing. Not even a detection in Device Manager. I was like - OK - I guess that didn't work. Then I restart, and boom - no Error 43 and graphics card driver detected and working fine. Simply inserting expresscard after boot. No code - no fancy stuff.

(10) So I'm like- Ok - great - but monitor still is not being detected. I tried installing driver (btw this monitor has Windows XP driver - you have to actually click on option to let driver install when you doubleclick it - it will say something like driver is not compatible - but I think I just decided to hit OK eventually and it installed). I was like - Ok - I guess I'll go back to caveman thought - and unplug hdmi from card, and plug it back in, and then unplug hdmi from monitor, and plug it back in - and Boom - monitor detected in control panel display options.

So I'm telling this story not because I'm a fancy programmer - but because I'm a simple man, and I had to actually figure out some simple steps that may help an average joe actually get their eGPU setup working. Good luck.

Link to comment
Share on other sites

I did all the steps correctly but continues to give the (code 12) have infuence i have win7 64-bit? and if I turn on the PC connected with the (EGPU ON) is recognized on the devices but gives the error12, but if I turn the EGPU only wen win in the loading there is none EGPU on the devices Manager!

What can I do more? Setup 1:30 is going to help? my laptop is Samsung RV520 intel i3-2310m, 4GB Ram, Nvidea GT520m, EGPU GTX750

post-35910-14495000125828_thumb.png

Link to comment
Share on other sites

  • 3 weeks later...

For the life of me I can't get this to work and I need your help.

I've followed all your instructions verbatim but I get an error at step 6: "asl /loadtable dsdt.aml"

http://i.imgur.com/cQDUb5s.png

I've searched for "Count not access the registry path:" and a dozen other clues or hints on this forum and Google but haven't found anything useful.

My laptop is a Dell Latitude E4310 (same as the one Nando4 used to test his DSDT override):

Intel 5-series chipset, QS57 motherboard

Core i5-560M

Win7 Pro, SP1

Link to comment
Share on other sites

  • 2 weeks later...

I'm new to the forum, but have been reading through the extensive guides, FAQs, etc. over the last few days. I have a Bplus Pe4c v.2.1 Expresscard and hooking it up to an HP ProBook 6460B (detailed specs below). My purpose for going the eGPU route is that this is a work-issued computer, but the basic onboard Intel HD graphics driver won't display optimal resolution (1440p) on my monitor (no gaming; just need more real estate on screen for multi-tasking). Anyways, laptop recognizes graphics card (simple Zotac Geforce GT 640 2gb), have loaded Nvidia drivers, but get the dreaded Code 12 issue.

I started to follow the detailed guide provided here, but get stuck on Step 3 (Decompile dsdt.dat to get an output dsdt.dsl text file), as I'm getting a warning about unresolved control methods. I've included part of the actual DSL file with the beginning of the warnings below. I'm hopeful someone can assist me in getting through this step or suggest another option.

My Laptop:

HP ProBook 6460B

Intel i5-2520m 2.5 ghz

4GB Ram

Win7 Pro - 64-bit

Using:

Pe4C v2.1 Expresscard

Zotac Geforce GT 640 2GB

280W Power Supply (connected through 24 pin to Pe4C; graphics card has no addition power connecter)

Small snippet from DSL File:

DefinitionBlock ("dsdt.aml", "DSDT", 2, "HPQOEM", "161D ", 0x00000001)

{

/*

* iASL Warning: There were 2 external control methods found during

* disassembly, but only 0 was resolved (2 unresolved). Additional

* ACPI tables may be required to properly disassemble the code. This

* resulting disassembler output file may not compile because the

* disassembler did not know how many arguments to assign to the

* unresolved methods. Note: SSDTs can be dynamically loaded at

* runtime and may or may not be available via the host OS.

*

* If necessary, the -fe option can be used to specify a file containing

* control method external declarations with the associated method

* argument counts. Each line of the file must be of the form:

* External (<method pathname>, MethodObj, <argument count>)

* Invocation:

* iasl -fe refs.txt -d dsdt.aml

*

* The following methods were unresolved and many not compile properly

* because the disassembler had to guess at the number of arguments

* required for each:

*/

External (FPED, MethodObj) // Warning: Unresolved method, guessing 0 arguments

External (WMAB, MethodObj) // Warning: Unresolved method, guessing 1 arguments

External (_PR_.CPU0._PPC, UnknownObj)

External (_PR_.CPU0._PSS, IntObj)

External (CFGD, UnknownObj)

External (PDC0, UnknownObj)

External (PDC1, UnknownObj)

External (PDC2, UnknownObj)

External (PDC3, UnknownObj)

External (PDC4, UnknownObj)

External (PDC5, UnknownObj)

External (PDC6, UnknownObj)

External (PDC7, UnknownObj)

Name (FMBL, 0x01)

Name (LSTA, 0x00)

Name (IDPM, 0x00)

Method (\HPTS, 1, NotSerialized)

{

SLPT = Arg0

\_SB.ODGW ((0x5400 | Arg0))

If ((Arg0 == 0x05))

{

\_SB.SSMI (0xEA82, Arg0, 0x00, 0x00, 0x00)

}

If ((Arg0 > 0x00))

{

\_SB.SSMI (0xEA83, 0x00, 0x00, 0x00, 0x00)

If ((Arg0 != 0x03))

{

\_SB.PCI0.LPCB.EC0.HSST = 0x00

Link to comment
Share on other sites

  • 2 months later...
  • 2 weeks later...
After **myriad** attempts, each one of which came within a hair's breadth of bricking my laptop, this method worked for me. I'm exhausted from the effort and will try to recreate my precise steps and post them here only in a few days, but the following might be useful signposts for others who, like me, never realized how much free time they have on their hands :). (If I spent as much time and devoted as much grey matter to my job, I'd be CEO by now):

1. The basic idea is this: use nando64's excellent instructions to stick a QWordMemory allocation into your DSDT, but don't panic when you get all these useless, arcane, and incomprehensible errors at compile-time. Instead of trying to actually turn this into a good .dsl file, just comment everything away AS LONG AS YOU PRESERVE perfectly the initialization of the _CRS table. Slash and burn as much as you like, as long as when iasl the file, you get no errors and you do produce an .aml file, and then when you apply asl /u to that .aml file, you get something with a _CRS table that sorta looks a lot like artearte's.

Doing this preserves both your sanity -- because you don't have to do things like worry about how to replace "Buffer" with "Package" when the word "Buffer" doesn't actually appear in the .asl code -- and also your laptop's sanity, because you never are going to load this emasculated .aml or .asl into its registry. All you want is that longer table, written out in ascii hex. (My values were slightly different than artearte's, although the length 0x1ee was the same. Doh, 0x1ee is 36-bits of length that we all are trying to achieve).

Once you have the table, THEN, you start again, and this time be as focused and careful as Elmer Fudd hunting Wabbits: You extract your DSDT with asl /tab=DSDT; then carefully change the definition of the _CRS table to be the longer table from the file you made in the previous part, and now you might have an .asl file which will compile ("asl filename.asl"), then load ("asl /loadtable filename.aml") without incident.

One has to assume that it's the author(s) of iasl who need to be taken out and executed. It seems that iasl can't create a file which doesn't produce mind-bendingly annoying errors when compiled. But one can rely on it to produce correct snippets of .asl file, as long as one plays along with its little game of pretending to be a decompiler, and verifies the correctness of its output by commenting out most of it and compiling the rest. grrrrrrrrrrrrrrrrrrrr.

The other perhaps useful thing to know is how to recover if you DO load a table which is bad. In my case, every attempt I made at truly fixing the output of iasl produced in the end and .aml file which loaded fine. But unfortrunately when I rebooted, the machine would BlueScreen a second or two after the Windows Logo appeared -- which according to posts here is exactly when DSDT is loaded. No ordinary fix method of any kind ever got me past this; I was, however, able to boot and get a command prompt using installation media. And from there I was able to bring up regedit and clear out the bad DSDT entries in the non-active C:-drive registry. (it seems to be a little-known if life-saving fact that you can edit the registry of an installation which is not the one you are actually running: see Load a hive into the registry: Core Services).

I now have a great big large memory, into which my GTX 760 can easily fit. I'm not sure if my memory is big enough for me to remember why it is I began this project, however. What **WAS** I thinking? Oh yes, I remember.... well, perhaps the eGPU will work now.

Thank you so much to all who helped.

Could somebody explain the last part of this post? How exactly can you clear our the bad DSDT entries in the non-active C: drive?

Link to comment
Share on other sites

  • 2 weeks later...

Hello everyone currently i work on my dsdt override, and need some help:

Which one of those PCI Bridges is the right one for the dsdt override?

post-36749-14495000823462_thumb.jpg

i did get my dsdt.dsl file which can be opened with a text editor like Notepad++ :-P

post-36749-14495000823787_thumb.jpg

now i have to insert the new "programm code", a new paragraph for the pci adress expansion :-)

post-36749-14495000824778_thumb.jpg

upon using "iasl -oa XXXX.dsl" command to compile i got some errors :-(

post-36749-14495000824486_thumb.jpg

There are only two errors this time?? Ok well i had 140+ last time :-(

Do i have to change something with this error according to the fixing guide?

i can't just add some other commands arround it, that makes no sense to me.

Error 1.

post-36749-14495000825059_thumb.jpg

Error 2.

post-36749-14495000825204_thumb.jpg

i will append the file here as zip for everyone to download and have a look at it, maybe someone knows how to resolve them!

Thank you for any advice for a possible fixing help

DSDT_161CHP8460p.zip

Link to comment
Share on other sites

  • 2 weeks later...
I just can´t generate the aml file, some errors and warnings....HELP!!!!! ---- UPDATE!!

Quote

I managed to DSDT override my T430 with some black magic and luck. First of all I updated the BIOS, something I had not done yet since I had the second most recent and I don't know if this alone does the trick but it might and in this case I'm an idiot and wasted way too much time. I used this compiler right here [URL]http://download.microsoft.com/download/2/c/1/2c16c7e0-96c1-40f5-81fc-3e4bf7b65496/microsoft_asl_compiler-v4-0-0.msi[/URL] Dump with asl /tab=DSDT Open said DSDT file and find Device(Pci0) and the part where you allocate memory for _CRS I changed mine from

Name(_CRS, Buffer(0x1c0)            {
    0x88, 0x0d, 0x00, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
    0x00, 0x00, 0x00, 0x01, 0x47, 0x01, 0xf8, 0x0c, 0xf8, 0x0c, 0x01, 0x08,
    0x88, 0x0d, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x0c,
    0x00, 0x00, 0xf8, 0x0c, 0x88, 0x0d, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x00,
    0x00, 0x0d, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf3, 0x87, 0x17, 0x00, 0x00,
    0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff,
    0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x87, 0x17,
    0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
    0xff, 0x3f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
    0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
    0x0c, 0x00, 0xff, 0x7f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
    0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x80, 0x0c, 0x00, 0xff, 0xbf, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
    0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0xff, 0xff, 0x0c, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0xff, 0x3f, 0x0d, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00,
    0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0d, 0x00, 0xff, 0x7f,
    0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17,
    0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0d, 0x00,
    0xff, 0xbf, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
    0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
    0x0d, 0x00, 0xff, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
    0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x0e, 0x00, 0xff, 0x3f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x40, 0x0e, 0x00, 0xff, 0x7f, 0x0e, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0xff, 0xbf, 0x0e, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00,
    0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0e, 0x00, 0xff, 0xff,
    0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17,
    0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
    0xff, 0xff, 0xbf, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xfe,
    0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0xd4, 0xfe, 0xff, 0xbf, 0xd4, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
    0x00, 0x00, 0x79, 0x00
            })
to
Name(_CRS, Buffer(0x1ee)            {
    0x88, 0x0d, 0x00, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
    0x00, 0x00, 0x00, 0x01, 0x47, 0x01, 0xf8, 0x0c, 0xf8, 0x0c, 0x01, 0x08,
    0x88, 0x0d, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x0c,
    0x00, 0x00, 0xf8, 0x0c, 0x88, 0x0d, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x00,
    0x00, 0x0d, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf3, 0x87, 0x17, 0x00, 0x00,
    0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff,
    0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x87, 0x17,
    0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
    0xff, 0x3f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
    0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
    0x0c, 0x00, 0xff, 0x7f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
    0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x80, 0x0c, 0x00, 0xff, 0xbf, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
    0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0xff, 0xff, 0x0c, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0xff, 0x3f, 0x0d, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00,
    0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0d, 0x00, 0xff, 0x7f,
    0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17,
    0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0d, 0x00,
    0xff, 0xbf, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
    0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
    0x0d, 0x00, 0xff, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
    0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x0e, 0x00, 0xff, 0x3f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x40, 0x0e, 0x00, 0xff, 0x7f, 0x0e, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x03,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0xff, 0xbf, 0x0e, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00,
    0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0e, 0x00, 0xff, 0xff,
    0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17,
    0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
    0xff, 0xff, 0xbf, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xfe,
    0x87, 0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0xd4, 0xfe, 0xff, 0xbf, 0xd4, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
    0x00, 0x00, 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
            })
This of course varies from laptop to laptop.



I really need some help to put my T430 working with eGPU, i´m getting the error 12 and DSDT Override is giving me errors when try to compile to get the aml file, what have u do??? Since we have the same laptop could u provide me the aml file to upload to registry??

--- UPDATE!!

After a fresh win 8.1 install, i still not get the gtx460 to work, i get stuck compiling the dsl to aml file, gives me 2 errors and not sure where they are, is anybody here who could repair a dsl file???
Link to comment
Share on other sites

Hi :)

I have a problem concerning my setup with thinkpad x230, 16gb ram, i7 and GTX 970. After an odyssey with @Tech Inferno Fan without getting setup1.30 to work(thanks again for the patience and all the help :) ), I finally got it working with a DSDT Override manually. It worked fine with windows 8.1 for quite a long time and I could even plug and play the express card while running windows. Then I updated to windows 10 and even then it kept working awesome. But today after like 2 weeks of gaming pause I tried plugging it in again and it did not work. So I looked if the GTX 970 is still in the device manager. BAM.. Code 12 again.. So tried hot plugging while booting in bios and all that stuff I had to try month ago.. without success. Then I saw that there is no "large memory" (which shows after DSDT override) anymore, so I thought the testmode is off, but it was not (or at least it showed on the bottom right corner still testmode on. But to be sure i activated again and tried, no success. Then even though i really didnt know anymore how to do the DSDT Override anymore I found the old links I'd done it the first time with. I even tried several approaches but all just give back "ACPI Error" Bluescreen after reboot so I had to recover windows...

Am I doing something wrong?

Is the new windows 10 preventing the DSDT Override?

Do I need other tools than the ones for win8.1 for compiling and all the loading tables stuff?

I think the Lenovo BIOS updated at some point recently, could it be that?

Any ideas? I would really appreciate.

Thank you.

Link to comment
Share on other sites

Hi :)

I have a problem concerning my setup with thinkpad x230, 16gb ram, i7 and GTX 970. After an odyssey with @Tech Inferno Fan without getting setup1.30 to work(thanks again for the patience and all the help :) ), I finally got it working with a DSDT Override manually. It worked fine with windows 8.1 for quite a long time and I could even plug and play the express card while running windows. Then I updated to windows 10 and even then it kept working awesome. But today after like 2 weeks of gaming pause I tried plugging it in again and it did not work. So I looked if the GTX 970 is still in the device manager. BAM.. Code 12 again.. So tried hot plugging while booting in bios and all that stuff I had to try month ago.. without success. Then I saw that there is no "large memory" (which shows after DSDT override) anymore, so I thought the testmode is off, but it was not (or at least it showed on the bottom right corner still testmode on. But to be sure i activated again and tried, no success. Then even though i really didnt know anymore how to do the DSDT Override anymore I found the old links I'd done it the first time with. I even tried several approaches but all just give back "ACPI Error" Bluescreen after reboot so I had to recover windows...

Am I doing something wrong?

Is the new windows 10 preventing the DSDT Override?

Do I need other tools than the ones for win8.1 for compiling and all the loading tables stuff?

I think the Lenovo BIOS updated at some point recently, could it be that?

Any ideas? I would really appreciate.

Thank you.

If the registry DSDT override doesn't seem to work in Win10 then apply a in-memory substitution in Setup 1.30 which will remain in place once you Chainload to Win10. Details of how to do that are at http://forum.techinferno.com/diy-e-gpu-projects/7476-%5Bguide%5D-dsdt-override-fix-error-12-a.html#post102526

Link to comment
Share on other sites

If the registry DSDT override doesn't seem to work in Win10 then apply a in-memory substitution in Setup 1.30 which will remain in place once you Chainload to Win10. Details of how to do that are at http://forum.techinferno.com/diy-e-gpu-projects/7476-%5Bguide%5D-dsdt-override-fix-error-12-a.html#post102526

That I do not get. I mean the substitution is in place otherwise why would I get a bluescreen, or what do you mean?

And how exactly do I chainload into win10? I mean what options in setup 1.30? Just doing the "testrun" in chainload after i did the "pt MEM ..." command in the setup 1.30 command line?

I also have the problem that the R-W Everything today just opens, fills my 16gb of ram completely and then gives an error after clicking the "ACPI Table" button. What can i do about it? Yesterday when I first installed it, it worked fine.

Link to comment
Share on other sites

That I do not get. I mean the substitution is in place otherwise why would I get a bluescreen, or what do you mean?

And how exactly do I chainload into win10? I mean what options in setup 1.30? Just doing the "testrun" in chainload after i did the "pt MEM ..." command in the setup 1.30 command line?

I also have the problem that the R-W Everything today just opens, fills my 16gb of ram completely and then gives an error after clicking the "ACPI Table" button. What can i do about it? Yesterday when I first installed it, it worked fine.

I pointed out that if the registry DSDT override doesn't work then use the in-memory method instead. Just note the precautions there.. you must make the replacement DSDT table smaller than the original and you must load it into the correct memory address.

I cannot advise you about R-W everything use. Perhaps seek contact with the author if can't make any headway.

Link to comment
Share on other sites

I pointed out that if the registry DSDT override doesn't work then use the in-memory method instead. Just note the precautions there.. you must make the replacement DSDT table smaller than the original and you must load it into the correct memory address.

I cannot advise you about R-W everything use. Perhaps seek contact with the author if can't make any headway.

I got R-W Everything work so now I can confirm that the DSDT table was pulled while first putting it into the in-memory and then chainload with "testrun" into win10 using the setup 1.30. But then again the ACPI Error bluescreen is showing. So is there something wrong with my dsdt.aml table file I am building?

I tried creating the new dsdt table using your approach as well as the one here (http://forum.techinferno.com/diy-e-gpu-projects/3539-guide-dsdt-override-simultaneous-igpu-dgpu-egpu.html) which is a lot faster and easier (but also correct? especially the "fix error" part I am a bit unsecure about).

And the only error I am getting (in both approaches) is:

Name (_IRC, 0x00)

"Reserved name must be a control method (with zero arguments)"

..and some warnings and remarks but those I can ignore right?

The thing is when I click "fix errors" in the DSDT Editor it does something but the line does not change. Is the tool creating something elsewhere to fix it?

Edit: ok with a diff tool I saw that it "fixes" it with changing the line "Name (_IRC, 0x00)" to "Name (IRC, 0x00)"

But that is not an actual fix right?

Without the tool I used the fix I found on "Brightbulb" which is not online anymore, but was especially for egpu with x230 16gb ram and worked before yesterday:

  • It is unlikely this will succeed first time, as the compiler is very strict. In general warnings are acceptable, but errors may require some fiddling. In the case of the X230, I had one error:

dsdt.dsl 7429: Name (_IRC, 0x00)

Error 6103 - ^ Reserved name must be a control method (with zero arguments)This error refers to line 7429 which contains

Name (_IRC, 0x00) // _IRC: Inrush CurrentUsing a patch I found here I changed this line to read

Method (_IRC, 0, NotSerialized) { Return(0x00) }

Is that valid? Are both working?

EDIT:

About the size, the resulting dsdt.aml is 62kb and the first dumped dsdt.dat file is 69kb so all good right? But Reading this I am a bit confused because when I first did this months ago I in windows 8.1 I had to delete the Win95/WinXP/... entries to make the file smaller and to get it working. Why not anymore? Win10?

Link to comment
Share on other sites

  • 3 weeks later...

@chrisr_ocks

I also have a X230 (T) with 16gb RAM with Win 10.

My eGPU setup is not working right now, but I have override the DSDT successfully on this computer.

In order to do it, get the last IASL tools: https://www.acpica.org/downloads

Get the lastest WDK fo Win 10: https://msdn.microsoft.com/en-us/windows/hardware/dn913721.aspx

Now, thx to SBP for the biggest part of the solution.

Use iasl to drop your dsdt.dat and generate the dsdt.dsl with it.

Now, do the trick with the QWordMemory.

If you try to compile, you will get an error, something like:

Name (_IRC, 0x00) // _IRC: Inrush Current

Find this line in the .dsl and replace it by:

Method (_IRC, 0, NotSerialized) { Return(0x00) }

it should compile but the trick is to use this new .aml for his table.

Install the WDK (10) . Open a admin cmd line and go to: Program Files(x86)/Windows Kits/10/Tools/x64/ACPIVerify

Put your .aml also in there but rename it! Let say: new.aml

Now run asl /u new.aml

A .ASL will be created, open it and try to find the table _CRS. If you did the QWordMemory correctly, the table value will be : 0x1ee.

DO A RESTORE POINT!

Now, extract your actual DSDT using ASL: asl /tab=DSDT

You have the DSDT.asl.

Find the same table and it should be smaller. Replace it carefully.

Now, compile the .asl: asl DSDT.asl

If it crashes, it's normal! Why I don't know, but I know how to fix it.

It is a problem with ATMC(). It is not defined.

Search in the .asl for all instance of ATMC and you will find:

\_SB_.PCI0.LPC_.EC__.ATMC()

The first part is actually a header, the same as C++ for ::. You need to update all your ATMC() with this.

Be careful, You will have ATMC WITHOUT (). DO NOT UPDATE THIS ONE.

Compile again the .asl and it should works.

Load the .aml:

asl /loadtable DSDT.aml

And use the signkey:

bcdedit -set TESTSIGNING ON

Reboot!

If you have a bluescreen again, remember the restore point!

But for me, it works and I can assign my eGPU to 36 bit using setup 1.3.

(Check attachment Large Memory)

Sadly, my eGPU doesn't work :( I don't have any errors anymore, the eGPU is place on the large memory, but I don't have any display)

Here's my actual situation:

- The GPU is connected to the adapter (PE4H)

- The Card is powered by a 6 pin connector and the PSU is 550W.

- The display is plug (And the display works normally using the docking station of Lenovo.)

- My driver are up to date

- The device manager list everything correctly

- I have Windows 10

- No display is detected by the "display settings"

The GPU-Z tools give me my model, but some settings cannot be found.

Check attachment gpu-z

Did anyone knows what the next step could be?

post-40245-14495001037223_thumb.png

post-40245-14495001037492_thumb.png

Link to comment
Share on other sites

×
×
  • Create New...

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.