Jump to content

ACPI (DSDT) Patcher for BIOS and AML


koalala
 Share

845 posts in this topic

Recommended Posts

koalala. I have already modified my DSDT with GIGE by hands, but thanks anyway :)

 

Here is screenshot from IORegistryExplorer (sorry if that will not provide with needed info). As you can see my video is on pop2 (screenshot is made when using DSDT.aml below, but it is there even without it and is fully working when using EFI Studio)

 

28201925lm2.th.png

 

fixeddsdt.aml.zip

Link to comment
Share on other sites

Of course ;) . I am using only AppleDecrypt in my Extra and my dream is to have a fully working system with keeping it so. I am testing this on a fresh system with nothing added or installed.

 

I do not know if this is important but I had moment when I forgot to remove AppleSMBIOSEFI from Extra. With this I had beautiful graphic glitches and bags especially with scrollers :) .

Link to comment
Share on other sites

Well, am i screwed? I first patched the dsdt.aml and all was fine. Thought i would then patch the bios since all went well w/ dsdt.aml patch. I patched the bios w/ no errors. Flashed the bios and went to reboot. Now machine starts no beeps and will not post to cmos. It starts 3 seconds then restarts same thing over. I tried to clear cmos w/ jumper - same result. pulled battery - same result. Dual bios won't kick in either. Any help is appreciated.

 

GA ep43 ds3l w/ qc6600

Link to comment
Share on other sites

koalala

 

Can you share only base patcher files without installer? I have a trouble with it installation.

I have installed net framework 3.5, but the installer trying install it again without success -_- .

 

Don't run setup.exe, it always trying to install .Net Framework or maybe other components. If you'll run .application file the program will be installed like it should.

Link to comment
Share on other sites

Don't run setup.exe, it always trying to install .Net Framework or maybe other components. If you'll run .application file the program will be installed like it should.

OK

Thanks I have already solved this "problem" the same way.

Link to comment
Share on other sites

Dear koalala! Great thanks!

 

Your patcher simply put videocard (Device(GFX0)) into Device(PEGP) (which I do not understand). After deleting it and leaving simply Device(GFX0) under pop2 my video is fully working!!!! :D

 

Great thanks for patcher cause I wouldn not be able to compose acpi code for video myself ;)

 

PS: All the people (maybe) having such a problem consider a try :P

Link to comment
Share on other sites

Dear koalala! Great thanks!

 

Your patcher simply put videocard (Device(GFX0)) into Device(PEGP) (which I do not understand). After deleting it and leaving simply Device(GFX0) under pop2 my video is fully working!!!! :D

 

Great thanks for patcher cause I wouldn not be able to compose acpi code for video myself :rolleyes:

 

PS: All the people (maybe) having such a problem consider a try :P

It will be fixed in Beta 2.

 

crencom, read this : http://www.tomshardware.com/forum/251580-3...or-restart-loop

Many P35, P45, P43 and X38 Gigabyte card have a problem with infinite loop reboot and flasing BIOS can cause problems (with an original BIOS too).

Try recovery your BIOS with a floppy but I think it will not change anything.

Link to comment
Share on other sites

Question about fixing LAN (Timemachine fix) patch function- i think that makes same as setting LAN to internal by EFI string.

 

What must i select in the device tab of LAN ?

There are some PCI ,.... (all 3 charact) things i must select one of them.

How can i find out what i must set - using an running+working OS X Leo.

I can see that there is such PEX4@1C,4 shown in the IOREGISTERYEXPLORER (screenshoot added(

which belongs to lan/ethernet device.

What , if tools doesnt work , can i manual change/add to do same (LAN/TM fix) ?

 

Thanks

 

Part of my orig. GA-EP35-DS3 dsdt PEX4

Device (PEX4)

{

Name (_ADR, 0x001C0004)

Method (_STA, 0, NotSerialized)

{

Return (0x0F)

}

Method (_PRW, 0, NotSerialized)

{

Return (Package (0x02)

{

0x09,

0x05

})

}

Name (PIC4, Package (0x04)

{

Package (0x04)

{

0xFFFF,

0x00,

\_SB.PCI0.LNKA,

0x00

},

Package (0x04)

{

0xFFFF,

0x01,

\_SB.PCI0.LNKB,

0x00

},

Package (0x04)

{

0xFFFF,

0x02,

\_SB.PCI0.LNKC,

0x00

},

Package (0x04)

{

0xFFFF,

0x03,

\_SB.PCI0.LNKD,

0x00

}

})

Name (API4, Package (0x04)

{

Package (0x04)

{

0xFFFF,

0x00,

0x00,

0x10

},

Package (0x04)

{

0xFFFF,

0x01,

0x00,

0x11

},

Package (0x04)

{

0xFFFF,

0x02,

0x00,

0x12

},

 

Package (0x04)

{

0xFFFF,

0x03,

0x00,

0x13

}

})

Method (_PRT, 0, NotSerialized)

{

If (LNot (PICF))

{

Return (PIC4)

}

Else

{

Return (API4)

}

}

}

Bild_226.jpg

Link to comment
Share on other sites

koalala. Seems strange to me that in most cases Device(PEGP) is correctly recognized and working. I have an idea that maybe DSDT from some motherboards miss its declaration. I had to put some kind of declaration for GIGE to make it work.

 

That seems true. Found this in DSDT of a guy, whom patch helped.

 

Device (PEGP)

{

Name (_ADR, 0x00010000)

Name (PPS1, Package (0x02)

{

0x0B,

0x04

})

Method (_PRW, 0, NotSerialized)

{

Return (PPS1)

}

 

OperationRegion (ORP0, PCI_Config, Zero, 0xFF)

Field (ORP0, AnyAcc, NoLock, Preserve)

{

RPID, 32,

Offset (0x34),

CPLT, 8,

Offset (0x58),

SSLC, 10,

Offset (0x5A),

SSLS, 7,

Offset (0x5C),

Offset (0x60),

SQID, 16,

SPME, 1,

SPMP, 1,

Offset (0x64),

Offset (0xB8),

NSLC, 10,

Offset (0xBA),

NSLS, 7,

Offset (0xBC),

Offset (0xC0),

NQID, 16,

NPME, 1,

NPMP, 1,

Offset (0xC4),

Offset (0xDC),

, 31,

RPSC, 1

}

 

OperationRegion (PCEW, SystemIO, 0x0401, One)

Field (PCEW, ByteAcc, NoLock, Preserve)

{

, 6,

PCWS, 1

}

 

Method (XPM1, 1, NotSerialized)

{

Store (Zero, Local0)

If (LEqual (RPID, Ones))

{

Return (Zero)

}

 

If (LGreaterEqual (Arg0, 0x08))

{

Store (NPME, Local0)

While (NPME)

{

Store (One, NPME)

}

}

Else

{

Store (SPME, Local0)

While (SPME)

{

Store (One, SPME)

}

 

While (RPSC)

{

Store (One, RPSC)

}

}

 

Store (One, PCWS)

Return (Local0)

}

 

Method (XRPW, 1, NotSerialized)

{

Store (Zero, Local0)

If (LEqual (RPID, Ones))

{

Return (Zero)

}

 

If (LGreaterEqual (Arg0, 0x08))

{

Store (NPME, Local0)

}

Else

{

Store (SPME, Local0)

}

 

Return (Local0)

}

}

 

Theese are those declarations which I put to GIGE. And there is no such declaration to PEGP in my DSDT. So I am asking what to do: leave video without PEGP or try to put a declaration (if so pls tell me if I can just copy this one or have to modify it).

 

Thanks in advance!

 

Edited: I have been told that there is no difference if there is a PEGP device or not. In acpi language this Device() are like procedures and PEGP or GIGE are their names. So it does not matter how to call a procedure :thumbsup_anim: . It matters more what is written inside (and of course to leave all the procedures that were in DSDT at first). So there is no problem with video patch. It simply depends on whether PEGP was declared in first place and if not just put GFX0 without it at needed location.

Link to comment
Share on other sites

SSDT from Notebooks/Laptops (especially HP) with both cores working.

 

I'm currently trying to get both cores to work on my HP530 notebook. I've been trying for a while now.

I think I've found that on this particular notebook (and probably many more) the SSDT tables are messed up. I've modified the GetDSDT.sh script so that it can extract the SSDT tables. I've also modified the chameleon DSDT bootloader so that it can replace and load SSDT tables from the root folder. The only problem is that I've not got any working SSDT tables to compare mine with.

 

I would be gratefull if you could share your working SSDT tables with me so I can hopefully fix the dual core problem with the HP530 notebook (and hopefully many more!!).

 

I've attached a zip file with a folder containing the iasl tool and the script to extract the SSDT tables.

 

To run just uncompress the attachment, with Terminal cd into the folder and run:

 

./getSSDT5.sh

 

There should be multiple tables, I've attached the 5 tables from my notebook. This can also help people to understand P-States, T-States and C-States.

 

Please compress these files and either upload or PM them to me.

 

Thanks, if you can help!!

 

P.S. Great work everyone!!

 

ssdt_tools.zip

Link to comment
Share on other sites

Yes, you're right, but the "patched" ROM, is the original one when FATAL ERROR appeared. It would be better if no file were generated.

EDIT: since you will use DSDT.aml, it's not a problem, and yes, FATAL ERROR is when replacing module into BIOS.

 

My original BIOS.ROM file was write-protected. When i write-enable it, there is no FATAL ERROR.

 

The patcher requires the original file to be write enabled for some reason.

Link to comment
Share on other sites

mitch_de, you should select PEX4 as hardware location. If it's not working use the first patcher with network fix (GIGE fix).

You can also use Export DSDT option, modify manually and then Import DSDT (it uses dsdt.dsl so no you only need Patcher 0.1.8 or 0.2 with Wordpad).

OneSman, I will delete PEGP since it's more compatible.

olegpronin, what post you're talking about ?

Link to comment
Share on other sites

Hi Koala , I would like to install patched bios on my P35-DS4 motherboard. but I've one question for you. How can I find the correct hardware location form my GFX and thernet card? I've RTL 6169 build in motherboard, anch GFX GEForce 7600 GT 256 MB on my PCIexpress card, so in all this case i can set PCI for GFX and ethernet hardware or not? Where i can find the iop address to set in your wondrfull program?.

 

I want install directly on my bios withoute .aml or other DSDT file.

 

other question...Can you explain me what are "MUTE and Local0 fixes"?

 

Do you have any detailed guide for bios patching brogram?

 

Thanks for you support and excuse me for the bad english language :blink:

Link to comment
Share on other sites

mitch_de, you should select PEX4 as hardware location. If it's not working use the first patcher with network fix (GIGE fix).

You can also use Export DSDT option, modify manually and then Import DSDT (it uses dsdt.dsl so no you only need Patcher 0.1.8 or 0.2 with Wordpad).

OneSman, I will delete PEGP since it's more compatible.

olegpronin, what post you're talking about ?

Thanks, i will do that and try that fix for TM.

So you mean that are two differenr fixes ? (I remember only an extra selectable TM-fix ceckbox. , No GIGE fix)

Its very good that your tool also can patch as .aml file, which can redisasemled also.

Link to comment
Share on other sites

Hello. See the new patcher 0.2. I want to modify ASUS P5QL-E motherboard bios ver.0905. Bios modified correctly in patcher (no errors) but after flash bios don't save settings... How am I fix it?

What do you mean by "don't save settings" ?

 

Thanks, i will do that and try that fix for TM.

So you mean that are two differenr fixes ? (I remember only an extra selectable TM-fix ceckbox. , No GIGE fix)

Its very good that your tool also can patch as .aml file, which can redisasemled also.

The program is apparently the same, but TM fix in 0.1.6 to 0.1.7.2 was GIGE, it's LAN0 since 0.1.8.

Link to comment
Share on other sites

Beta 2 will add :

-Partial sound support DSDT for ALC885,888,889a

-Device(PEGP) removing for improved compatibility

-LAN0 / GIGE TM patches with GP9 fix for improved compatibility

 

And better AMI BIOS support if some people test and report.

 

But i'm not going to release it for the moment, I need more feedback.

Link to comment
Share on other sites

hi, for me the patcher doesn't work. I have an hasee laptop with phoenix bios, and I'm trying to create a dsdt.aml from the aml I extract under leopard with the usual patcher. It keeps on stucking after decompiling and iasl.exe crashes... also I'm unable to run it as administrator because it's a 'decoy executable' or something like that.. any idea?

Link to comment
Share on other sites

hi, for me the patcher doesn't work. I have an hasee laptop with phoenix bios, and I'm trying to create a dsdt.aml from the aml I extract under leopard with the usual patcher. It keeps on stucking after decompiling and iasl.exe crashes... also I'm unable to run it as administrator because it's a 'decoy executable' or something like that.. any idea?

 

For all persons who have problems with patcher :

Could you post your dsdt.aml or BIOS please ?

I never run the patcher as administrator on my PC.

Link to comment
Share on other sites

@ab___73

Here's the DSDT and SSDT dumps from my MacBookPro4,1 for reference... Hope it helps!

 

Thanks for the files. They are a good reference point.

 

I would like a copy of SSDT tables from a HP Laptop with both cores working.

 

BlackCH, can you please help with this??

 

Thanks in advance...

Link to comment
Share on other sites

Your patcher simply put videocard (Device(GFX0)) into Device(PEGP) (which I do not understand). After deleting it and leaving simply Device(GFX0) under pop2 my video is fully working!!!!

Same here.

 

???? What have you deleted ?

 

Can you explain more detail what you have chaged after the patch (+ disassembly) my nad in the GPU section ?

I will try this with my ATI 3850 (running well using efi gfx string) too.

 

So here my patched (no manual changes made) part of the PCIE

Device (PEX0)

{

Device (PEGP)

{

Name (_ADR, 0x00010000)

Device (GFX0)

{

Name (_ADR, Zero)

Name (_SUN, One)

Method (_DSM, 4, NotSerialized)

{

Store (Package (0x16)

{

"@0,compatible",

Buffer (0x0B)

{

"NVDA,NVMac"

},

 

"@0,device_type",

Buffer (0x08)

{

"display"

},

"@0,name",

Buffer (0x0F)

{

"NVDA,Display-A"

},

"@1,compatible",

Buffer (0x0B)

{

"NVDA,NVMac"

},

 

"@1,device_type",

Buffer (0x08)

{

"display"

},

 

"@1,name",

Buffer (0x0F)

{

"NVDA,Display-B"

},

"NVCAP",

Buffer (0x18)

{

/* 0000 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,

/* 0008 */ 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,

/* 0010 */ 0x00, 0x00, 0x00, 0x00

},

"VRAM,totalsize",

Buffer (0x04)

{

0x00, 0x00, 0x00, 0x20

},

"device_type",

Buffer (0x0D)

{

"NVDA,GeForce"

},

"model",

Buffer (0x17)

{

"nVidia GeForce 6800 GT"

},

"rom-revision",

Buffer (0x25)

{

"nVidia GeForce 6800 GT OpenGL Engine"

}

}, Local0)

DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))

Return (Local0)

}

}

}

 

Name (_ADR, 0x001C0000)

Method (_STA, 0, NotSerialized)

{

Return (0x0F)

}

 

Method (_PRW, 0, NotSerialized)

{

.......

}

Link to comment
Share on other sites

 Share

×
×
  • Create New...