Jump to content

Firewire issues


  • Please log in to reply
98 replies to this topic

#1
kdawg

kdawg

    InsanelyMac Legend

  • Donators
  • 508 posts
  • Gender:Male
  • Location:Boston, MA
UPDATE: this is in the wrong spot, sorry. Please move to appropriate location or delete.

It occurred to me people may be having firewire problems with their Gigabyte boards.

FireWire runtime power conservation disabled. (2)

This is how to fix that.

Method (_L1A, 0, NotSerialized) // <-- Added for firewire
		{
			Notify (\_SB.PCI0.PCIB.FRWR, 0x00)
			Notify (\_SB.PWRB, 0x02)
		}

Within the Device (PCIB) I added another device:
Device (FRWR) // <--Firewire (check to be sure the _GPE value is OK)
				{
					Name (_ADR, 0x00070000)
					Name (_GPE, 0x1A)
					Method (_DSM, 4, NotSerialized)
					{
						Store (Package (0x02)
							{
								"fwhub", 
								Buffer (0x04)
								{
									0x00, 0x00, 0x00, 0x00
								}
							}, Local0)
						DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
						Return (Local0)
					}
				}

Let me know what kind of results people get.

Attached File  dsdt_GA_EP45_UD3P.dsl.zip   15.4KB   452 downloads

#2
MasterLen

MasterLen

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 146 posts
  • Location:Berlin
The error:
FireWire runtime power conservation disabled. (2)

is gone with this fix but my firewire ports aren't hot pluggable anymore!!

With this fix firewire is only hot pluggable after sleep!

#3
scrax

scrax

    InsanelyMac Deity

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 1,704 posts
  • Gender:Male
I've added this fix, modded with my GPE also in Scope (\_GPE). After that like you hotplug onlyi after sleep. Before that dsdt fix nothing was working, with some error, now no error in kernel.log

#4
asadev

asadev

    InsanelyMac Protégé

  • Members
  • Pip
  • 39 posts
Added this to my DSDT and the error has now gone.
Though my ipod connected to firewire does not work at all. Tried after sleep and a restart.
Havent got a firewire hard drive to test out.

#5
Detrich

Detrich

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 135 posts
asadev, did you tried something like this?

Device (FRWR)
				{
					Name (_ADR, 0x00070000)
					Name (_GPE, 0x02)
				 }


#6
MacKonsti

MacKonsti

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 233 posts
  • Gender:Male
  • Location:Muppet Show
I also confirm the removal of the error (at boot time) and that my firewire (for my external HDDs) is only available upon reboot. If I plug the devices after boot, I get nada. Haven't bothered to check after sleep...

I personally believe that this could be the reason of the problem:
Method (_L1A, 0, NotSerialized) // <-- Added for firewire
			 {
				 Notify (\_SB.PCI0.PCIB.FRWR, 0x00)
				 Notify (\_SB.PWRB, 0x02)
			 }
This method with code _L1A was not there before, in my DSDT... You guys had it already? I added it last (I think under _GPE) but got this problem with devices; then removed it, recompiled DSDT, nothing... Same problem. Perhaps the system doesn't read this _L1A method?

Also, the _GPE variable 0x1A could be the problem--unless it's related to the above _L1A but I don't know!
Name (_GPE, 0x1A)
Method (_DSM, 4, NotSerialized)
{
...etc... _linenums:0'>Device (FRWR) // <--Firewire (check to be sure the _GPE value is OK) { Name (_ADR, 0x00070000) <strong class='bbc'>Name (_GPE, 0x1A)</strong> Method (_DSM, 4, NotSerialized) { ...etc...
Can anyone check or does anyone know what the value 0x1A stands for? I checked in IOreg but could not find it... Only the state of the FRWR port(s).

EDIT: My board has ICH7 chipset, and according to lspci -nn my DSDT address is:
Name (_ADR, 0x060A0000)
Using the original address above had no results at all, the "conservation" error still appeared...

#7
Detrich

Detrich

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 135 posts
MacKonsti

Read my last post, I think, method (_L0X...LXX), is an windows related ...

#8
MacKonsti

MacKonsti

    InsanelyMac Geek

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

MacKonsti
Read my last post, I think, method (_L0X...LXX), is an windows related...

Thanks for your reply, mate. I did read your post, but I thought it was more related to the hardware address, rather than the value of _GPE you have.

So you say that Name (_GPE, 0x1A) has nothing to do with Method entry Method (_L1A, ...) despite ending in 1A? I thought it was pointing to Method L1A.

I will try later to add 0x02 as you suggest and will come back with my findings (I am at the office, still).

By the way, the entry for power-button Notify (\_SB.PWRB, 0x02) was it there before the firewire code/hack, or is it necessary for firewire too? Remember, I have no Method _L1A in my DSDT!

#9
MacKonsti

MacKonsti

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 233 posts
  • Gender:Male
  • Location:Muppet Show
Guys there must be a notification issue, here, within the DSDT. I explain:

I made the additions/modification for the firewire device, changed Name (_GPE, 0x1A) to Name (_GPE, 0x02) but nothing occured. I then ran DSDT SE and the included IO Registry Explorer, and under FRWR there's a section called IOPowerManagement with 2 keys, ChildrenPowerState and CurrentPowerState.

These start with original values 0x01 when booting the system and no firewire drives attached. When I attach/turn on the firewire HDD nothing happens, these keys have values of 0x01. But when I sleep and wake up, the drive is detected and the value for both keys is now 0x02.

When I eject/detach the firewire drive, the values fall back to 0x01. When I turn it on again, nothing happens. But once more, when sleeping/waking up, the drive is on-line and IORegistryExplorer reports values of 0x02 for both ChildrenPowerState and CurrentPowerState.

What's going on?!? There must be a DSDT notification we forget!!!! Should we perhaps add a notification to the _WAK space, too, like those for USBs?

Detrich, can you comment? Anyone?

#10
Detrich

Detrich

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 135 posts
Hi, MacKonsti, 0x02 value is related to default general power resource, so, in this case, you don't need some extensions like LXX. And yes, we get 0x1(in normal mode) and 0x2( after wake up) for Children and Current PowerStates, on Real Macs we get the same values. The problem with hot-plug is not here, but in Device ID I think, like USB (sorry, I don't have a fireware device, at the moment, to test it).

So, please, try to put this, under fireware device scop and tell me if hotplug works:
Device (FRWR)
				{
					Name (_ADR, 0x000?0000) [i]?- your device number location[/i]
					Name (_GPE, 0x02)
					Method (_DSM, 4, NotSerialized)
					{
						Store (Package (0x02)
							{
								"device-id", 
								Buffer (0x04)
								{
									0x3E, 0x82, 0x00, 0x00
								}
							}, Local0)
						DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
						Return (Local0)
					}
				}


#11
MacKonsti

MacKonsti

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 233 posts
  • Gender:Male
  • Location:Muppet Show
Dear Detrich thanks for your reply. Remember I have ICH7 chipset so the device ID you write is not correct for me. But I did try this "device-id" from the start, without success:

Device (FRWR)  // Added device for Texas Instruments TSB43AB22/A IEEE-1394A Controller    {        Name (_ADR, 0x060A0000)  // Reported by lspci -n        Name (_GPE, 0x1A)        // Using this code kills the firewire error!        Method (_DSM, 4, NotSerialized)        {            Store (Package (0x04)            {                "device-id",                Buffer (0x04)                {                    0x23, 0x80, 0x00, 0x00  // Needed device ID for ICH7 is [8023]                },                "fwhub",                Buffer (0x04)                {                    0x00, 0x00, 0x00, 0x00                }            }, Local0)            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))            Return (Local0)        }    }
I have played two nights in a row (my wife will kick me out of bed if I continue!) with various values and code and many reboots (screwing up my Intel SSD) and the only thing I found is:

If we omit the entry Name (_GPE, ???) then the error "FireWire runtime power conservation disabled (2)" appears! This is the code that takes away the error during boot.

According to IORegistryExplorer, my device is properly detected as FRWR by the system (under the HUB0@1E > IOPCI2PCIBridge branch) but I cannot make any device/HDD be detected upon booting and plugging it; I plug it, and only after sleep/wake, it's detected. I check with Disk Utility, it's not just un-mounted, it's missing completely :P

We need to ask more experienced users about their thoughts on this matter... But thanks for your feedback, Detrich. Perhaps if you have Adobe Premiere and a DV camera, you can also try to connect it by firewire...

#12
Detrich

Detrich

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 135 posts
:D Just a question:
Did realmac have 8023 ID, I cant find this one ???

Because I've seen just 8025 for MacPro1,1. As u know, we need to inject IDs from realmacs, to have native support :blink:

#13
MacKonsti

MacKonsti

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 233 posts
  • Gender:Male
  • Location:Muppet Show
I don't know where to find IDs for real macs. I have ICH7 chipset, and my ID is 8023 as you see. I also declare my mobo as MacPro3,1 so it's most probable that ICH7 doesn't exist on Mac Pro machines. I did try to put in your value 823E and it didn't work either, of course. Perhaps I need to change my SMBios to iMac7,1?

Where can we see how MacPro1,1 or 3,1 is defined? Do you know which files have definitions of IDs (plist perhaps)?

#14
Detrich

Detrich

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 135 posts
Some of them are downloaded from here . About iMac7,1, u can try...

#15
MacKonsti

MacKonsti

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 233 posts
  • Gender:Male
  • Location:Muppet Show
Firewire hot-plug issue AND power conservation SOLVED. Here is my code, and it is irrelevant if your machine is declared as iMac5,1 (due to my ICH7 chipset) or MacPro3,1. I tried iMac5,1 first, then reverted back to MacPro3,1 because speed-stepping on my Q9550 wasn't working with iMacPro5,1 for some reason...

The trick was to make a (_GPE) callback not to a new notification for firewire, but instead, to the device that includes the firewire:

Intel Corporation 82801 PCI Bridge
{
Name (_ADR, 0x001E0000)
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}

Name (PICM, Package (0x0C)
{
blah-blah
}

Name (APIC, Package (0x0C)
{
blah-blah
}

Method (_PRT, 0, NotSerialized)
{
blah-blah
}

Method (_PRW, 0, NotSerialized) // Very important that you leave this operational
{
Return (Package (0x02)
{
0x0B, // Callback to (_GPE) Method (_L0B)
0x05
})
}

Device (FRWR) // Added device for Texas Instruments TSB43AB22/A IEEE-1394A Controller
{
Name (_ADR, 0x060A0000) // Reported by 'lspci'
Name (_GPE, 0x0B) // Callback to (_GPE) Method (_L0B) for (HUB0)
// Name (_SUN, 0x01) // PCI slot 1 in System Profiler (cosmetic)

Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"built-in",
Buffer (0x01)
{
Zero
},
"fwhub",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
},
"device-id",
Buffer (0x04)
{
0x23, 0x80, 0x00, 0x00 // Needed device ID for ICH7 is [8023]
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
} _linenums:0'>Device (HUB0) // <strong class='bbc'>Intel Corporation 82801 PCI Bridge</strong> { Name (_ADR, 0x001E0000) Method (_STA, 0, NotSerialized) { Return (0x0F) } Name (PICM, Package (0x0C) { blah-blah } Name (APIC, Package (0x0C) { blah-blah } Method (_PRT, 0, NotSerialized) { blah-blah } Method (_PRW, 0, NotSerialized) // Very important that you leave this operational { Return (Package (0x02) { 0x0B, // <strong class='bbc'>Callback to (_GPE) Method (_L0B)</strong> 0x05 }) } <strong class='bbc'>Device (FRWR) // Added device for Texas Instruments TSB43AB22/A IEEE-1394A Controller</strong> { Name (_ADR, 0x060A0000) // <strong class='bbc'>Reported by 'lspci'</strong> Name (_GPE, 0x0B) // <strong class='bbc'>Callback to (_GPE) Method (_L0B) for (HUB0)</strong> // Name (_SUN, 0x01) // PCI slot 1 in System Profiler (cosmetic) Method (_DSM, 4, NotSerialized) { Store (Package (0x06) { "built-in", Buffer (0x01) { Zero }, "fwhub", Buffer (0x04) { 0x00, 0x00, 0x00, 0x00 }, "device-id", Buffer (0x04) { 0x23, 0x80, 0x00, 0x00 // <strong class='bbc'>Needed device ID for ICH7 is [8023]</strong> } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } }
Don't forget (1) there's no need to add a notification Method (_L1A) inside Scope (\_GPE) anymore and that (2) you must find and insert the address of the firewire device using lspci -nn as 'Zero' doesn't seem to work.

Most importantly, though, (3) the callback must be directed to (_GPE) at the appropriate superset device, in my case (HUB0).

Hope this helps.

Konsti

#16
sk1nhead

sk1nhead

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 111 posts
  • Location:Manila
Thank you MacKonsti and off course kdawg for introducing the first fix.. hot plugging is back w/o the "FireWire runtime power conservation disabled"..

question?

- is "FireWire runtime power conservation disabled" even an error? what does it do? i believe mine works even if i have this in my log.. sorry if this is answered somewhere but just added PCI firewire on my board.

- what does this do? "fwhub", Buffer (0x04) { 0x00, 0x00, 0x00, 0x00} others use "fwports",? i didn't include this on my Device (FRWR) but should i?

TIA.

Device (FRWR) // Added device for Texas Instruments TSB43AB22/A IEEE-1394A Controller

cool we have the same device.. mine is PCI 3 port FW400..

Attached File  Screen_shot_2010_01_17_at_11.34.18_PM.png   82.85KB   455 downloads

#17
scrax

scrax

    InsanelyMac Deity

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 1,704 posts
  • Gender:Male
Tested and working here, thank's for the info!

#18
MacKonsti

MacKonsti

    InsanelyMac Geek

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

Thank you MacKonsti and off course kdawg for introducing the first fix.. hot plugging is back w/o the "FireWire runtime power conservation disabled"...

question?

- is "FireWire runtime power conservation disabled" even an error? what does it do? i believe mine works even if i have this in my log.. sorry if this is answered somewhere but just added PCI firewire on my board.

- what does this do? "fwhub", Buffer (0x04) { 0x00, 0x00, 0x00, 0x00} others use "fwports",? i didn't include this on my Device (FRWR) but should i?


I have the impression that it controls the hard disks from within System Preferences > Energy Saver > Put hard disks to sleep. But that's my hunch. Nevertheless, it's good to have the hackintosh to recognise the device properly... therefore manage its power properly, too.

Also, I tried "fwports" but judging from other people's DSDTs, you need a device-within-a-device to declare the fwports, so I preferred "fwhub" instead; i.e. recognise the controller as a hub rather than as one or two IEEE 1394 ports. I can't be precise, though, but I thing within IORegistryExplorer (from DSDT SE) you still get "fwports" eventually.

Please, allow me to ask you a question: on your screen capture you seem to have the NVidia, FireWire and Wireless installed as PCI cards. How did you do that? You mention you've included a proper PCI card for firewire, right? Was it detected automatically?

#19
Aargh-a-Knot

Aargh-a-Knot

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 101 posts
Thanks MacKonsti!

I was able to get Hot Plugging on my FireWire with that bit of information. I moved it to the same device as you (PCIB in my dsdt). I wish I could get it working in RP03, the way it is on the iMacs, but using the same technique proved fruitless.

At least it's fully functional now.

@kDawg, that was the last of the stuff on my list as far as functionality goes... a few small things left that I would like to figure out semantically, but, nothing pressing.

#20
sk1nhead

sk1nhead

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 111 posts
  • Location:Manila

Please, allow me to ask you a question: on your screen capture you seem to have the NVidia, FireWire and Wireless installed as PCI cards. How did you do that? You mention you've included a proper PCI card for firewire, right? Was it detected automatically?


yes PCI 3 port firewire 400, it's detected automatically without changing anything but i have the "runtime disabled" in my log.. as for the Linksys WMP300N PCI, no it's not detected - needed to modify the broadcom kext located in /s/l/e and add the device ID but after that all is working including bonjour- bummer though because i have to do this after every update.

as for the nVidia i used to have a 1GB GTS 250 but given the size of it (dual slot) i need to choose if either i loose my Airport or firewire (ES2L has only 2 PCI slot) but in the end i kept them both and change to a single slot 9600gt since firewire is more important than a faster card.. it's working on either EFI strings or graphicsenabler but since i added firewire to show in my system profiler (cosmetic) then why not add them all :( here's how i did mine..

Device (PEGP)            {                Name (_ADR, 0x00010000)                Name (_PRW, Package (0x02)                {                    0x09,                     0x05                })                Device (GFX0)                {                    Name (_ADR, Zero)                    Method (_DSM, 4, NotSerialized)                    {                        Store (Package (0x18)                            {                                "AAPL,slot-name",                                 "PCI-E x16",                                 "@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                                },                                 "VRAM,totalsize",                                 Buffer (0x04)                                {                                    0x00, 0x00, 0x00, 0x20                                },                                 "device_type",                                 Buffer (0x0D)                                {                                    "NVDA,GeForce"                                },                                 "model",                                 Buffer (0x2A)                                {                                    "XFX nVidia GeForce 9600GT Extreme Edition"                                },                                 "rom-revision",                                 Buffer (0x06)                                {                                    "3173a"                                }                            }, Local0)                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                        Return (Local0)                    }                }            }






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