Jump to content

 [QUICK GUIDE] SHUTTLE K45/K48 running Snow Leopard


Squirrelf
 Share

285 posts in this topic

Recommended Posts

THE SHUTTLE K45 is a nice little machine, rather osx friendly, but it is the second one that dies on me (no post... ram and cpu working just fine, tested in another motherboard...), first one lived for over a year, however the second one only lived for a few months... same issue... just no post...

 

I was excited to install OSX lion on it, but due to the circumstance, it is not going to happen...

the guide will remain available for snow leopard, but I won't update it, since I don't have a working K45

 

So I'm going to say goodbye to this topic, I will still be on insanleymac, the K45 was only a side machine, my main machine a GA-EP45-UD3R, is about as old as my first shuttle, but still alive and running osx very happily with a now slightly older quad (q6600)...

 

You all take care and enjoy life !!!

 

 

=====================================================================

 

 

Snow Leopard on a shuttle k45 / k48

 

WHAT WORKS:

-32bit kernel

-sound (in/out)

-ethernet (gigabyte works)

-sleep

-full video acceleration

-dual monitor (k48)

-ide support

-sleep by pressing power button

-Wake On Lan from sleep

-timed sleep

-schedule wake from sleep or even from full shutdown

-USB mouse and keyboard

-relatively correct temperature monitor with istat

-silver light installer (without doing any modifictaion to it)

-netflix

 

WHAT PARTIALLY WORK ON 10.6.2 and later only

-64bit kernel (only issue is monitor not coming back to life after sleeping the machine, apple is responsible, so futur major update should fix that, hopefully 10.6.3)

-I don't recommended it, I personally barely tested it

-has sleep issues

-Major improvement of 64bit system over 32bit are only when using over 4GB of ram which the K45/48 are physically not able to handle, so I don't see 64-bit on this a a priority.

 

WHAT DOESN'T WORK

-Wake On Lan from full shutdown (something in OSX somehow disables that feature)

-PS2 mouse and keyboard (you can fix that yourself by finding correct kext for Snow Leopard)

 

WHAT MAY OR MAY NOT WORK (please let me know)

-device removal warning after waking up from sleep, if usb flash drive is connected

 

 

INFO FOR ATA/IDE ONLY MACHINE:

I just did an install on a full IDE SYSTEM, a K48, no sata, works great

however the trick for OSX to "see" the drive during the install the drive must already have a GUID partition system; with MBR partition (problem on IDE only) the installer didn't see the drive...

You can use a IDE->USB or IDE->SATA interface temporarily, boot the installer and reformat the HD using GUID, shutdown the system connect your drive directly to IDE and boot the installer again, now you can install normally...

December 12 Update:

-Netflix now works (change was made in the apple.boot.plist)

-Chameleon RC4 will remove sleepenabler incompatibility, so now should be compatible will all CPU (including e5200 and e3200), so please update the boot file with included one to be on chameleon RC4 (just replace the old one)

-you should do a wipe out of the Extensions folder and use the new Extensions folder

 

December 13 Update: (if you have done dec12 update just replace dsdt, ioatafamily, sleepenabler)

-Updated DSDT for 64bit support (DON'T SLEEP THE MACHINE IN 64BIT, monitor won't wake up)

-updated IOATAFAMILY with one that seems to work for everybody

-re-added sleepenabler (RC4 fixes any problem related to sleepenabler)

March 13 2010 Update: (for 10.6.3)

just replace the content of your extra folder and do a simple software update without rebooting first

-new sleepenable for 10.6.3

-new boot file (pc-efi 1.6 from netkas, based on chameleon rc4)

-ethernet efi string added for netfilx (it was broken again) added to com.apple.Boot

-64bit might be working better than 10.6.2 (but improvement will be minimal from 32bit), I'll try it someday, anyway the com.apple.Boot for 64bit is clearly indicated in the pack

 

 

 

October 5 2010 Update: (for 10.6.4)

just replace the content of your extra folder and do a simple software update without rebooting first

-only change was a 10.6.4 compatible Sleepenabler (everything else is exactly as in 10.6.3)

-if you fixed the sound in 10.6.3 the way I did it, you don't have to do it again in 10.6.4

March 11 2011 Update: (for 10.6.5 and 10.6.6)

just replace the content of your extra folder and do a simple software update without rebooting first

-Sleepenabler is changed, along with a change in com.apple.Boot.plist, added pmversion=21 (valid for both 10.6.5 and 10.6.6, I don't know if it will work on previous version, may need to use an old pack if you are installing all over)

-you may or may not have to fix the sound, if sound doesn't work follow the following direction.

 

HOW TO FIX SOUND IN 10.6.3 and later (at least up to 10.6.6)

download original applehda from 10.6.2 (see below) (also included in the pack)

backup applehda from S/L/E (we never know, if another fix comes up)

and replace the applehda in S/L/E with applehda from 10.6.2

then run kext utility

 

===========================================

March 11, 2011: (Snow 10.6.5 and 10.6.6 compatible)

Shuttle_K45_K48___SnowLeopard_10.6.6.zip

 

HOW TO FIX SOUND IN 10.6.3 AND later

download original applehda from 10.6.2 (see below) (also included in the pack)

backup applehda from S/L/E (we never know, if another fix comes up)

and replace the applehda in S/L/E with applehda from 10.6.2

then run kext utility

 

AppleHDA.kext_10.6.2.zip

 

Chameleon_RC2___RC4_boot_file.zip

 

3 IOatafamily (for IDE), ONLY if the one from the pack doesn't work, just in case

OTHER_IOATAFAMILY_FOR_IDE.zip

===========================================

 

Old working ones...

 

 

10.6.5 and 10.6.6 are the same

Shuttle_K45_K48___SnowLeopard_10.6.6.zip

 

10.6.4

Shuttle_K45_K48___SnowLeopard_10.6.4.zip

 

March 13, 2010: (Snow 10.6.3 compatible, needs easy sound fix, see above)

Shuttle_K45_K48___SnowLeopard.zip

 

December 13, 2009: (Snow 10.6.2 compatible)

Shuttle_K45_K48___SnowLeopard.zip

===========================================

USB install method,

(BootCD doesn't work, I tried many different way, so that's the only option, if you don't have access ot a mac at all, what you can do is temporarily install Leo using kalyway or something like that to create your usb boot disk)

You need:

the the two zip file above

somekind of OSX computer running with a DVD player

the Snow Leopard DVD

a USB HD/FlashDrive

 

STEP ONE : PREPARATION

(can be done on any machine running OSX):

- on your USB HD/flashDrive make the first (or only) partition at least 8GB (GUID partition)

- install chameleon 2 RC2 onto that USB drive, replace the boot file with the supplied boot file, it may be hidden, but it is located at the root of your USB partition, use terminal for that with sudo command, and "cp" to copy a file

- copy the content of my Extra folder into your Extra folder on that USB drive

-remove Sleepenabler from the extra Extensions, May cause a Kernel Panic during boot (not needed for the install process)

- got to disk utility, then on the restore tab: source, drag the dvd on it, destination drag your partition

- uncheck "erase volume"

- start the restore process (takes about 20min)

 

STEP TWO: BOOT THE INSTALLER

on your K45/k48

- plug in your USB drive with the USB "OSX install" drive on it

- boot and press the [DELETE] key on boot to get to your BIOS, goto power management and set "Run VGABIOS if S3 Resume" to "NO", f10 save, system wil reboot

- press [ESC] to get the boot menu, and boot onto your USB drive

 

STEP THREE: INSTALL

-Format your disk in HFS with GUID partition table

-install it

 

STEP FOUR : BOOT TO DESKTOP

-reboot

- [ESC] to boot onto your USB "OSX install" drive

- during chameleon countdown press a key (if countdown is too short to even see the countdowm, just keep pressing the up arrow till you get to the drive selection), select your OSX hard drive

 

STEP FIVE : FINAL STEPS

- once on the desktop install chameleon RC2 with modified boot file (use the terminal without quotes "sudo cp [location of boot file] /")

(super detail explanation of that step later in the thead: http://www.insanelymac.com/forum/index.php...&p=1310284)

- empty the Extra folder and copy the content of mine (same one as on the "install OSX" drive)

- you can change the chameleon "timeout" in the come.apple.boot.plist...

- DSDT in the pack should work on any K45/K48 and any BIOS version

- now you can boot directly on the internal HD ...

- in your system pref set it to "Internal Speaker", and use the green jack... Enjoy

 

 

good luck

 

please give me some feedback, even just a thank you will do,

thanks

 

 

===========================================

===========================================

If you want to make your own dsdt

the DSDT in the pack will work on any K45/k48

 

You need OSX already running on your K45/K48

 

- in whatever version of OSX on your k45, create a dstd (google dsdt patcher GUI, turn the HPET option on)

- then you can use this drag and drop tool to compile/decomile the dsdt (dsdt.aml when compiled, dsdt.dsl when decompiled) iaslMe.app.zip

- follow the instruction to add full video support to your dsdt (thanks to Dr Hurt), but use "iasl me" to compile decompile, it is so much easier...

Patch.zip

(the topic where it came from http://www.insanelymac.com/forum/index.php?showtopic=143340)

there's a premade version for k45, works better than the patch, it's is slightly different, well just extract the graphic section... and put it in yours

 

 

CMOS RESET FIX:

- while editing the dsdt look for "Device (RTC)"

-you'll see "0x04" at the end of two sub category "Name(Att0, ...()" and Name(Att1, ...()

-change both "0x04" into 0x02

 

was

 Device (RTC)
																			{
																				Name (_HID, EisaId ("PNP0B00"))
																				Name (ATT0, ResourceTemplate ()
																				{
																					IO (Decode16,
																						0x0070,			 // Range Minimum
																						0x0070,			 // Range Maximum
																						0x00,			   // Alignment
																						0x04,			   // Length
																						)
																				})
																				Name (ATT1, ResourceTemplate ()
																				{
																					IO (Decode16,
																						0x0070,			 // Range Minimum
																						0x0070,			 // Range Maximum
																						0x00,			   // Alignment
																						0x04,			   // Length
																						)
																				})

 

now should be

 Device (RTC)
																			{
																				Name (_HID, EisaId ("PNP0B00"))
																				Name (ATT0, ResourceTemplate ()
																				{
																					IO (Decode16,
																						0x0070,			 // Range Minimum
																						0x0070,			 // Range Maximum
																						0x00,			   // Alignment
																						0x02,			   // Length
																						)
																				})
																				Name (ATT1, ResourceTemplate ()
																				{
																					IO (Decode16,
																						0x0070,			 // Range Minimum
																						0x0070,			 // Range Maximum
																						0x00,			   // Alignment
																						0x02,			   // Length
																						)
																				})

 

Fix for warning, when compiling dsdt

 

look for:

Method (_WAK, 1, NotSerialized)
													   {
														   ...
													   }

 

at the end but within that section add the following code:

		Return (Package (0x02)
														   {
															   Zero, 
															   Zero
														   })

 

so it should look like:

 

		Else
														   {
															   If (LEqual (RTCW, Zero))
															   {
																   Notify (\_SB.PWRB, 0x02)
															   }
														   }

														   Notify (\_SB.PCI0.USB0, Zero)
														   Notify (\_SB.PCI0.USB1, Zero)
														   Notify (\_SB.PCI0.USB2, Zero)
														   Notify (\_SB.PCI0.USB3, Zero)
														   Return (Package (0x02)
														   {
															   Zero, 
															   Zero
														   })
													   }

													   Method (DTGP, 5, NotSerialized)
													   {

 

 

- when done compile it and put your dsdt in your extra folder

 

 

Sound Fix using dsdt:

 

open your dsdt.dsl (decompiled)

 

replace AZAL by HDEF (there should be at least two of them)

 

then search for Device (HDEF)

should be similar to that

			Device (HDEF)
																	 {
																		 Name (_ADR, 0x001B0000)
																		 Method (_PRW, 0, NotSerialized)
																		 {
																			 Return (Package (0x02)
																			 {
																				 0x05, 
																				 0x05
																			 })
																		 }
																	 }

 

replace that whole section with the following one:

 

			Device (HDEF)
																	 {
																		 Name (_ADR, 0x001B0000)
																		 OperationRegion (HDAR, PCI_Config, 0x4C, 0x10)
																		 Field (HDAR, WordAcc, NoLock, Preserve)
																		 {
																			 DCKA,   1, 
																					 Offset (0x01), 
																			 DCKM,   1, 
																				 ,   6, 
																			 DCKS,   1, 
																					 Offset (0x08), 
																				 ,   15, 
																			 PMES,   1
																		 }

																		 Method (_DSM, 4, NotSerialized)
																		 {
																			 Store (Package (0x08)
																				 {
																					 "codec-id", 
																					 Buffer (0x04)
																					 {
																						 0x62, 0x06, 0xEC, 0x10
																					 }, 

																					 "layout-id", 
																					 Buffer (0x04)
																					 {
																						 0x96, 0x02, 0x00, 0x00
																					 }, 

																					 "device-type", 
																					 Buffer (0x11)
																					 {
																						 "ALC662"
																					 }, 

																					 "PinConfigurations", 
																					 Buffer (0x06)
																					 {
																						 0x01, 0x90, 0x02, 0x01, 0x02, 0x01
																					 }
																				 }, Local0)
																			 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
																			 Return (Local0)
																		 }

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

 

SLEEP FIX (must use sleepenabler kext along with it):

 

search for "Device (USBE)"

 

and add the folling to the end of the Device (USBE) section

 

 Method (_DSM, 4, NotSerialized)
															 {
																Store (Package (0x04)
																	{
																	  "AAPL,clock-id",
																	  Buffer (0x01)
																	  {
																		  0x01
																	  },
																	  "device_type",
																	  Buffer (0x05)
																	  {
																		 "EHCI"
																	  }
																	 }, Local0)
																 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
																 Return (Local0)
															 }

 

the whole section should now look like

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

														 Return (0x03)
													 }

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

											  Method (_DSM, 4, NotSerialized)
															 {
																Store (Package (0x04)
																	{
																	  "AAPL,clock-id",
																	  Buffer (0x01)
																	  {
																		  0x01
																	  },
																	  "device_type",
																	  Buffer (0x05)
																	  {
																		 "EHCI"
																	  }
																	 }, Local0)
																 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
																 Return (Local0)
															 }


												 }

 

POWER BUTTON FIX

 

Device (PWRB)

{

Name (_HID, EisaId ("PNP0C0C")) ---> Name (_CID, EisaId ("PNP0C0C"))

 

 

Recompile it, put your dsdt.aml in Extra/Extensions

and add the following kext to Extra/Extensions (Already included the pack above)

ALC662.kext.zip

Link to comment
Share on other sites

I kept getting stalls on my existing install with the dsdt files, but i was able to boot the installer with a (home made) dsdi and your kexts. So i just reinstalled and everything's going fine.

 

No luck with Audio. I tried my leopard kexts and a voodoohda file floating around.

 

Also, the cmos reset still happens. I plan on leaving the computer on most the time so it doesn't matter to me much, but i tried patching the dsdt and it caused some system instability (with fakesmc). Not really up to messing around with things more at this point...it's just going to be a work computer and as it stands its great for that.

Link to comment
Share on other sites

You can save a lot of installation time by directly going to "/Mac OS X Install DVD/System/Installation/Packages/" and double-click "OSInstall.mpkg" (shouldn't make any difference if from your retail/upgrade DVD, install HD/dmg or whatever) and then prepare the SL volume with all the hackintosh stuff as described.

 

With your help I at least could boot SL and have LAN, but only 1024*768 and no audio. Long boot process.

Still have to test a lot and will let you know.

 

(Shuttle K48, Intel E7200, 2GB, SATA HD, ATA DVD)

Link to comment
Share on other sites

yeah I know the "OSInstall.mpkg", that's what I did at first on my main machine, but due to permission problems that need to be fixed, rebuilding kext cache, or you'll get kernel panics

and sometime you have to reinstall the BSD package over your install ... very unclean, and in the end not that easy... but it is one way...

if you use that method, then you may use "kext utility" to repair permission and rebuild the kext cache for you automatically

(if you can't find the utility, go to the other Snow Leo thread in my signature the pack for the EP45-UD3R includes it)

 

restoring the disk on a usb drive with chameleon on it and booting it is a much much cleaner way to install it, it really is an easy process... as long as you have that second drive... plus you are not requiered to have an OS installed (once that disk is done you can use it on any hackintosh just change your Extra folder with what you need....)

 

fixing your resolution is just a matter of making a dsdt with the fix, relatively easy to do...

it should work on a K48

 

but yes please let me know how it goes

Link to comment
Share on other sites

Had no luck with your "Clean install", maybe it's because I have an Upgrade DVD (not a complete retail). But you are right, the install seems to be not very clean - one example is that I can not repair permissions with disk utility and see many files/folders that should be invisible.

 

Now GX seems to be fully supported; I have re-executed the whole DSDT thing including GMA950 patching in detail.

 

Hopefully we will find a solution to IDE and audio...

Link to comment
Share on other sites

Had no luck with your "Clean install", maybe it's because I have an Upgrade DVD (not a complete retail). But you are right, the install seems to be not very clean - one example is that I can not repair permissions with disk utility and see many files/folders that should be invisible.

 

Now GX seems to be fully supported; I have re-executed the whole DSDT thing including GMA950 patching in detail.

 

Hopefully we will find a solution to IDE and audio...

 

Upgrade dvd don't exist :-)

the 30$ one is a full install, that's the one I have....

Link to comment
Share on other sites

Ok, now also the "clean install" worked.

 

Just for info: it seems that 10.6.1 update doesn't change anything for IDE & audio, but is working.

 

Maybe an simple interim solution for audio would be a 10$ USB audio stick; nothing for HiFi enthusiasts, but shouldn't be much worse than the onboard audio (which has a DC offset...).

Link to comment
Share on other sites

Ok, now also the "clean install" worked.

 

Just for info: it seems that 10.6.1 update doesn't change anything for IDE & audio, but is working.

 

Maybe an simple interim solution for audio would be a 10$ USB audio stick; nothing for HiFi enthusiasts, but shouldn't be much worse than the onboard audio (which has a DC offset...).

 

thanks for letting me know about 10.6.1

 

that's right you don't have the pci port...

so yeah if you need audio for the moment that's the easy way... just be sure it is supported OOB by SnowLeo

Link to comment
Share on other sites

NO SOUND for the moment

you can look around for kext to make our ALC662 work...

let me know if you find one that works

 

 

 

For sound I used ALC882 from iPC 10.5.6 Distro and for graphics I used Intel 950 from that same Distro without modifying the DSTD

Link to comment
Share on other sites

NO SOUND for the moment

you can look around for kext to make our ALC662 work...

let me know if you find one that works

 

 

 

For sound I used ALC882 from iPC 10.5.6 Distro and for graphics I used Intel 950 from that same Distro without modifying the DSTD

 

great

could you please post them (I don't have iPC), thanks

 

I like dsdt fix better than using kext for graphics, but it is I suppose easier to use the kext to get started...

 

however using Leo kext means that you can only run your machine in 32bit kernel, that's why I prefer dsdt fix because they work in both environment, but considering the limitation in ram (4GB) of this machine running in 64bit won't do much improvement...

Link to comment
Share on other sites

Eliade, you are king! Sound now working (also input, which I hadn't before).

Thanks a lot!!!

 

Great !

 

You may have noticed there's a very minor issue related to sound: the mute button on my keyboard doesn't work (had the same problem in Leopard)

but I thought I saw a "mute" dsdt fix somewhere not to long ago, I'll look for it later this week...

Link to comment
Share on other sites

Hey,

 

Thanks for the write up!

 

I am using an SG33, and I am having problems with Snow recognizing my processor and memory incorrectly. Any idea what could help?

 

in the meantime, I am going to learn about DTST a little more :gun:

 

 

you mean in the "about this mac" window ?

if so that really isn't a big issue, I have the problem on my other hackintosh, but not on the shuttle for some reason, just use the smbios.plist (you can get it from my "pack") and set your memory in that file to whatever you have in your computer... (if you have DDR2 leave the SMmemtype to 19)

for cpu in Leo it was a file that you needed to modify, it's just a visual trick, replacing the string "unknown" by whatever string you wanted, don't remember what file it was, but on my machine I really don't care that much I just left it as unknown

Link to comment
Share on other sites

I appreciate your posts guys, they are very useful.

 

Comparing what we have here with my Snow Leopard installation I can say we almost have a perfect MacMini again with the exception of "Sleep"

 

In my case Sleep works and the K45 will come back after sleep, the problem is that I received the USB dragging to much power warning and my keyboard is automatically disabled. I was able to disable the wrning but still the system does not come back from sleep properly. Maybe messing a little bit more with the DSDT will give us that so much wanted "sleep"

 

I'll post my results to help us all as well....

 

 

Cheers

Link to comment
Share on other sites

I appreciate your posts guys, they are very useful.

 

Comparing what we have here with my Snow Leopard installation I can say we almost have a perfect MacMini again with the exception of "Sleep"

 

In my case Sleep works and the K45 will come back after sleep, the problem is that I received the USB dragging to much power warning and my keyboard is automatically disabled. I was able to disable the wrning but still the system does not come back from sleep properly. Maybe messing a little bit more with the DSDT will give us that so much wanted "sleep"

 

I'll post my results to help us all as well....

 

 

Cheers

 

what did you do to get sleep even if it not perfect yet ... bios, dsdt ?

mine will just seem to shut down (MB lights are on, but fan, hd and power light are off) and "never" wake up (I just hold the power button for 10 sec, release and press it again and it will boot)

 

I don't have much time now (homework), I'll try later

but maybe you can try :

SleepEnabler.kext.zip

and bios sttings right below the S3 option...

Link to comment
Share on other sites

Eliade, you're an absolute star!

 

I went through your guide and did everything as per your instructions - took me about 2 hours, including the installation - but the screen resolution irked me. So I thought I'd try your DSDT file instead of the one I patched myself... and it worked! Beautifully, too!

 

Many, many thanks for the work you put in this and for sharing it with us n00bs.

Link to comment
Share on other sites

Great !

 

I now believe anyone with a k45 and same bios can use my dsdt

a dsdt file is specific but not that specific...as long as it is still very generic, and mine is !

 

 

-----

 

UPDATE:

nothing critical, if you don't feel like changing those, not a problem

but I still recommend it...

 

update your boot file: (hidden at the root of your partition)

http://netkas.org/?p=224

 

and replace fakesmc in your extra/extensions folder with the one there:

http://netkas.org/?p=215

 

and if you want speed step, add the following to your extra/extensions

VoodooPowerMini.kext.zip

 

and you can safely use the software update... at least up to 10.6.1 (latest as of today)

 

 

I'll make a cleaner zip file for the first post with everything updated and needed later (maybe a week or two from now, I have lots of homework and exam coming up)...

but everything I use on my machine is there

Link to comment
Share on other sites

Did anyone have success with IDE support on K45/K48?

 

I didn't - the netkas kext posted by Eliade made KP during boot (located in /Extra; i think it doesn't make a difference if I throw anything out of /S/L/E additionally), and also another another post recommending to use 10.5.8 IOATAFamily in /Extra panics ...

 

I don't need this for booting (HD is SATA), but for DVD drive - using this in an external USB case is not very stable. Last option of course would be a SATA DVD ...

 

Any new ideas?

Link to comment
Share on other sites

do any of you still have leopard with ide working?

if so download osxtools

http://p c w i z c o m p u t e r . c o m /index.php?Itemid=48&id=91&option=com_content&task=view

 

click the view pci device / vendor id

do whatever it ask you to do

at some point you'll get a screen with a bunch of stuff

copy and paste it here

 

that screen may have valuable info about our board ich7/ide

 

Not having ide enabled in bios I don't think we'll have the info... that's why it must be on leo where ide worked

Link to comment
Share on other sites

 Share

×
×
  • Create New...