Jump to content

i2c-hid touchscreens, trackpads and more


alex.daoud
 Share

59 posts in this topic

Recommended Posts

VoodooI2C

 

VoodooI2C is a kext that brings support for I2C controlled input devices to OS X. For a list of compatible controllers and devices, see the github page: https://github.com/alexandred/VoodooI2C .

 

Where we stand right now

 

Haswell, Broadwell and Skylake are fully functional as controllers. On the device side, most (if not all) i2c-hid devices have basic functionality (sometimes with minor changes to the code). Various proprietary interfaces are also supported such as the ELAN I2C interface which brings native multitouch to a variety of ELAN trackpads and touchscreens.

 

What will be supported?

 

I envisage only 3 classes of i2c-hid support by code I have written. Touchscreens, touchpads and sensor hubs. Sensor hubs contain information from the accelerometer (and possibly the fingerprint reader if your device has one, based on my research). This will allow us to get screen rotation on tablets.

 

Testing

 

Do you have a device with a touchscreen or trackpad that refuses to work no matter what drivers you throw it at? You might be a good candidate for this driver, simply post your DSDT, SSDTs and IOReg in this thread, along with your device's model number and OS X version and I will confirm if you will be able to use it or not.

 

 

Technical Data

 

Apple actually has drivers for the Intel LynxPoint LPSS I2C devices (as can be found in /System/Library/Extensions) but these are not compatible with our devices. Apple's drivers expect the interrupts to occur over GPIO whereas the ones found on our devices do not use this. Hence it cannot find the necessary pin data and that is why we get "probe fails" (also applies to SPI, UART etc).

 

Source Code

 

The source code can be found at http://www.github.com/alexandred/VoodooI2C

 

Disclaimer

 

I am in no way affiliated with the VoodooProject. VoodooI2C was an internal name as I couldn't think of what to name it. Suggestions?

  • Like 8
Link to comment
Share on other sites

  • 3 weeks later...

Hey, I'd love to help! Have an SP3, and know a bit of C++ - Also I'm a CS student at uni, so I have access to books on pretty much any computing topic if need be haha :D

 

I'd love help but, to be honest, I wouldn't recommend you get into it. I've been programming for 9 years but it took me 3 months of research to learn how to write OS X kernel drivers, learn how the Linux kernel worked (in order to port the drivers despite the fact that I've worked with the Linux kernel before), read up on the I2C and HID specs and read the Intel LPSS i2c specs. It is a monumental task and I wouldn't wish it upon anyone else to be honest. I've spent many a late night bashing my head against a keyboard (one bug lasted me a month until the good folks at linux-i2c helped me out).

 

It's about 80% complete now. All the difficult parts are done. All that remains are the interesting parts where we actually grab the touch data from the touchscreen. A small bug is preventing me from continuing and I left it there as I have two jobs to work and a masters degree to study for. It unfortunately looks like this might be stagnant until the summer.

 

If you have experience in hardware interfacing, HID and OS X kernel programming, I am willing to guide you through the mess that is my code. If not though then I'm afraid you're better off just waiting until I find the time.

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

I really want to give it a shot on my SP3! Alex stop being a c**ktease ;)

Haha. I'll be finishing the code off this summer. I have a lot of university work to cover currently so I don't have any time for anything else. Rest assured that I haven't dropped the project.

  • Like 1
Link to comment
Share on other sites

Forgive my novice knowledge on the matter, but just how much functionality will the final outcome have when you finish Alex? My perfect scenario is if pressure sensitivity will work with programs like Photoshop/Manga Studio then I will be over the moon. If that will be possible, I don't know...

Link to comment
Share on other sites

Forgive my novice knowledge on the matter, but just how much functionality will the final outcome have when you finish Alex? My perfect scenario is if pressure sensitivity will work with programs like Photoshop/Manga Studio then I will be over the moon. If that will be possible, I don't know...

In terms of hardware, anything that the hardware implements will be possible. It's a whole other ball game when it comes to OS level functionality. I believe that OS X does indeed have embedded support for pressure sensitive touch devices. I will have to dig through VoodooPS2Trackpad to figure out how its done. The first functional version will only have basic pointing, scrolling, dragging and right clicking however.

 

Of course when it comes to the Surface Pro 3 and other devices which I do not own, there will probably be a lot of things to do in order to make it work. I've had it tested on the Intel Ultrabook and it just kernel panics (although I have identified the point at which the KP actually occurs). I would be really surprised if the driver works out of the box on the SP3 but if it does, I'll be happy.

  • Like 3
Link to comment
Share on other sites

  • 4 weeks later...

Hey guys, unfortunately no real update to the development of this kext, I am quite busy until the end of May. I have created a gitter room for this kext which can be accessed at https://gitter.im/alexandred/VoodooI2C# . If anyone is interested in aiding development/testing of this kext, please post your messages over there. It will be the main point of discussion when I have started to work on this again.

  • Like 3
Link to comment
Share on other sites

  • 2 months later...

Hey guys, it's been a while since I posted here and thought I owed a little update. I unfortuantely have not made any progress in a while. There is a major bug which I have not yet solved. Until that bug is stomped, we will not be able to see any progress with this driver. I haven't given up though!

Link to comment
Share on other sites

Hey guys, it's been a while since I posted here and thought I owed a little update. I unfortuantely have not made any progress in a while. There is a major bug which I have not yet solved. Until that bug is stomped, we will not be able to see any progress with this driver. I haven't given up though!

Maybe you should ask Rehabman with these issues, he's good with these things

Link to comment
Share on other sites

  • 5 weeks later...

Hello Alex, great news you didn't give up !

Maybe not the best idea but what about getting in touch with touchbase team?

They have an old post about i2c here http://touch-base.com/documentation/SurfacePro.htmand if as you reported most of the porting work is done and OSX interfacing bug is preventing you from going along *maybe* they could be of help for this part?

I know, they make their living from this and you already spent a huge amount of time and energy in this, but maybe you could deal something for the benefit of all?

My apologies if this post is against the rules.

Link to comment
Share on other sites

I don't plan on contacting Touch Base for help nor is my work licensed for commercial ventures. Touch Base make money by charging exorbitant amounts for poor quality software and drivers. My drivers will be free.

 

Otherwise, there are no updates from my end unfortunately. Real life has caught up with me and I haven't had the time to work on debugging the issue I had earlier. I hope to find time to continue soon.

  • Like 2
Link to comment
Share on other sites

Hello guys, I never ever thought of hackintoshing until a few weeks ago, never even touched a mac, and... find myself now currently writing with OS X 10.10.4 on my dual boot Brix Pro, (almost) everything working fine.

That is to say, for one, I had a glance at the efforts you put into these projects and can't thank you guys enough for learning a sh...load of new things, and secondly, the reward realizing it is possible and it runs flawlessly is simply tremendous.

Downside is it makes you long for more: I'm so fed up with my Yoga 3 Pro, overfreight factory side with useless applications and constantly updating, that I stopped using it. And now I have a dream: those are from my point of view 2 superb pieces of hardware the kind Apple should have brought to market, wouldn't a lady bountiful bring up those touchpad/touchscreen OS X drivers to solve my second puzzle?

Hey, stumbled upon this topic and seems on it's way!

I'm pretty patient and confident, thank you for updating and remaining tenacious!

Link to comment
Share on other sites

Alex- I have a venue pro 7130 with I2c keyboard,trackpad,and touchscreen the keyboard works correctly in Yosemite but not in El Cap so i looked at why?? what i found may help you on your project. In yosemite as long as my slim Venue keyboard is attached the following 2 kexts load and allow it to function. AppleIntelpssI2c.kext and AppleIntelpssI2ccontroller.kext will load but in El Cap they don't load with the same setup?? I replaced the Yosemite kexts in El Cap and at least my I2c keyboard now works in El Cap. I will look further as the different in size as to what was changed but i suppose if you revue those 2 kexts you will find the info you need to further your project either modify the existing or complete yours i believe all the data is in those to kexts to communicate with I2c devices. Check them out??

Link to comment
Share on other sites

Alex- I have a venue pro 7130 with I2c keyboard,trackpad,and touchscreen the keyboard works correctly in Yosemite but not in El Cap so i looked at why?? what i found may help you on your project. In yosemite as long as my slim Venue keyboard is attached the following 2 kexts load and allow it to function. AppleIntelpssI2c.kext and AppleIntelpssI2ccontroller.kext will load but in El Cap they don't load with the same setup?? I replaced the Yosemite kexts in El Cap and at least my I2c keyboard now works in El Cap. I will look further as the different in size as to what was changed but i suppose if you revue those 2 kexts you will find the info you need to further your project either modify the existing or complete yours i believe all the data is in those to kexts to communicate with I2c devices. Check them out??

The Apple I2C kexts are not suitable for our needs. The keyboard is not I2C, it is USB so I highly doubt you got it to work by replacing that kext, you must have done something else.

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...
  • 2 weeks later...

Hey, you can find me at http://gitter.im/alexandred/VoodooI2C. I am online every day so just shoot me a message there and I'll help you to get setup with the drivers. Keep in mind they are not functional and you will just be helping to test if the current iteration of the drivers are functional on the SP3.

 

I'm hoping to find some time this month to work on the drivers. I've been working on many other commitments that, unfortunately, take priority over these drivers.

  • Like 1
Link to comment
Share on other sites

So I've made some progress with the drivers. I'm now able to read input reports from my touchscreen although I'm not able to parse them yet. I'm having a few issues with transaction errors and interrupts but things are looking up. If anyone has an SP3, I'd be grateful if you could make yourself available in the gitter chat for us to test with your device.

Link to comment
Share on other sites

 Share

×
×
  • Create New...