Jump to content

USB sleep then wake "Device Removal" problem


pcb355
 Share

152 posts in this topic

Recommended Posts

Hi Apex,

 

Thanks so much for your work. I have followed your instructions and come up with a DSDT that compiles fine, and it shows my USB High Speed Bus as built-in now, but when I sleep the power supply and light stays on. I also tried the latest USBE and USE2 sections you posted above with same result. I have attached my dsl in hopes you can help. My system sleeps fine with standard DSDT from DSDT patcher. The patcher works with and without New HPET, which is best? I am fooling with this on a 10A421 install, waiting for my "upgrade" disc to arrive. Thanks again.

dsdt.dsl.txt

Link to comment
Share on other sites

OK my UHCI devices are called USB instead of UHC 1-6, except there is no USB6. In between 1-3 and 4-5 is US31. Then I have USBE after USB5. All of the device id's match up with that post you linked. Should I leave out USB6 or add it? Here is what I have so far, with USB6 added.

 

OK my UHCI devices are called USB instead of UHC 1-6, except there is no USB6. In between 1-3 and 4-5 is US31. Then I have USBE after USB5. All of the device id's match up with that post you linked. Should I leave out USB6 or add it? Here is what I have so far, with USB6 added.

 

I tried to compile and got lots of errors. I changed USB1-6 to USB0-5 and now it compiles. Am I good to go now?

dsdt.dsl.txt

Link to comment
Share on other sites

@nathan

 

You renamed your USB Devices from USB0-5 to USB1-6, you need to change all occurences of USB0-5 to USB1-6!! So, USB0 is now USB1, USB1 is USB2 and so on. You should have named them UHC1 to UHC6 like in the Guide.

 

You didn't include device-id injection for the USBE and USE2 ports.

Link to comment
Share on other sites

@nathan

 

You renamed your USB Devices from USB0-5 to USB1-6, you need to change all occurences of USB0-5 to USB1-6!! So, USB0 is now USB1, USB1 is USB2 and so on. You should have named them UHC1 to UHC6 like in the Guide.

 

You didn't include device-id injection for the USBE and USE2 ports.

 

The guide said do not rename the devices, so is it OK if I just made them USB0-5 again? I didn't see in the guide how to do the USBE and USE2 device-ids. They already show built-in.

Link to comment
Share on other sites

I just tried it, and strangely, all but 2937 show as built-in. 2937 is still Expansion Slot, and I only get half-way sleep still. What is wrong with 2937, should be this one:

 

Device (USB3)

{

Name (_ADR, 0x001A0000)

 

 

Method (_DSM, 4, NotSerialized)

{

Store (Package (0x02)

{

"device-id",

Buffer (0x04)

{

0x37, 0x3A, 0x00, 0x00

}

}, Local0)

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

Return (Local0)

}

}

 

 

 

@nathan

 

You can leave the names as they are. I already posted USBE and USE2 with device-id injection INCLUDED some posts earlier. Replace them with yours and you should be good to go.

 

 

Yes, I think I did that already.

dsdt.dsl.txt

Link to comment
Share on other sites

0x001A0000 is no USB Port. In some Gigabyte BIOS' the fourth UHCI Device is US31! It should be USB3 but it actually is US31. Remove the device-id injection from USB3, rename USB3 to US31 and rename the "original" US31 to USB3 and insert the device-id property there.

 

You can see that when you open ioregistryexplorer and check your USB devices. You'll see that US31 actually is a USB UHCI Device. Damn Gigabyte.

 

OMG i should make a osx86 hotline :)

 

This is the hotline, and I do appreciate it.

 

Now you lost me a little. Here is what I have currently for USB3 and US31. How do I mod this correctly?

 

Device (US31)

{

Name (_ADR, 0x001A0000)

Method (_S3D, 0, NotSerialized)

{

If (LEqual (OSFL, 0x02))

{

Return (0x02)

}

 

Return (0x03)

}

 

Name (_PRW, Package (0x02)

{

0x0E,

0x03

})

}

 

Device (USB3)

{

Name (_ADR, 0x001A0000)

 

 

Method (_DSM, 4, NotSerialized)

{

Store (Package (0x02)

{

"device-id",

Buffer (0x04)

{

0x37, 0x3A, 0x00, 0x00

}

}, Local0)

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

Return (Local0)

}

}

 

Both are 0x001A0000?

Link to comment
Share on other sites

0x001A0000 is no USB Port. In some Gigabyte BIOS' the fourth UHCI Device is US31! It should be USB3 but it actually is US31. Remove the device-id injection from USB3, rename USB3 to US31 and rename the "original" US31 to USB3 and insert the device-id property there.

 

You can see that when you open ioregistryexplorer and check your USB devices. You'll see that US31 actually is a USB UHCI Device. Damn Gigabyte.

 

OMG i should make a osx86 hotline ;)

 

I am a little bit confused after your post. Does I have done the fix correct? Wake up vvia keyboard/mouse doesn't work.

DSDT.txt

Link to comment
Share on other sites

here is my IOReg output without any DSDT.aml loaded. I can't find 1D,3 but 1A is existing.

 

My IOReg looks the same as yours.

 

 

 

 

Apex:

 

I think I had been leaving some things out of the Device section, so I think this is more correct, but I still get 2937 in an Expansion Slot:

 

 

Device (USB3)

{

Name (_ADR, 0x001D0003)

Method (_S3D, 0, NotSerialized)

{

If (LEqual (OSFL, 0x02))

{

Return (0x02)

}

 

Return (0x03)

}

Method (_DSM, 4, NotSerialized)

{

Store (Package (0x02)

{

"device-id",

Buffer (0x04)

{

0x37, 0x3A, 0x00, 0x00

}

}, Local0)

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

Return (Local0)

}

Name (_PRW, Package (0x02)

{

0x0E,

0x03

})

}

 

Device (US31)

{

Name (_ADR, 0x001A0000)

Method (_S3D, 0, NotSerialized)

{

If (LEqual (OSFL, 0x02))

{

Return (0x02)

}

 

Return (0x03)

}

 

Name (_PRW, Package (0x02)

{

0x0E,

0x03

})

}

dsdt2.dsl.txt

Link to comment
Share on other sites

Sorry for confusing you, US31 is USB3 but address was right:

 

			Device (USB3)
		{
			Name (_ADR, 0x001A0000)
			Method (_S3D, 0, NotSerialized)
			{
				If (LEqual (OSFL, 0x02))
				{
					Return (0x02)
				}

				Return (0x03)
			}

			Name (_PRW, Package (0x02)
			{
				0x0E, 
				One
			})

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

 

Above entry should be right. Too many code for today i guess. Make sure US31 has address 0x001D0003 and no device-id injection.

Link to comment
Share on other sites

ok thank you very much. But I can't wake up with USB keyboard or mouse. In the other thread yo write that this is possible with a P35 board. Is there still another fix?

Ooohhh....I thought P35 is ASUS motherboard!? Is it? :blink: EDIT: Oh, I see....sorry I'm a bit confused today... :D

 

@ kizwan

does your Applesystemprofiler show the highspeed ports as built-in? Search your logs for Sleepcapability. If your ports are unloaded at sleep then you need the fix too.

.......................

My high speed ports detected as built-in in system profiler. In the logs file there is no message regarding usb device will be unloaded across sleep (or any other error regarding usb). I have not try yet your solution but will try it soon. My problem is that it can't sleep because internal webcam which connected to the highspeed port will cause it to wake. Even though it go to sleep halfway but when it wake up I got the message that my external HDD was not properly ejected/removed. I was hoping your solution can fix this (also sleep). FYI, it have ICH7 chipset. It can go to sleep if I removed the high speed device from DSDT, which it will detected as external device, but this will make my laptop unstable.

 

kizwan

Link to comment
Share on other sites

@tuxianer:

Hallo landsmann! :D

 

@ Here's to the crazy ones.

The misfits.

The rebels.

The troublemakers.

The round pegs in the square holes.

The ones who see things differently:

The DSDT geniuses. ;)

 

the _DTGP method is already in my dsdt, or do i have to move it up under the wak one?

the problem is im not into coding and DSDT is different than c/p terminal and plist commands/edits.

i never know where one "section" ends and these bloody ({ make me mad }).

and often when i copy sth i get invalid character warnings when compiling...

 

for me understanding my girlfriend is even easier than getting this DSDT with sleep and usb sorted, god damn!

i know that i am supossed to just learn how to bloody do it myself, but thats i think way beyond my scope. having said that and after days of trying to sort it out myself, could i kindly ask anyone to help me out and fix my dsdt?

 

i have no clue about the amount of time involved, so if im asking for too much, i apologize up front for this then rude question, but hey, im just in despair!

dsdt.txt

Link to comment
Share on other sites

Apex hoping you can help me.

 

Your fix is the only one I've been able to find to fix USB unmount on UD3P.

 

I have a solid install working (except for USB unmount and auto sleep).

 

But I want to fix USB.

 

Yes I'm a noob. blush.gif

 

I have decompiled using DSDT Patcher and have a txt file ready to edit.

 

I have made the changes that you suggested to the txt file but I don't know the steps to re-compile. Please help me with the missing pieces of info - I've spent all day trying to work it out.

 

Once recompiled it goes in the root or Extra folder?

 

Appreciate your or anyones help.

 

Keeza

 

@tuxianer:

Hallo landsmann! :D

 

@ Here’s to the crazy ones.

The misfits.

The rebels.

The troublemakers.

The round pegs in the square holes.

The ones who see things differently:

The DSDT gods. ;)

 

the _DTGP method is already in my dsdt, or do i have to move it up under the wak one?

the problem is im not into coding and DSDT is different than c/p terminal and plist commands/edits.

i never know where one "section" ends and these bloody ({ make me mad }).

and often when i copy sth i get invalid character warnings when compiling...

 

for me understanding my girlfriend is even easier than getting this DSDT with sleep and usb sorted, god damn!

i know that i am supossed to just learn how to bloody do it myself, but thats i think way beyond my scope. having said that and after days of trying to sort it out myself, could i kindly ask anyone to help me out and fix my dsdt?

 

i have no clue about the amount of time involved, so if im asking for too much, i apologize up front for this then rude question, but hey, im just in despair!

 

I know the feeling!biggrin.gif

Link to comment
Share on other sites

Finally it seems that your patch worked in my lenovo n500 with ich9 chipset (still testing). It sleeps and wake up ok and all usb ports showed as built in.

Now waiting for a new iopcifamiliy driver for SL cause still having this message:

 

AppleUSBEHCI[0x4284000]: unable to get filterInterruptEventSource

 

or can this be solved with a dsdt patch?

 

thanks

Link to comment
Share on other sites

OK, this should work:

 

USBE:

			Device (USBE)
		{
			Name (_ADR, 0x001D0007)
			Method (_S3D, 0, NotSerialized)
			{
				If (LEqual (OSFL, 0x02))
				{
					Return (0x02)
				}

				Return (0x03)
			}

			Name (_PRW, Package (0x02)
			{
				0x0D, 
				One
			})

			Method (_DSM, 4, NotSerialized)
			{
				Store (Package (0x06)
					{
						"device-id",
						Buffer (0x04)
						{
							0x3A, 0x3A, 0x00, 0x00
						},
							 "AAPL,clock-id",
							 Buffer (0x01)
							 {
								 0x01
							 },
							 "device_type",
							 Buffer (0x05)
							 {
								"EHCI"
							 }

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

		}

 

 

 

USE2:

			Device (USE2)
		{
			Name (_ADR, 0x001A0007)
			Method (_S3D, 0, NotSerialized)
			{
				If (LEqual (OSFL, 0x02))
				{
					Return (0x02)
				}

				Return (0x03)
			}

			Name (_PRW, Package (0x02)
			{
				0x0D, 
				One
			})

			Method (_DSM, 4, NotSerialized)
			{
				Store (Package (0x06)
					{
						"device-id",
						Buffer (0x04)
						{
							0x3C, 0x3A, 0x00, 0x00
						},
							 "AAPL,clock-id",
							 Buffer (0x01)
							 {
								 0x02
							 },
							 "device_type",
							 Buffer (0x05)
							 {
								"EHCI"
							 }

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

		}

 

 

 

 

I tested it, it compiles fine here. Good Luck!

 

Similar to tuxianer's experience, it does not work for me on GA-P35-DS4. Monitor goes into sleep, not the machine.

dsdt.txt

Link to comment
Share on other sites

 Share

×
×
  • Create New...