Dsdt override egpu error 12 fix

Page shortcut: /a> | dsdt [GUIDE] DSDT override eGPU error 12 fix (Windows only) here ◄ Mac owners please work through this thread to solve...

nando4

(@nando4)

Famed Member Admin

Joined: 6 years ago

December 23, 2016 5:20 pm  

Page shortcut:  https://egpu.io/DSDT   |  dsdt

[GUIDE] DSDT override eGPU error 12 fix (Windows only)

here Mac owners please work through this thread to solve error 12 before doing a DSDT override
here pre-compiled DSDT overrides  — load or use as reference when making your own

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

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


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

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

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

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

macOS users: refer instead to Mikeal’s post that covers these steps titled Windows 10 — Clover DSDT memory override [UEFI Windows on Macbooks only].


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

[Please login to see this]

OPTION 1: Use the Intel method

[Please login to see this]

OPTION 2: Use the Microsoft method

[Please login to see this]

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

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

[Please login to see this]

[Please login to see this]

[Please login to see this]

OPTION 2: Avoid test signing mode — load your dsdt-modified.aml as an in memory DSDT substitution

[Please login to see this]

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

[Please login to see this]

[Please login to see this]

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

[Please login to see this]

2. How do I disable the registry DSDT override?

[Please login to see this]

eGPU Setup 1.35    •    eGPU Port Bandwidth Reference Table

 
2015 15″ Dell Precision 7510 (Q M1000M) [6th,4C,H] + GTX 1080 Ti @ 32Gbps-M.2 (ADT-Link R43SG) + Win10 1803 // compares M.2 vs TB3 performance inc unoptimized H-CPU BIOS [build link]  

nando4

(@nando4)

Famed Member Admin

Joined: 6 years ago

December 24, 2016 3:11 am  

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

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

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

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

 Pre-requisite requirements

  • A c:dsdtdsdt-modified.aml file created at step1 above or downloaded from eGPU.io’s DSDT repository.
  • This c:dsdtdsdt-modified.aml must be smaller than your memory dumped dsdt.dat

    Check by doing a file size comparison like shown here. Setup 1.35 also does this check before loading your dsdt-modified.aml and won’t load  it f it doesn’t pass. This prevents corruption of other ACPI tables which would cause a Windows boot to crash.

    To achieve a smaller dsdt-modified.aml file, incrementally remove sections listed below in your  dsdt-modified.dsl  (Intel method) or  dsdt-modified.asl  (Microsoft method), followed by a recompile with ‘iasl -ve  dsdt-modified.dsl ‘  or ‘asl /Fo=dsdt-modified.aml dsdt-modified.asl ‘ respectively. Then re-do the file size comparison.

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

    ii. remove unused PEG0, PEG1, PEG2, used to host a dGPU.  If do have a dGPU and intend to use it when your eGPU is active then keep PEG0.

    iii. remove non-existent LPT (parallel ports), COM (serial) and eSATA ports.

    iv. If have access to macOS, use MaciASL to compile your dsdt-modified.dsl. It creates a smaller dsdt-modified.aml.

How to load your dsdt-modified.aml via DIY eGPU Setup 1.35

1. Copy your dsdt-modified.aml file as dsdt.aml into Setup 1.35’s  v:config directory

:: Mount the Setup 1.35 disk image as V: drive
c:eGPUeGPU-setup-mount
copy c:dsdtdsdt-modified.aml v:configdsdt.aml

2. Boot into nando’s DIY eGPU Setup 1.35 -> automated startup via startup.bat (default).

It will automatically load this dsdt.aml file and present the Windows bootloader where you then select Windows. Check for the ‘Large Memory’ area to indicate a successful in-memory DSDT override like shown below in View->Devices By Connection. Then check for error 12 against your eGPU..

3. If there is an error 12. then force allocate the eGPU into the DSDT override’s 36-bit PCI space:

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

Yes.  Below we see the new ‘Large Memory Area’ indicating the PCI BUS now extends into 36-bit PCI space with the iGPU (didn’t have an eGPU at hand) relocated into that 36-bit space.

 

This post was modified 2 months ago

eGPU Setup 1.35    •    eGPU Port Bandwidth Reference Table

 
2015 15″ Dell Precision 7510 (Q M1000M) [6th,4C,H] + GTX 1080 Ti @ 32Gbps-M.2 (ADT-Link R43SG) + Win10 1803 // compares M.2 vs TB3 performance inc unoptimized H-CPU BIOS [build link]  

nando4

(@nando4)

Famed Member Admin

Joined: 6 years ago

December 24, 2016 7:57 am  

Posted by: SamuelFDias

 Hello there! Smile no problem.

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

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

Posted by: Yukikaze

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

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

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

eGPU Setup 1.35    •    eGPU Port Bandwidth Reference Table

 
2015 15″ Dell Precision 7510 (Q M1000M) [6th,4C,H] + GTX 1080 Ti @ 32Gbps-M.2 (ADT-Link R43SG) + Win10 1803 // compares M.2 vs TB3 performance inc unoptimized H-CPU BIOS [build link]  

itsage

(@itsage)

Founder Admin

Joined: 6 years ago

sobi123

(@sobi123)

New Member

Joined: 6 years ago

January 13, 2017 10:20 am  

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

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

Many thanks

Sobi

To do: Create my signature with system and expected eGPU configuration information to give context to my posts. I have no builds.

.

Yukikaze

(@yukikaze)

Noble Member Moderator

Joined: 6 years ago

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

Mikeal

(@mikeal)

Active Member

Joined: 6 years ago

Devaspark

(@devaspark)

New Member

Joined: 6 years ago

January 20, 2017 12:51 am  

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

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

After booting up, you can connect the adapter normally.

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

Hope this helps.

To do: Create my signature with system and expected eGPU configuration information to give context to my posts. I have no builds.

.

Mikeal

(@mikeal)

Active Member

Joined: 6 years ago

Hi Devaspark,

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

2016 15″ MacBook Pro (RP460) [6th,4C,H] + GTX 980 Ti @ 32Gbps-TB3 (Razer Core) + macOS 10.12 & Win10 [build link]  

StevenOmg

(@stevenomg)

New Member

Joined: 6 years ago

Hi,Devaspark @ Devaspark

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

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

To do: Create my signature with system and expected eGPU configuration information to give context to my posts. I have no builds.

.

nando4

(@nando4)

Famed Member Admin

Joined: 6 years ago

December 23, 2016 5:20 pm  

Page shortcut:  https://egpu.io/DSDT   |  dsdt

[GUIDE] DSDT override eGPU error 12 fix (Windows only)

here Mac owners please work through this thread to solve error 12 before doing a DSDT override
here pre-compiled DSDT overrides  — load or use as reference when making your own

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

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


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

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

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

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

macOS users: refer instead to Mikeal’s post that covers these steps titled Windows 10 — Clover DSDT memory override [UEFI Windows on Macbooks only].


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

[Please login to see this]

OPTION 1: Use the Intel method

[Please login to see this]

OPTION 2: Use the Microsoft method

[Please login to see this]

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

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

[Please login to see this]

[Please login to see this]

[Please login to see this]

OPTION 2: Avoid test signing mode — load your dsdt-modified.aml as an in memory DSDT substitution

[Please login to see this]

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

[Please login to see this]

[Please login to see this]

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

[Please login to see this]

2. How do I disable the registry DSDT override?

[Please login to see this]

eGPU Setup 1.35    •    eGPU Port Bandwidth Reference Table

 
2015 15″ Dell Precision 7510 (Q M1000M) [6th,4C,H] + GTX 1080 Ti @ 32Gbps-M.2 (ADT-Link R43SG) + Win10 1803 // compares M.2 vs TB3 performance inc unoptimized H-CPU BIOS [build link]  

nando4

(@nando4)

Famed Member Admin

Joined: 6 years ago

December 24, 2016 3:11 am  

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

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

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

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

 Pre-requisite requirements

  • A c:dsdtdsdt-modified.aml file created at step1 above or downloaded from eGPU.io’s DSDT repository.
  • This c:dsdtdsdt-modified.aml must be smaller than your memory dumped dsdt.dat

    Check by doing a file size comparison like shown here. Setup 1.35 also does this check before loading your dsdt-modified.aml and won’t load  it f it doesn’t pass. This prevents corruption of other ACPI tables which would cause a Windows boot to crash.

    To achieve a smaller dsdt-modified.aml file, incrementally remove sections listed below in your  dsdt-modified.dsl  (Intel method) or  dsdt-modified.asl  (Microsoft method), followed by a recompile with ‘iasl -ve  dsdt-modified.dsl ‘  or ‘asl /Fo=dsdt-modified.aml dsdt-modified.asl ‘ respectively. Then re-do the file size comparison.

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

    ii. remove unused PEG0, PEG1, PEG2, used to host a dGPU.  If do have a dGPU and intend to use it when your eGPU is active then keep PEG0.

    iii. remove non-existent LPT (parallel ports), COM (serial) and eSATA ports.

    iv. If have access to macOS, use MaciASL to compile your dsdt-modified.dsl. It creates a smaller dsdt-modified.aml.

How to load your dsdt-modified.aml via DIY eGPU Setup 1.35

1. Copy your dsdt-modified.aml file as dsdt.aml into Setup 1.35’s  v:config directory

:: Mount the Setup 1.35 disk image as V: drive
c:eGPUeGPU-setup-mount
copy c:dsdtdsdt-modified.aml v:configdsdt.aml

2. Boot into nando’s DIY eGPU Setup 1.35 -> automated startup via startup.bat (default).

It will automatically load this dsdt.aml file and present the Windows bootloader where you then select Windows. Check for the ‘Large Memory’ area to indicate a successful in-memory DSDT override like shown below in View->Devices By Connection. Then check for error 12 against your eGPU..

3. If there is an error 12. then force allocate the eGPU into the DSDT override’s 36-bit PCI space:

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

Yes.  Below we see the new ‘Large Memory Area’ indicating the PCI BUS now extends into 36-bit PCI space with the iGPU (didn’t have an eGPU at hand) relocated into that 36-bit space.

 

This post was modified 2 months ago

eGPU Setup 1.35    •    eGPU Port Bandwidth Reference Table

 
2015 15″ Dell Precision 7510 (Q M1000M) [6th,4C,H] + GTX 1080 Ti @ 32Gbps-M.2 (ADT-Link R43SG) + Win10 1803 // compares M.2 vs TB3 performance inc unoptimized H-CPU BIOS [build link]  

nando4

(@nando4)

Famed Member Admin

Joined: 6 years ago

December 24, 2016 7:57 am  

Posted by: SamuelFDias

 Hello there! Smile no problem.

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

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

Posted by: Yukikaze

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

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

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

eGPU Setup 1.35    •    eGPU Port Bandwidth Reference Table

 
2015 15″ Dell Precision 7510 (Q M1000M) [6th,4C,H] + GTX 1080 Ti @ 32Gbps-M.2 (ADT-Link R43SG) + Win10 1803 // compares M.2 vs TB3 performance inc unoptimized H-CPU BIOS [build link]  

itsage

(@itsage)

Founder Admin

Joined: 6 years ago

sobi123

(@sobi123)

New Member

Joined: 6 years ago

January 13, 2017 10:20 am  

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

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

Many thanks

Sobi

To do: Create my signature with system and expected eGPU configuration information to give context to my posts. I have no builds.

.

Yukikaze

(@yukikaze)

Noble Member Moderator

Joined: 6 years ago

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

Mikeal

(@mikeal)

Active Member

Joined: 6 years ago

Devaspark

(@devaspark)

New Member

Joined: 6 years ago

January 20, 2017 12:51 am  

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

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

After booting up, you can connect the adapter normally.

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

Hope this helps.

To do: Create my signature with system and expected eGPU configuration information to give context to my posts. I have no builds.

.

Mikeal

(@mikeal)

Active Member

Joined: 6 years ago

Hi Devaspark,

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

2016 15″ MacBook Pro (RP460) [6th,4C,H] + GTX 980 Ti @ 32Gbps-TB3 (Razer Core) + macOS 10.12 & Win10 [build link]  

StevenOmg

(@stevenomg)

New Member

Joined: 6 years ago

Hi,Devaspark @ Devaspark

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

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

To do: Create my signature with system and expected eGPU configuration information to give context to my posts. I have no builds.

.

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.

dimka4996

Member

Аватар користувача

Звідки: Володимир

Не знаю в общем куда запостить тему, либо в ноутбуки, либо в видеокарты.

Имеем MacBook Pro 13 2019, внешний бокс для видеокарты OWC Helios FX и пару видеокарт.

Загорелся идеей, подключил. Захотел немного поиграть в Windows. Поставил, но RX470 дала код 12 в диспетчере устройств. Попробовал gtx980, заработала нормально. Поставил 1060 3gb — тоже работает. Поставил R9 390 знакомого — опять то самое, код 12, поставил RX550 — тоже код 12. Карты рабочие, в макоси 470ая(390 и 550 не поддерживаются) работает, под виндой код 12. Если есть тут пользователи eGPU, то мог бы кто подсказать в чем проблема?

спойлер
IMG_20210718_172648_262.jpg

dimka4996

Member

Аватар користувача

Звідки: Володимир

Повідомлення

19.07.2021 11:51

Norbertano
Не, не помогло. Придется dsdt делать

Norbertano

Member

Повідомлення

19.07.2021 11:53

Если доступен такой зоопарк видеокарт, не проще использовать nvidia

dimka4996

Member

Аватар користувача

Звідки: Володимир

Повідомлення

19.07.2021 12:10

Norbertano
Не, у меня только АМД есть, остальные брал попробовать

dimka4996

Member

Аватар користувача

Звідки: Володимир

Повідомлення

29.07.2021 04:01

В общем решил проблему просто: продал карту от AMD и поменял на Nvidia. Вылечить код 12 так и не смог, как и половина форума eGPU.io, карты AMD адекватно работают только под macOS. Причина простая, в DSDT ноутбуков, не только Apple, ещё Dell, HP, Lenovo (Differentiated System Description Table. «дифференцированная таблица описания системы») прописан слишком маленький объем Large Memory, этот объем занимают pci устройства. Так как производитель ноутбука не предусматривал ноутбук с дискретной графикой — он прописал этот параметр впритык практически, там всего пару устройств может влезть, например nvme ssd или ещё что-то. Nvidia занимает этой памяти по размеру как USB hub либо wifi, потому с ней проблем нет, но AMD Radeon занимает больше, плодится high definition audio практически на каждый видеовыход(у GeForce один общий на все сразу), различные устройства типа AMD crash reporter, они тоже занимают эту память и по счастливой случайности на эту память опирается только Windows, Linux и macOS эти значения игнорируют и используют устройство как обычно. Кто будет брать eGPU — советую иметь ввиду.

If anyone is still interested I have found the solution for audio on MBP 2011 Windows 10 UEFI installs — it has taken me 4 years to figure out. I was given the answer from a tutorial only adjacently related -here:

https://egpu.io/forums/pc-setup/fix-dsdt-override-to-correct-error-12/

essentially what we knew was that windows didn’t ‘see’ the correct audio devices when booted in pure efi-

The part that was frustrating to me was that many users like myself have lots of UEFI installs on their 2011 MBP and those OS’s have no problem ‘seeing’ the HD audio controller —

So what was windows doing different?

I had messed around with mm commands in a UEFI shell (The shell provided in the rEFIt package) to no avail*

I had tried to pass SETPCI commands from grub into Windows 10- no luck*

A quote from the link above got my brain spinning

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

So Windows ‘honors’ the root bridge and OSX and linux disregard it —hmmm interesting.

As someone who also deals in hackintoshes I am very aware of DSDT’s and how editing them can help get OSX running on home brew PC hardware- I had played around with installing Clover (the UEFI bootloader almost synonymous with Hackintoshes) on USB thumb drives and putting the DSDT from my MBP 2011 in the /Clover/ACPI/Windows folder — still nothing— I thought that pointing windows to a DSDT would be enough…….

A side note is that there are people who have ‘bricked’ their real Macs when using clover, I have never had that issue personally (a sub-link in the link above describes such a situation)*

If you follow the guide and make a modified DSDT (one that add ‘qwords’ to the dwords section) you can test it in two ways-

I used Maciasl to extract and edit my DSDT to add a ‘Qword’ section — I placed the DSDT in two locations /EFI/Clover/ACPI/Patched [not sure if that one matters] & /EFI/Clover/ACPI/Windows

holding ALT/option during bootup I selected «EFI Boot» from the USB clover and booted into Clover

for the exact Clover configuration send me a message

After booting into windows the sound card was immediately working (this was because I had installed the cirrus logic drivers from bootcamp 4) — the display audio driver in device manager had an exclamation point but I was able to install the display audio driver from intel’s driver support for the i7 2470m CPU in this machine-

I also looked at device manager via ‘by resources’ and saw that a new entry ‘Large memory with an address range appeared

And low and behold the address range for the ‘large memory section’ contained the range for the hd audio controller

I then wanted to see if the method described in the initial link posted above where you force that memory map into the registry and turn on ‘test signing’ worked —

it did, which allowed me to boot directly into windows without the help of clover —

*NOTE: when I tested the registry method I skipped the first few steps since I already had a modified DSDT- I did need to create the ‘C:dsdt folder and extract the windows binaries to that folder — but I did not use their acpi dump nor compiler (I check for errors and compiled my dsdt in Maciasl in OSX)

I would gladly go more in depth but I doubt there are many more who need this information- just glad to have figured it out without the BIOS emulation of bootcamp- going to test this method on other ‘pre 2013′ Macs with non complient UEFI bios’

Dsdt override for eGPU — hp probook 6570b (win7x64)

When I dissassemle I get this error message:

acpidump -b
iasl dsdt.dat

Intel ACPI Component Architecture
ASL+ Optimizing Compiler version 20150515-32
Copyright (c) 2000 — 2015 Intel Corporation

Binary file appears to be a valid ACPI table, disassembling
Reading ACPI table from file dsdt.dat — Length 00144553 (0x0234A9)
ACPI: DSDT 0x0000000000000000 0234A9 (v02 HPQOEM 17AB 00000001 INTL 20110112)
Acpi table [DSDT] successfully installed and loaded
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)

Parsing completed

Found 2 external control methods, reparsing with new information
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)

Parsing completed
ACPI Warning: NsLookup: Type mismatch on HASH (RegionField), searching for (Buffer) (20150515/nsaccess-727)
Disassembly completed
ASL Output: dsdt.dsl — 1013371 bytes

iASL Warning: There were 2 external control methods found during
disassembly, but additional ACPI tables to resolve these externals
were not specified. The resulting disassembler output file may not
compile because the disassembler did not know how many arguments
to assign to these methods. To specify the tables needed to resolve
external control method references, the -e option can be used to
specify the filenames. Note: SSDTs can be dynamically loaded at
runtime and may or may not be available via the host OS.
Example iASL invocations:
iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml
iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml
iasl -e ssdt*.aml -d dsdt.aml

In addition, 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

Then..after adding :
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)

Compiling throws these errors:

C:UsersfacultyDownloadsiasl>iasl dsdtmod.dsl

Intel ACPI Component Architecture
ASL+ Optimizing Compiler version 20150515-32
Copyright (c) 2000 — 2015 Intel Corporation

Compiler aborting due to parser-detected syntax error(s)
dsdtmod.dsl 3979: If (CondRefOf (FPED))
Error 6126 — ^ syntax error, unexpected PARSEOP_IF

dsdtmod.dsl 28292:
Error 6126 — syntax error, unexpected PARSEOP_METHOD, expecting $end and premature End-Of-File

ASL Input: dsdtmod.dsl — 28292 lines, 917450 bytes, 11191 keywords

Compilation complete. 2 Errors, 0 Warnings, 0 Remarks, 0 Optimizations

Any help is appreciated, I am attaching my dsdtmod.dsl file (zipped).

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Ds4windows ошибка net framework
  • Ds4 ошибка драйвера
  • Ds4 using exclusive mode как исправить
  • Ds4 driver error
  • Ds3 tool error code 0x3

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии