05 November 2009

Ten Things I Hate (or Love) About Kexts


My HP Mini 1001TU, though still covered by HP's warranty until February 2010 (I just recently found out by submitting my unit's serial no. on HP's warranty information site - it may take a while to load; just choose your Mini version from the list and don't forget to register with HP), is already a pretty dated piece of hardware - No, Apple, I refuse to call my netbook "a piece of junk" though it's definitely less than $500 dollars.


The first time it ever became a hackintosh was April this year - I got the unit last February but I hadn't a decent DSL connection then so didn't have access to tools and files needed - and since then, it's undergone lots of reinstalls, tasted lots of kexts (nope, not the Swedish "Kex") and different boot loaders. It's the kexts part that I'm gonna be reviewing in this post.


What have I learned in the past 6 months or actually 11 months (if we count in the MSI MacBook Wind encounter) that I've been living with a hackintosh?


I'd call it Kext Symbiosis.


In pretense of being structured in my approach of the subject, what is a kext ?


KEXT stands for Kernel Extension, this means that whatever needs to run in the kernel (OS core) environment can be written as extension and then loaded, even after the OSX has finished loading, this mostly answer the needs for hardware drivers. - iHackintosh.com
My take is simply this: It's what makes your PC's hardware work in Mac OS X.

In my never-ending journey as a hackintosh noob, these are some of my observations:


1) VoodooPS2Controller.kext and VoodooPS2Trackpad.kext don't like AppleACPIPS2Nub.kext, giving you a nice kernel panic to restate that point if you do forget and force them to live together.


2) fakeSMC.kext takes out the need for dsmos.kext and AppleDecrypt.kext (in Leopard). Also there's a separate version of these fakesmc and dsmos.kext for Snow Leopard and Leopard. But then there's fakesmc so why the need for dsmos.kext, right?


3) IO8211Family.kext is not exactly anti-social like me so it likes to live hand-in-hand with other kexts like IOUSBFamily.kext and LAN9500.kext. Actually I'm not sure about the LAN9500.kext having to do something with WiFi cause I don't have that kext loaded in my system - I only have IO8211Family.kext and IOUSBFamily.kext.


4) OpenHaltRestart.kext is made by Psystar (okay, so that was totally irrelevant but the next line should be) and it's the one responsible why you can shutdown your hackintosh. Restart is a bit choosy in that it doesn't do its job after the machine has gone to sleep. It hangs somewhere in the process and you're forced to use the power button to force a shutdown. You can replace OpenHaltRestart with EvOReboot.kext. Apparently the Spanish dev team got tired of seeing Psystar during verbose boot mode so they made their own kext to do the job. P.S. I still can't restart once the machine has gone to sleep even with EvOReboot.


5) VoodooHDA is the only kext so far that's allowed my Mini to get sound. Volume control is iffy to say the least but I'm still grateful my Mini isn't perpetually mute. Mic is. . .never mind the internal mic.


6) ApplePS2Controller for Snow Leopard on some Mini 1000 units cause frozen keyboard and trackpad after waking up the machine from sleep. Use VoodooPS2 kexts instead and don't be stupid (like most of the time I am) and unload ApplePS2 stuff or any non-VoodooPS2 marked stuff like common sense tells you before restarting the machine.


7) Speaking of sleep, you need SleepEnabler.kext to get enable sleep plus a modded dsdt.aml to enable sleep/resume and clamshell sleep.


8) Disabler.kext is needed to disable AppleIntelCPUPowerManagement.kext. Alternatively, you can use NullCPUPowerManagement.kext but I get less kernel panics (KP's) with Disabler plus it's got a shorter name ;)


9) VoodooPower.kext and VoodooPowerMini.kext are good power management kexts in lieu of AppleIntelCPUPowerManagement.kext. I also use VoodooBattery.kext paired with VoodooPower.kext. I've yet to figure out how get back speed stepping that's lost after the machine wakes up.


10) Extensions.mkext is needed to be rebuilt each time you unload, load, reload, or in short do any changes in relation to kexts. Good thing there's Mkext Tool app from PCWiz Computer.


So, here's hoping that with the list above, we could be more guided in trying to maintain our hackintoshes. I'm not saying setting up; I think getting things up and running the first time is relatively easy - google for a guide and try if it works and then you have Mac OS X.


Keeping a hackintosh running and updated is another thing and requires understanding how your own individual setup works. I'm not saying it's crucial to get to the nitty gritty technical essentials of how kexts work (for that you might as well learn C++ or Objective-C and should be reading this instead to create your own kexts).


I think it's enough to remain observant of your MacBook Mini to see how different set of kexts affect its behavior and then remember that for reference - take notes on paper or put up a blog like this blog.


That's just exactly what I'm doing, documenting my observations and My MacBook Mini is just a regular "Travelogue" of sorts of my Hackintosh journey. I'm no programmer; just your average hackintosh noob and what I write here are my records of which works and which don't for my setup after experimenting with new stuff. Which I enjoy doing. A lot.

1 comment:

BIgBeluga said...

This is a really helpful post for those of us working on machines with no following. I have an S12, and the HPMini 311 stuff gets me part of the way there, but only part of the way. Thank you.