Jump to content

Original Mac Pro 1,1+Legacy 64 bit mode+DSDT fixes


MacProHack
 Share

7 posts in this topic

Recommended Posts

Hi gals and guys,

 

I originally bought my Mac Pro under the pretext it was a 64bit machine which was all ready to run a 64bit OS (yes, that,s how it was advertised when I bought it and I have old documents and phone conversations with 'professiosnals' working at apple, to substantiate this claim. Yes, its half true, it can run 64 bit applications just fine, but the EFI is 32 bit blah blah (I guess it's a discussion for another forum). I was furious at the time because I had to make a decision to wait a few months for the 2008 model, or go for the older one. I based my decision on 3 different 'professional' pieces of advice working for a well known company, and went for the Mac pro 1,1. I found out later it was not capable of usin a64 bit operating system upon boot, only 32 bit. I have upgraded and made many mods to my system since then, once bying an ATI2600XT card from Apple, before finding out about the 64 bit problem. I have not bought another piece of harware from apple again since. All upgrades have been done directly through other hardware providers, since there is no interest in releasing an update for our machines which cost an arm and a leg. Netkas has shown that its possible to stiil boot up a 64 bit OS using the current 32 bit EFI, so the excuse that the flash chip is not big enough to accomodate the bigger EFI file stands no ground. I can accept that the new standard came out after the mac was produced, but why was it sold and adevertised as capable if it is not. Ok I let that out now, and I feel much better. So that was my grudge and what motivated me to persist in getting the 64 bit mode going (yes yes i know, it doesn't make a difference....but actually sorry, it does in many ways, no crashes, efficient use of memory, noticeable decrease in start times - very noticable, zippier all round and is basically what I paid for originally).

 

Ok so booting into 64 bit mode is a piece of cake....well a bit of tinkering if your running software RAID but all okay in the end. Thanks to advice from this post by MacEFIRom

http://forum.netkas....pic,1123.0.html In the end you will need to have an 'Extra' named folder in the chameleon boot drive. Inside should be the boot file, DSDT.aml, chameleon.plist, smbios and another "extensions' named folder. The only extension I have in there, is IOAHCIblockinjector to make ur hard drives internal not external.

 

After getting it going, I guess my machine was technically a pc running mac osx! I think there's a word for it.....ha....hac....damn can't remember :wink2: . So where there any issues? No...I mean, yes. No, in that 64 bit boot can start up but sleep, restart and shut down at times were not working. In addition, 5+6 SATA ODD ports were not being picked up and sound was not in operatition. There is a temporary fix you can do posted on MacEFI's post but I wouldn't settle for second best. I wanted a nice clean sharp working install of OSX as when booting 32 bit EFI mode. What did I do?

 

First I downloaded this program -> EVO DSDT SE

 

Next I used the extract DSTD function to extract the DSTD file. What is the DSDT.aml? It basically tells your OS s what hardware you have and how to talk to it. In it's raw format, my mac behaved with the issues described above. Sleep crashes, no restarts, no audio and no ODD ports. Using various bits of information here there and over there, I managed to get fixes and patches for various 'Devices' on my system in the DSTS table. The DSSDT table is read upon boot of the OS and hence issues are ironed out. I got native audio, SATA ports working and full sleep and restart functionality. Because I have been asked by some people how I got it all going, here is what I did...

 

You need to search for the devices below and replace the code. Compile the DSDT.aml file and place it in the boot drive Extra folder and restart. You will then see AHCI kext load up at start up using -v for verbose boot mode. Then you will have ODD ports and full sound....

 

RTC fix -

 

Device (RTC)
			{
				Name (_HID, EisaId ("PNP0B00"))
				Name (BUF0, ResourceTemplate ()
				{
					IO (Decode16,
						0x0070,			 // Range Minimum
						0x0070,			 // Range Maximum
						0x01,			   // Alignment
						0x08,			   // Length
						)
				})
				Name (BUF1, ResourceTemplate ()
				{
					IO (Decode16,
						0x0070,			 // Range Minimum
						0x0070,			 // Range Maximum
						0x01,			   // Alignment
						0x08,			   // Length
						)
					/* IRQNoFlags ()	 RTC Fix
						{8}	 */
				})
				Method (_CRS, 0, Serialized)
				{
					If (HPAE)
					{
						Return (BUF0)
					}

					Return (BUF1)
				}
			}

 

Timer Fix

Device (TIMR)
			{
				Name (_HID, EisaId ("PNP0100"))
				Name (BUF0, ResourceTemplate ()
				{
					IO (Decode16,
						0x0040,			 // Range Minimum
						0x0040,			 // Range Maximum
						0x01,			   // Alignment
						0x04,			   // Length
						)
					IO (Decode16,
						0x0050,			 // Range Minimum
						0x0050,			 // Range Maximum
						0x10,			   // Alignment
						0x04,			   // Length
						)
				})
				Name (BUF1, ResourceTemplate ()
				{
					IO (Decode16,
						0x0040,			 // Range Minimum
						0x0040,			 // Range Maximum
						0x01,			   // Alignment
						0x04,			   // Length
						)
					IO (Decode16,
						0x0050,			 // Range Minimum
						0x0050,			 // Range Maximum
						0x10,			   // Alignment
						0x04,			   // Length
						)
					/*  IRQNoFlags ()
						{0}   */
				})
				Method (_CRS, 0, Serialized)
				{
					If (HPAE)
					{
						Return (BUF0)
					}

					Return (BUF1)
				}
			}

 

Pic Fix

Device (IPIC)
			{
				Name (_HID, EisaId ("PNP0000"))
				Name (_CRS, ResourceTemplate ()
				{
					IO (Decode16,
						0x0020,			 // Range Minimum
						0x0020,			 // Range Maximum
						0x01,			   // Alignment
						0x1E,			   // Length
						)
					IO (Decode16,
						0x00A0,			 // Range Minimum
						0x00A0,			 // Range Maximum
						0x01,			   // Alignment
						0x1E,			   // Length
						)
					IO (Decode16,
						0x04D0,			 // Range Minimum
						0x04D0,			 // Range Maximum
						0x01,			   // Alignment
						0x02,			   // Length
						)
				   /*   IRQNoFlags ()
						{2}   */
				})
			}

 

Native Audio fix

Device (HDEF)
		{
			Name (_ADR, 0x001B0000)
					Method (_DSM, 4, NotSerialized)
						{
							Store (Package (0x04)
								{
										"layout-id",
										Buffer (0x04)
											{
												0x0C, 0x00, 0x00, 0x00
											},

										"PinConfigurations",
										Buffer (Zero) {}

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

 

5+6 ODD port SATA Fix

SATA

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

 

 

Sleep fix on USB devices

Device (UHC1)
		{
			Name (_ADR, 0x001D0000)
			Name (UPS1, Package (0x02)
			{
				0x03,
				0x03
			})
			Method (_PRW, 0, NotSerialized)
			{
				Return (UPS1)
			}

			OperationRegion (USBR, PCI_Config, 0xC4, One)
			Field (USBR, AnyAcc, NoLock, Preserve)
			{
				URES,   8
			}

			Method (_PSW, 1, NotSerialized)
			{
				If (LEqual (Arg0, Zero))
				{
					Store (Zero, URES)
				}

				If (LEqual (Arg0, One))
				{
					Store (0x03, URES)
				}
			}

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

		Device (UHC2)
		{
			Name (_ADR, 0x001D0001)
			Name (UPS1, Package (0x02)
			{
				0x04,
				0x03
			})
			Method (_PRW, 0, NotSerialized)
			{
				Return (UPS1)
			}

			OperationRegion (USBR, PCI_Config, 0xC4, One)
			Field (USBR, AnyAcc, NoLock, Preserve)
			{
				URES,   8
			}

			Method (_PSW, 1, NotSerialized)
			{
				If (LEqual (Arg0, Zero))
				{
					Store (Zero, URES)
				}

				If (LEqual (Arg0, One))
				{
					Store (0x03, URES)
				}
			}

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

		Device (UHC3)
		{
			Name (_ADR, 0x001D0002)
			Name (UPS1, Package (0x02)
			{
				0x0C,
				0x03
			})
			Method (_PRW, 0, NotSerialized)
			{
				Return (UPS1)
			}

			OperationRegion (USBR, PCI_Config, 0xC4, One)
			Field (USBR, AnyAcc, NoLock, Preserve)
			{
				URES,   8
			}

			Method (_PSW, 1, NotSerialized)
			{
				If (LEqual (Arg0, Zero))
				{
					Store (Zero, URES)
				}

				If (LEqual (Arg0, One))
				{
					Store (0x03, URES)
				}
			}

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

		Device (UHC4)
		{
			Name (_ADR, 0x001D0003)
			Name (UPS1, Package (0x02)
			{
				0x0E,
				0x03
			})
			Method (_PRW, 0, NotSerialized)
			{
				Return (UPS1)
			}

			OperationRegion (USBR, PCI_Config, 0xC4, One)
			Field (USBR, AnyAcc, NoLock, Preserve)
			{
				URES,   8
			}

			Method (_PSW, 1, NotSerialized)
			{
				If (LEqual (Arg0, Zero))
				{
					Store (Zero, URES)
				}

				If (LEqual (Arg0, One))
				{
					Store (0x03, URES)
				}
			}

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

		Device (EHCI)
		{
			Name (_ADR, 0x001D0007)
			Name (UPS1, Package (0x02)
			{
				0x0D,
				0x03
			})
			Method (_PRW, 0, NotSerialized)
			{
				Return (UPS1)
			}

			OperationRegion (USBR, PCI_Config, 0x62, 0x02)
			Field (USBR, AnyAcc, NoLock, Preserve)
			{
				URE2,   9
			}

			Method (_PSW, 1, NotSerialized)
			{
				If (LEqual (Arg0, Zero))
				{
					Store (Zero, URE2)
				}

				If (LEqual (Arg0, One))
				{
					Store (0x01FF, URE2)
				}
			}
			Method (_DSM, 4, NotSerialized)
			{
				Store (Package (0x02)
				{
					"device-id",
					Buffer (0x04)
					{
						0x3a, 0x3a, 0x00, 0x00   /*<--------- ID MAC------*/
					}
				}, Local0)
				DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
				Return (Local0)
			}
		}

 

 

I can report I have not had ANY issues with these fixes I applied. No crashes (as I had before - even in 32 bit EFI mode). I hope this can help some others using these earlier macs in 64 bit mode. Feel free to PM me if your stuck at any stage along the way.

 

 

Edit: Ooops forgot to mention, was running 10.6.7. Updated to 10.6.8 and everything same except my display port with ATI 5770 is not showing anything anymore. Plenty of warning of this issue by Rominator and Netkas but just wanted to give it a go. Aprt from this, absolutely no probs. Please post if ur trying the DSDT method and ur expreriencing any issues.

 

 

 

 

Mac Pro 1,1 -> upgraded to 2,1 using Mac Pro EFis method see my post here for problematic 1,1s - > http://forum.netkas....c,1094.120.html

x2 quad core X5355 chips (plus original heatsinks form 2,1 macpro)

Legacy 64 bit mode using chameleon bootloader

DSDT with fixes for audio, SATA ports and USB devices for sleep

  • Like 3
Link to comment
Share on other sites

  • 2 months later...

Thanks for this.

I have a 1,1 can you post your dsdt.aml file for me to use? or will it differ from the one my machine needs? Also do you know if there is a way of setting the machine hardware uuid. It changes when I boot in 64 bit mode and I think this causes problems with messages logging in.

Again thanks for this awesome work!

Link to comment
Share on other sites

  • 2 months later...

Thanks for the great fixes, but yet there is still some problems:

1) Intel ESB2 AHCI controller reported as Intel ICH7-M AHCI controller... not correct.

2) SATA Disks showed with Orange icons like it External HDs.

 

Else there is a problem with reporting native videocard like ATI Radeon HD 4800 Series instead of ATI Radeon HD 4870, but this is other story...

How to fix Controller reporting and changing external to internal type disks??

 

UPDATE: Code for SATA must be:

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

 

Now System Profiler reports Intel ESB2 AHCI and Icons of SATA Drive now normal.

Link to comment
Share on other sites

  • 3 months later...
  • 5 months later...

Hi,

 

my macpro 2.1 (formerly 1.1) works great.

now I have one installed USB3.0 PCIe card (with chip FL1100)

 

Works well with the original 10.8.2 kext

 

Only when I have a device on USB3.0 (XHCI), then is no longer the Mac into sleep

What I need to adjust in the "Sleep fix on USB devices" nor USBXHCI ???

 

many thanks

Link to comment
Share on other sites

Looks like Apple changed the negotiation of iMessage logins in late December and those with hackintoshes or those running 10.8 on unsupported Macs cannot login at this point. Most hackintosh users have circumvented this issue at this point by using Clover for booting instead of Chimera/Chameleon. (www.tonymacx86.com/general-help/84047-imessage-wont-work.html). 10.8 non-supported Macs seem to be in the minority and a solution doesn't seem to be progressing. Can I assume that nothing we can do with the DSDT files will be of any use? From my crude newbie understanding it seems the new login just requires a different format of Mac serial number and the inclusion of a NIC.

Link to comment
Share on other sites

  • 2 years later...
 Share

×
×
  • Create New...