radut / psmouse-alps Goto Github PK
View Code? Open in Web Editor NEWThis project forked from emmanuelthome/psmouse-alps
dkms module for psmouse
This project forked from emmanuelthome/psmouse-alps
dkms module for psmouse
$Id: README 720 2012-10-02 00:14:28Z dturvene $ History ------- 0.1: hacked in rudimentary support for the Dell IR15 N5110. Nothing else should work - probably causing a kernel panic. 0.2: add logic to isolate N5110 changes from previously supported devices expand diagnostics to capture touchpad protocol add kernel parameter to enable/disable runtime packet debug enabled edge scrolling for N5110 add more shell scripts to control/debug device 0.3: clean up a potential null pointer exception added signature for Dell I17R 7720 based on user confirmaton to V6 protocol disable multi-touch for V6 protocol include alps.sh helper scripts 0.4: integrate multi-touch support from florin9doi default alps_debug=0, can be enabled through sysfs code cleanup 0.5: elevate persistent syslog to psmouse_info for production/release capture of alps signature and command response - both of which determine control protocol 1.2: Try to unify the two V5 init sequences. How to set up ------------- cd to the directory where this readme sits. as root, do: $ dkms add . $ modprobe -r psmouse $ dkms build -m psmouse -v custom-1.2 --all $ dkms autoinstall --force $ modprobe psmouse There is some reporting data in dmesg | grep psmouse Background ---------- This README documents my work to reverse engineer the Alps touchpad on a Dell N5110 for Linux. When I first purchased the laptop and installed Ubuntu 12.04, I noticed that the touchpad behaved erratically. It would randomly skip and home-to-cursor. A brief search showed that this behavior has been a long-standing and well publicized issued. To date several other Alps touchpads have been reverse engineered but no one had addressed this particular model. Dell has a driver for the touchpad for Vista and Win7. I repeatedly contacted Dell support and Alps; the only response I received was "We don't support Linux"; odd considering Dell ships Ubuntu. I developed a simple serio_raw program to peek/poke at the touchpad and found it had characteristics inconsistent with other Alps touchpads. I used Seth Forshee's procedure to dump the driver interface using qemu and vista as the guest OS [1]. This require me to patch the qemu acpi-dsdt.dsl file to recognize the Alps hardware in order to install the Dell/Alps Vista driver [2] Based on the qemu log, I started hacking up a psmouse DLKM from the linux-3.2.0 source tree. First I added in Ben Gamari's ALPS_PROTO_V5 fix for the Alps Touchpad on his Dell E6230 [3] and tried it but the characteristics were too different. In fact even the enter-command-mode generic response is different. I then took the vista log and created an ALPS_PROTO_V6 hw init by pasting the init sequence from the qemu log into alps_hw_init_v6. That got me part of the way, the device was no longer being handled as a stock ps/2 mouse but now as an ALPS DualPoint Touchpad. However, the 6-byte message format was undocumented [4]. As far as I can tell, it is: byte 0: 1 1 0 0 1 0 0 0 byte 1: 0 x6 x5 x4 x3 x2 x1 x0 byte 2: 0 y6 y5 y4 y3 y2 y1 y0 byte 3: 0 ? ? ? 1 m r l byte 4: y10 y9 y8 y7 x10 x9 x8 x7 byte 5: 0 z6 z5 z4 z3 z2 z1 z0 So I created alps_process_touchpad_packet_v6 to parse the touchpad packets. The ALPS touchpad is working on my N5110. I can control the touchpad somewhat via xinput and the System Settings->Touchpad widget. I think it can still be tightened up but, at least, it's usable now. Dave Turvene [1] http://swapspace.forshee.me/2011/11/touchpad-protocol-reverse-engineering.html [2] http://www.spinics.net/lists/linux-input/msg21948.html [3] http://www.spinics.net/lists/linux-input/msg21993.html [4] file:///usr/src/linux-source-3.2.0/linux-3.2.0/Documentation/input/alps.txt bash shell scripts ------------------ See alps.sh for support scripts.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.