Jump to content

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


  • Please log in to reply
365 replies to this topic

#281
MrHanky

MrHanky

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 4 posts

I'm not an expert in dsdt, but i think that the power button can bring the menu only when running on a laptop. Glad it worked the fix. I've also changed AZAL with HDEF in you dsdt (purelly cosmetic) and fixed some warnings.

No, it also works on normal computers. But that was my fault, wrong settings in BIOS for the power button. Anyways, thanks for your help. :rolleyes:

#282
nissefar

nissefar

    InsanelyMac Protégé

  • Members
  • PipPip
  • 73 posts
I have an IP35-e board, and I now have sleep almost working after applying the EHCI and UHCI fix. The system will completely power down and shut off all fans.

However, when I try to wake up the system, it won't really wake up. The fan will just be going max speed, and the screen will be blank. Anyone know what the last thing is I'm missing?

Thanks a lot, this thread rules.

#283
ApexDE

ApexDE

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 217 posts
Regarding wake-by-ehci Keyboard: I found out that some PCI Register entries aren't set correctly, but trying to write to them doesn't work (it should work)

17.1.25
PWAKE_CAP—Port Wake Capability Register (USB EHCI—D29:F7, D26:F7)
Address Offset: Default Value: Function Level Reset:
62–63h Attribute: R/W 01FFh Size: 16 bits No
This register is in the suspend power well. The intended use of this register is to establish a policy about which ports are to be used for wake events. Bit positions 1– 8(D29) or 1–6(D26) in the mask correspond to a physical port implemented on the current EHCI controller. A 1 in a bit position indicates that a device connected below the port can be enabled as a wake-up device and the port may be enabled for disconnect/ connect or overcurrent events as wake-up events. This is an information-only mask register. The bits in this register do not affect the actual operation of the EHCI host controller. The system-specific policy can be established by BIOS initializing this register to a system-specific value. System software uses the information in this register when enabling devices and ports for remote wake-up.
These bits are not reset by a D3-to-D0 warm rest or a core well reset.



For me, i have 00 at Offset 63h. So writing FF to Offset 63h should enable all EHCI Devices to wake the System. You can view the registers with lspci -xxx. If there is anything other than FF at Offset 63 you can try to write the register with sudo setpci -s 00:1d.7 63.b=ff (for EHCI2) and sudo setpci -s 00:1a.7 63.b=ff (for EHCI1)

But on my GA-EP45 i have strangely no write access to that registers, bug i suppose :)

#284
byally

byally

    InsanelyMac Protégé

  • Members
  • Pip
  • 6 posts
Hi guys!

Just installed SL - everything works but sound and sleep.

My MoBo is Asus P5E Deluxe.

Can you please help me patch this dsdt file please.
I got stuck with it!

Many thanks!

Attached Files



#285
kizwan

kizwan

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 1,422 posts

Hi guys!

Just installed SL - everything works but sound and sleep.

My MoBo is Asus P5E Deluxe.

Can you please help me patch this dsdt file please.
I got stuck with it!

Many thanks!

Find an application called DSDTSE at kexts dot com.

#286
oldnapalm

oldnapalm

    InsanelyMac V.I.P.

  • Moderators
  • 6,837 posts
  • Gender:Male
  • Location:Brazil

Hi guys!

Just installed SL - everything works but sound and sleep.

My MoBo is Asus P5E Deluxe.

Can you please help me patch this dsdt file please.
I got stuck with it!

Many thanks!


Take a look at my dsdt.aml, it has fixes for audio (kext included), SpeedStep, sleep and AHCI SATA.
My MoBo is an Asus P5E (not deluxe).
Attached File  dsdt.zip   26.14KB   40 downloads

#287
byally

byally

    InsanelyMac Protégé

  • Members
  • Pip
  • 6 posts

Take a look at my dsdt.aml, it has fixes for audio (kext included), SpeedStep, sleep and AHCI SATA.
My MoBo is an Asus P5E (not deluxe).
Attached File  dsdt.zip   26.14KB   40 downloads


Thank you.
Well, I replaced my dsdt with your - and no boot.
Then I realized that maybe I should just use some parts of code from it.

Though I don't know what are these parts.

Can you give me some hint?

#288
oldnapalm

oldnapalm

    InsanelyMac V.I.P.

  • Moderators
  • 6,837 posts
  • Gender:Male
  • Location:Brazil

Thank you.
Well, I replaced my dsdt with your - and no boot.
Then I realized that maybe I should just use some parts of code from it.

Though I don't know what are these parts.

Can you give me some hint?


Right, it won't boot if you just copy my DSDT, you have to copy only the additions in my file.

To visualize it better, I suggest that you do a diff between my DSDT and yours, and open it in TextMate.
In terminal: diff yourDSDT.dsl myDSDT.dsl > DSDT.diff
Attached File  dsdt.diff.zip   2.66KB   8 downloads

Then you will copy only the parts that were added (without the ">" at the beggining), for example:
20a21,53
>     Method (DTGP, 5, NotSerialized)>     {>         If (LEqual (Arg0, Buffer (0x10)>                 {>                     /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, >                     /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B>                 }))>         {>             If (LEqual (Arg1, One))>             {>                 If (LEqual (Arg2, Zero))>                 {>                     Store (Buffer (One)>                         {>                             0x03>                         }, Arg4)>                     Return (One)>                 }> >                 If (LEqual (Arg2, One))>                 {>                     Return (One)>                 }>             }>         }> >         Store (Buffer (One)>             {>                 0x00>             }, Arg4)>         Return (Zero)>     }>

and do nothing with the changed parts, you'll keep as it is in your file, for example:
25c58
<			 OperationRegion (STBL, SystemMemory, 0xCFF8E0D0, 0x01D2)
---
>			 OperationRegion (STBL, SystemMemory, 0x7FF8E0D0, 0x01D2)

also you won't remove de deleted parts, keep them in your file, example:
1238,1305d1413
<         Name (PR05, Package (0x04)<         {<             Package (0x04)<             {<                 0xFFFF, <                 Zero, <                 LNKB, <                 Zero<             }, < <             Package (0x04)<             {<                 0xFFFF, <                 One, <                 LNKC, <                 Zero<             }, < <             Package (0x04)<             {<                 0xFFFF, <                 0x02, <                 LNKD, <                 Zero<             }, < <             Package (0x04)<             {<                 0xFFFF, <                 0x03, <                 LNKA, <                 Zero<             }<         })<         Name (AR05, Package (0x04)<         {<             Package (0x04)<             {<                 0xFFFF, <                 Zero, <                 Zero, <                 0x11<             }, < <             Package (0x04)<             {<                 0xFFFF, <                 One, <                 Zero, <                 0x12<             }, < <             Package (0x04)<             {<                 0xFFFF, <                 0x02, <                 Zero, <                 0x13<             }, < <             Package (0x04)<             {<                 0xFFFF, <                 0x03, <                 Zero, <                 0x10<             }<         })

except by these two, you will have to remove those IRQs if you have problems with sound
2049,2050d2156
<						 IRQNoFlags ()
<							 {2}
2111,2112d2216
<						 IRQNoFlags ()
<							 {0}

With patching done, you will have to remove NullCPUPowerManagement.kext in order for sleep to work, because you need AppleIntelCPUPowerManagement.kext running. The SpeedStep patch should take care of the overheating issue. Use VoodooMonitor to check if it's working.

Edit: try this
Attached File  P5E_Deluxe.zip   26.32KB   23 downloads
remove NullCPUPowerManagement.kext and add AD1988b.kext to /Extra/Extensions

#289
MacKonsti

MacKonsti

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 228 posts
  • Gender:Male
  • Location:Muppet Show

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 ())			}		}	}

Dear roisoft, I just need to solve the "_CST evaluation failed" error when booting Snow Leopard 10.6.1 (and soon 10.6.2). Is it safe to just add the code suggested by you earlier? Is it generic, just to trick the error? Is it safe and will NOT damage the CPU/mainboard? Does this code contain cpu-model-specific values?

Personally, I am not insterested in SpeedStepping and SSDTs since they require a lot of reading on time that I don't have free, anymore Plus, I don't overclock the mobo...

Thank you in advance for your time.

#290
byally

byally

    InsanelyMac Protégé

  • Members
  • Pip
  • 6 posts

Right, it won't boot if you just copy my DSDT, you have to copy only the additions in my file.

To visualize it better, I suggest that you do a diff between my DSDT and yours, and open it in TextMate.
In terminal: diff yourDSDT.dsl myDSDT.dsl > DSDT.diff
Attached File  dsdt.diff.zip   2.66KB   8 downloads

Then you will copy only the parts that were added (without the ">" at the beggining), for example:
20a21,53

>     Method (DTGP, 5, NotSerialized)>     {>         If (LEqual (Arg0, Buffer (0x10)>                 {>                     /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, >                     /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B>                 }))>         {>             If (LEqual (Arg1, One))>             {>                 If (LEqual (Arg2, Zero))>                 {>                     Store (Buffer (One)>                         {>                             0x03>                         }, Arg4)>                     Return (One)>                 }> >                 If (LEqual (Arg2, One))>                 {>                     Return (One)>                 }>             }>         }> >         Store (Buffer (One)>             {>                 0x00>             }, Arg4)>         Return (Zero)>     }>

and do nothing with the changed parts, you'll keep as it is in your file, for example:
25c58
<			 OperationRegion (STBL, SystemMemory, 0xCFF8E0D0, 0x01D2)
---
>			 OperationRegion (STBL, SystemMemory, 0x7FF8E0D0, 0x01D2)

also you won't remove de deleted parts, keep them in your file, example:
1238,1305d1413
<         Name (PR05, Package (0x04)<         {<             Package (0x04)<             {<                 0xFFFF, <                 Zero, <                 LNKB, <                 Zero<             }, < <             Package (0x04)<             {<                 0xFFFF, <                 One, <                 LNKC, <                 Zero<             }, < <             Package (0x04)<             {<                 0xFFFF, <                 0x02, <                 LNKD, <                 Zero<             }, < <             Package (0x04)<             {<                 0xFFFF, <                 0x03, <                 LNKA, <                 Zero<             }<         })<         Name (AR05, Package (0x04)<         {<             Package (0x04)<             {<                 0xFFFF, <                 Zero, <                 Zero, <                 0x11<             }, < <             Package (0x04)<             {<                 0xFFFF, <                 One, <                 Zero, <                 0x12<             }, < <             Package (0x04)<             {<                 0xFFFF, <                 0x02, <                 Zero, <                 0x13<             }, < <             Package (0x04)<             {<                 0xFFFF, <                 0x03, <                 Zero, <                 0x10<             }<         })

except by these two, you will have to remove those IRQs if you have problems with sound
2049,2050d2156
<						 IRQNoFlags ()
<							 {2}
2111,2112d2216
<						 IRQNoFlags ()
<							 {0}

With patching done, you will have to remove NullCPUPowerManagement.kext in order for sleep to work, because you need AppleIntelCPUPowerManagement.kext running. The SpeedStep patch should take care of the overheating issue. Use VoodooMonitor to check if it's working.

Edit: try this
Attached File  P5E_Deluxe.zip   26.32KB   23 downloads
remove NullCPUPowerManagement.kext and add AD1988b.kext to /Extra/Extensions


Hey! Oldnapalm! Many Thanks!
It WORKS!

Thank you very much!

Sleep and audio - working.

And small question - how can I check that SpeedStep is working?
And also is it possible to enable deepsleep in SnowLeo?

#291
oldnapalm

oldnapalm

    InsanelyMac V.I.P.

  • Moderators
  • 6,837 posts
  • Gender:Male
  • Location:Brazil

Hey! Oldnapalm! Many Thanks!
It WORKS!

Thank you very much!

Sleep and audio - working.

And small question - how can I check that SpeedStep is working?
And also is it possible to enable deepsleep in SnowLeo?


You're welcome.

Use VoodooMonitor to check SpeedStep.

Sorry, I don't know about deepsleep.

#292
Bruce Wang

Bruce Wang

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 366 posts

UHCI 1: 1D 2934
UHCI 2: 1D,1 2935
UHCI 3: 1D,2 2936
UHCI 4: 1A 2937
UHCI 5: 1A,1 2938
UHCI 6: 1A,2 2939


Mine is ICH9M, instead of above configuration, I have
UHCI 1: 1D 2934
UHCI 2: 1D,1 2935
UHCI 3: 1D,2 2936
UHCI 4: 1A 2937
UHCI 5: 1A,1 2938
UHCI 6: 1D,3 2939

After applied the trick, 5 out of 6 worked, UHCI6 still remained as "Expansion Slot".
I think the problem is "1D,3", anyone knows how to fix it?

UHCIreset or USBBusFix in Chameleon doesn't work.
To sleep, the only option I can have now is the patched IOUSBFamily.kext from Slice.

Attached Files



#293
MacKonsti

MacKonsti

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 228 posts
  • Gender:Male
  • Location:Muppet Show
Guys, I have two simple questions that I request your attention to...

(1) I have added the following code in my DSDT within Device (IDE1) in order for my mobo (Shuttle SG31G2 with ICH7) to display the SATA channels properly in "System Profiler" but upon rebooting, I get kernel panics in both 32 and 64 bit... So my question is, what is the code/ID for ICH7? Without any hack, I get a blank controller line with my SATA SDD and DVD-R...

(...)			FAS0,   2,			FAS1,   2		}		Method (_DSM, 4, NotSerialized)  // Added for ICH7 SATA controller detection		{			Store (Package (0x02)				{					"device-id",					Buffer (0x04)					{						0x81, 0x26, 0x00, 0x00					//  0x22, 0x3A, 0x00, 0x00 // Or is it this?					}				}, Local0)			DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))			Return (Local0)		}		Device (PRIM)		{			(...)
(2) Secondly, with only two modifications in my DSDT (adding the DTGP method and doing a code-fix for the USBE device to be detected as EHCI) my sleep works well. The mobo wakes up via the USB keyboard and I don't have any USB devices lost upon wake (I admit I don't sleep and wake too many times in a row). So what is the benefit of adding the code in USB0 to USB3 of my DSDT?
Device (USB0)		{			Name (_ADR, 0x001D0000)			Method (_S3D, 0, NotSerialized)			{				If (LEqual (OSFL, 0x02))				{					Return (0x02)				}				Return (0x03)			}			Method (_DSM, 4, NotSerialized)  // Added method for UHCI identification			{				Store (Package (0x02)					{						"device-id",						Buffer (0x04)						{							0x34, 0x3A, 0x00, 0x00						}					}, Local0)				DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))				Return (Local0)			}			Name (_PRW, Package (0x02)			{				0x03,				0x03  // Value was 0x01			})		}
When I run the DSDT SE tool and then IORegExplorer, when I search for either "UHCI" or "USB" I get the same results, nothing really has changed.

So adding the Method (_DSM, 4, NotSerialized) above, what does it really serve?
Many thanks.

#294
MacKonsti

MacKonsti

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 228 posts
  • Gender:Male
  • Location:Muppet Show
Guys, I would really appreciate your help on this one...

I have a Shuttle XPC SG31G2 with ICH7 chipset and Snow 10.6.2. In System Profiler, there's no indication of the SATA controller on which I've attached the SATA drive and DVD-ROM, despite the devices being shown OK. So I added this code in my DSDT (within device IDE1 and before PRIM) where, according to lspci, the SATA controller is at address 0x001F0002:

0x001F0002)  <--- the address of SATA according to lspci
[blah blah]

Method (_DSM, 4, NotSerialized) // Added method for AppleIntelPIIXATA.kext detection
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0xC0, 0x27, 0x00, 0x00 // Needed device ID is [27C0]
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}

Device (PRIM)
{
[code continues] _linenums:0'>Device (IDE1) // Intel Corporation 82801GB/GR/GH (ICH7 Family) SATA IDE Controller{ Name (_ADR, <strong class='bbc'>0x001F0002</strong>) <--- the address of SATA according to <strong class='bbc'>lspci</strong> [blah blah] <strong class='bbc'>Method (_DSM, 4, NotSerialized) // Added method for AppleIntelPIIXATA.kext detection</strong> { Store (Package (0x02) { "device-id", Buffer (0x04) { 0xC0, 0x27, 0x00, 0x00 // Needed device ID is [27C0] } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } Device (PRIM) { [code continues]
I checked inside AppleIntelPIIXATA.kext's Info.plist that ICH7 must have device-id 0x27C08086 to be detected. This kext loads (confirmed via kextstat) Profiler doesn't seem to display the controller string.

Am I doing something wrong, here? Should I enter the whole 0x27C08086 id in the DSDT code?

Thanks in advance....!

#295
Goron

Goron

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 338 posts
  • Gender:Male
  • Location:somewhere out there ...
Thanks for sharing this great guide!!! Now even sleep works perfectly in Snow.

Cheers

Goron

#296
Datoshing

Datoshing

    InsanelyMac Protégé

  • Members
  • Pip
  • 5 posts
Hello there,

I install SL and everything works fine except sleep (I fixed my audio using dsdt patch). I have the infamous problem where the computer won't fully go to sleep. I tried your dsdt patching and it didn't work, but since I don't understand what is really going on I might have made some mistakes.

Would anyone please take a look at my dsdt file and tell me what I did wrong?

Thanks in advance ;)

Attached Files



#297
Goron

Goron

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 338 posts
  • Gender:Male
  • Location:somewhere out there ...
@Datoshing:

Just tried to compile your DSDT->

ASL Input: /Library/DSDT/DSDTFiles/dsdt.dsl - 10880 lines, 358842 bytes, 5429 keywords
AML Output: /Library/DSDT/DSDTFiles/./dsdt.aml - 41678 bytes, 1132 named objects, 4297 executable opcodes

Compilation complete. 0 Errors, 6 Warnings, 0 Remarks, 53 Optimizations

Have you tried fixing the warnings? Also i can´t find:

OperationRegion (BAR0, PCI_Config, 0xC4, One)
Field (BAR0, ByteAcc, NoLock, Preserve)

in my DSDT USB sections, so i can´t tell if there persists a problem, too.

Goron

#298
YoMuS

YoMuS

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 199 posts
  • Location:Valencia
Hello!

I have a quick question...

I know that this "00:1b.0 Audio device" corresponds to "Name (_ADR, 0x001B0000)", but,

which _ADR might these be?

01:09.0 FireWire (IEEE 1394)
01:0a.0 Network controller
02:00.0 Ethernet controller
04:00.0 VGA compatible controller


Also... under IORegistryExplorer, my wifi card and my firewire card appear under P0P3@1E device tree, so if I wanted to hack something under DSDT, I should put the Device(FRWR) inside the Device (P0P3) with their correct _ADR, shouldn't I?

Thanks in advance :(

#299
Datoshing

Datoshing

    InsanelyMac Protégé

  • Members
  • Pip
  • 5 posts
For all you guys who have problem with automatic sleep:

Get this software called PleaseSleep:

http://www.dragonone...sx/pleasesleep/

Now automatic sleep works too :blink: :thumbsup_anim:

#300
kidamnesiac

kidamnesiac

    InsanelyMac Protégé

  • Members
  • Pip
  • 29 posts
  • Gender:Male
  • Location:Rome, IT
Hi all,
first thanks for this amazing dsdt device id injection thing
now the question:
i'm on a laptop with ich9-M intel chipset [8086:2929]
currently using
AHCIPortInjector.kext
IOAHCIBlockStorageInjector.kext

I'm planning to inject 2929 through SAT0 device with DSDT
but my point is
i've got an external serial ata port in which i'd like the hot plug capability to work (orange icon)
is this even possible?
removing the blockstorage kext just puts all drives on "orange icons"
instead i'd like to have only the e-sata plugged drives with that icon
thank you
kind regards

kidA

addendum

tried to add my ich9-m device id 2929 through dsdt in the Device (SAT0) section,
all works without AHCIPortInjector.kext but now system profiler reports
Unknown AHCI Standard Controller
how do i fix that, is this a bad sign?

thank you all





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