Jump to content

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


  • Please log in to reply
365 replies to this topic

#101
ffosilva

ffosilva

    InsanelyMac Protégé

  • Members
  • PipPip
  • 69 posts

Unfortunately the issue of my USB was not able to be settle by this method.
but it was useful about an SATA device.

8086:3a02 82801JD/DO (ICH10 Family) SATA AHCI Controller (My borad)
8086:3a22 82801JI (ICH10 Family) SATA AHCI Controller (Machintosh)

Device (SAT0)
			{
				Name (_ADR, 0x001F0002)
				....
		 		Method (_DSM, 4, NotSerialized)
				{
					Store (Package (0x02)
						{
							"device-id",
							Buffer (0x04)
							{
								0x22, 0x3A, 0x00, 0x00
							}
						}, Local0)
					DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
				Return (Local0)
				}
			}
No Modified DSDT


Modified DSDT(Device ID)



Yes! I am not necessary with LegacyAppleAHCIPort.kext after adding device ID to DSDT.

Thanks zhell, it's a nice trick.
Sorry for my poor English.


Use this device-id below and you don't need legacy kexts more (for ahci). :) I'm using it on my ich9 and is working good.

"device-id",
Buffer (0x04)
{
0x81, 0x26, 0x00, 0x00
}

Attached Files



#102
kdawg

kdawg

    InsanelyMac Legend

  • Donators
  • 508 posts
  • Gender:Male
  • Location:Boston, MA

Slightly off-topic, but here's the entry I use for my 8600 GT/512MB.

Device (GFX0){    Name (_ADR, Zero)    Method (_DSM, 4, NotSerialized)    {        Store (Package (0x18)            {                "@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                },                 "NVPM",                 Buffer (0x1C)                {                    /* 0000 */    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                     /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                     /* 0010 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                     /* 0018 */    0x00, 0x00, 0x00, 0x00                },                 "VRAM,totalsize",                 Buffer (0x04)                {                    0x00, 0x00, 0x00, 0x20                },                 "device_type",                 Buffer (0x0C)                {                    "NVDA,Parent"                },                 "model",                 Buffer (0x17)                {                    "nVidia GeForce 8600 GT"                },                 "rom-revision",                 Buffer (0x25)                {                    "nVidia GeForce 8600 GT OpenGL Engine"                }            }, Local0)        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))        Return (Local0)    }}


Out of curiosity do you get any "GFX0: family specific matching fails" errors during boot with this?

Also, for everyone's reference would you consider posting your whole DSDT.dsl? I'm curious as to why your USB ports are labeled UHC1 - UHC6 and not USB1 - USB6. Did you use ACPI patcher or DSDT patcher?

#103
zhell

zhell

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 125 posts
  • Gender:Male

Out of curiosity do you get any "GFX0: family specific matching fails" errors during boot with this?

Sure; everybody gets those, even on real Macs, e.g. MacBook5,1:
07/28/09 09:15:26 kernel IGPU: family specific matching fails

Did you consider to just use Google to answer that question?
http://www.google.co...i...mp;oq=&aqi=
yields 666 results...

#104
kdawg

kdawg

    InsanelyMac Legend

  • Donators
  • 508 posts
  • Gender:Male
  • Location:Boston, MA

Sure; everybody gets those, even on real Macs, e.g. MacBook5,1:
07/28/09 09:15:26 kernel IGPU: family specific matching fails

Did you consider to just use Google to answer that question?
http://www.google.co...i...mp;oq=&aqi=
yields 666 results...


I think I know the source of the problem. See this post.

Adding this will remove the errors BUT you loose CI/QE.

"name", 
Buffer (0x0C)
{
"NVDA,Parent"
},

You could load the same info via EFI string and your card would work with CI/QE and no errors. Not sure where the disconnect is.

Would you consider posting your DSDT for reference? I have essentially the same board.

#105
zhell

zhell

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 125 posts
  • Gender:Male

I think I know the source of the problem. See this post.

Adding this will remove the errors BUT you loose CI/QE.

"name", 
Buffer (0x0C)
{
"NVDA,Parent"
},

Would you consider posting your DSDT for reference? I have essentially the same board.

As I said, those errors do not mean anything and I think I also had them with device-property string injection.
Regarding my DSDT.dsl: posting this would be meaningless as yours is completely different, especially because it's from a different manufacturer and you also have different GFX. Also, I'll repeat it once again, the names of the devices are arbitrary. I renamed some of mine to adhere to some naming convention, but this is purely cosmetical.

#106
kdawg

kdawg

    InsanelyMac Legend

  • Donators
  • 508 posts
  • Gender:Male
  • Location:Boston, MA

As I said, those errors do not mean anything and I think I also had them with device-property string injection.
Regarding my DSDT.dsl: posting this would be meaningless as yours is completely different, especially because it's from a different manufacturer and you also have different GFX. Also, I'll repeat it once again, the names of the devices are arbitrary. I renamed some of mine to adhere to some naming convention, but this is purely cosmetical.


For some reason I though you had a Gigabyte GA-P35-DS4.

#107
zhell

zhell

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 125 posts
  • Gender:Male

none of this works for me ;)(
i dont have UHCI in my dsdt.dsl neither brutal deleting of all USB devices from that file lets my darling sleep...

You need to identify the devices based on _ADR, not their name. Ask people who have the same board for advice and try using a search engine such as Yahoo/Bing or Google.

#108
tlac

tlac

    InsanelyMac Protégé

  • Members
  • Pip
  • 40 posts
  • Gender:Male
  • Location:Hungary
Does this trick only work under osx?
(I want to change north bridge device id for windows.)

#109
FKA

FKA

    are we there yet?

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 1,626 posts
  • Gender:Male

roisoft,

Tried both Mandriva and KUbuntu live CD's (posting this from Konqueror). dmesg |grep ACPI gives no output. dmesg itself does but there is no ACPI parts to it. Any other ideas?

If I use the script from this post - http://www.insanelym...howtopic=145792 - I get one SSDT.dsl which I've attached. I'll study it but the structure isn't what I would expect from the ACPI documents for PStates.



Thanks,
SMF


Hi SMF

I'm sure you've found a solution by now - however the missing SSDT tables can easily be dumped using Everest in Windows if your having no luck with Linux.

D.

#110
FKA

FKA

    are we there yet?

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 1,626 posts
  • Gender:Male

you can fix those errors just adding this code to the scope _pr , and if you want to enable speedstep just change your mac model to macpro3,1 or mod the acpi_smc_platformplugin to match your smbios injection, of course EIST and C1E must be enable in bios

External (PDC0)	External (CFGD)	Scope (_PR)	{		Processor (CPU0, 0x00, 0x00000410, 0x06)		{			Method (_CST, 0, NotSerialized)			{				If (LAnd (And (CFGD, 0x01000000), LNot (And (PDC0, 0x10					))))				{					Return (Package (0x02)					{						One, 						Package (0x04)						{							ResourceTemplate ()							{								Register (FFixedHW, 									0x00,			   // Bit Width									0x00,			   // Bit Offset									0x0000000000000000, // Address									,)							}, 							One, 							0x9D, 							0x03E8						}					})				}				If (And (PDC0, 0x0300))				{					If (And (CFGD, 0x20))					{						Return (Package (0x03)						{							0x02, 							Package (0x04)							{								ResourceTemplate ()								{									Register (FFixedHW, 										0x01,			   // Bit Width										0x02,			   // Bit Offset										0x0000000000000000, // Address										,)								}, 								One, 								One, 								0x03E8							}, 							Package (0x04)							{								ResourceTemplate ()								{									Register (FFixedHW, 										0x01,			   // Bit Width										0x02,			   // Bit Offset										0x0000000000000010, // Address										,)								}, 								0x02, 								One, 								0x01F4							}						})					}				}				If (And (CFGD, 0x20))				{					Return (Package (0x03)					{						0x02, 						Package (0x04)						{							ResourceTemplate ()							{								Register (FFixedHW, 									0x01,			   // Bit Width									0x02,			   // Bit Offset									0x0000000000000000, // Address									,)							}, 							One, 							One, 							0x03E8						}, 						Package (0x04)						{							ResourceTemplate ()							{								Register (SystemIO, 									0x08,			   // Bit Width									0x00,			   // Bit Offset									0x000000000000000C, // Address									,)							}, 							0x02, 							One, 							0x01F4						}					})				}				Return (Package (0x02)				{					One, 					Package (0x04)					{						ResourceTemplate ()						{							Register (FFixedHW, 								0x01,			   // Bit Width								0x02,			   // Bit Offset								0x0000000000000000, // Address								,)						}, 						One, 						One, 						0x03E8					}				})			}		}	   Processor (CPU1, 0x01, 0x00000410, 0x06)		{			Method (_CST, 0, NotSerialized)			{				Return (^^CPU0._CST ())			}		}		Processor (CPU2, 0x02, 0x00000000, 0x00)		{			Method (_CST, 0, NotSerialized)			{				Return (^^CPU0._CST ())			}		}		Processor (CPU3, 0x03, 0x00000410, 0x06)		{			Method (_CST, 0, NotSerialized)			{				Return (^^CPU0._CST ())			}		}	}


Many thanks for this roisoft!

I'd managed to add p-states and have vanilla stepping but have struggled with cst tables for too long :)

D.

#111
FKA

FKA

    are we there yet?

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 1,626 posts
  • Gender:Male
It's bashed together a little but it compiles OK and works-ish.

Speedstep ok.
No C-state messages with mach kernel anymore but with voodoo based XNU 9.7 and kprintf=1 i get:
"ACPI_SMC_PlatformPlugin::gatherCStateOverrides - failed to set c-state demotion data: -1"

and cant see any CST or IST ACPI entries.

Any advice appreciated
Attached File  fixeddsdt1.dsl.zip   15.31KB   28 downloads

#112
kdawg

kdawg

    InsanelyMac Legend

  • Donators
  • 508 posts
  • Gender:Male
  • Location:Boston, MA
Couple questions. Why doesn't this trick work if we try and inject the device IDs for ICH9 instead of ICH10?

For example:
0x35, 0x29, 0x00, 0x00
instead of
0x35, 0x3A, 0x00, 0x00
Also if this trick "seemingly sticks" should it also fix the unloading of the USB devices on sleep? I seem to have it working but loose all my devices in sleep. I don't get this behavior with Slice's kext. Sleep and auto-sleep work fine with or without the fix since I tossed my Toshiba/Samsung DVD burners and swapped them with the Sony Optiarc.

I've also applied the fix to my EHCI devices.

Lastly when I apply the fix it seems to take however I don't get the device ID to display in the IOReg. Built-in displays as 0x00.
Attached File  ioreg.jpg   182.08KB   111 downloads

The errata does not display 0x00 either:
Attached File  errata.jpg   177.12KB   89 downloads

UPDATE:
Never mind, I see that AppleAHCIPort.kext doesn't support ICH9 natively. Which is why this doesn't work.
0x35, 0x29, 0x00, 0x00


#113
kdawg

kdawg

    InsanelyMac Legend

  • Donators
  • 508 posts
  • Gender:Male
  • Location:Boston, MA
Slightly off topic. Would one of the newer P45 ICH10 motherboards need patched AppleAHCIPort and IOUSBFamily kexts? Or would the USB and SATA ports work out of the box with 10.5.8? Since ICH10 has native support it seems these P45 boards would require less patching.

I was thinking about upgrading to a newer Gigabyte MOBO like the GA-EP45-DS4P or GA-EP45-UD3P.

#114
ApexDE

ApexDE

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 217 posts

Many thanks for this roisoft!

I'd managed to add p-states and have vanilla stepping but have struggled with cst tables for too long :)

D.


Hi!

Does all the SSDT Stuff go to DSDT.aml? I have a "Scope (\_PR)" currently in my DSDT:

Scope (\_PR)
	{
		Processor (\_PR.CPU0, 0x00, 0x00000410, 0x06) {}
		Processor (\_PR.CPU1, 0x01, 0x00000410, 0x06) {}
		Processor (\_PR.CPU2, 0x02, 0x00000410, 0x06) {}
		Processor (\_PR.CPU3, 0x03, 0x00000410, 0x06) {}
	}

Shall i replace the Scope with the one you and roisoft posted? I am a bit unsure because my DSDT File has no Scope (_PR), only Scope (\_PR)

#115
FKA

FKA

    are we there yet?

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 1,626 posts
  • Gender:Male

Hi!

Does all the SSDT Stuff go to DSDT.aml? I have a "Scope (\_PR)" currently in my DSDT:

Scope (\_PR)
	 {
		 Processor (\_PR.CPU0, 0x00, 0x00000410, 0x06) {}
		 Processor (\_PR.CPU1, 0x01, 0x00000410, 0x06) {}
		 Processor (\_PR.CPU2, 0x02, 0x00000410, 0x06) {}
		 Processor (\_PR.CPU3, 0x03, 0x00000410, 0x06) {}
	 }

Shall i replace the Scope with the one you and roisoft posted? I am a bit unsure because my DSDT File has no Scope (_PR), only Scope (\_PR)


Hi

I've extracted, modified and attached my SSDT files to my DSDT using the method described here

Modifying _PSS (p-states) is described here but you need to make sure you add the correct data for your CPU. This can be done by trial and error (trying different voltages and multiplier value within your CPU's specs.)

D

#116
ApexDE

ApexDE

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 217 posts
@ formerlyknowas

How does your DSDT.txt now like like with all the SSDT entries?

I booted Chameleon with DropSSDT=y, this is needed, right?

#117
FKA

FKA

    are we there yet?

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 1,626 posts
  • Gender:Male

@ formerlyknowas

How does your DSDT.txt now like like with all the SSDT entries?

I booted Chameleon with DropSSDT=y, this is needed, right?


My DSDT.dsl is posted above the SSDT entries are at the end.

Yes you need DropSSDt=y

#118
kdawg

kdawg

    InsanelyMac Legend

  • Donators
  • 508 posts
  • Gender:Male
  • Location:Boston, MA

My DSDT.dsl is posted above the SSDT entries are at the end.

Yes you need DropSSDt=y


Are you still having problems with the last DSDT file you posted?

#119
FKA

FKA

    are we there yet?

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 1,626 posts
  • Gender:Male

Are you still having problems with the last DSDT file you posted?


As descibed - vanilla speedstep is working, No C-state error messages with vanilla kernel but error when boot with voodoo kprintf=1 and evidently NO c-state controll with either vanilla or voodoo.

One new issue since 10.5.8 my USB transfare rate has dropped to 12Mbps :wacko: but I haven't altered this section of DSDT so I don't know if this is a problem with my current DSDT or 10.5.8.

I'm at work now so will go back to my last-good DSDT later and see if its 10.5.8 or something I've done.

As you have the same setup as me kdawg can you let me know your results please.

D

#120
kdawg

kdawg

    InsanelyMac Legend

  • Donators
  • 508 posts
  • Gender:Male
  • Location:Boston, MA

As descibed - vanilla speedstep is working, No C-state error messages with vanilla kernel but error when boot with voodoo kprintf=1 and evidently NO c-state controll with either vanilla or voodoo.

One new issue since 10.5.8 my USB transfare rate has dropped to 12Mbps :P but I haven't altered this section of DSDT so I don't know if this is a problem with my current DSDT or 10.5.8.

I'm at work now so will go back to my last-good DSDT later and see if its 10.5.8 or something I've done.

As you have the same setup as me kdawg can you let me know your results please.

D


Obviously I had to revert to Slice's IOUSBFamily.kext to get my USB working properly after updating to 10.5.8. Sleep and auto-sleep still seem work for me. I haven't tried your exact speed step setup yet, although I have experimented with my own speed step attempts.

I'll let you know how I make out.





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy