Blog

PC Media Centers: A journey of pain, hurt and frustration.

Putting a PC under your TV to play your pictures, movies, and all that jazz, sounds like an excellent idea until you actually try and implement it. I’ve been using a full blown PC since 2004 to record TV and stream media from my server….but it’s been hell.

Problem #1: Choosing the right hardware
Back in 2004, I thought that putting a PC under the TV to play media would be a fantastic idea. I started to plan a bunch of parts and on paper, it looked great. Being slightly more clueless than I am today, I didn’t do much research….which led to me buying a P4 LGA775 (the hottest of all Intel processors) processor and a set of loud components.

The TV tuner card (a Hauppauge PVR-MCE-350) was also very average. It’s an analogue card, but the quality of video it outputs is significantly worse than plugging it directly into the TV (via the same connector). Fast forward to today and I still use the same card. It works OK, but in the world of digital, the card needs updating.

The leads us to the next problem. Working with a FOXTEL box. In 2004, FOXTEL digital was introduced. Ironically, the set top box provided by FOXTEL does not output any digital video (only audio). FOXTEL boxes have only recently outputted in digital with the introduction of FOXTEL HD channels. That brings up a new problem. It’s impossible to create a “purely digital” media center PC…where there’s digital input and digital output. Why? Well firstly, HDMI and Component are protected by HDCP (and any capture cards to bypass HDCP are “illegal” or need heavy licensing fees). Secondly, it takes a beefy PC to capture and view HD video at the same time. Currently, the only way to capture HD video from FOXTEL would be via analogue component inputs. Capture cards that do this are reasonably expensive…$300+ The alternative is CableCard. A technology that has never taken off despite it being amazing and around for several years.

There’s also the problem of IR blasting. This isn’t FTA Digital/Analog, where you tune into a frequency depending on a channel, the capture card sees FOXTEL as a singular channel. Every time you want to change the channel you must blast infrared out to the FOXTEL box. I’ve found that this can often be inaccurate and laggy.

Problem #2: Choosing the software
Now the software. Generally, you’d use Windows Media Center. It comes with Windows. For a simplistic Media Center, it works pretty well. However, it’s hard to extend and skin. Windows 7 media center is particularly average when it comes to UI.

The alternatives? MythTV. XBMC. MediaPortal. MythTV is out, fuck Linux. XBMC is out, no capture card support. This leaves MediaPortal. An open source media center that’s highly extensible and skinable. MediaPortal, by default, looks like balls but it has a ton of cool features. Adding the StreamedMP skin and a couple of plugins makes MediaPortal look and feel like XBMC. It has excellent UIs for TV Shows and Movies (with a bit of work).

The downside? It’s buggy as fuck. Firstly, the StreamedMP skin doesn’t support 4:3. I guess this isn’t a big deal for most, alas, the parents refuse to venture into a world of new technology. This means you have to do a crapton of skin modifying to fit things on the screen. Secondly, I had to go ahead and check out the source from SVN to determine what was hanging MediaPortal for 2 minutes. It turns out there was no such timeout for devices like card readers. If there’s nothing in the card reader, there’d an extended I/O timeout which would hang MediaPortal. It’s an easy source fix, but there’s bugs like this that just make MediaPortal very unfriendly (without a helluva lot of work).

There’s also a problem with timeshifting. A feature that allows you to pause and rewind TV. With FTA, this is great. With FOXTEL, this is absolute pain. The way timeshifting works is that the capture card is saved to a temporary file before it is viewed on the screen. This means there’s usually a 3-4 second delay. This delay makes using onscreen components for the FOXTEL box (such as TV guide) impossible. Unfortunately, both MediaPortal and WMC do not allow you to disable timeshifting.

Finally, EPG (programme guide) data is nearly impossible to get for FOXTEL. There are sources such as OzTiVo, but it is often incomplete. In the end, I ended up writing a parser for YourTV (which has relatively complete FOXTEL data). It’s a very highly customized solution mainly because there is now “raw” data feed (such as XML). I have to parse HTML pages to get meta data. Each day downloads approximately 50-75MB of data (when parsed it’s only ~4MB, 600KB zipped)…which means I have to run this on my overseas VPS. Basically, the stars have to align to get any sort of consistent EPG data.

So, in conclusion?
a) If you want a purely digital media center: you’re going to have to use FTA Digital. You can use analogue component for FOXTEL but it’ll cost you.
b) EPG data for FTA is great! FOXTEL not so much.
c) FTA works great for timeshifting. You’re probably going to want to connect FOXTEL directly to your TV and capture card, so that when you need to record, you can.
d) Buy and research silent, cool and compatible hardware components.
e) 4:3 is out. 16:9 is here. Don’t even bother if you have an old TV.
f) Be prepared to pull your hair out.

You can probably tell this is just a spill of my brain. I haven’t gone in to much detail…but I’ve finally finished the rebuild project of my media center.

Oh Ubuntu, how must thee suck so much?

Exams and honours being over, I decided to revisit my multi-boot (7, SL, Ubuntu) and give it an upgrade. Ubuntu 9.10 “Karmic Koala” had been released but at the time I was too busy to upgrade (Windows being my main operating system).

I don’t use Linux too much. I’m proficient at it to get around, compile, install, even mess with kernel compilations, but I only use it when I really have to test something out. I had 9.04 installed; it was fresh, untouched, the only thing that had been installed is the proprietary NVIDIA drivers. Instead of doing a full reinstall, I thought I’d take the easy way out and use the GUI update manager. Huge mistake. After downloading about 700MB of packages, the installation began and failed approximately half way through. A completely optional component, OpenOffice, was able to bring the installation script to its knees with an error that said something along the lines off – Failed to install <insert random OpenOffice component here>. Your system may be in an usable state – Yes, such a minor package was able to cause such a gigantic problem. I attempted to re-open Package Manager and even tried apt-get…neither worked. Needless to say, rebooting resulted in an unmountable mounts. I am baffled as to how a clean 9.04 install failed to upgrade.

Instead of messing around in recovery mode I decided to chuck in my 9.10 DVD and go for the install….since I had nothing important installed anyway. Installation seems to take a lengthy amount of time, and to this day the Ubuntu installer STILL makes no logical sense. Seriously, why is an installer removing packages when installing the operating system for the first time? I don’t care about the technicalities, this is NOT good user interface design.

At the time of installation, my disk configuration looked something like this:
Boot Priority 0: DVD Drive
Boot Priority 1: 160GB Ubuntu Drive
Boot Priority 2: 300GB Windows 7 RAID0
Boot Priority 3: 250GB Mac OS X Snow Leopard Drive

During installation I chose to install Ubuntu to the Ubuntu drive (funnily enough). This drive at the time was set to the highest boot priority. Alas, after installation, Grub seemed to have made itself on to the Windows 7 drive (for no particular reason) AND the Ubuntu drive. I mean what the hell? This drive had nothing to do with the installation and the Grub installation on the Windows 7 drive kept on failing with “File Not Found” errors. It’s almost as if the Ubuntu installer goes something along the lines of:

foreach (Drive d in drives) {
if (windows_installed(d))
// Make Windows partition unusable to piss off Microsoft fanboys.
// Who needs Windows anyway?!
install_broken_grub(d);
}

I decided to go ahead and reinstate the 7 MBR, disconnect all drives (except the Ubuntu drive) and do yet another install. Hoorah! We’re in. Straight off the bat, X-Fi Digital Out no longer works (it did in 9.10). The ALSA mixer seems to have disappeared and whatever the hell the new sound configuration manager is, it does not allow 5.1 Digital Out. Attempting to install the proprietary Creative drivers fails due to missing includes. OK, no problem I’ll solve that later.

Instead I decided to go ahead and update Ubuntu and install the proprietary NVIDIA drivers. All done via the Ubuntu UI. What seems to have been success turned into utter failure upon reboot. I was greeted by a constantly flickering console screen. Booting to recovery mode revealed that apparently “the NVIDIA drivers do not support the GPU at PCI0:0″. For the record, both cards are relatively new (GTX 260 and 8500GT) and worked perfectly in 9.10. OK, so, why the hell hasn’t the generic driver been reinstated so the GUI is accessible? It actually turns out that Ubuntu had installed version 173 of the NVIDIA driver rather than 185. Why? (you might ask) Well, it turns out that upon being prompted to install the driver, the default selection is version 173, even though the one tagged as “[Recommended]” is 185. Why the hell isn’t the recommended selection the default?! Why the hell doesn’t Ubuntu gracefully recover on such a catastrophic failure. Surely this is simple to detect. Either way, I am now at the point at which I’ve installed version 185 and rebooted to find Ubuntu is freezing on boot (every time).

After several forceful reboots, Ubuntu decided to boot….and hoorah, wobly windows. Now to fix the X-Fi.

After an hour or so of tinkering…I did three things…who knows which of these actually made the thing work, but here goes (X-Fi Digital Out on Ubuntu 9.10):

1. Open sound preferences, make sure the hardware configuration for the X-Fi device is set to analogue 5.1 out + analogue stereo in. (This makes a lot of sense, right?)
2. Make sure the input and output device are set to the X-Fi device (and not some integrated sound card)
3. Open up a Terminal window, type alsamixer. Scroll left (with the left arrow) till you find “Digit-IO”. If it’s Off, toggle it to On by pressing ‘m’.
4. You might have sound now…you might not. The only other thing I did was install the Creative X-Fi drivers. Note: These don’t compile by default on 9.10!

So here’s how to compile them:
1. Download them here: http://support.creative.com/downloads/download.aspx?nDownloadId=10792
2. Extract them to your desktop
3. You’re going to modify two files, let’s start with ctatc.h
4. Look for the line “#include <sound/driver.h>” and comment it out like so: “//#include <sound /driver.h>”
5. Now the next file, xfi.c
6. Again comment out “#include <sound/driver.h>” like so: “//#include <sound/driver.h>”
7. Now look for the line: “card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0);” and replace it with:
“snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);”
8. You can now follow the README included with the drivers….sudo make, sudo make install, sudo reboot :)

Frankly, this user experience is pathetic. Something needs to be done. The Ubuntu team need to stop wasting their time thinking up obscure codenames and ripping off the Windows 7 pulsing logo. Quality control is much to be desired.

Chameleon 2.0 RC2 + PC_EFI 10.2 – ddj0.2 & Updated GA-EP45-EXTREME Extensions

I’ve updated my build of Chameleon RC2 + PC_EFI 10.2 to include the Sleep fix. Deep sleep should now work. Get it here.

The compiled files are in the sym/i386 folder. Read the docs/README file on how to install it. Read here on how to compile it.

I also updated my set of Gigabyte GA-EP45-EXTREME kernel extensions for Snow Leopard. You can get them here.

ICH10R (in RAID Mode) and Snow Leopard, Part 2!

On the 3rd of September I reported progress of using ICH10R SATA Controller in RAID mode, which would allow you to keep your Windows RAID active without having to change BIOS settings to boot to Snow Leopard. You might even be able to install Snow Leopard to a HARDWARE RAID volume…but I haven’t tested this yet.

But good news, this all works perfectly now. Here’s some details on how I did it with my setup:

Windows 7 installed on one hard disk (Windows 7 Boot Manager (BCD))

Ubuntu 9.04 installed on one hard disk (GRUB)

Snow Leopard 10.6.0 installed on one hard disk (Chameleon RC2 with PC_EFI 10.2, by me :) )

Essentially, you’ll need GRUB to multiboot the Chameleon boot file. This is how to get around the boot1: error reported by the official Darwin bootloader that’s included with Chameleon RC2. Installing GRUB to a USB drive probably won’t work, though I haven’t tested it…you may very well get USBEHCI Errors like I reported in my previous post about this.

So, basically…

  1. Install Ubuntu with GRUB to the MBR…on a completely separate drive
  2. Copy the Chameleon RC2 + PC_EFI 10.2 boot file to /boot/ on your Ubuntu partition
  3. Edit the menu.lst for GRUB to include a Snow Leopard entry
  4. Boot to your Ubuntu drive, then choose your Snow Leopard entry

What you should have in your menu.lst for the Snow Leopard is something like:

title Apple Mac OS X Snow Leopard 10.6

rootnoverify (hd2,1)

kernel (hd0,0)/boot/chameleon_rc2_pc_efi10.2_boot biosdev=81

Where hd2,1 is the drive number and partition number of Snow Leopard (remember if you have a GPT partition table, partition 0 will be the EFI partition, so use partition 1)

hd0,0 will be the drive number and partition number of your Ubuntu Linux install

/boot/chameleon_rc2_pc_efi10.2_boot is the path to the boot file you put in /boot/ on your Ubuntu partition

biosdev=81 is passed to Chameleon to determine the correct volume to boot. Mess around with this value…it might be 80, 81, 82 or 83. If you don’t choose the right one Chameleon will not detect your com.apple.Boot.plist and not load your EFI strings.

And finally….to enable ICH10R RAID mode you should grab and install to your /Extra/Extensions folder AHCIPortInjector.kext and ATAPortInjector.kext. These two kexts are included in the Chameleon RC2/PC_EFI 10.2 package that I linked earlier (in the packages/Kexts folder).

Have fun with Snow Leopard and ICH10R ;)

PC_EFI 10.2 Beta built on Chameleon RC2 (r640)

I’m not sure why this hasn’t been done…or why netkas decided to stick with RC1, but today I went ahead and made the sufficient changes to Chameleon RC2 so that it includes netkas’ fixes from 10.2.

This basically means you have Chameleon RC2 working with Snow Leopard.

Source is included here. The boot file that you need to replace can be found in the sym/i386 folder.

If you want to compile this yourself, I suggest installing Snow Leopard and then simply running make clean / make from inside the Chameleon-2.0-RC2-r640_PCIEFIV10.2-beta-src folder. It should work flawlessly and all your binaries should be located in the sym folder. You may have to install Xcode (I’m not quite sure….but probably not).

Enjoy.

ICH10R (in RAID Mode) and Snow Leopard

I’ve been working hard at making my hackintosh “perfect”. This seems to be yet another breakthrough that hadn’t been possible before…I don’t know why, it’s such an easy hack.

Basically, when using your SATA controller in RAID mode, both Leopard and Snow Leopard will refuse to boot with “waiting for root device” (as the device is inaccessible).

This means you can now use Hardware RAID…well for Windows/Linux at least. I am unsure if you can use a RAID volume and install Snow Leopard to it, however, you should be able to use Snow Leopard on a single drive and still keep your Windows RAID intact. Basically it means one less BIOS change each time you want to jump into OSX and that you’ll be able to access files on your Windows/Linux RAID volumes without rebooting. If you really want OSX RAID, I don’t see anything stopping you from using Apple’s Software RAID while your SATA controller is in RAID mode.

So, how to? This isn’t the most Vanilla way, I’m sure there’s a better way of doing this…but I’ll come up with that later.

Simply open up /System/Library/Extensions/AppleAHCIPort.kext/Contents/ and edit the Info.plist

Under the ICH10AHCI key, you can either:

a) Replace IOPCIPrimaryMatch or

b) Duplicate the whole key/dict and rename it ICH10RAID and then change the IOPCIPrimaryMatch

Either way, you need to add 0×28228086 to IOPCIPrimaryMatch

It will look something like (after you’ve made the changes):

<key>ICH10AHCI</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.driver.AppleAHCIPort</string>
<key>Chipset Name</key>
<string>ICH10 AHCI</string>
<key>IOClass</key>
<string>AppleAHCI</string>
<key>IOPCIPrimaryMatch</key>
<string>0×3a228086 0×28228086</string>
<key>IOProbeScore</key>
<integer>2000</integer>
<key>IOProviderClass</key>
<string>IOPCIDevice</string>
<key>Vendor Name</key>
<string>Intel</string>
</dict>

Save it, Run Kext Utility, or whatever you use to repair permissions.

Now, on my machine Chameleon RC1 with PC_EFI 10.2 refused to boot. I kept getting boot1: error. For this to work you need to install Chameleon RC1/PC_EFI 10.2 to a USB drive then use the USB drive to boot your Snow Leopard partition. I’m unsure, but perhaps the next version of Chameleon, PC_EFI or BootThink may not have this error, lets hope! :)

When I did this, Snow Leopard booted….BUT…I kept getting Console error messages to do with AppleUSBEHCI and this seemed to disable the use of my keyboard and mouse clicks. So if anyone knows how to fix that, please post here.

Please test this. Honestly, I don’t know if you create a RAID Volume that maybe OSX will not detect the RAID and simply show two drives. I haven’t had time to fully test this yet. What I can confirm is that OSX boots SUCCESSFULLY in SATA-RAID mode with ICH10R.

Oh, I did this on a Gigabyte GA-EP45-EXTREME.

Snow Leopard Hackintosh (GA-EP45-EXTREME), Multiple Video Cards & More!

I’m not here to guide you through a Snow Leopard install….but I am here to make your Snow Leopard install…better. If you have a GA-EP45-EXTREME, you’re in luck.

No doubt you have probably followed this guide to get your Snow Leopard install. Congrats. It’s a pretty good guide, and it covers most of the bases. I honestly cannot be arsed writing up a full guide. This is for those who have Snow Leopard installed and want to fix up some things. That guide works perfectly with the GA-EP45-EXTREME, minus Audio (well sorta), IDE SATA Mode and IDE drives. I’ll get to that.

So, I installed Snow Leopard with OSInstall.mpkg and I had to deselect stuff for it to install. How do I install that other junk?

Or also known as, I selected QuickTime but QuickTime isn’t installed. Where the FUCK is it? OSInstall.mpkg didn’t seem to do an excellent job of finishing an install properly…even though it said it did. Put back in your Snow Leopard DVD, select Optional Installs and reinstall everything. Don’t worry, Snow Leopard won’t fall over. This will fix most of your missing packages.While you’re at it, install XCode.

Snow Leopard is up and running, but I want to benchmark. What do I use?

Xbench, CINEBENCH, Geekbench and OpenGL Extensions Viewer.

I want to “complete” my smbios.plist

I don’t blame you, and you should. You should boot into Windows, run CPU-Z and export all your details to a HTML file…then use those details to populate your smbios.plist. Make sure you use MacPro3,1 or 4,1 for Core i7. This thread has documentation for the smbios.plist file.

What should I have in my DSDT file? What should I have in my EFI string?

As much as possible. For both. This is going to differ for each machine and even configurations per machine…but here’s what more you can do for a GA-EP45-EXTREME. After you’ve got your DSDT.aml that works for Ethernet, Sound…you can…

a) Replace your LAN entries with GIGE and enable the GP9 fix. (Check the SL_Pack of the guide i mentioned early, GIGE is better)

b) Replace AZAL with HDEF for better audio. You should have already done this.

c) Find Device (PWRB) and replace the _HID below it with _CID (This enables your power button for Sleep)

The guide I linked earlier has pack available for download which has an excellent guide to DSDT.aml. Follow the steps.

You can however, do a little more with your EFI string.

You can add name tags to your Ethernet and Sound entries, for example:

<key>name</key>
<string>Realtek 8111C</string>

and

<key>name</key>
<string>Realtek ALC889A</string>

I keep kernel panicing when I enter 64-bit mode, even in 32-bit mode sometimes. What the hell?

Yeah this is a problem. Sometimes it’s Spotlight, go to System Preferences, Spotlight then Privacy and add all drives. Reboot, then remove them. Also, every time you modify anything to do with kexts you should run Kext Utility. Failure to do so will likely result in KPs. If you get stuck and can’t get back in. Boot with -s and run these commands:

  • mount -uw /
  • kextcache -v 1 -t -m /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext /System/Library/Extensions/
  • reboot

How do I always boot into 64-bit? Always enable verbose boot?

Modify your com.apple.Boot.plist. Under Kernel Flags put -x64 -v

I have CPU Unknown when I go to About This Mac. Fix?

Yeah. The SMBIOS fix that works with Snow Leopard doesn’t seem to support this. You’ll have to hack this manually. Google for AppleSystemInfo.strings There’s a few guides that tell you what to modify. Purely cosmetic.

OK. Let’s stop stuffing around. Here’s why I REALLY wrote this article.

Multiple video cards, more than two screens, all via EFI strings/DSDT with NO Kernel panics or changes to BIOS settings….oh and CI/QE enabled.

This took me quite some time to figure out. Even though I had the right Device Path for both video cards and correct EFI strings, the system would constantly kernel panic upon switching to GUI mode. NVInject for Leopard seemed to work, but disabled CI/QE…and it wasn’t 64-bit unless I compiled it myself. Eventually I got it working with just EFI strings but I had to change my BIOS to boot with PEG2 (the BIOS has an option to choose which graphics card to enable initially). This wasn’t a solution. I read up and found that Gigabyte boards seemed to have trouble with two cards and that you’d need to use PEG2 and switch cards around each time you wanted to enter (Snow)Leopard. Well, NO LONGER. Here’s the solution. Hoorah!

Firstly, you will need to modify your EFI Strings. Make sure you have the correct PCI Root for each device. Usually PciRoot(0×1)/Pci(0×1,0×0)/Pci(0×0,0×0) and PciRoot(0×1)/Pci(0×6,0×0)/Pci(0×0,0×0). To find these, take out your secondary card, boot, run gfxutil -f display, note it. Shutdown, take out your primary card, insert your secondary card (into it’s secondary slot) and repeat.

You will then need to add some keys. A typical dual-video card EFI plist is outlined below, the parts that are bolded are what you need to add, the parts in red need to be changed. In my example below I use a NVIDIA GTX 260 (896MB/DVI/DVI) and NVIDIA 8500 GT (256MB/DVI/VGA). You should make sure that the parts I haven’t highlighted are also the same in your current EFI string.

<key>PciRoot(0×1)/Pci(0×1,0×0)/Pci(0×0,0×0) (OR THE PCI ROOT OF YOUR PRIMARY CARD use gfxutil)</key>
<dict>
<key>@0,AAPL,boot-display</key>
<data></data>

<key>@0,can-hot-plug</key>
<data></data>

<key>@0,compatible</key>
<string>NVDA,NVMac</string>
<key>@0,connector-type</key>
<data>AAAABA==</data>

<key>@0,device_type</key>
<string>display</string>
<key>@0,display-connect-flags</key>
<data>AAAAAA==</data>

<key>@0,name</key>
<string>NVDA,Display-A</string>
<key>@1,AAPL,boot-display</key>
<data></data>

<key>@1,can-hot-plug</key>
<data></data>

<key>@1,compatible</key>
<string>NVDA,NVMac</string>
<key>@1,connector-type</key>
<data>AAAABA==</data>

<key>@1,device_type</key>
<string>display</string>
<key>@1,display-connect-flags</key>
<data>AAAAAA==</data>

<key>@1,name</key>
<string>NVDA,Display-B</string>
<key>NVCAP</key>
<data>BAAAAAAAAwAMAAAAAAAABwAAAAA=THIS IS DVI/DVI (change it depending in your card)</data>
<key>NVPM</key>
<data>AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==</data>
<key>built-in</key>
<data>AA==</data>

<key>VRAM,totalsize</key>
<string>0×38000000 THIS IS 896MB RAM (change it depending on your card)</string>
<key>device_type</key>
<string>NVDA,GeForce</string>
<key>model</key>
<string>NVIDIA GeForce GTX 260 (change depending on card)</string>
<key>name</key>
<string>NVDA,Parent</string>
<key>rm_multiboard_capable</key>
<data>AAAAAQ==</data>

<key>rom-revision</key>
<string>NVIDIA GeForce GTX 260 (change depending on card) OpenGL Engine</string>
</dict>
<key>PciRoot(0×1)/Pci(0×6,0×0)/Pci(0×0,0×0) (OR THE PCI ROOT OF YOUR SECONDARY CARD use gfxutil)</key>
<dict>
<key>@0,AAPL,boot-display</key>
<data></data>

<key>@0,can-hot-plug</key>
<data></data>

<key>@0,compatible</key>
<string>NVDA,NVMac</string>
<key>@0,connector-type</key>
<data>AAAABA==</data>

<key>@0,device_type</key>
<string>display</string>
<key>@0,display-connect-flags</key>
<data>AAAAAA==</data>

<key>@0,name</key>
<string>NVDA,Display-A</string>
<key>@1,AAPL,boot-display</key>
<data></data>

<key>@1,can-hot-plug</key>
<data></data>

<key>@1,compatible</key>
<string>NVDA,NVMac</string>
<key>@1,connector-type</key>
<data>AAAABA==</data>

<key>@1,device_type</key>
<string>display</string>
<key>@1,display-connect-flags</key>
<data>AAAAAA==</data>

<key>@1,name</key>
<string>NVDA,Display-B</string>
<key>NVCAP</key>
<data>BAAAAAAAAwAEAAAAAAAABwAAAAA=THIS IS DVI/VGA (change it depending in your card)</data>
<key>NVPM</key>
<data>AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==</data>
<key>built-in</key>
<data>AA==</data>

<key>VRAM,totalsize</key>
<string>0×10000000THIS IS 256MB RAM (change it depending on your card)</string>
<key>device_type</key>
<string>NVDA,GeForce</string>
<key>model</key>
<string>NVIDIA GeForce 8500 GT(change depending on card)</string>
<key>name</key>
<string>NVDA,Parent</string>
<key>rm_multiboard_capable</key>
<data>AAAAAQ==</data>

<key>rom-revision</key>
<string>NVIDIA GeForce 8500 GT(change depending on card) OpenGL Engine</string>
</dict>

That should allow you to boot to Snow Leopard under PEG2, with CI/QE. No more Kernel Panics! But we’re not done. Lets finish the job:

Now we need to patch DSDT.aml. Gather your DSDT.dsl file using iasl (or whatever you prefer). Open it up in TextEdit and search for

Device (PCI0)

Add the following devices under it:

Device (PEGP)
{
Name (_ADR, 0×00010000)
Device (GFX0)
{
}
}

Device (GFX1)
{
Name (_ADR, 0×00060000)
}

It should look like (sorry for the spacing):
Device (PCI0)
{

Device (PEGP)
{
Name (_ADR, 0×00010000)
Device (GFX0)
{
}
}

Device (GFX1)
{
Name (_ADR, 0×00060000)
}

Name (_HID, EisaId (“PNP0A03″))

Replace the _ADR fields with the Device Path Number. For example, in my EFI string above I have PciRoot(0×1)/Pci(0x1,0×0)/Pci(0×0,0×0) and PciRoot(0×1)/Pci(0x6,0×0)/Pci(0×0,0×0). Replace these numbers in those fields. If you have something like…”1C” instead of just “6″ you’ll have something like Name (_ADR, 0×001C0000).

Recompile the DSDT with iasl -sa and replace the file. Reboot and hoorah, you’re done. If you have a translucent bar at the top, QE/CI is working. Boot up time will be about 30-40 seconds longer. I don’t know why this is, but it’s a good trade off. If you need help with NVCAP or VRAM values try here.

Kext Rundown

A minimal amount of kexts (or Kernel Extensions) are best. The Snow Leopard pack from the guide I linked is nearly there…but it can be improved. The EP45 Extreme also needs a couple of others.

If you have JMicronATA.kext, LegacyAppleHDAHardwareConfigDriver.kext or LegacyHDAPlayformDriver.kext, you can delete them. Not needed.

A modified AppleVIAATA.kext will enable the IDE controller (iTE IT8213) in Snow Leopard. It will recognize the drives BUT THEY WILL NOT WORK. Sorry. Cosmetic only. In fact, inserting a CD will cause a lockup.

A better LegacyHDA.kext. This enables 5.1 Digital Out for your ALC889A.

AppleIntelPIIXATA.kext. This will allow you to use IDE mode for your SATA Controller. No RAID mode yet :(

Other KEXT’s that are ESSENTIAL are: SleepEnabler.kext (enables sleep, duh), OpenHaltRestart.kext (fixes Reboots), NullCPUPowerManagement.kext (Fixes heat issues and DSMOS stuff), IOAHCIBlockStorageInjector.kext (Fixes Orange Icons when using AHCI mode) and fakesmc.kext (does the decryption stuff so you can pirate OSX).

You can find ALL of the mentioned KEXTs (except the ones you don’t need for an EP45-EXTREME) here.

Enabling HFS+ Partition Reading on Windows

Snow Leopard brings a new version of boot camp…and this new version of boot camp happens to enable HFS+ partition reading from Windows (no writing). Yes, you can use this driver on a hackintosh and I’ve made a pretty simple way of doing it. The package I’ve includes the HFS+ driver version 3.0.1.6 (from the 10.6 retail DVD).

Download this, extract it and run the batch file (as Administrator). Reboot, check Computer Management/Disk Management and you should see your HFS+ partitions.

I did, however, have a problem with this driver. I’m not sure what caused it (or if it was even the driver), I think it may have been when I assigned drive letters to the partitions. In any case….if you install this driver and you attempt to get back to Snow Leopard, but are greeted by “boot0: error” then…you’re in luck, here’s the fix. You will probably need a spare OSX install to do it though.

My Windows 7 Backup & Restore Experience

After two years of putting up with failed Raptor drives from Western Digital, I have finally convinced them to send me Velociraptor replacements of the same 150GB capacity. My 7th Western Digital gave up 2 weeks ago after reformatting and attempting to install Windows 7. For those that have kept on telling me that I have some sort of power supply problem or that Raptors need a better supply of power, no, that isn’t the case. This same PC has been home to older 36GB Raptors and numerous 7200 RPM drives without a hitch, click, or bump. The 2007-2008 150GB Raptors are just crap. Absolute junk with a short MTBF. There is no excuse for a drive that can’t put out 24/7 use over 6 months.

Anyway, obviously sending both drives back means I need to image my current install and restore it to a spare drive. Usually, I had used an application by Runtime Software called DriveImage XML (free/closed source). The application created an image of the drive using Windows’ Volume Shadow Copy service while Windows was still running. The application worked perfectly on XP x64, but refused to detect the Shadow Copy service on Windows 7 x64. DriveImage XML worked perfectly for my needs. It would create an image, and even a human readable XML file of all meta data for the image. You’d then use Windows PE (or BartPE) to create a boot disk and restore the image. The only drawback was that you needed to restore the image to a drive of the same size or larger, otherwise, you’d need to specifically select the files you wanted restored to a pre-made empty partition. The problem with that was that NTFS permissions would be reset and it seemed that attributes on files, such as SYSTEM (+S) and HIDDEN (+H), would be cleared. Not a huge deal for me, but you’d often restart and see Windows’ Thumbs.db and Desktop.ini meta files all over the place.

So, enter Windows 7. I figured I’d go ahead and check out 7’s revamped Backup and Restore center. At first it looked pretty impressive. It offered to image my whole OS drive as well as add in separate files to the backup. Cool, sort of what I wanted. I went ahead and created my first image and saved it off to my NAS. Took about 4 hours for about 100GB (over GbE). The end result is a weird file structure which is handled nicely by Windows Explorer (in 7 anyway) and a VHD file, the same image format used for hard disks in Microsoft’s Virtual PC.

Now to restore that VHD. You can either chuck in your original Windows 7 install disk or create a repair disk from within Windows. I recommend using your install disk as you have an easy way to create and delete partitions with the setup GUI. I also found that the repair disk seemed to refuse to start if it didn’t find a partition with Windows 7 on it. This meant that when I had pulled my old drives, it became impossible for me to use the repair disk. What the hell? Why should I need my old drive to repair my PC. This instantly sounded alarms to me. I started to doubt the process and I thought that maybe Windows 7 would only allow me to restore the VHD to a drive that was the exact same capacity or something along those lines. The first few times I attempted to restore to another drive, I was told that the restore utility failed due to not being able to find an eligible drive (or something like that) BUT it turns out this message is just incredibly misleading. To fix it, you MUST connect the destination drive to Master Channel/Port 0. This basically means….SATA Port 0 for SATA drives or IDE Port 0…for IDE drives. The drive must also be the highest priority drive in the BIOS’s boot priority list. Once you’ve done this, you can restore the VHD to any hard disk you want.

I, for example, restored my 90GB VHD (which was a 150GB partition) to a 250GB drive. After restoring it, the partition created by the utility was 150GB (and not 250GB). I had to enter Disk Management and resize the partition to max out to 250GB. I have a feeling that the restore utility will fail with a drive smaller than 150GB (but maybe not if you’re lucky, maybe one day I’ll test). If that’s the case, you can always install Virtual PC 2007 and mount the VHD then copy all the files to an empty drive. That’s the long way around and you’ll probably lose NTFS permissions and/or file attributes. Time taken to restore? Just under 45 minutes for the 90GB VHD (again, over GbE). I’m now writing this from my imaged Windows 7 install….on 4 year old 250GB drive (which happens to only lose 0.4 experience points when compared to the Raptor, gg).

Edit: I probably should also mention that the step just before re-imaging seems to select ALL attached drives to be reformatted and repartitioned (at least I’m pretty sure). This made me scratch my head. The option to exclude drives from this is a tad hidden. Even USB Drives (ones that are Removable Drives, not Removable Hard Disks) were even selected for reformatting (I had one attached for networking drivers that I ended up not needing). So…watch out for that.

What I Hate About 7

So, I received replaced Raptor from Western Digital on Friday and decided that instead of just restoring my image, I’d start fresh and install Windows 7 Ultimate to a fresh RAID0 array. Installation was partially troublesome. The installation would stall at the “Installing Updates” stage, but I fixed this by installing the ICH10R drivers before starting the install. That’s sorta weird because Windows already detected the drives fine….clearly generic drivers fail. Upon the first restart, I was greeted by “A Disk Read Error Occurred. Press CTRL+ALT+DEL to restart”. Oh joy, I thought. Forcing another reboot I find that the other Raptor in the RAID0 (not the one I just received back from Western Digital) has had a S.M.A.R.T error. Yes, my 6th Raptor died during the Windows 7 install. Anyway, I ripped out the failed drive and continued to install 7 to the working Raptor. Huzzah, it boots.

So, I’ve installed all my junk and messed with it. For the most part, the operating system is great. No doubt the performance is significantly improved from Vista. You can tell by smaller number of processes, RAM usage and CPU usage, as well as the fact that the Desktop Window Manager (DWM) no longer increases in size with number of windows open. Cool. 7 successfully detected all my devices upon first boot, except my Creative X-Fi, which amazingly Creative has working drivers for. Even though everything worked, I went ahead and installed non-generic drivers for everything that I have. Also, huge success.

All my applications work too. I had only one compatibility problem. I did find that .NET Framework 1.0/1.1 does not seem to be included. Did Microsoft end support for this?!  If you ever get an application asking for MFC71.DLL, it means it uses .NET 1.0. I only had one application that needed it and it wasn’t a huge deal for me not to have it. I tried installing .NET Framework 1.0, but it failed with no error. I’m sure this is probably because of some sort of OS check and I’m sure there’s a workaround that I’ll work out later

There’s a ton of new features, specifically, the brand new SUPERBARRRRR (i.e. Taskbar and OSX Dock all-in-one). Just like my iPhone review, I could go over all the new shiny features, but that’s be useless. There’s tons of reviews out there for that. Here’s what bugs me:

White Line – Boot Failure

I have a feeling this is caused by the NVIDIA Windows 7 drivers, but I’m yet to figure out what it is exactly. Sometimes on boot, just as the video drivers are initializing and just before the mouse pointer displays on the screen, Windows will lock up and show a white line (on black background) across the top of the screen. Nothing else, pretty random occurrence. Most of the time it boots fine, but I’ve had this once or twice.

Aero Shake

Who the hell uses this junk? This new feature allows you to shake a window (while in a dragging state) to minimize all other windows. You then shake it again to bring them back up. You’d think the problem with this is that Aero Shake would be too sensitive, randomly minimizing windows when you don’t wish for it to, but it’s quite the opposite. It takes a helluva lot of shaking to get the feature to work, which makes this feature completely and utterly useless. I could probably minimize all my other windows just as fast as trying to get the thing to recognize I’m shaking the window.

Snapping to Compare with Multiple Monitors

Another new feature allows you to drag a window to the side of the monitor for it to take up half the screen and become maximized. For example, you could drag one window to the left and one to the right for a side-by-side comparison. Cool feature, unless you have multiple monitors lined up in a row. This feature refuses to work on the borders of the monitor if you have another monitor next to it. So say you have 2 monitors, you’d think you could drag 1 document to the left on the 1st monitor, 2nd to the right on the 1st then 3rd and 4th to the left and right on the 2nd monitor, but no, you can only drag the 1st document to the far left and the 2nd document to the far right, leaving a giant empty space in the middle. Fail.

Maximize Vertically

Now we’re really turning OSX. If you want to maximize a window and double click on the very top edge of a window it will only maximize vertically, instead of the usual vertically and horizontally. I guess this feature has its uses, but I haven’t come up with one situation where I’d want to maximize only vertically…and the only time I have maximized vertically is by accident.

Superbar Grouping

The new superbar is a cool concept but depending on what you’re doing, it’s very possible that you’re going to take longer to perform your average task. Since items are grouped, you will often find yourself having to click the application’s icon and also clicking the window of the application you want. Two clicks instead of one.

You’ll probably also be irritated by the fact that if you have an application open already, and you go to click it again, it won’t open another instance of the application. Take Firefox for example, if you don’t have Firefox open and you click the Firefox button, Firefox opens (good). If you have one Firefox window open and you click Firefox, Windows activates your currently open Window (bad). If you have two windows open, you will be shown previews of the windows you have open (OKish). So, how do you open a new Window? You have to right-click then select the application’s name. More clicks than it was previously.

Also, due to grouping, how the hell do you know what you have open? When multitasking with multiple Windows Explorer windows, this can be rather annoying as you must look through windows listed via Aero Peek (which makes every other Window invisible upon hover, especially annoying when watching video on another monitor). But the situation where this bugs me most is with Instant Messaging. For example, Windows Live Messenger, the icon will turn orange upon a new notification but I don’t know who this notification is from till I break what I’m doing and move my mouse over to check the Aero Peek previews.

XP Mode

XP mode was introduced for maximum compatibility with Windows 7. It is essentially Windows XP Pro SP3 running in Microsoft’s Virtual PC. It allows you to install applications within the virtual machine then use them within Windows 7. Sort of like Paralells and VMware Unity on OSX. Cool feature, but it basically requires you to boot up the VM,  drag in your application and create shortcuts in the Start Menu. This feature would have been waaaaaaaay cooler if you could simply right click an executable and “Run in XP Mode”. For extra cool points, XP mode should have handled 16-bit executables on x64, so that you could simply double click your old favorite DOS game and launch it in XP mode.

Breadcrumb still fails to recognize the CTRL modifier

What do I mean by this? Well, if you go back to XP, you’d find that holding CTRL and pressing “Up”  would open a new instance of Windows Explorer in that folder. Alas, ever since Vista, the breadcrumb completely ignores this. You’d think that CTRL click on a crumb would open that folder in a new Windows Explorer window, but no. To do so, you must CTRL+N then select the folder you wanted to browse to.

Incompatible Applications, Codec Crazyness.

One application that I did come across as “not working as intended” was Winamp. I love Winamp due to its extensibility, sexy looks, intuitive interface and integration of both audio video in a fairly lightweight package. However, if video is playing and Aero is enabled, Winamp will start using approximately 1 whole core of CPU usage (i.e. 100% on a one core system, 50% 2 core, 25% 4 core). This results in sometimes-choppy video, which is rather irritating. For now, I have to go for a combination of Winamp, for audio, and VLC for video. I’m fairly certain this problem also occurs in Vista, so I don’t expect it to be fixed anytime soon in for 7.

Also, codecs in 7 are a bit weird. For the average user, 7 is great. It includes a ton of default codecs that play most formats out there, but for the graphics-whore these codecs seem to produce a less sharp image on compressed video formats. You can definitely tell the difference between the default and ffdshow. Also, the installation of ffdshow (by the usual codec packs) seems to fail. ffdshow will install, but will not become the default codec until you start messing with settings. I have a feeling this is to do with the default codecs having a high “merit”, which is basically a priority for codecs.

Office 2007 in Windows 7

Technically, Office 2010 is meant to be paired with Windows 7, but it isn’t out yet. Office 2007 for the most part works great, but for some weird reason, I find that pressing TAB on a bullet point, no longer indents to the next bullet point type. Instead, it inserts an actual TAB character, as if you writing a normal paragraph. To get the next “level” of bullet points you must reach up to the ribbon and click Increase/Decrease indent. The same occurs for Shift-Tab. I wonder if this is just me?

Top 10 games of all time – a list.

  1. Unreal Tournament
  2. Doom
  3. Metal Gear Solid
  4. Portal
  5. Half-Life 2
  6. Duke Nukem 3D
  7. Sonic the Hedgehog 2
  8. World of Warcraft
  9. Counter-Strike: Source
  10. SimTower
    ————————-
  11. StarCraft