Jump to content

DSDT: trick retail drivers by changing "device-id" (e.g USB)


zhell
 Share

366 posts in this topic

Recommended Posts

{

Store (Package (0x08)

{

"Physical Interconnect", // 1

"SATA", /2

"Physical Interconnect Location", // 3

"Internal", // 4

Buffer (0x01) // 5 8

{

0x00

}

}, Local0)

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

Return (Local0)

}

 

Store (Package (0x08) is definitly WRONG !

08 means the injecttion has 8 strings or data=buffer to add later by the DTGP method.

But there are only 05 (5) not 08 (8) , 4 strings + 1 data = 5

Store (Package (count of strings+data (hex))

 

To all using DTGP method for strings/data DSDT injection:

 

If you copy & paste some dsdt injection parts (yours or from others) which use DTGP method for string/data injection, ALWAYS check the count of parameters - (Package (0x08) - which you want to inject !!!

If the count, like here is wrong (to less / to big) you may not get what you want or even bad: MUCH problems you wont get without DSDT.

Link to comment
Share on other sites

{

Store (Package (0x08)

{

"Physical Interconnect", // 1

"SATA", /2

"Physical Interconnect Location", // 3

"Internal", // 4

Buffer (0x01) // 5 <> 8

{

0x00

}

}, Local0)

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

Return (Local0)

}

 

Store (Package (0x08) is definitly WRONG !

08 means the injecttion has 8 strings or data=buffer to add later by the DTGP method.

But there are only 05 (5) not 08 (8) , 4 strings + 1 data = 5

Store (Package (count of strings+data (hex))

 

To all using DTGP method for strings/data DSDT injection:

 

If you copy & paste some dsdt injection parts (yours or from others) which use DTGP method for string/data injection, ALWAYS check the count of parameters - (Package (0x08) - which you want to inject !!!

If the count, like here is wrong (to less / to big) you may not get what you want or even bad: MUCH problems you wont get without DSDT.

 

I had more strings in there originally and forgot to shorten the length. However, I assumed that even though the buffer might be too long it would just inject empty info. Wasn't sure if this would have a detrimental effect or not.

 

Thanks for the heads up.

Link to comment
Share on other sites

I only have IDE sections in my DSDT. Should I replace those sections with the SATA section you supplied or add the SATA sections?

 

I had more strings in there originally and forgot to shorten the length. However, I assumed that even though the buffer might be too long it would just inject empty info. Wasn't sure if this would have a detrimental effect or not.

 

Thanks for the heads up.

Link to comment
Share on other sites

I had more strings in there originally and forgot to shorten the length. However, I assumed that even though the buffer might be too long it would just inject empty info. Wasn't sure if this would have a detrimental effect or not.

 

Thanks for the heads up.

 

Have you tried with 05 again ?

also check the effect of such injection also with the IOREGISTRY EXPLORER. Sometimes, if injection not work, that will show that nothing / wrong or rubbish data was injected at the place you want.

For that check, its sure needed to remove any .kext injector which does that part of injection normaly.

And dont forget to let build the .mkext again after removing that .kext injector before an reboot for DSDT jnjection usage.

Link to comment
Share on other sites

Have you tried with 05 again ?

also check the effect of such injection also with the IOREGISTRY EXPLORER. Sometimes, if injection not work, that will show that nothing / wrong or rubbish data was injected at the place you want.

For that check, its sure needed to remove any .kext injector which does that part of injection normaly.

And dont forget to let build the .mkext again after removing that .kext injector before an reboot for DSDT jnjection usage.

 

Yes, tried that this morning and still nothing. I rebuilt mkext and I dont have any injectors.

 

				Device (PRT2)
			{
				Name (_ADR, 0x02)
				Method (_DSM, 4, NotSerialized)
				{
					Store (Package (0x05)
						{
					   		"Physical Interconnect",
					   		"SATA",
					   		"Physical Interconnect Location",
					   		"Internal",
					   		Buffer (0x01)
							{
								0x01
						   	}
						}, Local0)
					DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
					Return (Local0)
				}
			}

 

The strings seem to be work because the parameters in Protocol Characteristics directly reflect whatever I have in the _DSM method. See below:

post-16858-1252157611_thumb.jpg

 

But doesn't make it into IOACHIDevice@0:

post-16858-1252157630_thumb.png

Link to comment
Share on other sites

Compare results (IOREGEX.) of dsdt and IOAHCIBlock..Inject.kext

I running this time 10.5.8 but and use IOAHCIBlock..Inject.kext , but there are ALSO same entry as in your second screenshoot.

And that works like it should - HD Icons are not yellow(external) - they are HDs in grey like it should!

So if your HD ICONS using DSDT (and IOAHCIBlock..Inject.kext loaded!) getting also not yellow it worked with DSDT like IOAHCIBlock..Inject.kext !!!

 

Summary:

IOAHCIBlock..Inject.kext is for fixing that yellow/orange HD Icons problem. Nothing more.

If dsdt give the same - no yellow/orange HD Icons - whitout that .kext - then it worked also.

Link to comment
Share on other sites

Compare results (IOREGEX.) of dsdt and IOAHCIBlock..Inject.kext

I running this time 10.5.8 but and use IOAHCIBlock..Inject.kext , but there are ALSO same entry as in your second screenshoot.

And that works like it should - HD Icons are not yellow(external) - they are HDs in grey like it should!

So if your HD ICONS using DSDT (and IOAHCIBlock..Inject.kext loaded!) getting also not yellow it worked with DSDT like IOAHCIBlock..Inject.kext !!!

 

Summary:

IOAHCIBlock..Inject.kext is for fixing that yellow/orange HD Icons problem. Nothing more.

If dsdt give the same - no yellow/orange HD Icons - whitout that .kext - then it worked also.

 

Hi mitch_de

 

I think the problem is with ICH10 SATA part in DSDT, IOReg appears as if we had IOAHCI-inject.kext loaded (when it is not loaded!)

But the icons are still yellow.

 

So basically we are missing something in DSDT that must be IOAHCI-inject.kext.

 

The question is what and is it even possible?

 

D

Link to comment
Share on other sites

Hi mitch_de

 

I think the problem is with ICH10 SATA part in DSDT, IOReg appears as if we had IOAHCI-inject.kext loaded (when it is not loaded!)

But the icons are still yellow.

 

So basically we are missing something in DSDT that must be IOAHCI-inject.kext.

 

The question is what and is it even possible?

 

D

 

I don't see why it can't be done via DSDT because IOAHCIBlockStorageInjector.kext is just injecting properties not actual functionality. I'm not giving up just yet.

Link to comment
Share on other sites

hi guys

this trick worked like a charm on my board :)

did it on both USBX/EHCIX and also for ICH9 => 10

i have USB mouse/keyboard

i can finaly wake my monitor \o/

and it looks like this got rid of random kernel panics too

 

now i'm struggling with my ALC885 audio (dfi site says 885, ubuntu lspci 883 and everest 889A it just could not be simplier \o/) green jack works but no mic :/

 

then there is some strange stuff with my hd4870 wich works perfectly with an efi string but when i try to make it work with DSDT i boot in verbose mode and stay in it (no login window etc) or depending on what properties i'm injecting at best i'm getting the same result as without any injection

 

with EFI string ioregexplorer says the card is on pci-bridge@1 (no GFX0 or other), so i've created PEGP/GFX0 and injected infos from the plist i'm using for the efi string and still no luck

 

any guesses ? looks like the same problem you're speaking of...

i looked at some ioregs and found that it's not always the "PEGP/GFX0" couple but something else (like IOU0/PXS1 for MP41 etc) could that be the problem ? (i dont think since some of you renamed IDE => SATA with success)

 

and i'm also interested in orange sata drives "problem"

Link to comment
Share on other sites

I don't see why it can't be done via DSDT because IOAHCIBlockStorageInjector.kext is just injecting properties not actual functionality. I'm not giving up just yet.

 

Good on ya :)

 

-Unrelated- Ive just realised im missing:

Return(Package(0x02){0x00, 0x00})

off my method (_WAK, 1 .. .)

 

doh!

 

any guesses ? looks like the same problem you're speaking of...

i looked at some ioregs and found that it's not always the "PEGP/GFX0" couple but something else (like IOU0/PXS1 for MP41 etc) could that be the problem ? (i dont think since some of you renamed IDE => SATA with success)

 

and i'm also interested in orange sata drives "problem"

 

Hay heysap

 

As far as I know, even of you add framebuffer and device id for GPu to DSDT for ATI card you will still nedd to use patched ATI kexts. You can only remove natit.

 

D.

Link to comment
Share on other sites

Hay heysap

 

As far as I know, even of you add framebuffer and device id for GPu to DSDT for ATI card you will still nedd to use patched ATI kexts. You can only remove natit.

 

D.

hi FNA, thx for replying

actually i use only 2 kexts (openhaltrestart and fakesmc) and EFI string for my ATI

and according to this guy http://www.projectosx.com/forum/index.php?showtopic=367

(also mentioned here http://www.insanelymac.com/forum/index.php...mp;pid=1189927)

his ATI works with DSDT (in which i didn't see any difference compared to mine) :offtopic:

 

 

 

EDIT : well this time i've pasted his properties (some of my values were different) into my DSDT and it worked \o/ and my ATI card now appears also in "PCI-cards" :)

 

does anybody know how to hadle ATI's sound chip ? is it another HDEF ? AZAL ?

thx

Link to comment
Share on other sites

????? To whom an answer / for what problem ????

Good on ya

-Unrelated- Ive just realised im missing:

 

Return(Package(0x02){0x00, 0x00})

off my method (_WAK, 1 .. .)

 

doh!

 

Hi, the problem with my machine is that sleep works fine and wakes up also but if i leave the system on standby over night, the machine wakes up but not the monitor. It works perfectly fine when i put the machine to sleep for a short period of time. I'm bummed....any help would be appreciated

Link to comment
Share on other sites

I don't see why it can't be done via DSDT because IOAHCIBlockStorageInjector.kext is just injecting properties not actual functionality. I'm not giving up just yet.

 

I've managed to get the icons recognized as internal by "tricking" the device into thinking it's ESB2.

 

				Method (_DSM, 4, NotSerialized)
			{
				Store (Package (0x02)
					{
						"device-id", 
						Buffer (0x04)
						{
							0x81, 0x26, 0x00, 0x00
						}
					}, Local0)
				DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
				Return (Local0)
			}

 

Not the patch I was hoping for. Not even sure why this works and not another device ID. Looking into it.

Link to comment
Share on other sites

does anybody know how to hadle ATI's sound chip ? is it another HDEF ? AZAL ?

thx

 

I don't think we'll get HDMI audio working!

Some people seem to have had success with nVidia here

 

D

 

I've managed to get the icons recognized as internal by "tricking" the device into thinking it's ESB2.

 

Not the patch I was hoping for. Not even sure why this works and not another device ID. Looking into it.

 

So what is it seen as in IOReg?

ESB2 ICH10?

Link to comment
Share on other sites

Hi, the problem with my machine is that sleep works fine and wakes up also but if i leave the system on standby over night, the machine wakes up but not the monitor. It works perfectly fine when i put the machine to sleep for a short period of time. I'm bummed....any help would be appreciated

 

I am having the same problem too!

 

Update

"Solved" by unplugging sata dvd drive. Computer goes to sleep in 2 sec instead of 10 previously. However, sleep on idle is still not working.

 

Can you do some test?

Link to comment
Share on other sites

? What is ESB2 please. ?

 

It would be much better if postings would contain info for what mainboard hints/infromations may useful are used.

In DSDT there are uncountable names of devices, which are cosmetic (can be changed like AZAL > HDEF, USE1 > EHC1,...) and so its very difficult to decide if it is usefull for OWN mainboard or not.

Link to comment
Share on other sites

? What is ESB2 please. ?

 

It would be much better if postings would contain info for what mainboard hints/infromations may useful are used.

In DSDT there are uncountable names of devices, which are cosmetic (can be changed like AZAL > HDEF, USE1 > EHC1,...) and so its very difficult to decide if it is usefull for OWN mainboard or not.

 

Hi mitch

 

As stated in my post#173 this if for SATA ICH9-R ##EDIT## should also work ICH9 ##

 

ESB2 is an Intel SATAII controller that seems to be native to 10.5.

 

Cheers

D.

Link to comment
Share on other sites

Hi mitch

 

As stated in my post#173 this if for SATA ICH9-R ##EDIT## should also work ICH9 ##

 

ESB2 is an Intel SATAII controller that seems to be native to 10.5.

 

Cheers

D.

 

 

I got the tip from here. Not sure if this is going to be detrimental to the performance of the drives. So I'm going to opt not to use this "trick".

Link to comment
Share on other sites

I got the tip from here. Not sure if this is going to be detrimental to the performance of the drives. So I'm going to opt not to use this "trick".

 

ESB2 is the southbridge in MacPro circ' 2006.

##edit## post#5 http://www.insanelymac.com/forum/index.php?showtopic=23896

 

It seems some people hvae had sucsess with ESB2 in RAID mode on the MacPro. here

I wonder how this would work with ICH-9 in RAID mode on a Hack?

 

I'll give it a go later on.

 

D.

Link to comment
Share on other sites

Hi mitch

 

As stated in my post#173 this if for SATA ICH9-R ##EDIT## should also work ICH9 ##

 

ESB2 is an Intel SATAII controller that seems to be native to 10.5.

 

Cheers

D.

 

Thanks, i have an ICH9 (0x2923, non RAID) in EP-35-DS3 mainbaord.

In which dsdt section does that "ESB2" will be included ?

 

My dsdt for SATA (0x2923, ICH9 ) only got added device id injection 2923 (part marked in bold), looks like until now.

Would it be really possible for ICH9 to change that real device id from 2923= 82801IB (ICH9) 4 port SATA AHCI Controller to an "foreing" 2681 = 631xESB/632xESB SATA AHCI Controller ?

 

 Device ([b]SAT1[/b])
[size=1]            {
               Name (_ADR, 0x001F0002)
               OperationRegion (PCI, PCI_Config, 0x40, 0x20)
               Field (PCI, DWordAcc, NoLock, Preserve)
               {
                   ITM0,   16, 
                   ITM1,   16, 
                   SIT0,   4, 
                   SIT1,   4, 
                           Offset (0x08), 
                   UDC0,   2, 
                   UDC1,   2, 
                           Offset (0x0A), 
                   UDT0,   8, 
                   UDT1,   8, 
                           Offset (0x14), 
                   ICF0,   2, 
                   ICF1,   2, 
                       ,   6, 
                   WPPE,   1, 
                       ,   1, 
                   FAS0,   2, 
                   FAS1,   2
               }
[/size]
              [b] Method (_DSM, 4, NotSerialized)
               {
                   Store (Package (0x02)
                       {
                           "device-id", 
                           Buffer (0x04)
                           {
                               0x23, 0x29, 0x00, 0x00
                           }
                       }, Local0)
                   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                   Return (Local0)
               }[/b]

[size=1]                Device (PRIM)
               {
                   Name (_ADR, Zero)
                   Method (_GTM, 0, NotSerialized)
                   {
                       Store (GTM (ITM0, SIT0, UDC0, UDT0, ICF0, FAS0), Local0)
                       Return (Local0)
                   }

                   Method (_STM, 3, NotSerialized)
                   {
                       Store (STM (Arg0, Arg1, Arg2), Local0)
                       CreateDWordField (Local0, Zero, ITM)
                       CreateDWordField (Local0, 0x04, SIT)
                       CreateDWordField (Local0, 0x08, UDC)
                       CreateDWordField (Local0, 0x0C, UDT)
                       CreateDWordField (Local0, 0x10, ICF)
                       CreateDWordField (Local0, 0x14, FAS)
                       Store (UDC, UDC0)
                       Store (UDT, UDT0)
                       Store (ICF, ICF0)
                       Store (FAS, FAS0)
                   }

                   Device (DRV0)
                   {
                       Name (_ADR, Zero)
                       Name (H15F, Zero)
                       Method (_GTF, 0, NotSerialized)
                       {
                           Store (GTF0 (ITM0, SIT0, UDC0, UDT0, ICF0, H15F, FAS0), Local0)
                           Return (Local0)
                       }
                   }

                   Device (DRV1)
                   {
                       Name (_ADR, One)
                       Name (H15F, Zero)
                       Method (_GTF, 0, NotSerialized)
                       {
                           Store (GTF1 (ITM0, SIT0, UDC0, UDT0, ICF0, H15F, FAS0), Local0)
                           Return (Local0)
                       }
                   }
               }

               Device (SECD)
               {
                   Name (_ADR, One)
                   Method (_GTM, 0, NotSerialized)
                   {
                       Store (GTM (ITM1, SIT1, UDC1, UDT1, ICF1, FAS1), Local0)
                       Return (Local0)
                   }

                   Method (_STM, 3, NotSerialized)
                   {
                       Store (STM (Arg0, Arg1, Arg2), Local0)
                       CreateDWordField (Local0, Zero, ITM)
                       CreateDWordField (Local0, 0x04, SIT)
                       CreateDWordField (Local0, 0x08, UDC)
                       CreateDWordField (Local0, 0x0C, UDT)
                       CreateDWordField (Local0, 0x10, ICF)
                       CreateDWordField (Local0, 0x14, FAS)
                       Store (UDC, UDC1)
                       Store (UDT, UDT1)
                       Store (ICF, ICF1)
                       Store (FAS, FAS1)
                   }

                   Device (DRV0)
                   {
                       Name (_ADR, Zero)
                       Name (H15F, Zero)
                       Method (_GTF, 0, NotSerialized)
                       {
                           Store (GTF0 (ITM1, SIT1, UDC1, UDT1, ICF1, H15F, FAS1), Local0)
                           Return (Local0)
                       }
                   }

                   Device (DRV1)
                   {
                       Name (_ADR, One)
                       Name (H15F, Zero)
                       Method (_GTF, 0, NotSerialized)
                       {
                           Store (GTF1 (ITM1, SIT1, UDC1, UDT1, ICF1, H15F, FAS1), Local0)
                           Return (Local0)
                       }
                   }
               }[/size]
           }

Bild_304.jpg

Link to comment
Share on other sites

Thanks, i have an ICH9 (0x2923, non RAID) in EP-35-DS3 mainbaord.

In which dsdt section does that "ESB2" will be included ?

 

My dsdt for SATA (0x2923, ICH9 ) only got added device id injection 2923 (part marked in bold), looks like until now.

Would it be really possible for ICH9 to change that real device id from 2923 to an "foreing" 2681 ?

 

Your just adding the device id for ESB2 (0x81, 0x26, 0x00, 0x00 or (2681).) to the highlighted section [Method (_DSM ... ) ] of the SATA part of DSDT.

 

i.e.

 

Device (SAT1)
{
Name (_ADR, 0x001F0002)
OperationRegion (PCI, PCI_Config, 0x40, 0x20)
Field (PCI, DWordAcc, NoLock, Preserve)
{
ITM0, 16,
ITM1, 16,
SIT0, 4,
SIT1, 4,
Offset (0x08),
UDC0, 2,
UDC1, 2,
Offset (0x0A),
UDT0, 8,
UDT1, 8,
Offset (0x14),
ICF0, 2,
ICF1, 2,
, 6,
WPPE, 1,
, 1,
FAS0, 2,
FAS1, 2
}

[b]Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
[color="#ff0000"]0x81, 0x26, 0x00, 0x00[/color]
}[/b]
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}

Device (PRIM)
{
Name (_ADR, Zero)
Method (_GTM, 0, NotSerialized)
{
Store (GTM (ITM0, SIT0, UDC0, UDT0, ICF0, FAS0), Local0)
Return (Local0)
}

Method (_STM, 3, NotSerialized)
{
Store (STM (Arg0, Arg1, Arg2), Local0)
CreateDWordField (Local0, Zero, ITM)
CreateDWordField (Local0, 0x04, SIT)
CreateDWordField (Local0, 0x08, UDC)
CreateDWordField (Local0, 0x0C, UDT)
CreateDWordField (Local0, 0x10, ICF)
CreateDWordField (Local0, 0x14, FAS)
Store (UDC, UDC0)
Store (UDT, UDT0)
Store (ICF, ICF0)
Store (FAS, FAS0)
}

Device (DRV0)
{
Name (_ADR, Zero)
Name (H15F, Zero)
Method (_GTF, 0, NotSerialized)
{
Store (GTF0 (ITM0, SIT0, UDC0, UDT0, ICF0, H15F, FAS0), Local0)
Return (Local0)
}
}

Device (DRV1)
{
Name (_ADR, One)
Name (H15F, Zero)
Method (_GTF, 0, NotSerialized)
{
Store (GTF1 (ITM0, SIT0, UDC0, UDT0, ICF0, H15F, FAS0), Local0)
Return (Local0)
}
}
}

Device (SECD)
{
Name (_ADR, One)
Method (_GTM, 0, NotSerialized)
{
Store (GTM (ITM1, SIT1, UDC1, UDT1, ICF1, FAS1), Local0)
Return (Local0)
}

Method (_STM, 3, NotSerialized)
{
Store (STM (Arg0, Arg1, Arg2), Local0)
CreateDWordField (Local0, Zero, ITM)
CreateDWordField (Local0, 0x04, SIT)
CreateDWordField (Local0, 0x08, UDC)
CreateDWordField (Local0, 0x0C, UDT)
CreateDWordField (Local0, 0x10, ICF)
CreateDWordField (Local0, 0x14, FAS)
Store (UDC, UDC1)
Store (UDT, UDT1)
Store (ICF, ICF1)
Store (FAS, FAS1)
}

Device (DRV0)
{
Name (_ADR, Zero)
Name (H15F, Zero)
Method (_GTF, 0, NotSerialized)
{
Store (GTF0 (ITM1, SIT1, UDC1, UDT1, ICF1, H15F, FAS1), Local0)
Return (Local0)
}
}

Device (DRV1)
{
Name (_ADR, One)
Name (H15F, Zero)
Method (_GTF, 0, NotSerialized)
{
Store (GTF1 (ITM1, SIT1, UDC1, UDT1, ICF1, H15F, FAS1), Local0)
Return (Local0)
}
}
}
}

 

As you know it should also work to change ICH9 (2923) to ICH10 (5834) in this way

 

Cheers

D.

Link to comment
Share on other sites

 Share

×
×
  • Create New...