Bug 121281

Summary: ImPS/2 BYD TouchPad not recognized as a touchpad
Product: Drivers Reporter: Arcadiy Ivanov (arcadiy)
Component: Input DevicesAssignee: drivers_input-devices
Status: RESOLVED DUPLICATE    
Severity: normal CC: chris, dmitry.torokhov, doa379, kernel_bugzilla, lubosd, porternw, pospeselr, scribe
Priority: P1    
Hardware: Intel   
OS: Linux   
Kernel Version: 4.6.3-300.fc24.x86_64 Subsystem:
Regression: No Bisected commit-id:

Description Arcadiy Ivanov 2016-07-01 04:20:29 UTC
I filed the original bug with FreeDesktop (https://bugs.freedesktop.org/show_bug.cgi?id=96756) and it appears notwithstanding the work done on BYD driver (https://github.com/torvalds/linux/commits/master/drivers/input/mouse/byd.c), the touchpad is not recognized as a touchpad.

The affected system is Dell Precision 7510, which means that likely the entire line (7x10, 5510 and XPS 9x50) are affected.

Please let me know what info you may need.

# EVEMU 1.3
# Kernel: 4.6.3-300.fc24.x86_64
# DMI: dmi:bvnDellInc.:bvr1.05.04:bd05/27/2016:svnDellInc.:pnPrecision7510:pvr:rvnDellInc.:rn0M91XC:rvrA00:cvnDellInc.:ct9:cvr:
# Input device name: "ImPS/2 BYD TouchPad"
# Input device ID: bus 0x11 vendor 0x02 product 0x05 version 0000
# Supported events:
#   Event type 0 (EV_SYN)
#     Event code 0 (SYN_REPORT)
#     Event code 1 (SYN_CONFIG)
#     Event code 2 (SYN_MT_REPORT)
#     Event code 3 (SYN_DROPPED)
#     Event code 4 ((null))
#     Event code 5 ((null))
#     Event code 6 ((null))
#     Event code 7 ((null))
#     Event code 8 ((null))
#     Event code 9 ((null))
#     Event code 10 ((null))
#     Event code 11 ((null))
#     Event code 12 ((null))
#     Event code 13 ((null))
#     Event code 14 ((null))
#   Event type 1 (EV_KEY)
#     Event code 272 (BTN_LEFT)
#     Event code 273 (BTN_RIGHT)
#     Event code 274 (BTN_MIDDLE)
#   Event type 2 (EV_REL)
#     Event code 0 (REL_X)
#     Event code 1 (REL_Y)
#     Event code 8 (REL_WHEEL)
# Properties:
#   Property  type 0 (INPUT_PROP_POINTER)
N: ImPS/2 BYD TouchPad
I: 0011 0002 0005 0000
P: 01 00 00 00 00 00 00 00
B: 00 0b 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 07 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 02 03 01 00 00 00 00 00 00
B: 03 00 00 00 00 00 00 00 00
B: 04 00 00 00 00 00 00 00 00
B: 05 00 00 00 00 00 00 00 00
B: 11 00 00 00 00 00 00 00 00
B: 12 00 00 00 00 00 00 00 00
B: 14 00 00 00 00 00 00 00 00
B: 15 00 00 00 00 00 00 00 00
B: 15 00 00 00 00 00 00 00 00
Comment 1 Chris Diamand 2016-07-01 07:36:12 UTC
Hi,

Can you clarify your issue please?

* Is your touchpad a BYD model, or something else being incorrectly recognized as one? (I thought most Dells used ALPS?). Given that it's called it "BYD TouchPad", it seems the BYD driver is loaded.

* If it is a BYD touchpad, is the problem that the kernel isn't recognizing it, or that synaptics isn't?

* Are you using a mainline Linux kernel or something else? (there are some other BYD drivers floating around in various kernel trees, e.g. Purism).

* Can you give some extra info please? In particular, the output of the following would be helpful:
   - xinput list
   - dmesg | grep -i byd
Comment 2 Richard Pospesel 2016-07-01 15:30:56 UTC
This is very likely a dupe of 120781.  Mice are being incorrectly
detected as BYD touchpad, init subsequently fails so the fallback PS/2
driver is used, but the name and vendor don't get overwritten (hence
the "ImPS/2 BYD TouchPad" string).  See for details:

https://bugzilla.kernel.org/show_bug.cgi?id=120781

There's a patch up in linux-input currently under review.

best,
-Richard


On 07/01/2016 12:36 AM, bugzilla-daemon@bugzilla.kernel.org wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=121281
>
> Chris Diamand <chris@diamand.org> changed:
>
>             What    |Removed                     |Added
> ----------------------------------------------------------------------------
>                   CC|                            |chris@diamand.org
>
> --- Comment #1 from Chris Diamand <chris@diamand.org> ---
> Hi,
>
> Can you clarify your issue please?
>
> * Is your touchpad a BYD model, or something else being incorrectly
> recognized
> as one? (I thought most Dells used ALPS?). Given that it's called it "BYD
> TouchPad", it seems the BYD driver is loaded.
>
> * If it is a BYD touchpad, is the problem that the kernel isn't recognizing
> it,
> or that synaptics isn't?
>
> * Are you using a mainline Linux kernel or something else? (there are some
> other BYD drivers floating around in various kernel trees, e.g. Purism).
>
> * Can you give some extra info please? In particular, the output of the
> following would be helpful:
>     - xinput list
>     - dmesg | grep -i byd
>
Comment 3 Arcadiy Ivanov 2016-07-01 16:14:18 UTC
To clarify:

I have Dell Precision 7510 with a duplex touchpad (touchpad & buttons + pointing stick in keyboard & another set of buttons): http://i.dell.com/sites/imagecontent/products/PublishingImages/precision-m7510-workstation/laptop-precision-7000-7510-pol-mag-pdp_module-04.jpg

It is detected as ImPS/2 BYD TouchPad. I don't have any other pointing devices connected to the laptop.

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ImPS/2 BYD TouchPad                       id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ Sleep Button                              id=10   [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD                      id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=12   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=14   [slave  keyboard (3)]
    ↳ DELL Wireless hotkeys                     id=15   [slave  keyboard (3)]

$ dmesg | grep -i byd
[    2.768942] input: ImPS/2 BYD TouchPad as /devices/platform/i8042/serio1/input/input6


Thanks!
Comment 4 Arcadiy Ivanov 2016-07-02 05:46:20 UTC
1) > Is your touchpad a BYD model, or something else being incorrectly recognized as one? (I thought most Dells used ALPS?)

I can't say for certain. DMI gives the following:

Handle 0x002C, DMI type 21, 7 bytes
Built-in Pointing Device
        Type: Touch Pad
        Interface: Bus Mouse
        Buttons: 2

2) > If it is a BYD touchpad, is the problem that the kernel isn't recognizing it, or that synaptics isn't?

The kernel recognizes the touchpad as BYD. What it is for real I can't say. Synaptics, however, doesn't recognize it as a touchpad.

3) > Are you using a mainline Linux kernel or something else? (there are some other BYD drivers floating around in various kernel trees, e.g. Purism).

I'm using standard 4.6.3-300.f24 from Fedora 24. No custom drivers.
Comment 5 Nick 2016-07-06 20:52:49 UTC
> 2) > If it is a BYD touchpad, is the problem that the kernel isn't
> recognizing
> it, or that synaptics isn't?

> The kernel recognizes the touchpad as BYD. What it is for real I can't say. 
> Synaptics, however, doesn't recognize it as a touchpad.

I have similar laptop as bug submitter (Dell Precision 7710) and the same issue. I think the laptop must actually have a BYD touchpad. I installed the patch recommended by Richard with a better touchpad detection algorithm, and the device is still detected as BYD. Running 4.6.3-gentoo.

dmesg -i | grep byd
[    2.689636] input: ImPS/2 BYD TouchPad as /devices/platform/i8042/serio1/input/input8
Comment 6 Dmitry Torokhov 2016-07-08 18:51:09 UTC
No, as far as I can see on Dell's web-site Precision 7710 (and others) use ALPS touchpads. It is probably the newer version which our alps driver does not support yet (there are patches pending).

Given that the BYD detection is quite unreliable and number of devices using BYD is not that big maybe we should resort to using DMI data to limit number of boxes we try BYD protocol on?
Comment 7 Ian 2016-07-09 17:43:44 UTC
I have a Dell Latitude E7470 (same generation as the Precision 7510) which is also being detected as a "ImPS/2 BYD TouchPad" with kernel 4.6.

I installed Dell's drivers under Windows and it shows up in the device manager as Alps.
Comment 8 Richard Pospesel 2016-07-10 17:11:43 UTC
The patch posted ( 
http://www.spinics.net/lists/linux-input/msg45539.html ) should
change the behavior of the psmouse module such that 'ImPS/2 BYD 
TouchPad' string
in `dmesg` and `xinput -list` will never appear.  That combination only 
occurred
because the 'detect' method succeeded (which populates the 'BYD 
TouchPad' string),
while 'init' failed (resulting in the generic 'ImPS/2' rather than 
'BYDPS/2'
string being populated).  The new logic only uses a single 'detect' 
method which
includes the initialization logic as well.

Can you verify you're running the patched kernel?

best,
-Richard

On 07/06/2016 01:52 PM, bugzilla-daemon@bugzilla.kernel.org wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=121281
>
> Nick <porternw@gmail.com> changed:
>
>             What    |Removed                     |Added
> ----------------------------------------------------------------------------
>                   CC|                            |porternw@gmail.com
>
> --- Comment #5 from Nick <porternw@gmail.com> ---
>> 2) > If it is a BYD touchpad, is the problem that the kernel isn't
>> recognizing
>> it, or that synaptics isn't?
>> The kernel recognizes the touchpad as BYD. What it is for real I can't say.
>> Synaptics, however, doesn't recognize it as a touchpad.
> I have similar laptop as bug submitter (Dell Precision 7710) and the same
> issue. I think the laptop must actually have a BYD touchpad. I installed the
> patch recommended by Richard with a better touchpad detection algorithm, and
> the device is still detected as BYD. Running 4.6.3-gentoo.
>
> dmesg -i | grep byd
> [    2.689636] input: ImPS/2 BYD TouchPad as
> /devices/platform/i8042/serio1/input/input8
>
Comment 9 Ian 2016-07-11 03:22:59 UTC
I just tried your patch and it causes the touchpad to be detected as "ImPS/2 Generic Wheel Mouse"

I don't think this fully fixes the bug though. The touchpad should be detected as two separate devices, "AlpsPS/2 ALPS DualPoint TouchPad" and "AlpsPS/2 ALPS DualPoint Stick"

See this for more information:
http://en.community.dell.com/techcenter/os-applications/f/4613/t/19982526

Dmitry Torokhov mentioned that there are some Alpha touchpad patches pending. Can someone point me to them?

Thanks.
Comment 10 Dmitry Torokhov 2016-07-11 16:52:56 UTC
OK, I am duping this to the original issue with BYD match being too eager and claiming more devices than it should.

For proper support for Dell E7470 touchpads see this thread: http://thread.gmane.org/gmane.linux.kernel.input/50117 and let the author know if it works/does not work for you.

*** This bug has been marked as a duplicate of bug 120781 ***
Comment 11 doa379 2016-08-13 13:02:18 UTC
The issue is still present in Kernel 4.7. On a Dell 7370 we have this:

[@ubuntu ~]$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ImPS/2 BYD TouchPad                       id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD                      id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ DELL Wireless hotkeys                     id=13   [slave  keyboard (3)] 


Also:

I: Bus=0011 Vendor=0002 Product=0005 Version=0000
N: Name="ImPS/2 BYD TouchPad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input6
U: Uniq=
H: Handlers=mouse0 event6 
B: PROP=1
B: EV=7
B: KEY=70000 0 0 0 0
B: REL=103


The synaptics driver isn't loaded.
Comment 12 Troy A. Griffitts 2016-12-17 19:40:03 UTC
I'm not sure why this is marked as RESOLVED duplicate.  The duplicate doesn't seem to have anything to do with this bug.  It seems the opposite of this bug ("mouse is detected as touchpad").  This bug is that our touchpad is detected as mouse.

I have a new system exactly the same model as the original reporter: Dell Precision 7710.  I have no controls available to me for the touchpad.  xinput lists only a PS2 mouse:

[scribe@localhost scribe]$ xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ ImPS/2 Generic Wheel Mouse              	id=13	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Video Bus                               	id=8	[slave  keyboard (3)]
    ↳ Power Button                            	id=9	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=10	[slave  keyboard (3)]
    ↳ Integrated_Webcam_HD                    	id=11	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=12	[slave  keyboard (3)]
    ↳ Dell WMI hotkeys                        	id=14	[slave  keyboard (3)]
    ↳ DELL Wireless hotkeys                   	id=15	[slave  keyboard (3)]


The only relevant entry from /proc/bus/input/devices:

I: Bus=0011 Vendor=0002 Product=0005 Version=0000
N: Name="ImPS/2 Generic Wheel Mouse"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input6
U: Uniq=
H: Handlers=mouse0 event5 
B: PROP=1
B: EV=7
B: KEY=70000 0 0 0 0
B: REL=103

Please re-open this bug.
Comment 13 Troy A. Griffitts 2016-12-17 19:45:18 UTC
Apologies, previous comment should say: Dell Precision 7510 (not 7710).
Comment 14 Dmitry Torokhov 2016-12-18 23:40:18 UTC
It is resolved as duplicate because, as far as I know, your device does not have BYD touchpad, thus detecting it as BYD is incorrect.

You can open a new bug for the lack of proper touchpad detection. It would be helpful to know how WIndows identifies the device. It could be ALPS or Synaptics, and Synaptics can we either PS/2 or I2C/RMI4.