- 9. Elantech Touchpad DriverВ¶
- 9.1. IntroductionВ¶
- 9.2. Extra knobsВ¶
- 9.3. Differentiating hardware versionsВ¶
- 9.4. Hardware version 1В¶
- 9.4.1. RegistersВ¶
- 9. Elantech Touchpad DriverВ¶
- 9.1. IntroductionВ¶
- 9.2. Extra knobsВ¶
- 9.3. Differentiating hardware versionsВ¶
- 9.4. Hardware version 1В¶
- 9.4.1. RegistersВ¶
- 9. Elantech Touchpad DriverВ¶
- 9.1. IntroductionВ¶
- 9.2. Extra knobsВ¶
- 9.3. Differentiating hardware versionsВ¶
- 9.4. Hardware version 1В¶
- 9.4.1. RegistersВ¶
9. Elantech Touchpad DriverВ¶
Extra information for hardware version 1 found and provided by Steve Havelka
Version 2 (EeePC) hardware support based on patches received from Woody at Xandros and forwarded to me by user StewieGriffin at the eeeuser.com forum
9.1. IntroductionВ¶
Currently the Linux Elantech touchpad driver is aware of four different hardware versions unimaginatively called version 1,version 2, version 3 and version 4. Version 1 is found in “older” laptops and uses 4 bytes per packet. Version 2 seems to be introduced with the EeePC and uses 6 bytes per packet, and provides additional features such as position of two fingers, and width of the touch. Hardware version 3 uses 6 bytes per packet (and for 2 fingers the concatenation of two 6 bytes packets) and allows tracking of up to 3 fingers. Hardware version 4 uses 6 bytes per packet, and can combine a status packet with multiple head or motion packets. Hardware version 4 allows tracking up to 5 fingers.
Some Hardware version 3 and version 4 also have a trackpoint which uses a separate packet format. It is also 6 bytes per packet.
The driver tries to support both hardware versions and should be compatible with the Xorg Synaptics touchpad driver and its graphical configuration utilities.
Note that a mouse button is also associated with either the touchpad or the trackpoint when a trackpoint is available. Disabling the Touchpad in xorg (TouchPadOff=0) will also disable the buttons associated with the touchpad.
Additionally the operation of the touchpad can be altered by adjusting the contents of some of its internal registers. These registers are represented by the driver as sysfs entries under /sys/bus/serio/drivers/psmouse/serio? that can be read from and written to.
Currently only the registers for hardware version 1 are somewhat understood. Hardware version 2 seems to use some of the same registers but it is not known whether the bits in the registers represent the same thing or might have changed their meaning.
On top of that, some register settings have effect only when the touchpad is in relative mode and not in absolute mode. As the Linux Elantech touchpad driver always puts the hardware into absolute mode not all information mentioned below can be used immediately. But because there is no freely available Elantech documentation the information is provided here anyway for completeness sake.
9.2. Extra knobsВ¶
Currently the Linux Elantech touchpad driver provides three extra knobs under /sys/bus/serio/drivers/psmouse/serio? for the user.
Turn different levels of debugging ON or OFF.
By echoing “0” to this file all debugging will be turned OFF.
Currently a value of “1” will turn on some basic debugging and a value of “2” will turn on packet debugging. For hardware version 1 the default is OFF. For version 2 the default is “1”.
Turning packet debugging on will make the driver dump every packet received to the syslog before processing it. Be warned that this can generate quite a lot of data!
Turns parity checking ON or OFF.
By echoing “0” to this file parity checking will be turned OFF. Any non-zero value will turn it ON. For hardware version 1 the default is ON. For version 2 the default it is OFF.
Hardware version 1 provides basic data integrity verification by calculating a parity bit for the last 3 bytes of each packet. The driver can check these bits and reject any packet that appears corrupted. Using this knob you can bypass that check.
Hardware version 2 does not provide the same parity bits. Only some basic data consistency checking can be done. For now checking is disabled by default. Currently even turning it on will do nothing.
Sets crc_enabled to 0/1. The name “crc_enabled” is the official name of this integrity check, even though it is not an actual cyclic redundancy check.
Depending on the state of crc_enabled, certain basic data integrity verification is done by the driver on hardware version 3 and 4. The driver will reject any packet that appears corrupted. Using this knob, The state of crc_enabled can be altered with this knob.
Reading the crc_enabled value will show the active value. Echoing “0” or “1” to this file will set the state to “0” or “1”.
9.3. Differentiating hardware versionsВ¶
To detect the hardware version, read the version number as param[0].param[1].param[2]:
In the wild, there appear to be more versions, such as 00.01.64, 01.00.21, 02.00.00, 02.00.04, 02.00.06:
In the wild, there appear to be more versions, such as 04.03.01, 04.04.11. There appears to be almost no difference, except for EF113, which does not report pressure/width and has different data consistency checks.
Probably all the versions with param[0] = 02.08.00 can be considered as 6 bytes.
9.4. Hardware version 1В¶
9.4.1. RegistersВ¶
By echoing a hexadecimal value to a register it contents can be altered.
Источник
9. Elantech Touchpad DriverВ¶
Extra information for hardware version 1 found and provided by Steve Havelka
Version 2 (EeePC) hardware support based on patches received from Woody at Xandros and forwarded to me by user StewieGriffin at the eeeuser.com forum
9.1. IntroductionВ¶
Currently the Linux Elantech touchpad driver is aware of four different hardware versions unimaginatively called version 1,version 2, version 3 and version 4. Version 1 is found in “older” laptops and uses 4 bytes per packet. Version 2 seems to be introduced with the EeePC and uses 6 bytes per packet, and provides additional features such as position of two fingers, and width of the touch. Hardware version 3 uses 6 bytes per packet (and for 2 fingers the concatenation of two 6 bytes packets) and allows tracking of up to 3 fingers. Hardware version 4 uses 6 bytes per packet, and can combine a status packet with multiple head or motion packets. Hardware version 4 allows tracking up to 5 fingers.
Some Hardware version 3 and version 4 also have a trackpoint which uses a separate packet format. It is also 6 bytes per packet.
The driver tries to support both hardware versions and should be compatible with the Xorg Synaptics touchpad driver and its graphical configuration utilities.
Note that a mouse button is also associated with either the touchpad or the trackpoint when a trackpoint is available. Disabling the Touchpad in xorg (TouchPadOff=0) will also disable the buttons associated with the touchpad.
Additionally the operation of the touchpad can be altered by adjusting the contents of some of its internal registers. These registers are represented by the driver as sysfs entries under /sys/bus/serio/drivers/psmouse/serio? that can be read from and written to.
Currently only the registers for hardware version 1 are somewhat understood. Hardware version 2 seems to use some of the same registers but it is not known whether the bits in the registers represent the same thing or might have changed their meaning.
On top of that, some register settings have effect only when the touchpad is in relative mode and not in absolute mode. As the Linux Elantech touchpad driver always puts the hardware into absolute mode not all information mentioned below can be used immediately. But because there is no freely available Elantech documentation the information is provided here anyway for completeness sake.
9.2. Extra knobsВ¶
Currently the Linux Elantech touchpad driver provides three extra knobs under /sys/bus/serio/drivers/psmouse/serio? for the user.
Turn different levels of debugging ON or OFF.
By echoing “0” to this file all debugging will be turned OFF.
Currently a value of “1” will turn on some basic debugging and a value of “2” will turn on packet debugging. For hardware version 1 the default is OFF. For version 2 the default is “1”.
Turning packet debugging on will make the driver dump every packet received to the syslog before processing it. Be warned that this can generate quite a lot of data!
Turns parity checking ON or OFF.
By echoing “0” to this file parity checking will be turned OFF. Any non-zero value will turn it ON. For hardware version 1 the default is ON. For version 2 the default it is OFF.
Hardware version 1 provides basic data integrity verification by calculating a parity bit for the last 3 bytes of each packet. The driver can check these bits and reject any packet that appears corrupted. Using this knob you can bypass that check.
Hardware version 2 does not provide the same parity bits. Only some basic data consistency checking can be done. For now checking is disabled by default. Currently even turning it on will do nothing.
Sets crc_enabled to 0/1. The name “crc_enabled” is the official name of this integrity check, even though it is not an actual cyclic redundancy check.
Depending on the state of crc_enabled, certain basic data integrity verification is done by the driver on hardware version 3 and 4. The driver will reject any packet that appears corrupted. Using this knob, The state of crc_enabled can be altered with this knob.
Reading the crc_enabled value will show the active value. Echoing “0” or “1” to this file will set the state to “0” or “1”.
9.3. Differentiating hardware versionsВ¶
To detect the hardware version, read the version number as param[0].param[1].param[2]:
In the wild, there appear to be more versions, such as 00.01.64, 01.00.21, 02.00.00, 02.00.04, 02.00.06:
In the wild, there appear to be more versions, such as 04.03.01, 04.04.11. There appears to be almost no difference, except for EF113, which does not report pressure/width and has different data consistency checks.
Probably all the versions with param[0] = 02.08.00 can be considered as 6 bytes.
9.4. Hardware version 1В¶
9.4.1. RegistersВ¶
By echoing a hexadecimal value to a register it contents can be altered.
Источник
9. Elantech Touchpad DriverВ¶
Extra information for hardware version 1 found and provided by Steve Havelka
Version 2 (EeePC) hardware support based on patches received from Woody at Xandros and forwarded to me by user StewieGriffin at the eeeuser.com forum
9.1. IntroductionВ¶
Currently the Linux Elantech touchpad driver is aware of four different hardware versions unimaginatively called version 1,version 2, version 3 and version 4. Version 1 is found in “older” laptops and uses 4 bytes per packet. Version 2 seems to be introduced with the EeePC and uses 6 bytes per packet, and provides additional features such as position of two fingers, and width of the touch. Hardware version 3 uses 6 bytes per packet (and for 2 fingers the concatenation of two 6 bytes packets) and allows tracking of up to 3 fingers. Hardware version 4 uses 6 bytes per packet, and can combine a status packet with multiple head or motion packets. Hardware version 4 allows tracking up to 5 fingers.
Some Hardware version 3 and version 4 also have a trackpoint which uses a separate packet format. It is also 6 bytes per packet.
The driver tries to support both hardware versions and should be compatible with the Xorg Synaptics touchpad driver and its graphical configuration utilities.
Note that a mouse button is also associated with either the touchpad or the trackpoint when a trackpoint is available. Disabling the Touchpad in xorg (TouchPadOff=0) will also disable the buttons associated with the touchpad.
Additionally the operation of the touchpad can be altered by adjusting the contents of some of its internal registers. These registers are represented by the driver as sysfs entries under /sys/bus/serio/drivers/psmouse/serio? that can be read from and written to.
Currently only the registers for hardware version 1 are somewhat understood. Hardware version 2 seems to use some of the same registers but it is not known whether the bits in the registers represent the same thing or might have changed their meaning.
On top of that, some register settings have effect only when the touchpad is in relative mode and not in absolute mode. As the Linux Elantech touchpad driver always puts the hardware into absolute mode not all information mentioned below can be used immediately. But because there is no freely available Elantech documentation the information is provided here anyway for completeness sake.
9.2. Extra knobsВ¶
Currently the Linux Elantech touchpad driver provides three extra knobs under /sys/bus/serio/drivers/psmouse/serio? for the user.
Turn different levels of debugging ON or OFF.
By echoing “0” to this file all debugging will be turned OFF.
Currently a value of “1” will turn on some basic debugging and a value of “2” will turn on packet debugging. For hardware version 1 the default is OFF. For version 2 the default is “1”.
Turning packet debugging on will make the driver dump every packet received to the syslog before processing it. Be warned that this can generate quite a lot of data!
Turns parity checking ON or OFF.
By echoing “0” to this file parity checking will be turned OFF. Any non-zero value will turn it ON. For hardware version 1 the default is ON. For version 2 the default it is OFF.
Hardware version 1 provides basic data integrity verification by calculating a parity bit for the last 3 bytes of each packet. The driver can check these bits and reject any packet that appears corrupted. Using this knob you can bypass that check.
Hardware version 2 does not provide the same parity bits. Only some basic data consistency checking can be done. For now checking is disabled by default. Currently even turning it on will do nothing.
Sets crc_enabled to 0/1. The name “crc_enabled” is the official name of this integrity check, even though it is not an actual cyclic redundancy check.
Depending on the state of crc_enabled, certain basic data integrity verification is done by the driver on hardware version 3 and 4. The driver will reject any packet that appears corrupted. Using this knob, The state of crc_enabled can be altered with this knob.
Reading the crc_enabled value will show the active value. Echoing “0” or “1” to this file will set the state to “0” or “1”.
9.3. Differentiating hardware versionsВ¶
To detect the hardware version, read the version number as param[0].param[1].param[2]:
In the wild, there appear to be more versions, such as 00.01.64, 01.00.21, 02.00.00, 02.00.04, 02.00.06:
In the wild, there appear to be more versions, such as 04.03.01, 04.04.11. There appears to be almost no difference, except for EF113, which does not report pressure/width and has different data consistency checks.
Probably all the versions with param[0] = 02.08.00 can be considered as 6 bytes.
9.4. Hardware version 1В¶
9.4.1. RegistersВ¶
By echoing a hexadecimal value to a register it contents can be altered.
Источник