Giter Site home page Giter Site logo

voodoormi's Introduction

VoodooRMI

Gitter

A port for macOS of Synaptic's RMI Trackpad driver from Linux. This works for both I2C HID trackpads from Synaptic as well as Synaptic's SMBus trackpads. When following the instructions below, make sure you only select I2C or SMBus depending on your trackpad's capabilities.

Supported Features

  • Force Touch emulation
  • 3 and 4 finger gestures
  • Trackpoint over PS2 Passthrough
  • SMBus or I2C communication

Compatibility

Synaptic trackpads generally work over SMBus or I2C, though not both. Pay close attention to which bus it works over.

SMBus

macOS (Requires Acidanthera's VoodooPS2 version 2.2.0 or above):

  • Look in IORegistryExplorer under ApplePS2SynapticsTrackpad, and look for the value Intertouch Support=True
  • Look for "VoodooPS2Trackpad: Trackpad supports SMBus operation" within macOS logs (may need to use sudo dmesg to see this)

Windows:

  • Check under Device Manager for a Synaptics SMBus device

Linux:

  • If you are using intertouch (i.e. psmouse.intertouch=1) for your synaptics trackpad, then it's compatible
  • Get i2c-tools from your package manager. Run i2cdetect -l, and note the number for SMBus (It's usually zero). Run i2cdetect # where # is the number you got from running the prior command. Synaptic devices are always at address 0x2c, so check at that address for anything other than --. It will usually appear as UU in my experiance if it's a Synaptics device.
    • If the trackpad does not show up, there is a chance that it will still work. There have been one or two examples of the trackpad not showing up but still being compatible.
  • Likely compatible if you run dmesg and find a message along the lines of "Your touchpad x says it can support a different bus." and it's a Synaptics trackpad.

I2C

macOS:

  • If you already have VoodooI2CHID installed, check folllowing values in IORegistry
    • VoodooI2CHIDDevice has HIDDescriptor containing VendorID 0x6cb, or
    • Parent device of VoodooI2CHIDDevice has name containing SYN or SYNA

Windows:

  • Check for HID-compliant touch pad in device manager
    • In properties, verify General - location is on I2C HID Device and Details - Hardware Ids contains VID_06CB (or SYN, SYNA)

Linux:

  • Check for the presence of i2c-SYN in dmesg.
  • Get i2c-tools from your package manager, and use the i2cdetect tool to see if there are any devices at address 0x2c for any bus that isn't SMBus. If you see it under SMBus, I'd use SMBus as the trackpad seemingly operates better under SMBus!

Requirements

SMBus

  • Acidanthera's VoodooPS2 >= 2.2.0
    • Version >= 2.2.5 is recommended for HP devices with multiplexed PS2 Controllers (Some of the HP Elitebook lineup for example)
  • VoodooSMBus
    • VoodooRMI releases (for now) include VoodooSMBus. If you are building VoodooSMBus yourself, build from the Dev branch of the VoodooSMBus git repo.

I2C

  • VoodooI2C 2.5 or newer is required
    • Follow their Documentation to identify if you need GPIO pinning.
    • Polling mode should just work
  • If your device's ACPI name is not included below or marked as unknown, you may add it yourself and create a PR/issue
Name Main function
SYN1B7F F12
SYNA0000 F11
SYNA1202 F12
SYNA2393 unknown
SYNA2B2C F12
SYNA2B31 F12
SYNA2B33 F11
SYNA2B5A F12
SYNA2B61 F11
SYNA2B34 unknown
SYN3054 F11
SYNA3083 F12
SYNA3105 unknown
SYNA328B F12
SYNA328E F12
SYNA3602 unknown
SYNA7500 unknown
SYNA7501 unknown
SYNA7DAB F12
SYNA7DB5 F12

Installation

  1. Add the required kexts to your bootloader
  2. Make sure VoodooPS2 is configured as below:
    • Enabled:
      • VoodooPS2Controller.kext
      • VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Mouse.kext
      • VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Keyboard.kext
      • VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Trackpad.kext
    • Disabled:
      • VoodooPS2Controller.kext/Contents/PlugIns/VoodooInput.kext
  3. For OpenCore users, make sure to add the below kexts in the order they're listed into your config.plist.
    • VoodooRMI.kext
    • VoodooRMI.kext/Contents/PlugIns/VoodooInput.kext
    • SMBus trackpads:
      • VoodooSMBus.kext
      • VoodooRMI.kext/Contents/PlugIns/RMISMBus.kext
    • I2C trackpads:
      • VoodooI2C.kext
      • VoodooRMI.kext/Contents/PlugIns/RMII2C.kext

There is no support for this kext being loaded into Library/Extensions or System/Library/Extensions. This likely won't break loading it, but test with injection first before sending in a bug report.

Configuration

The values below can be edited under Info.plist within the kext itself - these can be changed without recompiling
Note that using non-integer value causes undefined behaviour which may prevent the kext from loading

Value Default Description
ForceTouchType 1 Controls how force touch emulation behaves. 0 = Disabled, 1 = Clickpad press with size threshold, 2 = size threshold only
ForceTouchMinPressure 90 Minimum z value to trigger Force touch when clickpad is clicked
DisableWhileTypingTimeout 250 Milliseconds after typing in which to reject trackpad packets
DisableWhileTrackpointTimeout 250 Milliseconds after using the trackpoint in which to reject trackpad packets
TrackpointMultiplier 20 Multiplier used on trackpoint inputs (other than scrolling). This is divided by 20, so the default value of 20 will not change the output value at all
TrackpointScrollMultiplierX 20 Multiplier used on the x axis when middle button is held down for scrolling. This is divided by 20.
TrackpointScrollMultiplierY 20 Same as the above, except applied to the Y axis
TrackpointDeadzone 1 Minimum value at which trackpoint reports will be accepted. This is subtracted from the input of the trackpoint, so setting this extremely high will reduce trackpoint resolution
MinYDiffThumbDetection 200 Minimum distance between the second lowest and lowest finger in which Minimum Y logic is used to detect the thumb rather than using the z value from the trackpad. Setting this higher means that the thumb must be farther from the other fingers before the y coordinate is used to detect the thumb, rather than using finger area. Keeping this smaller is preferable as finger area logic seems to only be useful when all 4 fingers are grouped together closely, where the thumb is more likely to be pressing down more
FingerMajorMinorDiffMax 10 Max difference between the width and height of a touch input before it's invalid
PalmRejectionWidth 10 Percent (out of 100) width of trackpad which is used for palm rejection on the left and right side of the trackpad
PalmRejectionWidth 60 Percent (out of 100) height of trackpad which is used for palm rejection on the left and right side of the trackpad (starting from the top)
PalmRejectionTrackpointHeight 20 Percent (out of 100) height of trackpad which is used for palm rejection across the top of the trackpad

Note that you can use Rehabman's ioio to set properties temporarily (until the next reboot).
ioio -s RMIBus ForceTouchEmulation false

Building

  1. git submodule update --init --recursive
  2. git clone --depth 1 https://github.com/acidanthera/MacKernelSDK
  3. Build within XCode using the play button in the top left
    • RMISMBus/RMII2C will automatically build when building VoodooRMI

Loading/Unloading

For loading, you may need to put RMII2C/RMISMBus's dependencies into the kextload command. Note that RMISMBus/RMII2C depend on VoodooRMI.

The below examples assume VoodooSMBus/VoodooI2C are in the same folder as VoodooRMI. If they are not, you will need to give the path to those kexts. When manually loading from within macOS, keep in mind that csrutil needs to be partially disabled to allow unsigned kexts, and the kexts need to be owned by Root.

Changing owner of kext

// Note that this changes the owner of every kext in the directory your in
sudo chown -R root:wheel *.kext

Manually loading kext

Example for SMBus:

cd path/to/unziped-VoodooRMI_Debug
sudo kextutil -vvvv -d VoodooRMI.kext -d VoodooSMBus.kext VoodooRMI.kext/Contents/PlugIns/RMISMBus.kext

Example for I2C:

sudo kextutil -vvvv -d VoodooRMI.kext -d VoodooI2C.kext VoodooRMI.kext/Contents/PlugIns/RMII2C.kext

For unloading, you can use the bundle ids. This should unload cleanly, though you may need to unload twice in a row to get it to cooperate.

sudo kextunload -vvvv -b com.1Revenger1.RMISMBus -b com.1Revenger1.VoodooRMI

Troubleshooting

Before creating an issue, please check the below:

  1. Make sure VoodooSMBus/VoodooI2C is loading and attaching
  2. Make sure VoodooInput and VoodooPS2Trackpad is loading
    • kextstat | grep Voodoo
  3. You may need to do IRQ patching on Haswell and older devices for SMBus trackpads
    • Required if the SBUS device does not have any IOInterruptControllers in IORegistryExplorer
    • CorpNewt's SSDTTime can do this automatically for you

If the above are loading, next place to check is within the IORegistry and within VoodooRMI logs:

  1. Use IORegistryExplorer to check what is attaching and loading.
    • The various functions in VoodooRMI will publish debug information which can be useful
    • IORegs can be be saved using File -> Save As in the top left
  2. Get logs from within macOS
    • If loading VoodooRMI using kextload or kextutil within macOS, you can use sudo log show --last boot | grep VRMI
    • If injecting through OpenCore/Clover, you will want to either use DebugEnhancer.kext or add the boot arg msgbuf=1048576. Once in macOS, use sudo dmesg | grep VRMI immediately after booting to get the logs.

When creating an issue, you will need to provide log files (IORegs not required but helpful)!

voodoormi's People

Contributors

0xniladri avatar 1revenger1 avatar dhinakg avatar gimdh avatar kanghengliu avatar krazy-killa avatar titieo avatar zhen-zen 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  avatar  avatar  avatar

voodoormi's Issues

Buttons

Not real sure how buttons work - seems like RMI Function F30 captures buttons, but get sent to F03. Need to look further. Currently we get no data back from either Functions.

VoodooSMBus Dependency resolution failure

Describe the bug
When trying to load RMISMbus.kext following error occurs.

To Reproduce
Build with xcodebuild and try loading with kextutil.

Expected behavior
Loads properly

Log

Dependency Resolution Failures: 
    Kexts found for these libraries lack valid OSBundleCompatibleVersion: 
        de.leo-labs.VoodooSMBus

[Feature Request] Better Control of the Trackstick

The default value for TrackstickMultiplier and TrackstickScrollMultiplier are far too high.

Although I have set TrackstickScrollMultiplierX & TrackstickScrollMultiplierY down to 1, the scroll speed is still too fast.

Is it possible to get scroll speed even more slower?

Here goes the log:

2020-06-24 15:39:59.975729+0800 0xf2       Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: Publishing nub for slave device at address 0x2c
2020-06-24 15:39:59.977100+0800 0xf2       Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: Publishing nub for slave device at address 0x15
2020-06-24 15:39:59.989546+0800 0xfb       Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: No response
2020-06-24 15:45:44.742873+0800 0x29c2     Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: Lost arbitration
2020-06-24 15:46:09.408034+0800 0x2e3f     Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: No response
2020-06-24 15:46:09.408061+0800 0x2e3f     Default     0x0                  0      0    kernel: (VoodooRMI) Error: Could not read F11 attention data: -6
2020-06-24 15:46:10.155364+0800 0x2e7d     Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: Lost arbitration
2020-06-24 15:46:25.469369+0800 0x32fd     Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: No response
2020-06-24 15:46:25.469394+0800 0x32fd     Default     0x0                  0      0    kernel: (VoodooRMI) Error: Could not read F11 attention data: -6
2020-06-24 15:47:24.758617+0800 0x34b6     Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: Lost arbitration
2020-06-24 21:22:46.110585+0800 0x20933    Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: Lost arbitration
2020-06-24 21:24:24.739075+0800 0x214f2    Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: Lost arbitration
2020-06-24 21:24:25.294500+0800 0x21519    Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: Lost arbitration
2020-06-24 21:24:28.869456+0800 0x2164f    Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: Lost arbitration
2020-06-24 21:24:40.577869+0800 0x21a35    Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: Lost arbitration
2020-06-24 21:24:48.647345+0800 0x21d0a    Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: Lost arbitration
2020-06-24 21:24:50.429867+0800 0x21da1    Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: Lost arbitration

HP Pavillion 15 cannot load / not functioning

Describe the bug
Unable to load the kext with OpenCore, so I tried to load it with kextload after OS booted.
Load VoodooRMI after VoodooSMBus and VoodooInput.

Log

2020-07-24 17:38:06.486412+0800  localhost sudo[963]:     eric : TTY=ttys004 ; PWD=/Volumes/Data/eric/Downloads/VoodooRMI-0.5-Debug ; USER=root ; COMMAND=/sbin/kextload VoodooSMBus.kext
2020-07-24 17:38:06.518160+0800  localhost kextd[116]: (Security) [com.apple.securityd:security_exception] MacOS error: -67030
2020-07-24 17:38:06.518236+0800  localhost kextd[116]: (Security) [com.apple.securityd:security_exception] MacOS error: -67030
2020-07-24 17:38:06.522370+0800  localhost kextd[116]: (Security) [com.apple.securityd:security_exception] MacOS error: -67030
2020-07-24 17:38:06.522673+0800  localhost kextd[116]: (IOKit) [com.apple.kext:kextlog] Kext with invalid signature (-67030) allowed: <OSKext 0x6000006b8fc0 [0x7fff8be0cb60]> { URL = "file:///Volumes/Data/eric/Downloads/VoodooRMI-0.5-Debug/VoodooSMBus.kext/", ID = "de.leo-labs.VoodooSMBus" }
2020-07-24 17:38:06.533999+0800  localhost kextd[116]: (Security) Created Activity ID: 0x9a95, Description: SecTrustEvaluateIfNecessary
2020-07-24 17:38:06.542340+0800  localhost kextd[116]: (Security) [com.apple.securityd:security_exception] MacOS error: -67030
2020-07-24 17:38:06.543287+0800  localhost kextd[116]: (Security) [com.apple.securityd:security_exception] MacOS error: -67030
2020-07-24 17:38:06.543349+0800  localhost kextd[116]: (Security) [com.apple.securityd:security_exception] MacOS error: -67030
2020-07-24 17:38:06.546063+0800  localhost kextd[116]: (Security) [com.apple.securityd:security_exception] MacOS error: -67030
2020-07-24 17:38:06.547032+0800  localhost kextd[116]: (Security) [com.apple.securityd:security_exception] MacOS error: -67030
2020-07-24 17:38:06.547094+0800  localhost kextd[116]: (Security) [com.apple.securityd:security_exception] MacOS error: -67030
2020-07-24 17:38:06.547169+0800  localhost kextd[116]: (IOKit) [com.apple.kext:kextlog] Invalid signature -67030 for kext <OSKext 0x6000006b8fc0 [0x7fff8be0cb60]> { URL = "file:///Volumes/Data/eric/Downloads/VoodooRMI-0.5-Debug/VoodooSMBus.kext/", ID = "de.leo-labs.VoodooSMBus" }
2020-07-24 17:38:06.547934+0800  localhost kextd[116]: (Security) [com.apple.securityd:security_exception] MacOS error: -67030
2020-07-24 17:38:06.548102+0800  localhost kextd[116]: (Security) [com.apple.securityd:security_exception] MacOS error: -67030
2020-07-24 17:38:08.345308+0800  localhost sudo[968]:     eric : TTY=ttys004 ; PWD=/Volumes/Data/eric/Downloads/VoodooRMI-0.5-Debug ; USER=root ; COMMAND=/sbin/kextload VoodooRMI.kext
2020-07-24 17:38:08.387962+0800  localhost kextd[116]: (IOKit) [com.apple.kext:kextlog] Kext with invalid signature (-67050) allowed: <OSKext 0x6000006afe40 [0x7fff8be0cb60]> { URL = "file:///Volumes/Data/eric/Downloads/VoodooRMI-0.5-Debug/VoodooRMI.kext/", ID = "com.1Revenger1.VoodooRMI" }
2020-07-24 17:38:08.389708+0800  localhost kextd[116]: (IOKit) [com.apple.kext:kextlog] /Volumes/Data/eric/Downloads/VoodooRMI-0.5-Debug/VoodooRMI.kext - dependency 'de.leo-labs.VoodooSMBus' not found.
2020-07-24 17:38:08.390202+0800  localhost kextd[116]: (IOKit) [com.apple.kext:kextlog] com.1Revenger1.VoodooRMI's dependencies failed security checks; failing.
$ sudo kextstat| grep -i voodoo                                 
   69    1 0xffffff7f84913000 0x14000    0x14000    as.acidanthera.voodoo.driver.PS2Controller (2.1.5) 2529B917-EE1A-3F67-88B9-12F21B0F5D0A <12 8 6 5 3 1>
  103    0 0xffffff7f8492c000 0xd000     0xd000     as.acidanthera.voodoo.driver.PS2Keyboard (2.1.5) 2BDE73B8-0F0D-3915-8D25-9DE623F7A209 <69 61 8 6 5 3 1>
  174    0 0xffffff7f8498b000 0x2d000    0x2d000    de.leo-labs.VoodooSMBus (2.1) 672C9AAE-BC8B-3B92-9387-EB6CD2290386 <61 13 6 5 3>
  175    0 0xffffff7f84901000 0x12000    0x12000    me.kishorprins.VoodooInput (1.0.6) 4CCC7C09-5BB8-355E-B104-2C81D8A29A91 <61 6 5 3>

Can't get button clicks working with RMII2C

After failing to get voodooRMI to work via SMBus, I finally got voodooRMI to load by injection with voodooI2C and RMII2C - but button clicks aren't working. Also, cursor tracking / velocity scaling is noticeably less accurate than it is under the already-janky I2C / I2CHID. Clearly I'm doing something wrong.

Via dmesg or log-grepping VRMI, I can see F12 packet activity and can move the cursor, but button clicks aren't being recognized. They aren't being registered by the system and the logs always show "button: 0". Using 'tap to click', tap-clicks are registered by the system, but still appear as "button: 0" in all logs.

(The button-clicks are recognized under VoodooI2C / VoodooI2CHID (without voodooRMI))

Specs:

Relevant log / config info is attached. Any help would be greatly appreciated.

debug.zip

"No trackpad found" despite everything working

Describe the bug
I've made my trackpad (Synaptics SynPS/2) in my hp Spectre x360 13-4104ng work using VoodooRMI via SMBus. However, the macOS Settings still show "No trackpad found".

To Reproduce
Steps to reproduce the behavior:

  1. Setup VoodooRMI
  2. Go to macOS System Preferences --> Trackpad
  3. See "No trackpad found" message

Expected behavior
Trackpad settings

Log
Since it seems to work, what logs do you need exactly?

My hardware: https://linux-hardware.org/index.php?probe=d258888474

My config: https://github.com/mbirth/hp-spectre-x360-4104ng-hackintosh

Ivy Bridge and older SMBus Devices do not respond

Excuse me. Can you help me with this, please. I'm using OpenCore 0.5.9 DEBUG for my Ivy Bridge laptop. Although I’ve tried to used the VoodooRMI.kext, VoodooSMBus.kext but my synaptic trackpad didn’t work (Even I’ve tried disable VoodooPS2Mouse,Trackpad and then VoodooInput inside VoodooPS2 as wel, it can’t movel). I had used the troubleshoot page, too. As you see, there aren’t any SMBus-related SSDT and I’ve modified the VoodooSMBus.kext, too. Here is my EFI as well if you want. Thanks a lot for reading my message.
P/S: I also tried to add these patch from here: https://github.com/leo-labs/macOS-ThinkPad-T480s/blob/master/EFI/CLOVER/config.example.plist#L500-L535 but my mouse still can’t move
EFI.zip
2020-07-28_163221

Edit

My laptop is a Ivy Bridge:
DELL INSPIRON 3421:
Core i5 3337U-HD4000
7 Series/C216 Chipset Family SMBus Controller
PS2SmartTouchpad.kext and Rehabman VoodooPS2.kext work with some 2 fingers feature (exclude zoom in, out,...)

Update for version 1.0.1 by @LocTran016

I don't know if this is a bug or may be that kind of thing but when I inject VoodooSMBus.kext and VoodooRMI.kext (involves the plug-in as well) but I can't do anything in my laptop (include moving the mouse and shut down) because my laptop just keep loading with a rainbow circle, I haven't had the ability to click on the apple icon for shutting down, too. It just keep loading for very long time so I did force turn off my laptop. I don't know if this is a bug in my laptop only or with some other laptops, too. What do you think about this, then. @1Revenger1 (The 1.0.0 has the same problem like this)
P/S: This hadn't occurred before I inject the kext through OpenCore

Update regarding to VoodooPS2

I have just found a interesting link about VoodooPS2 (don't know if your kexts have the same issues): here. I don't know if you can take a look at that link. I've used the SSDT-Enable_DynamicEWMode.dsl to fix my trackpad with the VoodooPS2 grabbed from acidanthera. It work quite good with force touch but physic buttons don't work. Thanks for reading my message, then (If this is off-topic, just leave a comment and I will delete the update as soon as possibe)

Does not load currently (Can't find VoodooSMBus)

Whenever the kext loads and tries to run a method from VoodooSMBusDeviceNub, it throws an error like this:
https://cdn.discordapp.com/attachments/573338555305295903/715777634146975764/IMG_20200528_210436.jpg

My guess is that it isn't able to link properly, either due to incorrect headers or not finding VoodooSMBus at all. Adding VoodooSMBus to the CFBundleDependencies list throws an error upon load about not being able to find VoodooSMBus if it is added to the list. This occurs if VoodooSMBus is loaded, even through a bootloader like OpenCore,

Better Palm Rejection

Right now, we currently make the timeout from typing or using the trackpoint completely reject all touches for ~0.5 seconds.
We should look into creating zones in which the timeouts reject touches and don't reject touches.

This list may change over time, but I eventually want to accomplish:

  • Create zones
  • Apply timeouts to only certain zones
  • Possibly stricter/relaxed requirements of major/minor finger sizes within different zones (though I'm not sure how much this will help)
    • This is currently hard coded to the top third of the trackpad and only checks major/minor size. This works seemingly well though for using the trackpoint/spacebar.
  • Variable timeouts depending on how long keyboard/trackpoint have been used
  • Notify when a key is held down (this would require a change in messages in VoodooPS2 as well)

I believe many of these would fit well within VoodooInput as well.

Many of these come from https://wayland.freedesktop.org/libinput/doc/1.11.3/palm_detection.html

Fix PS2 to not error every step in the init

The timeouts for commandSleep don't seem to be working right. Removing the deadline though also seems to prevent responses from the device.

The Trackpoint does still operate correctly otherwise - but we could configure stuff on it pretty easily if we could get working tx/rx with it

Trackpad stops working periodically

Describe the bug
Trackpad does not register touch input occasionally. Interval is seemingly random.

To Reproduce
Steps to reproduce the behavior:
Install driver. Corresponding patches are applied.

Expected behavior
Should register input everytime.

Log

kernel: (IOHIDFamily) VoodooI2CMT2SimulatorDevice:0x10000033a failed to create user client: 0xe00002c7
kernel: (IOHIDFamily) VoodooI2CMT2SimulatorDevice:0x1000004a6 failed to create user client: 0xe00002c7
kernel: (IOHIDFamily) VoodooI2CMT2SimulatorDevice:0x10000033a failed to create user client: 0xe00002c7
kernel: (IOHIDFamily) VoodooI2CMT2SimulatorDevice:0x1000004a6 failed to create user client: 0xe00002c7
kernel: (IOHIDFamily) VoodooI2CMT2SimulatorDevice:0x1000004a6 failed to create user client: 0xe00002c7
kernel: (IOHIDFamily) VoodooI2CMT2SimulatorDevice:0x10000033a failed to create user client: 0xe00002c7```

Basically kext spams this log every <1 ms.

Minor] Terminology cleanup

I would like to make following changes

  • That tiny pointer thingy we all love
    HP, Dell, and others use 'Pointer stick'/'Pointing stick'/'Point stick' as a general term, while Lenovo uses trademarked 'TrackPoint'. Wikipedia uses 'Pointing stick'.
    I think codebase should settle with one of popular terms instead of trackstick.

  • Touchpad / Trackpad
    Touchpad is general term for flat touch input device. Trackpad is Apple's trademarked counterpart. I think 'touchpad' fits most cases and can avoid confusion with genuine Apple ones.

Click-&-drag lag

Hi, thanks for the effort on making this awesome project. I'm using it on a T460s a so far it's pretty much perfect.
The only issue I found is when click (with trackpad) and dragging on text or windows, the pointer remain stuck at the starting point until drag is released, making it unusable to select a portion of text.
When click is made with physical button or with 3-finger drag (set in accessibility settings) the behaviour is correct.

Thanks again

Click too sensitive on Big Sur Lenovo T440

Hi, I have a problem on my T440. Touchpad works well with VoodooRMI but the click is to sensitive. The problem is that if I move the cursor across the display I accidentally click on items and so on.
If I set it to Firm in the settings it's still the same.
Can I change some settings for that in plist?

Thank you.
Screenshot 2020-12-08 at 15 57 29

Failed to read SMBus version or Hid descriptor

First time trying to use your kext
I would like to try the SMBus version because I've a SYNA3602.
I've applied the 4 patches in my config.plisti. SMBus is shown in ioReg and these 2 kexts are loaded:
kextstat | grep "Voodoo"
77 1 0xffffff7f84b88000 0x17000 0x17000 de.leo-labs.VoodooSMBus (3.0) 3DAE1A14-5846-37EB-B491-D24A6765115A <63 13 6 5 3>
83 1 0xffffff7f84b5d000 0x1f000 0x1f000 com.1Revenger1.VoodooRMI (1.1) CE1D615A-B3BF-344F-8266-7BB55F8C0CFC <63 6 5 3>

But the trackpad doesn't move and I've this error ..

mattia@Mattias-MacBook-Pro ~ % sudo dmesg | grep VRMI
VRMI - Error: Error: Failed to read SMBus version. Code: 0xFFFFFFFA

Attached you will find a copy of my ioReg ..
any suggestions ?
Mattia’s MacBook Pro (1).zip

If I try the VoodooI2C version I got this error :
VRMI - Error: RMII2C::TPD1 Could not get valid HID descriptor
and these kexts are loaded :
mattia@Mattias-MacBook-Pro ~ % kextstat | grep "Voodoo"
50 1 0xffffff7f83f4d000 0xb000 0xb000 com.alexandred.VoodooI2CServices (1) DBFA5EBE-2783-30ED-8E39-5829C42D6832 <5 3>
69 1 0xffffff7f83f58000 0x1a000 0x1a000 org.coolstar.VoodooGPIO (1.1) 652E2512-9BF1-35AD-85ED-880C9C5ABE9F <12 6 5 3>
79 1 0xffffff7f840e0000 0x2e000 0x2e000 com.alexandred.VoodooI2C (2.4.4) F1763DBE-345B-3E9D-B3E4-208419389F6B <69 64 50 13 12 6 5 3 1>
101 1 0xffffff7f84bc0000 0x1f000 0x1f000 com.1Revenger1.VoodooRMI (1.1) CE1D615A-B3BF-344F-8266-7BB55F8C0CFC <64 6 5 3>

kernel panic when laptop goes to sleep

Describe the bug
when laptop goes to sleep , sometimes it will wake up automatically and becomes very hot , with screen doesn't light up , suscepted kernel panic.
I am a thinkpad x1 yoga 2018 user , now using voodoormi to drive touchpad & voodooi2c+voodooi2chid to drive usb touchscreen , but finding out kernel panic when laptop goes to sleep , which doesn't seems to happen when I used voodoops2 to drive touchpad & voodooi2c+voodooi2chid to drive usb touchscreen ; here is my error-reporting file in voodooi2c-documentation request format, thanks!
Although I have add debug=0x100 and keepsysm=1 in clover boot argument , I don't (know) find out the kernel panic message ><

To Reproduce

Expected behavior
Sleep with normal behavior.

Log
the log is no recorded after the kernel panic , I will upload another log after boot when there is another kernel panic when laptop sleeping.
log 2.txt

Are Touchscreen <SYNA2393> and Touchpad <SYNA1D31> supported?

Hi,
I'm trying using your project for the two devices in the object.

  • I attach a .zip file with my compressed EFI.
  • I disabled SSDT-SBUS.aml
  • SSDT-TPXX.aml controls TPD0 (which is Touchscreen-> SYNA2393) and TPL1 (which is Touchpad-> SYNA1D31) using VoodooI2C and VoodooI2CHID with GPI0 pinning (they were working but with the following issue, so it was suggested to give a try to your project!)
  • in my config.plist I disabled all calls to VoodooI2C and VoodooI2CHID and enabled (but I'm not sure whether the loading order is right and whether I need to load also Trackpoint) calls to VoodooRMI and VoodooSMBus

Could you give it a look, please?
Thanks in advance! @profzei
MateBookXPro-OC-v1.6.0-beta.zip

Update: I'm using Release v. 1.1.0

Doesn't build/load with VoodooSMBUS-master

Describe the bug
I've tried to build VoodooRMI-master with VoodooSMBUS-master and can't get it to build/work. It works fine with the VoodooSMBus-build from the VodooRMBUS-release-zip.

Problem seems to be the missing VoodooSMBusDeviceNub:wakeupController()-method which is, according to the headers, available in the Release-zip and missing in VoodooSMBUS-master.

If I remove the call in VoodooRMBUS it builds, but VoodooRMBUS doesn't attach to VoodooSMBusDeviceNub.

(If this is expected at the current stage, a note in the readme would be fine!)

To Reproduce
Steps to reproduce the behavior:

  1. Build VoodooSMBUS-master
  2. Try to build VoodooRMBUS-master against VoodooSMBUS-master

Log

+++ b/VoodooRMI/Transports/RMISMBus.cpp
@@ -35,7 +35,7 @@ RMISMBus *RMISMBus::probe(IOService *provider, SInt32 *score)
         return NULL;
     }

-    device_nub->wakeupController();
+    // device_nub->wakeupController();
     device_nub->setSlaveDeviceFlags(I2C_CLIENT_HOST_NOTIFY);

     do {

Trackpoint

Create trackpoint device. Requires RMI Function 0x03

Lenovo T490 trackpad not working

Device: Lenovo T490, OpenCore 0.5.9
Issue: Trackpad is not detecting any input, even though trackpoint is working.

What I did:

  1. In Info.plist of VoodooSMBus.kext add my device id (0x9da38086)
  2. Copy VoodooSMBus and VoodooRMI kexts to kext folder
  3. Add the 4 patches for SMBus to config.plist
  4. Disable VoodooPS2 mouse, trackpad, input in config.plist
  5. Enable VoodooRMI and input plugin, VoodooSMBus

IOReg is showing 2 nubs at 0x2c and 0x15. Trackpad device is detected but doesn't react to input. Trackpoint and the buttons are working.

❯ kextstat | grep -i voodoo
   65    1 0xffffff7f8354b000 0x14000    0x14000    as.acidanthera.voodoo.driver.PS2Controller (2.1.4) F6B9B0C1-59C1-3CA8-9560-79D727E35BB2 <12 8 6 5 3 1>
   76    1 0xffffff7f8555a000 0x31000    0x31000    de.leo-labs.VoodooSMBus (2.1) 672C9AAE-BC8B-3B92-9387-EB6CD2290386 <60 13 6 5 3>
   79    0 0xffffff7f8559b000 0x1d000    0x1d000    com.1Revenger1.VoodooRMI (0.4) A7DD59E2-EF24-3BCB-8A47-7A865BA245AD <76 60 6 5 3>
   98    0 0xffffff7f83564000 0xd000     0xd000     as.acidanthera.voodoo.driver.PS2Keyboard (2.1.4) AC45F7E0-7AAB-397E-8E50-864E40EB4F4A <65 60 8 6 5 3 1>

My EFI folder can be found from here.

Is this a bug or am I doing something wrong? Thank you

No trackpoint

Hey, I followed all the instructions and my trackpad and gestures are working but there is no trackpoint.

support 2nd Generation Sandbridge?

  1. HP 8570w (3rd Ivy bridge). SBUS@1F,3 (1e228086)
    OS -- Mojave
    Upper 3button & trackstick not working
    bottom 3button working (middle button wired)
    Touchpad working (all gestures.. good)

  2. HP 850G1 (4th Haswall), SBUS@1F,3 (9c228086)
    OS -- Catalina
    (trackstick not test)
    bottom 2 button & Touchpad working (all gestures..so good)

  3. HP 8460p (2nd sandbridge) - OS : Sierra
    not connected SBUS. blank.
    What should i do?

Success on T480 with Synaptics touchpad. Possible to disable/remove Elan-driver?

Describe the bug
I just wanted to give the project a shot and it's quite pleasing.
It works nicely on a Thinkpad T480 with synaptics touchpad. Both Pad and Stick!
Scrolling on the touchpad feels even much more like a native apple one. Nice Work!

But one little oddity stuck to my eye when I was checking the logs:

2020-06-21 16:58:15.978884+0200 0xf5       Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: No response
[... around 10 repeats of the same message...]
2020-06-21 16:58:16.986326+0200 0xf5       Default     0x0                  0      0    kernel: (VoodooSMBus) Error: Could not initialize ELAN device.
2020-06-21 16:58:59.459198+0200 0x1ce0     Default     0x0                  0      0    kernel: (VoodooSMBus) Debug: Lost arbitration

Also there seem to be little delay in the boot process - maybe because of the above error?

Is there any possibility to remove/disable the driver for the Elan-touchpad?

RMISMBus.kext - Invalid parameter

Describe the bug

When only enabling VoodooPS2 (Controller, Mouse, Keyboard, Trackpad) I had my trackpad working perfectly except the buttons which were doing nothing (nor the touch click).

I saw that I had a SMBus Synaptic device, so I installed VoodooRMI + VoodooSMBus + RMISMBus, and disabled VoodooPS2 Mouse and Trackpad.

But I can't get my trackpad to work at all anymore, and when I look at OpenCore logs, I see that it can't load RMISMBus.kext but doesn't say why ('Invalid parameter', seems like a generic error).

Since I'm trying to boot Catalina Recovery, and does not have a physical mouse, I do not have any system logs, but I attached my zipped EFI and the OpenCore logs.

efi.zip
opencore-2020-11-11-033018.txt

[Feature Request] Palm detection for Trackpoint

VoodooRMI already supports DisableWhileTypingTimeout. But it is also common that trackpad having accidental input when using trackpoint.

VoodooSMBus has a configuration DisableWhileTrackpoint but it has been removed from VoodooRMI bundled one. So I assume there is no Palm detection for trackpoint at this moment.

Tackpad doesn't work

i use your VoodooSMBus kext in assiociation with VoodooRMI kext foe working gestures/trackpad on my synaptic SMBus trackpad (PCI 8086:9C22) but no gestures(tap to click, 3/4 gestures etc...) or trackpad detected. how to fix please ?

Power Management

Need to add resume/suspend methods to all of the RMI Functions.

0.5 release doesn't work on my TP-t480s as 0.4 release !!

as the title , my hackintosh 10.14.6 can work with 0.4 release, bug 0.5 can't drive the stuff, unfortunately the commond "log show --last boot | grep -i voodoo > ~/Desktop/RMILog.txt" give me nothing , maybe I should use debug one , I will push the log to this issue this night.

by pass
my device is Elan touchpad

Trackpoint button does not work

Describe the bug
Trackpoint button does nothing

To Reproduce
Install driver. Corresponding patches are applied.

Expected behavior
Three trackpoint button works accordingly.

Log
N/A

Please note that my model has trackpoint buttons integrated to trackpad assembly, not keyboard. Thus it could send click signal via SMBus.

Driver sometimes does not reload after sleep.

Describe the bug
After wake from deep sleep, sometimes touchpad and Trackpoint do not work.

To Reproduce
Put device in deep sleep, then wake.

Expected behavior
Touchpad and Trackpoint should work properly.

Log
I was using Release target kext. I'll switch to Debug one and try to reproduce bug.

0.5 release doesn't work on my TP-t480s , but 0.4 works!!

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Log
Run log show --last boot | grep -i voodoo > ~/Desktop/RMILog.txt when using the DEBUG version of the driver. If you attach a log using the RELEASE version, we may ask you to use the DEBUG version and redo the log. This will provides logs for VoodooRMI from when the device was booted up.

Great with SYNA1202

Add SYNA1202 to compatible list.
It uses F12 & F30 (see picture)
Both trackpad buttons are correctly working.

All gestures are working except smart zoom (secondary click is simulated instead)

Really great job, buttons were not working before. Amazing.
Thanks
Schermata 2020-10-10 alle 18 46 26

Delayed Packets

While using the trackpad, some people have come across an issue where the trackpad will randomly stop working for a second or two, before macOS acts upon whatever actions occurred during that time. This only occurs on some devices.

The only time this has happened to me is when using ACPIBatteryManager.kext, and I rarely get it after sleeping under Catalina. This may be related to some scheduling issues and VoodooInput, or other weird interaction between VoodooInput and VoodooRMI? I've seen people with these issues have similar issues with Acidanthera's VoodooPS2 while are fine with Rehabman's VoodooPS2. I have no clue why this would happen though - and don't have a good way to figure out why this happens.

Related Issues:

Devices to not respond to reading PDT Tables

Some devices do not respond when trying to read the PDT tables, producing an output similar to:

VRMI - Info: SMBus version 2
VRMI - Debug: Config TrackpointMultiplier loaded: a -> a
VRMI - Debug: Config TrackpointScrollMultiplierX loaded: a -> 1e
VRMI - Debug: Config TrackpointScrollMultiplierY loaded: a -> 1e
VRMI - Debug: Config TrackpointDeadzone loaded: 1 -> 1
VRMI - Debug: Config DisableWhileTypingTimeout loaded: 1f4 -> 64
VRMI - Debug: Config DisableWhileTrackpointTimeout loaded: 1f4 -> 64
VRMI - Debug: Config ForceTouchMinPressure loaded: 50 -> 5a
VRMI - Debug: Config ForceTouchEmulation loaded: 1 -> 1
VRMI - Debug: Config MinYDiffThumbDetection loaded: c8 -> c8
VRMI - Debug: Updating Configuration
VRMI - Info: RMI Bus (DEBUG) Starting up!
VRMI - Error: Read PDT entry at 0x00e9 failed, code: -6
VRMI - Error: RMI initial reset failed! Continuing in spite of this
VRMI - Error: Could not read PDT properties from 0x00ef (code -6). Assuming 0x00.
VRMI - Debug: rmi_probe_interrupts: Counting IRQs
VRMI - Error: Read PDT entry at 0x00e9 failed, code: -6
VRMI - Error: IRQ counting failed with code -6
VRMI - Error: Could not probe
VRMI - Error: Could not probe
VRMI - Debug: Freeing function list

They respond to the version being read.

I haven't seen why this occurs - it generally occurs on older devices (Ivy Bridge), but also seen it on devices as late as Broadwell.

Related Issues:

I've tried rigging VoodooPS2Trackpad to reset the trackpad then notify VoodooRMI (where VRMI will then load) but a similar output was gotten.

Touchpad dragging

Hi! i'm using your driver and everything is working fine, but for some reason i can't use the touchpad to drag windows or select text.

Trackpoint Middle Button Behavior

The middle Trackpoint button on my X270 emits a mouse click on both the press and release, i.e. middle clicking a link on Safari or Firefox will open two new tabs. This also affects scrolling, if you start scrolling over a link the link will open in a new tab as well as scrolling the page.

I am using the latest release on a Thinkpad X270.

"SYNA2B42" Randomly Resets

Describe the bug
I look at IORegistryExplorer, the device name shows up as <"SYNA2B42">.
Not a bug/issue as much as my attempt to use VoodooRMI on a device that's not on your list.
Catalina 10.15.6, OpenCore 0.6.1, Lenovo laptop i7-8550U, VoodooI2C.kext.

The trackpad works for a minute or two freshly after boot, and then it stops responding.

Once the trackpad stops working, Console keeps on repeating these two lines:

kernel: (RMII2C) VRMI - Error: RMII2C::TPD0 RMI_READ_DATA_REPORT_ID mismatch 1
kernel: (VoodooRMI) VRMI - Error: Unable to read IRQ

To Reproduce
Steps to reproduce the behavior:
I believe the relevant kexts are VoodooI2C.kext and VoodooRMI.kext.
Boot.
Watch trackpad work.
Play around for a minute or two.
Watch it stop working.
Go to Console at review log.

Expected behavior
Not sure what to expect, since the device name isn't on the list yet.

Log
I might have to use the debug version of VoodooRMI and capture a better log, if that's going to be part of the effort to get this working. Let me know what to do here.

dmesg does not show source of log statements.

We should modify the templates to have VoodooRMI in them. Additionally, when using dmesg, new lines are not automatically added. We should double check all logging statements have new lines in them or edit the template Debug/error logs to do so. The addition of an Info template log should be done as well.

T450s Big Sur can't load the VoodooRMI.kext or VoodooSMBus.kext

  • when I didi what the readme said, I still can't make the trackpad of T450s work. When I use the kextstat, I found that the kext wasn't loaded.

  • I have use the debug kext, the boot log has nothing about voodoo, so the txt file is bank.

  • this is the kext.

image

  • this is the config.plist.

image

  • the txt generated has nothing.

image

  • should I disable SIP or do something to make the kext loaded ?

glitchy behaviour on thinkpad x1 extreme

i just attempted to install this on my x1 hoping it would solve the click-and-drag problems i had with PS2. i believe i followed the instructions properly.

however the touchpad behaviour is now very erratic. it seems to time out constantly, and response is intermittent. the log has about a dozen messages like this over the course of 15 minutes.
2020-09-27 16:30:01.845267-0700 0x9ec3 Default 0x0 0 0 kernel: (kernel) VRMI - Error: Could not read F11 attention data: -6

sitting in my clover kext folder are VoodooRMI and VoodooSMBus as supplied here, and the latest version of VoodooPS2Controller minus all of the kexts but VoodooPS2Keyboard. did i make some obvious error? i hope i can get to the bottom of this as the touchpad is one of the last outstanding, frustrating, issues i have with this hack.

Make Trackpoint Scroll feels smooth

Currently Trackpoint scroll (with middle button) feels like mouse wheel: things scroll line by line.

Is it possible to make trackpoint scroll in a smooth way (like two fingers gesture on touchpad)?

Make trackpoint smoother

First of all, Thank you very much for the excellent project.
When I used Trackpoint in Windows 10 OS, I found that the Trackpoint is so smooth than any other OS distribution.
So if we can optimize it in OS X, thanks again.

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.