Jump to content

Dell XPS 1340 mostly working with OSX 10.5.6,10.5.7


bcc9
 Share

514 posts in this topic

Recommended Posts

eh..about the dell mini kexts..well they doesnt work at all in my laptop, I cant get it working....again ill repeat bcc9 line, If someone could post a detailed instalation intructions would be cool!

 

Nothing new from me, im stuck @ dead end with the battery issue.

 

Cheers, Nano

Link to comment
Share on other sites

eh..about the dell mini kexts..well they doesnt work at all in my laptop, I cant get it working....again ill repeat bcc9 line, If someone could post a detailed instalation intructions would be cool!

I removed the stock XxX AppleACPIPS2Nub.kext, and ApplePS2Controller.kext and replaced the later with the ApplePS2Controller.kext found in the post:

 

http://mydellmini.com/forum/touchpad-drive...577.html#p45996

 

which is just the same link kenten05 posted here a while back.

The trackpad works for me with this solution, but fails upon resume from suspend. In fact I notice no difference in behavior with this solution vs the voodoops2 solution.Correction: Looks like I screwed up and still had the voodoops2 kext loaded. Argh. My keyboard&touchpad don't work at all when I just use the modified ApplePS2Controller.kext above.

Link to comment
Share on other sites

As for the DSDT tables, I am having a hard time interpreting the fact that OS X needs a table which is unique to every motherboard (even BIOS versions) to handle standard ACPI events. If this was the sole method of communicating with ACPI, OSX86 wouldn't have working battery support for any notebook which didn't have a custom DSDT. I am assuming there is not way to recieve logging as to why the service is terminating?
You seem to be arguing against pmcnano's post not mine.

 

I'd like to point out that I didn't and wouldn't claim that custom DSDT changes are necessary to get working battery status. However some users have made such changes to get battery status working on other hackintosh laptops and it may or may not be the easiest way to fix things here.

For example the dellmini folks patch dsdt to get working battery status.

 

Generally speaking DSDT changes are provably not required for this laptop as linux and windows are able to get the battery status via the ACPI event controller just fine. That is why I've been advocating looking into why the acpi event controller is failing under OSX.

 

I'm at a disadvantage as I don't have some other hackintosh laptop with working battery status to compare against.

Link to comment
Share on other sites

I'm at a disadvantage as I don't have some other hackintosh laptop with working battery status to compare against.

Macgirl has a m1330. I used her tutorial to get my old m1330 working, which did support battery status with the general modified PowerManagement.bundle. I don't have a m1330 anymore, but perhaps you could PM her.

Link to comment
Share on other sites

Ok so, bcc9, the dellmini kext doesnt work at all right?..Well....then we are both screwed here.

 

Mh about the dellmini's dsdt, would be interesting checking what changed does they do to get battery working, Ill read about that and see what i can find out.

 

Ill be reporting later..cya!

Link to comment
Share on other sites

Does anyone else have a problem with their system failing to ever return to sleep after it resumes from sleep the first time?

 

After the first wakeup, my laptop's disk access light keeps flashing at a constant rate of about once a second. Looks like this is some sort of problem with resuming the optical drive. If I insert a cd into the drive then the disk i/o light stops flashing. But the system still won't automatically go back to sleep after the first wakeup.

 

Ok so, bcc9, the dellmini kext doesnt work at all right?..Well....then we are both screwed here.
Right. Sorry for the confusion.

Mh about the dellmini's dsdt, would be interesting checking what changed does they do to get battery working, Ill read about that and see what i can find out.

 

Ill be reporting later..cya!

They use DSDT_Patcher to patch the battery portion of the DSDT table. That's as far as I've looked into it :)
Link to comment
Share on other sites

Yep, I downloaded their DellEfi thing...opened the package and found the Battery, and LID patches. Maybe if we mod that files we can get it working, we cant use the same patch since they use different methods. I asked on their forums who made that patch? Maybe I can get some help from him.....Ill let you all know later!

 

Cheers

Link to comment
Share on other sites

Yep, I downloaded their DellEfi thing...opened the package and found the Battery...

 

Here is the working 9 mini DSDT BAT1 device object

Device (BAT1)
{
Name (_HID, EisaId ("PNP0C0A"))
Name (_UID, One)
Name (_PCL, Package (0x01)
{
	_SB
})
Method (_STA, 0, NotSerialized)
{
	If (LAnd (ECOK (), LEqual (ECDY, Zero)))
	{
		If (^^EC0.BAL0)
		{
			Sleep (0x14)
			Return (0x1F)
		}
		Else
		{
			Sleep (0x14)
			Return (0x0F)
		}
	}
	Else
	{
		Sleep (0x14)
		Return (0x1F)
	}
}

Method (_BIF, 0, NotSerialized)
{
	Name (STAT, Package (0x0E)
	{
		One,		 // Power UNit (0 = mWh, 1 = mAh)			Not read anywhere, we decide which to do (os x wants mAh)
		Zero,		 // Design Capacity							   EC0.BDC0 (batt provides in mWh)
		Zero,		 // Last full capacity						EC0.BFC0 (batt provides in mWh)
		One,		 // Battery technology (1 = rechargeable)	 EC0.BTY0 
		Zero,		 // Battery Voltage							 EC0.BDV0
		0x01A4,	 // Design capacity of warning	UNKNOWN, these are from before I edited (aka, whatever the bios people had it at)
		0x9C,		 // Design capacity of low		UNKNOWN
		0x0108,	 // Granuility 1					UNKNOWN
		0x0EC4,	 // Ô		Ô 2					UNKNOWN	
		"W953G",	 // Model Number					UNKNOWN
		"",		 // Serial Number							EC0.BSN0
		"Lion",	 // Battery Type					UNKNOWN		(Mini 9 uses Lion batteries, so default works)
		"Unknown",	// OEM, read from							 EC0.BMF0
		Zero		// Cycle Count
	})
	if(ECOK())
	{

		// We decide the power unit, in our case (OS X) we shall use mAh
		//Sleep (0x14)
		//Store (One, Index (STAT, 0x00))	// Power Unit = BFC1
		Sleep (0x14)
		Store (^^EC0.CYC0, Index (STAT, 0x0D))	// Power Unit = BFC1

		// The Design capacity goes here
		Sleep (0x14)
		Store (^^EC0.BDC0, Local1)	// Batter design capacity = BDC0 in mWh
		Sleep (0x14)
		Store (^^EC0.BFC0, Local2)	// Last full charce = BFC0 in mWh
		Sleep (0x14)

		// Battery type, should be one for rechargeable
		Store (^^EC0.BTY0, Index (STAT, 0x03))
		Sleep (0x14)

		// Get the voltag
		//Store (^^EC0.BDV0, Index (STAT, 0x04))	// Voltage
		//Sleep (0x14)

		Store (^^EC0.BDV0, Local4) // Design voltage
		Sleep (0x14)


		// Now that we know the design voltage, let calculate the design capacity in mAh
		Store (Divide(Multiply(Local1, 0x2710), Local4), Index (STAT, 0x01))

		// And the Last full capacity im mAh
		Store (Divide(Multiply(Local2, 0x2710), Local4), Index (STAT, 0x02))

		//Store the voltage so we can tell the os what it is...
		Store (Local4, Index (STAT, 0x04))


		Store (Local4, Index (STAT, 0x01))	// Stored Design voltage (Probably used to calculate if battery is good or not

		Sleep (0x14)

		//Store (^^EC0.BDC0, Index (STAT, 0x05))	// Warning = BFC1
		//Sleep (0x14)						
		//Store (^^EC0.BDC0, Index (STAT, 0x06))	// Low (Critical) ?Warning = BFC1
		//Sleep (0x14)
		//Store (^^EC0.BDC0, Index (STAT, 0x07))	//  Capacity Granularity 1
		//Sleep (0x14)
		//Store (^^EC0.BDC0, Index (STAT, 0x08))	//  Capacity Granularity 2
		//Sleep (0x14)
		//Store (^^EC0.BDC0, Index (STAT, 0x09))	// Model Number
		//Sleep (0x14)

		Store (^^EC0.BSN0, Index (STAT, 0x0A))	// Serial number
		Sleep (0x14)
		//Store (^^EC0.BTY0, Index (STAT, 0x0B))	// Battery Type
		//Sleep (0x14)
		Store (^^EC0.BMF0, Local1)				// oem
		Sleep (0x14)


		If (LEqual (Local1, One))
		{
			Store ("Sanyo", Index (STAT, 0x0C))
		}
		Else
		{
			If (LEqual (Local1, 0x02))
			{
				Store ("Sony", Index (STAT, 0x0C))
			}
			Else
			{
				If (LEqual (Local1, 0x04))
				{
					Store ("Panasonic", Index (STAT, 0x0C))
				}
				Else
				{
					If (LEqual (Local1, 0x05))
					{
						Store ("Samsung", Index (STAT, 0x0C))
					}
					Else
					{
						If (LEqual (Local1, 0x07))	// According to dell, my battery is form Dynapack
						{
							Store ("Dynapack", Index (STAT, 0x0C))
						}
						Else
						{
							Store ("Compal", Index (STAT, 0x0C))
						}
					}
				}
			}
		}

		//Getting the model number???
		Store (^^EC0.BDN0, Local0)
		If (LEqual (BRAD, One))
		{
			If (LEqual (Local0, 0x02))
			{
				Store ("PA3421U ", Index (STAT, 0x09))
			}

			If (LEqual (Local0, 0x08))
			{
				Store ("PA3395U ", Index (STAT, 0x09))
			}
		}
		Else
		{
			If (LEqual (Local0, 0x02))
			{
				Store ("PA3421U ", Index (STAT, 0x09))
			}

			If (LEqual (Local0, 0x08))
			{
				Store ("PA3395U ", Index (STAT, 0x09))
			}
		}
	}
	Else
	{
		Store ("Li-Ion", Index (STAT, 0x0B))
	}

	Return (STAT)
}


Method (_BST, 0, NotSerialized)
{
	Name (PSTS, Package (0x04)
	{
		Zero,	// Batery State
		Zero,	// Discharge / Charge Rate
		Zero,	// Int Charge (aka Remaining)
		Zero,	 // Inst Voltage

	})

	If(ECOK())
	{

		Sleep (0x14)
		Store (^^EC0.BST0, Index (PSTS, 0x00))	// Battery State
		Sleep (0x14)

		Store (^^EC0.BAC0, Index (PSTS, 0x01))					// Instant
		Sleep (0x14)

		Store (^^EC0.BPV0, Index (PSTS, 0x03))	// Present Voltage
		Sleep (0x14)

		Store (^^EC0.BRC0, Local2) //Index (PSTS, 0x02))	// Remaining Capacity
		Sleep (0x14)
		Store (^^EC0.BDV0, Local4)	 // Design Voltage, used to convert mWh to mAh
		Sleep (0x14)

		// Convert to mAh
		Store (Divide(Multiply(Local2, 0x2710), Local4), Index (PSTS, 0x02))
	}

	If (LGreater (ECDY, Zero))
	{
		Decrement (ECDY)
		If (LEqual (ECDY, Zero))
		{
			Notify (BAT1, 0x81)			// Notify OSPM of status change
		}
	}


	Return (PSTS)
}


Method (BRAW, 0, NotSerialized)
{
	Name (EBIF, Package (0x10)
	{
		Zero,		   //	BMF0,   3,			 // Manyfacturer bitcode
		Zero,			//  BTY0,   1,			 // Type (1 = recharable)
		Zero,			//	BST0,   8,			 // Battery Status
		Zero,			//	BRC0,   16,		 // Remaining Capacity in mWh
		Zero,			//	BSN0,   16,		 // Serial Number?
		Zero,			//	BPV0,   16,		 // Current / Inst Voltage in mV
		Zero,			//	BDV0,   16,		 // Design Voltage in mV
		Zero,			//	BDC0,   16,		 // Design Capacity (in mWh)
		Zero,			//	BFC0,   16,		 // Last full capacity in mWh
		Zero,			//	GAU0,   8,			 // Percentage full
		Zero,			//	CYC0,   8,			 // Cycle Count
		Zero,			//	BPC0,   16, 
		Zero,			//	BAC0,   16, 
		Zero,			//	BAT0,   8, 
		Zero,			//	BTW0,   16, 
		Zero,			//	BDN0,   8, 
	})

	if(ECOK())
	{
		Sleep (0x14)
		Store (^^EC0.BMF0, Index (EBIF, 0x00))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.BTY0, Index (EBIF, 0x01))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.BST0, Index (EBIF, 0x02))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.BRC0, Index (EBIF, 0x03))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.BSN0, Index (EBIF, 0x04))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.BPV0, Index (EBIF, 0x05))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.BDV0, Index (EBIF, 0x06))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.BDC0, Index (EBIF, 0x07))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.BFC0, Index (EBIF, 0x08))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.GAU0, Index (EBIF, 0x09))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.CYC0, Index (EBIF, 0x0A))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.BPC0, Index (EBIF, 0x0B))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.BAC0, Index (EBIF, 0x0C))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.BAT0, Index (EBIF, 0x0D))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.BTW0, Index (EBIF, 0x0E))	// BAT in BDV = BDC1
		Sleep (0x14)
		Store (^^EC0.BDN0, Index (EBIF, 0xF))	// BAT in BDV = BDC1
		Sleep (0x14)

	}

	Return(EBIF)
}
}

 

Here is our decompiled DSDT BAT0 device definition (Using BIOS A06)

Note that we have a different device name, but I don't think that is the problem. I think we are just missing the additional logic required to retrieve battery status from ACPI in BIOS.

[/b]Device (BAT0)
{
   Name (_HID, EisaId ("PNP0C0A"))
   Name (_UID, One)
   Name (IN01, Zero)
   Method (_STA, 0, NotSerialized)
   {
       If (ECON)
       {
           Acquire (MUT0, 0xFFFF)
           Store (BTIN, Local0)
           Release (MUT0)
           If (LEqual (One, Local0))
           {
               Store (0x1F, Local1)
           }
           Else
           {
               Store (0x0F, Local1)
           }
       }
       Else
       {
           Store (0x0F, Local1)
       }

       Return (Local1)
   }

   Name (PKG0, Package (0x0D)
   {
       One, 
       0x5700, 
       0x1130, 
       Zero, 
       0x2B5C, 
       0xFA, 
       0x64, 
       0x0A, 
       0x19, 
       "00112233  ", 
       "BBBB", 
       "Lion      ", 
       "Dell      "
   })
   Name (PKG1, Package (0x04)
   {
       One, 
       Zero, 
       0x1130, 
       0x2B5C
   })
   Method (UPBI, 0, NotSerialized)
   {
       If (ECON)
       {
           Acquire (MUT0, 0xFFFF)
           Store (MFNM, Local1)
           While (One)
           {
               Name (T0_0, Zero)
               Store (Local1, T0_0)
               If (LEqual (T0_0, Zero))
               {
                   Store ("Unknow", Index (PKG0, 0x0C))
               }
               Else
               {
                   If (LEqual (T0_0, One))
                   {
                       Store ("Dell", Index (PKG0, 0x0C))
                   }
                   Else
                   {
                       If (LEqual (T0_0, 0x02))
                       {
                           Store ("SONY", Index (PKG0, 0x0C))
                       }
                       Else
                       {
                           If (LEqual (T0_0, 0x03))
                           {
                               Store ("SANYO", Index (PKG0, 0x0C))
                           }
                           Else
                           {
                               If (LEqual (T0_0, 0x04))
                               {
                                   Store ("PANASONIC", Index (PKG0, 0x0C))
                               }
                               Else
                               {
                                   If (LEqual (T0_0, 0x05))
                                   {
                                       Store ("SONY_OLD", Index (PKG0, 0x0C))
                                   }
                                   Else
                                   {
                                       If (LEqual (T0_0, 0x06))
                                       {
                                           Store ("SDI", Index (PKG0, 0x0C))
                                       }
                                       Else
                                       {
                                           If (LEqual (T0_0, 0x07))
                                           {
                                               Store ("SIMPLO", Index (PKG0, 0x0C))
                                           }
                                           Else
                                           {
                                               If (LEqual (T0_0, 0x08))
                                               {
                                                   Store ("MOTOROLA", Index (PKG0, 0x0C))
                                               }
                                               Else
                                               {
                                                   If (LEqual (T0_0, 0x09))
                                                   {
                                                       Store ("LGC", Index (PKG0, 0x0C))
                                                   }
                                               }
                                           }
                                       }
                                   }
                               }
                           }
                       }
                   }
               }

               Break
           }

           Sleep (0x64)
           Store (DLNM, Local1)
           While (One)
           {
               Name (T0_1, Zero)
               Store (Local1, T0_1)
               If (LEqual (T0_1, Zero))
               {
                   Store ("Unknow", Index (PKG0, 0x09))
               }
               Else
               {
                   If (LEqual (T0_1, 0xFF))
                   {
                       Store ("Dell", Index (PKG0, 0x09))
                   }
               }

               Break
           }

           Store (BTCN, Local1)
           While (One)
           {
               Name (T0_2, Zero)
               Store (Local1, T0_2)
               If (LEqual (T0_2, Zero))
               {
                   Store ("Unknow", Index (PKG0, 0x0B))
               }
               Else
               {
                   If (LEqual (T0_2, One))
                   {
                       Store ("PBAC", Index (PKG0, 0x0B))
                   }
                   Else
                   {
                       If (LEqual (T0_2, 0x02))
                       {
                           Store ("LION", Index (PKG0, 0x0B))
                       }
                       Else
                       {
                           If (LEqual (T0_2, 0x03))
                           {
                               Store ("NICD", Index (PKG0, 0x0B))
                           }
                           Else
                           {
                               If (LEqual (T0_2, 0x04))
                               {
                                   Store ("NIMH", Index (PKG0, 0x0B))
                               }
                               Else
                               {
                                   If (LEqual (T0_2, 0x05))
                                   {
                                       Store ("NIZN", Index (PKG0, 0x0B))
                                   }
                                   Else
                                   {
                                       If (LEqual (T0_2, 0x06))
                                       {
                                           Store ("RAM", Index (PKG0, 0x0B))
                                       }
                                       Else
                                       {
                                           If (LEqual (T0_2, 0x07))
                                           {
                                               Store ("ZNAR", Index (PKG0, 0x0B))
                                           }
                                           Else
                                           {
                                               If (LEqual (T0_2, 0x08))
                                               {
                                                   Store ("LIP", Index (PKG0, 0x0B))
                                               }
                                           }
                                       }
                                   }
                               }
                           }
                       }
                   }
               }

               Break
           }

           Sleep (0x64)
           Store (BID1, Local1)
           Store (BID2, Local2)
           ShiftLeft (Local1, 0x08, Local1)
           Or (Local1, Local2, Local1)
           Store (ITOS (ToBCD (Local1)), Index (PKG0, 0x0A))
           If (LEqual (BTIN, One))
           {
               Store (BTDC, Index (PKG0, One))
               Store (BTFC, Index (PKG0, 0x02))
           }

           Release (MUT0)
       }
   }

   Method (ITOS, 1, NotSerialized)
   {
       Store (Buffer (0x09)
           {
               /* 0000 */    0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
               /* 0008 */    0x00
           }, Local0)
       Store (Buffer (0x11)
           {
               "0123456789ABCDEF"
           }, Local7)
       Store (0x08, Local1)
       Store (Zero, Local2)
       Store (Zero, Local3)
       While (Local1)
       {
           Decrement (Local1)
           And (ShiftRight (Arg0, ShiftLeft (Local1, 0x02)), 0x0F, Local4)
           If (Local4)
           {
               Store (Ones, Local3)
           }

           If (Local3)
           {
               GBFE (Local7, Local4, RefOf (Local5))
               PBFE (Local0, Local2, Local5)
               Increment (Local2)
           }
       }

       Return (Local0)
   }

   Method (GBFE, 3, NotSerialized)
   {
       CreateByteField (Arg0, Arg1, TIDX)
       Store (TIDX, Arg2)
   }

   Method (PBFE, 3, NotSerialized)
   {
       CreateByteField (Arg0, Arg1, TIDX)
       Store (Arg2, TIDX)
   }

   Method (UPBS, 0, NotSerialized)
   {
       If (ECON)
       {
           Acquire (MUT0, 0xFFFF)
           If (LEqual (BTIN, One))
           {
               Store (BTCT, Local0)
               If (LEqual (Local0, Zero))
               {
                   Increment (Local0)
               }
               Else
               {
                   If (ACIN)
                   {
                       If (And (Local0, 0x8000))
                       {
                           Store (Ones, Local0)
                       }
                   }
                   Else
                   {
                       If (And (Local0, 0x8000))
                       {
                           Subtract (Zero, Local0, Local0)
                           And (Local0, 0xFFFF, Local0)
                       }
                       Else
                       {
                           Store (Ones, Local0)
                       }
                   }
               }

               Store (Local0, Index (PKG1, One))
               Store (BTRC, Index (PKG1, 0x02))
               Store (BTPV, Index (PKG1, 0x03))
               If (ACIN)
               {
                   If (LEqual (BTFU, One))
                   {
                       Store (Zero, Local0)
                       Store (BTFC, Index (PKG1, 0x02))
                   }
                   Else
                   {
                       If (LEqual (BTIC, One))
                       {
                           Store (0x02, Local0)
                       }
                       Else
                       {
                           Store (Zero, Local0)
                       }
                   }
               }
               Else
               {
                   If (LEqual (BTIC, One))
                   {
                       Store (Zero, Local0)
                   }
                   Else
                   {
                       Store (One, Local0)
                   }
               }

               Store (Local0, Index (PKG1, Zero))
           }

           Release (MUT0)
       }

       If (BTCE)
       {
           Store (Zero, Index (PKG1, Zero))
       }
   }

   Method (_BIF, 0, NotSerialized)
   {
       UPBI ()
       Return (PKG0)
   }

   Method (_BST, 0, NotSerialized)
   {
       UPBS ()
       Return (PKG1)
   }

   Name (_PCL, Package (0x01)
   {
       _SB
   })
}

This is the code we want, but I still have no idea how to recompile the modified DSDT and feed it to the DSTL boot loader.

Link to comment
Share on other sites

Yep I saw it, and I mean, just for starting....its BAT0 not BAT1.....so thats the mess we have to check, and after repairing all that, it doesnt mean it WILL work...........

Link to comment
Share on other sites

Yep I saw it, and I mean, just for starting....its BAT0 not BAT1.....so thats the mess we have to check, and after repairing all that, it doesnt mean it WILL work...........

Well, the PowerManagement.bundle also located in that Resources folder of the DellEFI distro has a really nice complete power control interface in System Preferences . Its got more checkable options that VoodooPower or the v3.7 battery patched PowerManagement.bundle. I would venture to say that we should use that once ACPI has been resolved. Keeping that in mind...the ACPI driver will be requested to look for a device named "BAT1", not BAT0 for battery updates

 

Another note:

AppleNForceATA.kext is not needed.

Link to comment
Share on other sites

This is the code we want, but I still have no idea how to recompile the modified DSDT and feed it to the DSTL boot loader.

 

 

Did you make any changes to it? Or its just from the dsdt table? IF you made changes, what changes?

Link to comment
Share on other sites

Did you make any changes to it? Or its just from the dsdt table? IF you made changes, what changes?

No I have not made any changes as of yet. I was trying to find some clear instructions on how to apply the custom DSDT. I want to try simply using the working mini 9's BAT1 device definition as is; in the hopes that the additional methods in that definition provide the logic to communicate with the battery status. It should work assuming that device definition does not rely on other methods or variables included in other mini 9 specific tables.

 

What is the procedure you are using to force the bootloader to use your modified DSDT?

 

 

If I followed your conversation on Superhai's forum correctly, the first method:

Method

(_STA, 0, NotSerialized){}

 

Should set _STA field to be 0xF for removed battery or 0x1F for battery present.

 

That command he gave you:

ioreg -n [deviceID] -r -x

Should output that current state of that _STA battery flag. _STA is the plugged/unplugged flag only. The time left (or percentage of charge) on your battery was provided by another method.

Link to comment
Share on other sites

shumik

 

I installed from the XxX distribution as well, did you install the default or do a custom install? If custom, what packages did you add?

 

I have tried every which way to install the .plist addition. If I use OSX86Tools, the computer hangs on reboot. If I use the plist Edit pro, it boots fine, but I do see any difference in the video card settings in the system info. The system profiler should display NVidia 9400M, correct? Also, how much memory is listed as allocated when things are working properly (I am still seeing 32 MB)? Any suggestions would be appreciated.

 

Also, once the bcc9's mods have been made, what screen resoluton do you have? How do I get full 1280x800 instead of 1024x768?

 

Thank you.

 

Update: the problem was an issue with the boot loader. I did a fresh install and reinstalled the boot loader, then everything worked fine.

 

Thank you for the well detailed instructions and the hard work.

 

the only thing i chose during xxx customizationis applenforceata. no kernels, or anything of that sort. also i installed some tools like osx86tools, kext helper, and ntfs-3g driver.

for video installation i followed the instruction using osx86tools. for me i have multiple os's, and that somehow screwed that part up, probably because i did something wrong. but i fixed it by reinstalling chameleon. video hack works perfectly with osx86tools, i am capable to watch HD video files. it appears as 9400M with 256 Mb. Mine was set to 1280x800 automatically after I installed plist hack. The only weird thing i noticed is that system RAM appears as 4 Gb DDR2 instead of DDR3.

The only thing i can suggest is i guess very lame, but make sure you have a dual boot with vista. and have your partitions formatted as MBR. Maybe that helps? Because this is what I got and it works this way.

I just got DW 1390 off ebay for 8 bucks, and i have wireless today finally. So now i have all the essentials working. I would recommend this option to everyone who has 1515. There is an extra PCIe slot with anetanna connectors when you open the laptop... DW 1390 works perfect with it through AirPort. And you don't have to remove your 1515, you can have both of them.

 

This is for those who have problems with dell mini touch pad drivers. Maybe it will be useful for you. Mine worked perfectly the first time i tried it. I didn't have voodoops2 or anything installed prior to it. it was totally clean installation from XxX.

I basicly followed the instructions here http://mydellmini.com/forum/touchpad-drive...577.html#p45996

i installed ApplePS2Controller.kext using Kext Helper. Then i did the following:

 

sudo cp -rf PS2PreferencePane.prefPane /System/Library/PreferencePanes/
sudo chmod +x /System/Library/PreferencePanes/PS2PreferencePane.prefPane/Contents/Resources/PS2PreferenceSetter
sudo cp -f com.meklort.ps2.helper.plist /Library/LaunchAgents/

 

The driver seems to work fine. it works after sleep and everything. The only problem is that it's way too sensitive at times, especially for touch clicking. You can try tweak it in the panel, but you can't make it perfect as it is under Vista. Maybe future updates will improve it, who knows.

Link to comment
Share on other sites

Note that we have a different device name, but I don't think that is the problem. I think we are just missing the additional logic required to retrieve battery status from ACPI in BIOS.

Notice that the dell 1340 DSDT already has logic to return the 0x10 bit for battery's _STA method. It's just that this depends upon the ECON variable, which in turn depends upon the ACPI controller (the one whose kext isn't running, remember?)

 

This is the code we want, but I still have no idea how to recompile the modified DSDT and feed it to the DSTL boot loader.

You compile dsdt with microsoft's or intel's aml compiler. I'd recommend iintel's: http://www.acpica.org/downloads/unix_source_code.php

 

I still don't think trying to crib changes from the dellmini DSDT is the right approach.

Link to comment
Share on other sites

It's just that this depends upon the ECON variable, which in turn depends upon the ACPI controller (the one whose kext isn't running, remember?)

Yea...we remember. The battery flag returns are there, but is there a chance that a DSDT entry is what is causing the instantiation of ECON to end the service?

 

OS X is not my primary platform. Is there a way we can get debugging info or events pertaining to the ACPI service?

Link to comment
Share on other sites

Mh, you just compile the dsdt.aml with fassl patcher and just put the file in your root! It will be loaded, i already tried compilig with the dellmini 9's bat1 (changed to bat0)..and it doesnt work...I mean, i cant even compile it.

 

So..no clue atm..searching for the person that made all that modifications..

Link to comment
Share on other sites

Yea...we remember. The battery flag returns are there, but is there a chance that a DSDT entry is what is causing the instantiation of ECON to end the service?

If you look at the xps1340 dsdt, there is only one method which sets the ECON variable to be non-zero - the _REG method for the ACPI controller. That this value is zero tells me that the ACPI controller's _REG method was never called, which if I'm reading the ACPI spec right, means the battery status cannot be read (the memory access didn't get set up).

 

To be clear, when ECON is 0 (the default), _STA for BAT0 will return with the 0x10 bit clear, which means the battery isn't detected.

OS X is not my primary platform. Is there a way we can get debugging info or events pertaining to the ACPI service?
Ditto - I'm new at OSX. Linux, vista and windows7 show working acpi controller drivers and so they have an easy time seeing the battery status via the DSDT methods. Under OSX I debugged voodoobattery a bit but a few weeks back but there are no acpi events (since the controller isn't running). If I had voodoobattery working on another system it'd be a lot easier to see what's going on.
Link to comment
Share on other sites

Buahahaaha i just noticed something interesting...I sleep my laptop came back from sleep, of course no trackpad...with the keyboard i ran terminal kextunload VoodooPSTrackpad...then load it again and i have trackpad again....there should be a way to make this automaticly..:D...

 

Ill check this out later..

Link to comment
Share on other sites

Does anyone else have a problem with their system failing to ever return to sleep after it resumes from sleep the first time?

 

After the first wakeup, my laptop's disk access light keeps flashing at a constant rate of about once a second. Looks like this is some sort of problem with resuming the optical drive. If I insert a cd into the drive then the disk i/o light stops flashing. But the system still won't automatically go back to sleep after the first wakeup.

Should I take it that nobody else uses sleep enough to have experienced this one way or another?
Link to comment
Share on other sites

Buahahaaha i just noticed something interesting...I sleep my laptop came back from sleep, of course no trackpad...with the keyboard i ran terminal kextunload VoodooPSTrackpad...then load it again and i have trackpad again....there should be a way to make this automaticly.. :censored2: ...

 

Ill check this out later..

This one has worked for me even after Sleep:

http://chameleon[dot]osx86.hu/static/some-words-about-donation?ref=file_download/25/VoodooPS2Controller-0.98-installer.pkg

 

must delete /System/Library/Extensions/AppleACPIPS2Nub.kext before running the installer

Link to comment
Share on other sites

If you look at the xps1340 dsdt, there is only one method which sets the ECON variable to be non-zero - the _REG method for the ACPI controller. That this value is zero tells me that the ACPI controller's _REG method was never called, which if I'm reading the ACPI spec right, means the battery status cannot be read (the memory access didn't get set up).

 

To be clear, when ECON is 0 (the default), _STA for BAT0 will return with the 0x10 bit clear, which means the battery isn't detected.

Ditto - I'm new at OSX. Linux, vista and windows7 show working acpi controller drivers and so they have an easy time seeing the battery status via the DSDT methods. Under OSX I debugged voodoobattery a bit but a few weeks back but there are no acpi events (since the controller isn't running). If I had voodoobattery working on another system it'd be a lot easier to see what's going on.

You can boot OS X with the boot flag

debug=0x02

And during verbose boot you can quickly see a reference that the ACPI Service has failed which didn't show in just verbose

 

You can also run kextload with a "-v [0-6]" (i think -v) to see all the linking and dialogs which occur when ACPIEC.kext is loaded, but it doesn't echo out anything out when it finally unloads.

So like:

kextload -v 3 AppleACPIEC.kext

Link to comment
Share on other sites

wtf?....mh im using the same......same goes for bcc9 afaik, and it doesnt work correctly after sleep =(

 

Lol, which topic? Sleep after sleep, or trackpad after sleep?

 

I havn't tried multiple sleeps. I tried trackpad movement and keyboard after 1 sleep and it worked.

Link to comment
Share on other sites

I tried a Vanilla 10.5.3 AppleACPIPlatform 10.5.3 (v1.2.1 of AppleACPIEC.kext), in hopes that the addition of AppleACPIPowerSource.kext would provide battery stast as it did back then. Boots, but still no working battery stats.

 

Another thing, isn't thepress of the Power Button an ACPI event? When you tap the power button, OS X prompts if you want to shut down, restart or sleep. Doesn't that prove tham some ACPI events are being recognized?

Link to comment
Share on other sites

 Share

×
×
  • Create New...