Mac OS X on x86 Hardware 2008–2024 Technical Archive
InfiniteMac OSx86 › OSx86 Core & 10.X › VoodooPS2 optimized for Snow Leopard, Leopard and Tiger
30,557 reads · 2010-12-22 – 2011-11-22
Report 10.X Core

VoodooPS2 optimized for Snow Leopard, Leopard and Tiger

I rebuilt (and slightly rewrote) VoodooPS2 for Snow Leopard, Leopard and Tiger. This does not need a nub so delete AppleACPIPS2Nub.kext before install (Don't delete on Tiger though). The nub is built directly into the VoodooPS2Controller.…

Primary Author
@andyvand Published 2010-12-22
Collection
OSx86 Core & 10.X
Archival Footprint
30,557 historical reads · 15 curated field notes (from 24 dispatches) · 2010-12-22 – 2011-11-22
Credited Voices (8)
@andyvand (7)@Bronxteck (4)@kidslow (4)@vako (3)@chitchit (3)@jason99@cabezaboton@ed_co

I rebuilt (and slightly rewrote) VoodooPS2 for Snow Leopard, Leopard and Tiger.
This does not need a nub so delete AppleACPIPS2Nub.kext before install (Don't delete on Tiger though).
The nub is built directly into the VoodooPS2Controller.
For Tiger the nub is dropped because it is present allready in AppleACPIPlatform.kext's plugins.
I also implemented Slice's multimedia keys fix (working now) and the high resolution fix (2400 dpi for Synaptics).
NOTE: If you have a Synaptics touchpad make sure to set the speed to high prior to installation (in Apple Trackpad prefpane).
For Synaptics the speed will start at max (new fix) so it works smooth.
The tapping function for ALPS should work too now...
Happy X-Mas to everybody too and a happy new year.
Download including sources:
rapid share.com/files/440463070/VoodooPS2.zip
The built products are under build/Release (Tiger/Leopard)

Author Updates & Technical Revisions

Follow-up dispatches by @andyvand

Author Update #1 @andyvand 2010-12-25 ↳ Re: @Bronxteck
@BronxteckHi I have a Dell D620 Laptop with an ALPS trackpad Running Snow Leopard. Overall your kext is working great but its very sensitive when scrolling on safari, but it will not allow adjustment from the "voodoo" trackpad pref because it closes out when adjusting the settings. but I was able to turn it on with the "vanilla" trackpad pref…

I could take a look if you supply me with the diff.
I allready changed the 2 finger scrolling functions for ALPS so this one I can do too

Author Update #3 @andyvand 2011-01-01

New version available...
This one has multimedia key support (thank you Slice).
This one also has a high resolution trackpad fix for Synaptics (2400 dpi instead of 100 dpi).
The high resolution fix makes sure the pointer of the trackpad goes smooth and gives better control in the Apple Trackpad prefpane (thanks to ivik for suggesting this).
Also Tiger version is fixed... this one needs AppleACPIPS2Nub.kext though (should be standard present in /System/Library/Extensions/AppleACPIPlatform.kext/PlugIns).
Updated: Fixed minor issue with Synapics speed and only high resolution trackpad fix for Synaptics, not ALPS...

Author Update #4 @andyvand 2011-01-02 ↳ Re: @kidslow
@kidslowI am on an Asus 1008HA at 10.6.5 with latest NBI patching bootloader. Trackpad is Synaptics, apparently multi-gesture enabled. I have seen my trackpad preferences reset after multiple system hardware events: after every reboot, disconnecting an external monitor and plug/unplug USB devices. My preferences (both in the VoodooPS2 and…

I just updated the mistake I made of not editing the Info.plist parameters section (divisor set to 1 instead of 23).
Download and try the new version I just posted, it will work better...
If you after this still find it too slow set in the Apple trackpad prefpane the speed to max (then it really flies).
Hope this helps you out...

Author Update #5 @andyvand 2011-01-03 ↳ Re: @vako
@vakoI've got Sony VAIO VPC F12M with ALPS touchpad and SnowLeopard 10.6.5 on-board. and some issues I've got - sources did not compile because of this function clock_get_uptime(&now), thats not supported on this kernel (for debug version) - I can compile it, but Touchpad kext do not load automatically. When I load manually, it's register…

Use the precompiled version that ships with the zip (under build/Release).
It should work then.
There is no need to recompile as the VoodooPS2Controller.kext contains everything you need.

Author Update #6 @andyvand 2011-11-09 ↳ Re: @bkribbs
@bkribbsHey andy, would it be possible to rebuild this using lion trackpad so us hackintoshers can have 3 finger scrolling? How do I go about compiling a kext from all the source?

Load the sources in Xcode 4.1.
Then set for Release and tap build.
It'll build .
3 finger scrolling probably needs to be coded in...

Synthesized Community Field Notes

15 technical responses curated from 24 original dispatches

Field Note #1 @Bronxteck 2010-12-24

Hi I have a Dell D620 Laptop with an ALPS trackpad Running Snow Leopard. Overall your kext is working great but its very sensitive when scrolling on safari, but it will not allow adjustment from the "voodoo" trackpad pref because it closes out when adjusting the settings. but I was able to turn it on with the "vanilla" trackpad pref by adding vendor ID 1452 to the Info.Plist. is there a way to build the sensitivity and relocate the scrolling to lets say the right side and bottom of track pad in the voodooALPStrackpad.cpp file? I was using a kext that was modified by Slashack that works in this manner but it outputs debug info so it is constantly outputting tracking parameters to log which is killing my battery life from from all the hard drive access.. the problem is there is no source to compile from to remedy the situation of debug output but there seems to be a Patch.diff but i'm not 100% sure if its correct. I can supply it to you if you wish.
And thank you for your time and many effort you have supplied the Hackintosh community over the years.

Field Note #3 @Bronxteck 2010-12-26

Ok i have been fiddling around with it for like 5 hours but it panics on load.. (the original one you posted on the 22 does not) I also get build errors compiling- clock_get_uptime(&now) cannot convert absolute time to unit64_t and it goes on 6 times (but im building in i386) so can the uploaded file be corrupted? or is it something on my part that im doing wrong.

Field Note #4 @jason99 2010-12-26

hi andyvan, the two finger scroll works well with alsp, with both version, the speed is too fast, solutions for this?

Field Note #5 @Bronxteck 2010-12-27

I got it Working... (a little while after posting it was something with my boot loader).
then I "adjusted" the trackpad Info.Plist to suit my needs... (which in turn Slowed it down just a little not enough though.) but the pressure sensitivity is still an issue it's too sensitive.

Field Note #6 @kidslow 2011-01-02

Preferences persistence issues

I am on an Asus 1008HA at 10.6.5 with latest NBI patching bootloader. Trackpad is Synaptics, apparently multi-gesture enabled.

I have seen my trackpad preferences reset after multiple system hardware events: after every reboot, disconnecting an external monitor and plug/unplug USB devices. My preferences (both in the VoodooPS2 and Apple Trackpad Preference panes) appear to be reset when I go back and check. Is that a plist stored somewhere?

The defaults for my trackpad movement are sluggish. Like moving wet concrete. Still driving with a mouse until I iron out some more of these kinks.

Also can't get the source to compile. I haven't had time to track down the causes for compilitation failure, yet. Something about 'Cannot convert 'AbsoluteTime*' to 'uint64_t*' in 'void_clock_get_uptime'.

I was using meklorts ApplePS2Controller.kext with AppleACPIPS2Nub.kext , but I like the idea of removing the Nub, and found you had done it. Otherwise, those were a passable combination.

Field Note #7 @vako 2011-01-03

I've got Sony VAIO VPC F12M with ALPS touchpad and SnowLeopard 10.6.5 on-board.
and some issues I've got
- sources did not compile because of this function clock_get_uptime(&now), thats not supported on this kernel (for debug version)
- I can compile it, but Touchpad kext do not load automatically. When I load manually, it's register in IOreg tree but no reaction any touchpad actions.

Field Note #8 @vako 2011-01-04

that's I did as a first step, but no success.
may be this will clear something:

1/4/11 1:11:20 PM	kernel	VoodooPS2SynapticsTouchPad loaded

1/4/11 1:11:20 PM	kernel	ApplePS2Trackpad: ALPS GlidePoint v4.115
1/4/11 1:11:23 PM	WindowServer[73]	Unable to open IOHIDSystem (0xe00002bd)
1/4/11 1:11:23 PM	loginwindow[28]	Login Window Started Security Agent
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDDefaultParameters Value: ??
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDClickTime Value: 500000000
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDClickSpace Value: ??
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDKeyRepeat Value: 83333333
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDInitialKeyRepeat Value: 500000000
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDScrollAcceleration Value: 20480
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDPointerButtonMode Value: 2
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDF12EjectDelay Value: 250
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDSlowKeysDelay Value: 0
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDStickyKeysDisabled Value: 0
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDStickyKeysOn Value: 0
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDStickyKeysShiftToggles Value: 0
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDMouseKeysOptionToggles Value: 0
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDFKeyMode Value: 0
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDClickSpace Value: ??
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDClickTime Value: 500000000
1/4/11 1:11:24 PM	kernel	ApplePS2ALPSGlidePoint: Dictionary Object: HIDDefaultParameters Value: ??
1/4/11 1:11:24 PM	kernel	virtual bool IOHIDEventSystemUserClient::initWithTask(task*, void*, UInt32): Client task not privileged to open IOHIDSystem for mapping memory
Field Note #9 @kidslow 2011-01-05 ↳ Re: @andyvand
@andyvandI just updated the mistake I made of not editing the Info.plist parameters section (divisor set to 1 instead of 23). Download and try the new version I just posted, it will work better... If you after this still find it too slow set in the Apple trackpad prefpane the speed to max (then it really flies). Hope this helps you out...

That improved it so now the preferences for VoodooPS2 are being saved, except after a reboot when they push the "Speed" all the way to the maximum. Previously the preferences were reset by hardware changes and would go back to the middle of the "Speed" curve (i.e. slow) after a reboot. Slight improvement, but I still need to go in and adjust the preferences after I reboot.

I actually set my speed a little lower than the max and use the Mouse Acceleration Preference Pane to fine-tune the responsiveness of my trackpad. It's a great little utility.

tr iq.net/articles/mouse-acceleration-preference-pane-mac-os-x

It would be nice if I could compile the sources for myself. Vako, what did you adjust to get it to compile?

Field Note #10 @vako 2011-01-06 ↳ Re: @kidslow
@kidslowIt would be nice if I could compile the sources for myself. Vako, what did you adjust to get it to compile?

in case, I can't get kext working, probably will be not a good idea to share my changes)).
anyway, that was regarding clock_get_uptime

Field Note #11 @cabezaboton 2011-01-08

Help

Hello! First of all congratulations for your job and thank you for sharing, thanks to people like you dummies like me can dive into hackintosh world (almost) without drowning.

I'm trying to setup a Compaq C700 machine with Snow Leopard, and one of my pending issues to fix is the touchpad, it's not acting like one because not even tap works (for sure two finger scrolling doesn't work either, but this could be considered as "nice to have" in front of the tapping issue) Everything was working when the machine run OsX 10.5.x...

Ok, so I've tried your kext and I've noticed (happily) that the keyboard is acting as a full spanish layout laptop keyboard, which is new for me, as some minor key mismatching I got used to live with appeared in the past... but bad news is, I don't have any response from trackpad. As far as I know, it's an ALPS model. Could you give me some help? I'll send youa ll the information you require for the purpose. I've got a silly doubt, I've used the files in "build/Release" folder, even if it doesn't say "Snow Leopard" (no folder says so) Am I right?

Once again, a thousand thanks.

Field Note #12 @kidslow 2011-01-16

I got those sources to compile

I finally was able to get the sources to compile. Would be better to #include it in a different file, but I tested this & it builds and runs. Answer came from following this thread:

lists.apple.com/archives/darwin-drivers/2007/Apr/msg00059.html

It won't compile for Tiger now, but will for Leopard and SL.

Add the following code at the end of these files:

./VoodooPS2Keyboard/VoodooPS2Keyboard.h
./VoodooPS2Mouse/VoodooPS2Mouse.h
./VoodooPS2Trackpad/VoodooPS2ALPSGlidePoint.h
./VoodooPS2Trackpad/VoodooPS2SentelicFSP.h
./VoodooPS2Trackpad/VoodooPS2SynapticsTouchPad.h

#ifdef ADD_ABSOLUTETIME

#define AsUInt64(x)     (x)

#else

static inline const UInt64& AsUInt64(const AbsoluteTime& rhs)
{
    return reinterpret_cast<const uint64_t&>(rhs);
}

static inline UInt64& AsUInt64(AbsoluteTime& rhs)
{
    return reinterpret_cast<uint64_t&>(rhs);
}

static inline void absolutetime_to_nanoseconds(const AbsoluteTime& abs, UInt64* ns)
{
absolutetime_to_nanoseconds(AsUInt64(abs), ns);
}

static inline void nanoseconds_to_absolutetime(UInt64 ns, AbsoluteTime* abs)
{
    nanoseconds_to_absolutetime(ns, reinterpret_cast<uint64_t*>(abs));
}

static inline void clock_get_uptime(AbsoluteTime* abs)
{
    clock_get_uptime(reinterpret_cast<uint64_t*>(abs));
}

static inline void ADD_ABSOLUTETIME(AbsoluteTime* time, const AbsoluteTime* offset)
{
*reinterpret_cast<uint64_t*>(time) += *reinterpret_cast<const uint64_t*>(offset);
}

static inline void SUB_ABSOLUTETIME(AbsoluteTime* time, const AbsoluteTime* offset)
{
*reinterpret_cast<uint64_t*>(time) -= *reinterpret_cast<const uint64_t*>(offset);
}

static inline int64_t CMP_ABSOLUTETIME(const AbsoluteTime* lhs, const AbsoluteTime* rhs)
{
return (*reinterpret_cast<const uint64_t*>(lhs) - *reinterpret_cast<const uint64_t*>(rhs));
}

#endif /* ADD_ABSOLUTETIME */
Field Note #13 @kidslow 2011-01-16

There is a more elegant way to fix the issue with uint64 than my header file mess. Found from the first link here. I also did finally figure out how to make my preferences save properly. Still not able to get tapping to work on the trackpad, but that is the next thing to tackle.

Andy, can you incorporate some of these other patches back into your sources?

http://www.insanelymac.com/forum/index.php?s=&showt… ↗

// from
clock_get_uptime(&now);
// to
clock_get_uptime((uint64_t *)&now);

http://forum.voodooprojects.org/index.php?topic=99.15 ↗

-   NSString *tmp1, *tmp2;

    
-   f=fopen ([tmp2=[NSHomeDirectory() stringByAppendingString:tmp1
-               = [NSString stringWithCString: "/Library/Preferences/org.voodoo.SynapticsTouchpad.plist"]] UTF8String], "rb");
-   CFRelease(tmp1);
-   CFRelease(tmp2);
+   //There was no AutoreleasePool, here is the allocation and init
+   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+   
+   NSString *tmp1, *tmp2;
+   
+   //NSStrings Allocation and Initialization
+   tmp1 = [[NSString alloc] initWithCString:"/Library/Preferences/org.voodoo.SynapticsTouchpad.plist"];
+   tmp2 = [[NSString alloc] init];
+   tmp2 = [NSHomeDirectory() stringByAppendingString:tmp1];
+   
+   f=fopen ([tmp2 UTF8String], "rb");
+   
+   //We release the AutoreleasePool, this also releases tmp1 and tmp2
+   [pool release];
Field Note #14 @ed_co 2011-05-11

First of all, hello all. This is my first post.

I have a synaptics touchpad, which is recognized as an alps, the result is that the correct drivers are not loaded and the I can't use it.
Someone found that in the id sequence it returns 0x02 instead of the expected 0x47 and that results in the touchpad not to be recognized as a synaptics.

void ApplePS2Mouse::interruptOccurred(UInt8 data)      // PS2InterruptAction
{
  //
  // This will be invoked automatically from our device when asynchronous mouse
  // needs to be delivered.  Process the mouse data.   Do NOT send any BLOCKING
  // commands to our device in this context.
  //
  // We ignore all bytes until we see the start of a packet, otherwise the mouse
  // packets may get out of sequence and things will get very confusing.
  //
  if (_packetByteCount == 0 && ((data == kSC_Acknowledge) || !(data & 0x08)))
  {
    IOLog("%s: Unexpected data from PS/2 controller.\n", getName());
    return;
  }

I mean, it is using voodooPS2mouse.kext instead, because the driver is not loaded properly, due to the synaptic trackpad is recognized as ALPS.
The behaviour is pretty good, but when it wakes from sleep, there is an erratic movement from trackpad and I have the following in the kernel.log:
- ApplePS2mouse: unexpected data received from PS2 controller.
- ApplePS2controller: timed out on mouse input stream.

Someone could take a look on it.
By the way my trackpad is a Synaptic (ID: SYN0166, ID COMPATIBLES: SYN0100, SYN0002, PNP0F13).
The computer is a 8540w.

Here is a thread:
http://forum.voodooprojects.org/index.php/topic,1803.0.… ↗

Field Note #15 @chitchit 2011-11-09

Hey andy, would it be possible to rebuild this using lion trackpad so us hackintoshers can have 3 finger scrolling?

How do I go about compiling a kext from all the source?

Corroborated & Participated: @chitchit
Sources & Contributor Provenance (8 credited usernames · Thread #6814)
UsernameDossier ContributionDispatchesActive Window
@andyvandPrimary Author72010-12-22 → 2011-11-09
@BronxteckCore Contributor42010-12-24 → 2010-12-27
@kidslowCore Contributor42011-01-02 → 2011-01-16
@vakoCore Contributor32011-01-03 → 2011-01-06
@chitchitCore Contributor32011-11-09 → 2011-11-22
@jason99Contributor12010-12-26
@cabezabotonContributor12011-01-08
@ed_coContributor12011-05-11