Giter VIP home page Giter VIP logo

voodoosmbus's Introduction

What is VoodooSMBus? Actions Status

VoodooSMBus solves two related problems:

  1. VoodooSMBus is a project that provides a kernel extension (driver) for macOS that adds support for the SMBus capabilities of Intel I/O Controller Hubs (ICH), also called i801 SMBus.
  2. VoodooSMBus also contains a slave device driver for the ELAN Touchpad device found on the SMBus of some Thinkpad models (T480s, L380, P52) making it possible to use multitouch gestures efficiently.

This project is heavily inspired by https://github.com/alexandred/VoodooI2C and a complete reimplementation of the ideas in https://github.com/gokula/ELANSMBus. Multitouch support is made possible by the implementation VoodooI2C.

VoodooSMBus ports the i2c-i8011 driver and the elan_i2c_smbus2 from linux to macOS.

In the future we might want to split up the project, similar as it has been done in VoodooI2C, into a controller kext and kexts for the slave device drivers.

Installation

Configuration

Some settings can be configured in the Configuration dictionary in Info.plist:

  • DisableWhileTyping Enable disable while typing functionality. After a key press the touchpad is deactivated for a certain amount of time, specified by
  • DisableWhileTypingTimeoutMs The amount of time in milliseconds that touch input is ignored after typing
  • DisableWhileTrackpoint Disables the touchpad when the trackpoint is in use.
  • DisableWhileTrackpointTimeoutMs The amount of time in milliseconds that touch input is ignored after trackpoint usage
  • IgnoreSetTouchpadStatus Ignores messages from the keyboard driver to disable the touchpad. If not ignored, the touchpad can usually be toggled with the PrtSc key.

Current Status

Currently the following Intel I/O Controller Hubs are supported and tested:

Name Id Device
Sunrise Point-LP (PCH) pci8086,9d23 Thinkpad T480s, L380
Cannon Lake-H (PCH) pci8086,a323 Thinkpad P52

It should be trivial to add support for all controllers listed in 1.

Trackpoint support is implemented, make sure to activate the trackpoint in BIOS.

For a list of planned features, see https://github.com/leo-labs/VoodooSMBus/labels/enhancement

Supported Gestures

For supported gestures please see https://voodooi2c.github.io/#Supported%20Gestures/Supported%20Gestures

Acknowledgements

Thanks to:

Footnotes

1: https://github.com/torvalds/linux/blob/master/drivers/i2c/busses/i2c-i801.c

2: https://github.com/torvalds/linux/blob/master/drivers/input/mouse/elan_i2c_smbus.c

voodoosmbus's People

Contributors

1revenger1 avatar kekkokk avatar leo-labs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

voodoosmbus's Issues

[OC 0.6.6, HP EliteBook 840 G4)]PS2 Trackpoint and SMBus Touchpad - how to get them both to function properly

I have made a custom EFI for the HP EliteBook 840 G4. I managed to get the touchpad to work using VoodooRMI, but am struggling to fix the trackpoint. It does work if I use VoodooPS2Mouse, but it breaks the SMBus touchpad and in this repo's installation guide it's recommended to be disabled. VoodooRMI alone doesn't fix the trackpoint, as it's PS2 based and won't work with SMBus. How can I make the trackpoint work?

Adjust latency of typing detection

Using the patch for a few hours now and and finally the interoperability with Touchpad and Trackpoint seems perfekt.
However: Is there a way to adjust the latency of the typing detection? As I use key combanitions like CMD+TAB alot (also while using the mouse) but now the mouse gets stuck 1 second before it is usable again.

Thanks in advance!

Best, Phil

Plan for ELAN PS2 Driver?

hi first of all. thank you for your hard work.
i want to know ELAN PS2 Support.
many elan ps2 touch pad user use ApplePS2SmartTouchPad.kext.
this driver is discontinued.
can you support elan ps2?

Switching fingers while dragging will cancel dragging

When dragging a file, when the finger reaches the edge of the touchpad, the original finger is pressed against the touchpad, and when the other finger presses the center of the touchpad to continue dragging, the dragged file is released.

Glitching in constant intervals

Hi,
I don't know why but the cursor glitches like crazy and it seems to be a raw input issue. When I check it with several multitouch tools, they all show that the input cuts off for about 200ms in every 3-4 seconds. I tried to fix it with Karabiner's multitouch extension but no luck. You can repeat the problem by dragging a file, with 2 of your fingers on the trackpad, for more than 3-4 seconds.

Working well on Lenovo Y50 Elan 0622 SMBUS

Screen Shot 2020-08-13 at 10 23 17 PM

had to modify the plist to get it working, but voodoops2 with smbus stops keyboard from working

using a different appleps2 kext without trackpad and mouse in it which fixed my keyboard issues completely

Thanks again

Catalina support?

Hi @leo-labs !
I'm trying right now this kext on Catalina and works great!
All gestures are recognised correctly but I cannot enable/disable some features in SysPrefs:

I know that should be unrelated to your kext but in system preferences I cannot see any trackpad:
Screenshot 2020-01-04 at 20 42 54

Maybe you can help me to figure it out.
Any suggestion on where to start is welcome!
Thanks,
Francesco

Poweroff when battery shows around 5%

Hi Leo,
still absolutly happy with your patch ;-)
There are a few little things a mentioned over the time:

First: when I work without power cord my battery goes down to arround 5% and then I have a poweroff instead of the t480s going to sleep or power save. It seems the battery live is not counted correctly. I am NOT absolutly sure but I think this was introduced with your VoodooSMBus kext.
Have you seen something similar?

Trying on Lenovo Thinkpad L390 with OpenCore

I'm trying to make the touchpad work better on Lenovo Thinkpad L390, that should have this SMBus.
I'm booting with open core. I followed this #20 (comment) post, and applied the patches.

  1. It doesn't seem to work;
  2. If I delete /Contents/Plugins/VoodooPS2Mouse.kext and its entry in OC config.plist keyboard and trackpad and trackpoint don't work
  3. Where do I have to apply this in Opencore? https://github.com/VoodooSMBus/VoodooSMBus/blob/master/config.plist.patch
    Thanks in advance to everyone!

Cannot apply the patchers correctly at boot time

Hi,
i was trying to install the kext and the patch and I didn't able to make it work.
I investigate and I found this problem on the log of clover that in my opinion prevent the patch to work.
I have T480S running clover.
This is the boot log :

0:112 0:000 - [02]: com.apple.driver.AppleSMBusController (Prevent VoodooPS2Controller to attach to MOU) - invalid Find/Replace data - skipping!

And this is the line in the plist.config

Comment
Prevent VoodooPS2Controller to attach to MOU
Find
PHN0cmluZz5QTlAwRjBFPC9zdHJpbmc+CgkJCQk8c3RyaW5nPlBOUDBGMTM8L3N0cmluZz4JCQkJPHN0cmluZz5QTlAwRjEzPC9zdHJpbmc+
InfoPlistPatch

Name
com.apple.driver.AppleSMBusController
Replace
PHN0cmluZz5QTlAwRjBFPC9zdHJpbmc+

Documentation of Info.plist

I've an Asus TP412FA-EC452T, thats the only kext that worked for me yet!

But the clicks on the Trackpad are a bit confusing (normal click is 3 finger klick).
And Horizontal scroll is inverted.

I'm trying to fix it, but I don't understand the values for the "Custom MT2 Personality".

Is it possible to fix that by editing the info.plist?
Or do I have to modify the code?

Support for Sunrise Point-H - 0xa123

It's possible to implement:

00:1f.4 SMBus [0c05]: Intel Corporation 100 Series/C230 Series Chipset Family SMBus [8086:a123] (rev 31) (subsys 103c:836b)

The touchpad is a ELAN and on linux and windows it says connected via SMBus.

The laptop is an HP Power 15 KabyLake.

Trackpad and trackpoint went wrong at sometimes

I'm using VoodooSMBus and VoodooPS2Controller, the trackpad is smooth in most situation, but it can be suddenly unusable with no sign, and will restore to normal in a few minutes(sometimes a few hours), it's really annoying and I'm confused why this happens....

VoodooPS2Controller still attaches itself to MOU

Firs of all, thanks for your amazing work!

I'm trying to install the kext on my Thinkpad X1 Carbon 6th gen which seems to have the same SMBus controller as T480s (pci8086,9d23).
However, after following all the instructions, the touchpad and trackpoint still seem to be driven by VoodooPS2Controller – e.g. no gestures, trackpad input doesn't get ignored while typing on keyboard, etc.
According to IORegistryExplorer, the kext seems to be loading and there's an item called VoodooSMBusControllerDriver attached to SBUS. The trackpad menu in System Prefernces indicates full gesture support but none of them work.
Screenshot 2019-12-05 at 13 08 31

I took a look at the MOU node in IORegistryExplorer and it seems like the VoodooPS2Controller is still attached to it. PNP0F13 in MouseNameMatch seems to still be present despite the patch. I've tried removing it from VoodooPS2Controller.kext/Contents/Info.plist manually, however after that all the input devices (keyboard, trackpad, nub) would stop working altogether.
Screenshot 2019-12-05 at 13 06 31
If I just remove VoodooPS2Touchpad.kext plugin, the trackpad and the trackpoint stop functioning too.

No CPU temperature reading and no Fake SMC in the source directory

Hi,
first I want to thank you for your effort. I was able to make my Thinkpad t480s works.
I just have one small issue, i cannot have temperature reading on the sensors on my computer.
And I looked online and I tried to find the fake SMC directory on the source code and I didn't find it.
Please, can you advise me on what should I do?
Thank you. Very much

Device-id 06A3 worked after addition to info.plist

Hello, I'm a user with a Lenovo X1 Extreme Gen 3 (20TK001JUS) running OpenCore 0.6.9 with Catalina 10.15.7 and I was having some issues with the trackpoint not functioning on some restarts, as well as the fact that the clickpad always functioned as a left-click despite whatever the System Preferences' "Secondary Click" setting was set to.
After looking into it, it turns out that while the kexts were successfuly injected according to the OC logs, they were not loading properly according to kextstat and IOReg. I went into the section on SMBus troubleshooting and as it turns out, adding my SMBus' controller's Vendor and Device ID's to the VoodooSMBus.kext's info.plist as the troubleshooting guide recommended worked perfectly to get the kexts appearing. It didn't solve either issue, but that's besides the point.

Since the troubleshooting guide reccomends "If your device is compatible and adding the device-id worked, please submit a Pull Request or issue!" here I am doing exactly that.

My SMBus' controller's Vendor ID was 8086, and the Device ID was 06A3.

Add Trackpoint reporting

Either we report these events via the transducers or better we add another IOHIPointing device as client to ELANTouchpadDriver

support for other OEM smbus device like HP?

Hi,i have a laptop which model is HP 340 G4 with a PS2 Elan touchpad , it also has Intel I/O Controller Hub Sunrise Point-LP (PCH) ,and id is pci8086, 9d23.

When i put the VoodooSMBus.kext into the BootLoader like OC or clover, i can see the kext is correctly be loaded through IORegistryExplorer

截屏2020-04-18 10 54 10

So i try to follow the Installation steps and reboot , touchpad Preferences shows correct,but the touchpad has not response. Move the point , click, scroll, swipe etc... all gestures is not work.
It seems that the driver did not detect the input signal at all.

截屏2020-04-18 10 54 48

Can you solve this problem?
i can provide any debugging informations if you need for your great job

Thanks!

T470P work

work well on Thinkpad T470P
deviceId: 0xa1238086

sometimes elan trackpad "slow down"

Hi,
I'm using this kext since day 1 and it works flawlessly.
but even since there's a little problem I can't figure it out:

sometimes the trackpad slow down and the cursor is more like "smooth and delayed" than "precise".
This lasts few seconds ~30 and then everything goes back to normal.

This happened in Catalina + clover and in current Big Sur + OC.

Any idea on what might be going on?
Tried to disable several kext without success.

Also, seems happening more when plugging the thinkpad to charge it.

ps. using a Thinkpad T480s

maybe @leo-labs can help there

How to apply an InfoPlistpatch with OpenCore?

I read the OC configuration.pdf and couldn’t find out how I would apply alle the InfoPlistpatches provided in the repo. I assume you would apply it with Kernel/Patch but that won’t work. Some guidance would be appreciated.

OC bootloader support

Now, I am working on OC bootloader, as I added the patch in the config.plist, the original patch didn't work. Any suggestions on it?

Touchpad dead after reboot

Hi Leo,
thanx for your work! Really like your approach.
I tried to install your kext this morning but unfortunatelly, the touchpad is not working after reboot.

  • I added your patch to the END of KernelToPatch section in my config.list (The same section the other for patches from linusyang92 are - I'm using his EFI).
  • Removed VoodooPS2Mouse
  • Afterwards I copied your kext to /L/E and cleared the kextcache (sudo kextcache -i /)
  • Rebooted
    but now my touchpad is not working any more.

Questions:

  • is /L/E the correct location or is it better to copy your kext to EFI folder?
  • gokula provides an SSDT-SMBUS.dsl, do we need something like this?
  • what about AppleIntelLpssiI2C.kext and AppleIntelLpssiI2CController.kext, do they need to be manually deleted from system or can they stay in place?

Kind regards
Kai

other model issue (ThinkPad P52)

As long as the next installed following by your installation instructions, the trackpoint, trackpad and keyboard all not working

(ThinkPad P52, PCH SMBUS 8086-A323)

Use IOService Messages rather than handleHostNotify

This should be a rather simple change if someone else wants to pick this up. If no one does it by the time I finish the Synaptics stuff, I'll do it, but that'll be a while.

VoodooSMBusController currently calls handleHostNotify in it's slave devices, though likely a better alternative is using IOService's internal messageClient and message method. This would remove the need for VoodooSMBusSlaveDevice, reducing a class needed as well. You would need to make your own MessageType likely, though it's just a uint32 that doesn't interfere with anything else.
Edit: handleHostNotify has no arguments, so we shouldn't need to pass any through message either, simplifying it.

Synaptics SMBus on Catalina Support

Hello there,

I have a Lenovo V130-15IKB which apparently uses Synaptics SYNA2B42, I tried VoodooI2C to find out after two sleepless nights that my Synaptics is directly connected to the SMBus controller which made me come to this project. Trying with VoodooI2C there were no change at all even in Trackpad PrefPane, but once I used your amazing kext, there was a tiny change that the Trackpad PrefPane was finally enabled but to find out later that your kext doesn't support Synaptics yet as I understood.

So is there any hope for us? this is literally my last step for a usable hackintosh on a Laptop.

Screen Shot 2020-04-08 at 11 45 05 AM

Screen Shot 2020-04-08 at 11 45 15 AM

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.