Jump to content
TimeWalker

Dell Vostro 3450 not waking up from sleep

Recommended Posts

The sleep is the only major thing I'm bothered with right now but I will ask some more questions along the way.

The strange part about the Vostro 3x50 line is that all the machines are completely different even BIOS wise ..


Basically the situation is the following:

I am able to get my computer to sleep using any of the hibernate modes (0, 1, 3), however if I try to wake the laptop up from sleep it spins up the fan and HDD, does a scan of DVD drive and just stays like that on a black screen. The computer remains partially asleep because adjusting volume w/ hotkeys does not produce any sound.

I have an experience of editing DSDT so I'm not a total yankee here, but I'm unable to solve this issue with the knowledge that I have.


I have done an ACPI dump under Windows 7 Professional 64 that came preinstalled on the macine and also made a dum under Ubuntu 12.04. Compared them using Kaledoscope software to determine differences. Basically only the memory offsets of some regions seem to differ.

Here is my original DSDT that by default has an error in it that prevents it from compiling: http://www.mediafire.com/?82rnz5ti1578itj

                If (Or (_OSI ("Windows 2006"), _OSI ("Windows 2009")))
               {
                   Device (MBT)
                   {
                       Name (_HID, EisaId ("PNP0C32"))  // _HID: Hardware ID
                       Method (GHID, 0, NotSerialized)
                       {
                           Return (Buffer (One)
                           {
                                0x02
                           })
                       }
                   }
               }

I'm not sure what this device is, but it is later addressed in EC queries. I'm also not sure what is the device that comes right before this part - Device (CWDT)

I have changed this part to read as follows, allowing the dsl to compile properly.

                Method (_INI, 0, NotSerialized)
               {
				If (Or (_OSI ("Windows 2006"), _OSI ("Windows 2009")))
				{
				}
               }
			Device (MBT)
			{
				Name (_HID, EisaId ("PNP0C32"))
				Method (GHID, 0, NotSerialized)
				{
					Return (Buffer (One)
				{
					0x02
					})
				}
			}

I have proceeded by removing IRQs from RTC and TIMR and assigning them to HPET, also assigned 11 and 15 because by default it would "steal" random IRQs from EHCI devices occasionally resulting in non-working USB ports. Also I'm not sure if HPET is not supposed to have _UID, 0x00 and whether or not I should add _CID PNP0C01? At this point I have to mention that the laptop has Fresco Logit USB 3.0 controller onboard that cannot be disabled in BIOS (also BIOS is a SecureCore Tiano UEFI, which has a restriction of booting GPT-formatted HDDs) the only existing kext I know (PXHCD) from LaCie and modded by modbin allows the pors to be recognized under Sustem Profiler but connecting any peripheral or storage media they do nothing. They show the device but would not mount or power the device conencted. I'm not sure if they are supposed to work, in case they do this looks like an IRQ conflict to me.


Ok .. back on track to DSDT edits ..

Well, I have added DTGP descriptive and B1B2 coversive methods. The last one is used for joining 8bit registers back to 16 bit to allow my battery to be detected using AppleACIBatterymanager.

PCI0 already has _CID (compatible device) in it, which has previously prevented my desktop machine from sleeping\waking properlu.

 Name (_CID, EisaId ("PNP0A03"))  // _CID: Compatible ID


I have added _DSM to LPCB and SMBUS with the corresponding device IDs from the mac model (MacBookPro8,1) that I use.

I haven't removed IRQ2 from IPIC because then my display won't dim when running on battery or leaving the computer untouched for some time.

I've noticed that Device (EC) has no power method assigned (_PRW) which on my desktop machine it does. I'm not entirely sure if this needs to be there though.

I have added PNLF and assigned the methods to control brightness sort of like aliases to the other methods from the graphics devices. This is completely optional but I like it thai way, removing the methods still allows brightness adjustments both with hotkeys and slider in system preferences.

I also have renamed ADP0 to ADP1 and added a _PRW method to it (which I'm not sure about the correct values) to allow loading of the vanilla kext and basically to enable my adapter to be natively recognized, this enables the indicator to change instantly if you plug or unplug the AC.

Battery has had some changes done to it (splitting 16 bit registers to 8 bit and then joining them back together) for more see lines starting with Store (B1B2 (^^PCI0.LPCB.

I have added _DSM injection to my HD3000 and changed the name from GFX0 to IGPU because AGPM would give me "unsupported class" message otherwise.

Also changed SAT0 to SATA and EC0 to EC.

I havent added has-embeddes-fn-keys to my PS2K device because DSDT has AMW0 ACPI thing in it, also I have tried the _DSM trick and the Fn keys is not being detected. Should I remove AMW0 entirely for this fix to work ?

I havent'touched anything in _PTS or _WAK methods but I should note here that when using hibernatemode 3 the computer successfully creates sleepimage because upon hardreset (since machine is unable to wake) it gets loaded ...

I have changed Windows 20001 (XP) to Darwin to allow recognition of the operating system. I was advices to declare it as OSYS 0x2710 because in every check from OSYS it usually looks for LEqual or greater than Windows 20001 (0x07D1) which it always is so ACPI functions will get enabled\disabled equally.

I have added the usual EHCI fix myself as well as EHCI ownership fix that I call from the Method (PINI, 0, NotSerialized) that I've created.

I haven't touched any of the ThermalZOne stuff because I have never seen anything like this before.

Also I have added Notification to PWRB in Method (_L0D because it is used by EHCI.

HDEF section i also accordingly patched to allow AppleHDA to work. And I have added an injection of my wired network adapter as subdevice GIGE of the RP05

SBUS has BUS0 and BUS1 injected, even though mobile computers ie laptops don't seem to have such properties in their IOReg and they use Mikey driver instead.


Well this is basically everything that I've done so far. I'm not a fan of auto patching because I can't seem to track what its really doing and wether or not this is really needed in my DSDT. I should also mention that I have tired to add notification of EHC and PWRB to _WAK method but this has no effect. Machine remains partially asleep after hitting the power button.

Can you guys suggest what can be done? This is my first laptop experience and so far it has been pretty painful.

Heres my modified DSDT file: http://www.mediafire.com/?gcjccwl2bx84zjz

If you need a copy of my IORegistry dump to look into more details I will gladly attach it ASAP.


Thank you in advance.


P.S. I forgot to mention that I have modified my BIOS and unlocked writing to MSR register to enable native Powermanagement without the need of patching the kext after every update.

I'm suing Clover (rev 518 currently) as a bootloader but I have also tried XPC and Chameleon rev18xx something if I'm not mistaken and they all do the same. machine is unable to wake after any kind of sleep.

P.S.S. You can use a software called Kaleidoscope (30 day free trial) to compare 2 or more dsl files side by side to see the changes. It does and a superb job even though it was not purposely coded fro ACPI spec.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.





×
  • Create New...
The popup will be closed in 15 seconds...