• Announcements

    • Brian

      Introducing T|I Marketplace/Classifieds!   11/24/16

      After a long wait, Tech|Inferno now has a Marketplace/Classifieds section where all registered (promoted and above) members can participate in selling, trading and seeking out items. This service is free to all members to use as they wish. Currently all ads last for a period of 14 days before they expire for promoted users. Those users belonging to T|I Elite, Contributor, Developer and Moderator have access to 30 day ad periods that are featured   Some easy rules to remember: Do not post multiple ads of the same product. Do not advertise here if you are a retailer or business. You must contact Tech|Inferno for advertising space. Keep ads civil, do not try to lowball members. You may contact them in private via PM if you feel their price is not to your liking. Harassing members will result in an infraction. It is recommended you have Heatware/eBay feedback to establish trading credibility.    Tech|Inferno assumes no liability for any sales posted in the Classified section. Always use common sense when buying/selling with traders and ask for their heatware/ebay feedback!   Enjoy!
Tech Inferno Fan

[GUIDE] DSDT override to fix error 12

169 posts in this topic

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.

 

4 people like this

Share this post


Link to post
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.

 

1 person likes this

Share this post


Link to post
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?

Share this post


Link to post
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.

1 person likes this

Share this post


Link to post
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

1 person likes this

Share this post


Link to post
Share on other sites
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.
2 people like this

Share this post


Link to post
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!!

Share this post


Link to post
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.

1 person likes this

Share this post


Link to post
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.

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.

1 person likes this

Share this post


Link to post
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?

Share this post


Link to post
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.

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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???

Share this post


Link to post
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.

Share this post


Link to post
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

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
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?

Share this post


Link to post
Share on other sites

@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

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 Irons324
      So, I sold my eGPU setup, which was a GTX 970 in a Thunder2 enclosure using a Corsair VS550 psu. Worked fine when I owned it, my MacBook died, so I've sold it to a friend. 
       
      Set it up fine on his mid 2012 MBP no worries, everything seemed to work fine at first. Now, a day later, every time he loads heroes of the storm (or any game for that matter) the computer black screens and resets, throws up a GPU panic error code. Sometimes it will last a little longer than others, but the predominate issue is that the fans often aren't spinning when the radiator gets hot. The fans work, because they spin up on start up. 
       
      Ideas for what could be causing this issue?
       
      Thanks.
    • By unapalada
      Hi there,
       
      So I'm having a little issue with my egpu setup and if anyone could give me some hinters that would be great.
       
      Basically I've done this before with this same laptop on a 980ti which worked perfectly and now I have a 1060.
       
      Only problem is, I've installed everything correctly, theres no error messages in device manager, says this device is working correctly BUT when I go to play games, it decides to run the dgpu instead. Now I've run some benchmarks and the 1060 is being used, getting 150fps. I do have to disable the AMD though.
       
      So, my question to the pros is, what happens next?
      I've tried using the latest drivers from nvidia, tried uninstalling everything with Display Drive Uninstaller and trying again, tried using a safe driver version (372.70) because I read the latest one was buggy..
      Tried uninstalling and disabling microsoft basica display adapter only to get the same results..
       
      I also get an error when trying to access nvidia control panel "nvidia display settings are not available, you are not currently using a display attached to an nvidia gpu" but it shows in device manager as "working properly"
       
      It also doesn't show in dxdiag as well. only shows the AMD.
       
      I'm not using an external display if that helps..
       
       
      any help would be appreciated!!
       
       
      EDIT: I have been getting code 12 errors with my current driver 372.70
      Does this mean I need to do a DSDT override? 
      I'd like to not have to deal with coding etc but if necessary then I can try.
      I have tried to update to the latest driver version but that hasn't really been helping either.
      Anyway thanks
    • By huntliba
      Hi everyone,
      I have a problem with my rig (Win7, at the moment nvidia 372.90 ). Everything works for some time and then then its gets nvlddmkm.sys error (stoped responding and recovered). In best times its recovers but sometimes I get BSOD. 
      I have tried different drivers, TdrDelay, TdrDdiDelay, HDMI audio off, power to max peformance in nvidia controls, Gen2 to Gen1 in BIOS.
      My brain is fried allready :S

      Can anyone give me some clues or solutions?

      Regards,
    • By mark-oli-mts
      Hallo there!
       
      For the first, here is my system:
      - MacBook Pro, late 2015 (no dedicated graphics card)
      - Mac OS Sierra 10.12.4
      - Akitio Thunder 2 (with additional 650 W power supply)
      - Nvidia GTX 980 ti
       
      And now my problem:
       
      After about half a year my eGPU setup suddenly stops to work.
      When I start my Mac with connected gpu up, the boot process crashes.
       
      Some days ago I made an update from 10.12.3 to 10.12.4 and update the NVIDIA web driver. After this my setup works just like befor.
      It was not the first time I install an update.
       
      But today everything goes down.
      Here are my vain try's to repair the system:
       
      1. reinstall automate-GPU; Automate recognition the graphic card but the mac still not boot
      2. Try to use automate-GPU "-a" mode
      3. Disable csrutil in recovery mode
      3. Play back old timemachine backup (SAME PROBLE, THE MAC DOES NOT BOOT!)
      4. Install clean Mac OS from recovery (does not work to..)
       
      All this measures have brought nothing...
       
      Do someone have the same problem like me?
      If someone has a ideas what to do, please let me know.
       
      Thank you!
    • By dnkei
      EDIT: SOLUTION on my 4th post.
       
      Hi all,
       
      I just wanted to know if anyone found a fix for the cpu idle bug without hibernating. 
      First of all, I made my setup in 2015 and I just used an external monitor since at the time making it work with optimus having a dgpu was unknown. Recently I read that disabling the dgpu was an option so I quickly got "up to date" reading the new stuff, but I might have missed something. Keeping that in mind:
      I have a MBPr Late 2013 (GT750M dgpu) with an Akitio Thunder Box, with a dell power supply (which I always thought it might not be enough because I had to limit the power with Afterburner to 80% so it wouldn't shut down when playing a few hours) and an Nvidia GTX970 (KFA 4GB).
      Since I was using a Win 7 on Bootcamp/BIOS I decided to start from scratch: got a Win 10 EFI installed, got reFind so I could activate the visibility of the Iris igpu, and although it seems to be much more buggy, got to run the system with the egpu. Then disabled the dgpu on the device manager, used the switch-gpu bat file as admin to get the igpu as main, so far so good. Shut down, Boot.
      I get to the point where I basically have the egpu working and I tried running Tomb Raider's benchmark (what I had at hand) and it was going smoothly (which wouldn't be like that with the iris or dgpu). Also, looking at msi afterburner my egpu was at 100%.

      The ONLY thing that I can't by any means get to work is to not have the CPU idle crazy load. I get around 25-30% of CPU load and if I try to hibernate the system it... well it goes to hell, haha.
      The MBP seems to hibernate (sleep/shutdown black, fans out) but the egpu is still on with the fans (doesn't really hibernate), and from there its impossible to make it run. Pressing any button, alt, power, whatever, it tries to wake up/power on for a moment, but it simply can't finish, just black screen with the fans turning on. The only way to shut it down is to hold the power button. And after that it basically locks there and becomes even difficult to boot again, I actually have to press alt, go back to osx, reinstall refind - since it no longer appears with it trying to wake up from hibernation- run windows efi and quickly press shift+f8 to run in safe mode and then boot correctly (and again with the cpu load).
       
      I have to say that even when working, my macbook pro doesn't consistently boot with the egpu via thunderbolt2, with any combination (wait to plug the cable, have it powered on, off, preboot, when starting windows, etc.) it just seems to randomly work. It used to work a bit better before refind, though, but never consistently (don't know if that has changed in the past years).
       
      So... any ideas of how to get that cpu load off? Or to make hibernation work? 
      Oh, as a note, I read that when you disable the dgpu and use the switchgpu script you can control the screen brightness again, but I just have it locked to the max. The control osd appears and moves but it doesn't actually change. I don't care about it but I thought it might give a hint of something not done properly?

      Many thanks to whoever can give me any ideas!!!
       
      EDIT: Reduced part of the cpu idle from known w10 small stuff but the main bug is still there, about 15%)