Bug 197849 - Asus T100TAF is detected as a generic mouse and does not give access to turn on or off the "Tap to click" and other functions
Summary: Asus T100TAF is detected as a generic mouse and does not give access to turn ...
Status: RESOLVED CODE_FIX
Alias: None
Product: Drivers
Classification: Unclassified
Component: Input Devices (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: drivers_input-devices
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-11-11 16:56 UTC by Michael Z Freeman
Modified: 2017-12-04 09:43 UTC (History)
3 users (show)

See Also:
Kernel Version: 4.14-rc8
Subsystem:
Regression: No
Bisected commit-id:


Attachments
Asus t100taf touchpad details (10.70 KB, text/plain)
2017-11-11 16:56 UTC, Michael Z Freeman
Details
Evemu record (32.33 KB, text/plain)
2017-11-24 13:56 UTC, Michael Z Freeman
Details
Dmidecode (6.74 KB, text/plain)
2017-11-24 13:57 UTC, Michael Z Freeman
Details
xinput list props (1.49 KB, text/plain)
2017-11-25 13:16 UTC, Michael Z Freeman
Details
MATE mouse settings touchpad tab (61.93 KB, image/png)
2017-11-25 19:08 UTC, Michael Z Freeman
Details
touchpad-edge-detector (575 bytes, text/plain)
2017-11-25 19:09 UTC, Michael Z Freeman
Details
evemu-record keyboard (16.50 KB, text/plain)
2017-11-25 19:10 UTC, Michael Z Freeman
Details
[PATCH v2] HID: asus: Add product-id for the T100TAF and T100HA keyboard docks (4.42 KB, patch)
2017-11-26 15:44 UTC, Hans de Goede
Details | Diff
T100HA Bluetooth DevID (619 bytes, patch)
2017-11-26 17:24 UTC, jbMacAZ
Details | Diff
lsusb (12.07 KB, text/plain)
2017-12-03 13:20 UTC, Michael Z Freeman
Details

Description Michael Z Freeman 2017-11-11 16:56:37 UTC
Created attachment 260615 [details]
Asus t100taf touchpad details

Hi,

On my Asus T100TAF Transformer laptop the touchpad is not fully functional. In Ubuntu Mate 17.10 gsettings shows a toggle to turn "Tap to click" on or off but altering it makes no difference (see http://files.michaelzfreeman.org/Screenshot%20at%202017-11-07%2014-19-15.png ). 

This is really an essential function as its very easy to knock the touchpad by mistake and/or activate various touch and drag functions while operating the GUI which causes many usability issues. Basically there appears to be no driver for this touchpad and it is detected as a default device. It is not a Synapics device as "sudo egrep -i 'synap|alps|etps|elan' /proc/bus/input/devices" shows nothing. "sudo libinput list-devices" does not show any features such as "Tap to click" as being available (see attachment). 

It would be nice to have a more functional driver for this device.
Comment 1 mirh 2017-11-19 13:24:55 UTC
That's strange. 
57573c541be6c7bca5c27427a5f908d8a22d0b00 should have added full multi-touch support for it, in 4.14. 

CCing hans which I think should even have access to the right hardware.
Comment 2 jbMacAZ 2017-11-19 16:47:52 UTC
(In reply to mirh from comment #1)
> That's strange. 
> 57573c541be6c7bca5c27427a5f908d8a22d0b00 should have added full multi-touch
> support for it, in 4.14. 
> 
> CCing hans which I think should even have access to the right hardware.

That commit is in the code, but all it does is define some quirks, it doesn't actually implement anything.  There is a larger patch pending, but it apparently doesn't support the T100TAF.  See
https://github.com/Asus-T100/kernel/wiki/Compiling-the-kernel-for-T100TAF#multitouch-touchpad  (instructions for 4.9 custom kernel using an early version of the multi-touch patch)
Comment 3 Hans de Goede 2017-11-20 08:43:27 UTC
Hi,

(In reply to jbMacAZ from comment #2)
> (In reply to mirh from comment #1)
> > That's strange. 
> > 57573c541be6c7bca5c27427a5f908d8a22d0b00 should have added full multi-touch
> > support for it, in 4.14. 
> > 
> > CCing hans which I think should even have access to the right hardware.
> 
> That commit is in the code, but all it does is define some quirks, it
> doesn't actually implement anything.  There is a larger patch pending, but
> it apparently doesn't support the T100TAF.  See
> https://github.com/Asus-T100/kernel/wiki/Compiling-the-kernel-for-
> T100TAF#multitouch-touchpad  (instructions for 4.9 custom kernel using an
> early version of the multi-touch patch)

So if I understand:
https://github.com/Asus-T100/kernel/commit/d770c0609ca52f7b7ae711c9edb3a703ee00a4d5

Correctly, the proper fix would be something like this:

diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c
index 1bb7b63b3150..4cdac9857037 100644
--- a/drivers/hid/hid-asus.c
+++ b/drivers/hid/hid-asus.c
@@ -751,7 +751,10 @@ static const struct hid_device_id asus_devices[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
 		USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD3), QUIRK_G752_KEYBOARD },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
-		USB_DEVICE_ID_ASUSTEK_T100_KEYBOARD),
+		USB_DEVICE_ID_ASUSTEK_T100TA_KEYBOARD),
+	  QUIRK_T100_KEYBOARD | QUIRK_NO_CONSUMER_USAGES },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
+		USB_DEVICE_ID_ASUSTEK_T100TAF_KEYBOARD),
 	  QUIRK_T100_KEYBOARD | QUIRK_NO_CONSUMER_USAGES },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_ASUS_AK1D) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_ASUS_MD_5110) },
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 5da3d6256d25..dc1db8558850 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -178,7 +178,8 @@
 #define USB_VENDOR_ID_ASUSTEK		0x0b05
 #define USB_DEVICE_ID_ASUSTEK_LCM	0x1726
 #define USB_DEVICE_ID_ASUSTEK_LCM2	0x175b
-#define USB_DEVICE_ID_ASUSTEK_T100_KEYBOARD	0x17e0
+#define USB_DEVICE_ID_ASUSTEK_T100TA_KEYBOARD	0x17e0
+#define USB_DEVICE_ID_ASUSTEK_T100TAF_KEYBOARD	0x1807
 #define USB_DEVICE_ID_ASUSTEK_T100CHI_KEYBOARD	0x8502
 #define USB_DEVICE_ID_ASUSTEK_T304_KEYBOARD	0x184a
 #define USB_DEVICE_ID_ASUSTEK_I2C_KEYBOARD	0x8585

Right? IOW the T100TAF keyboard behaves the same as the T100TA keyboard but has a different product id, correct ?

Once someone can confirmt his I'll submit the above patch upstream.

Regards,

Hans
Comment 4 jbMacAZ 2017-11-20 18:36:19 UTC
(In reply to Michael Z Freeman from comment #0)
> Created attachment 260615 [details]
> Asus t100taf touchpad details
> 
> Hi,
> 
> On my Asus T100TAF Transformer laptop the touchpad is not fully functional.

I've built the T100-14.4.0 kernel and it is posted at the Ubuntu on T100 group.
https://drive.google.com/drive/folders/1Y--S0_xmVopDcoIY8Oie0SRnSvTbRGZh
It has the above patch (comment #3) and this addition.

--- a/drivers/hid/hid-core.c	2017-11-20 10:10:20.224338014 -0700
+++ b/drivers/hid/hid-core.c	2017-11-20 10:11:22.687337150 -0700
@@ -1979,7 +1979,8 @@ static const struct hid_device_id hid_ha
 	{ HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_I2C_TOUCHPAD) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD1) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD2) },
-	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T100_KEYBOARD) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T100TA_KEYBOARD) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T100TAF_KEYBOARD) },
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T100CHI_KEYBOARD) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_JESS, USB_DEVICE_ID_ASUS_MD_5112) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_ASUS_MD_5110) },
--

@Hans, Curiously, the T100TAF and T100HA seem to use the same device ID.  Would that cause side-effects?
Comment 5 Hans de Goede 2017-11-22 12:07:30 UTC
(In reply to jbMacAZ from comment #4)
> (In reply to Michael Z Freeman from comment #0)
> > Created attachment 260615 [details]
> > Asus t100taf touchpad details
> > 
> > Hi,
> > 
> > On my Asus T100TAF Transformer laptop the touchpad is not fully functional.
> 
> I've built the T100-14.4.0 kernel and it is posted at the Ubuntu on T100
> group.
> https://drive.google.com/drive/folders/1Y--S0_xmVopDcoIY8Oie0SRnSvTbRGZh
> It has the above patch (comment #3) and this addition.

Yes I missed that bit, sorry.

<snip>

> @Hans, Curiously, the T100TAF and T100HA seem to use the same device ID. 
> Would that cause side-effects?

Hmm, interesting I actually own a T100HA now, I just have not had much time to look at it. You're right it uses the same id as the T100TAF, and adding the id as my patch does makes the special keys and the touchpad work as intended, so all is good. I've submitted the patch to add the ID upstream.
Comment 6 Hans de Goede 2017-11-23 15:33:55 UTC
Hi again,

Ok, so I just realized that only adding the id is not enough, the touchpad has a different resolution then the one on the T100TA, at least my T100HA touchpad has a different resolution. So now I wonder if that the T100TAF and T100HA do not both use the same usb-ids but with different resolution...

Michael, can you install jbMacAZ's kernel and if that gives you multi-touch for the touchpad, install evemu, then as root run "evemu-record" select the touchpad event node and move you finger along the top / bottom and left / right edges and write down the maximum x and y coordinates you are seeing ?

Also can you please run as root: "sudo dmidecode > dmidecode.log" and attach dmidecode.log here ?

Michael, I would also be interested in a picture of the keyboard + touchpad, like this:

https://uk.store.asus.com/media/catalog/product/cache/1/image/1800x/6b9ffbf72458f4fd2d3cb995d92e8889/T/1/T100TAF-BING-DK005B-7_1.jpg

But then from your actual keyboard-dock instead of a marketing photo :)

According to the internet the T100TAF has the same touchpad as the T100TA, where as the T100HA has a slightly bigger touchpad...

Regards,

Hans
Comment 7 Michael Z Freeman 2017-11-23 15:50:04 UTC
Hi and thanks everyone. I'll get on this as soon as I can.
Comment 8 Michael Z Freeman 2017-11-24 13:54:48 UTC
(In reply to Hans de Goede from comment #6)
> Hi again,
> 
> Ok, so I just realized that only adding the id is not enough, the touchpad
> has a different resolution then the one on the T100TA, at least my T100HA
> touchpad has a different resolution. So now I wonder if that the T100TAF and
> T100HA do not both use the same usb-ids but with different resolution...
> 
> Michael, can you install jbMacAZ's kernel and if that gives you multi-touch
> for the touchpad, install evemu, then as root run "evemu-record" select the
> touchpad event node and move you finger along the top / bottom and left /
> right edges and write down the maximum x and y coordinates you are seeing ?
> 
> Also can you please run as root: "sudo dmidecode > dmidecode.log" and attach
> dmidecode.log here ?
> 
> Michael, I would also be interested in a picture of the keyboard + touchpad,
> like this:
> 
> https://uk.store.asus.com/media/catalog/product/cache/1/image/1800x/
> 6b9ffbf72458f4fd2d3cb995d92e8889/T/1/T100TAF-BING-DK005B-7_1.jpg
> 
> But then from your actual keyboard-dock instead of a marketing photo :)
> 
> According to the internet the T100TAF has the same touchpad as the T100TA,
> where as the T100HA has a slightly bigger touchpad...
> 
> Regards,
> 
> Hans

Hi. Here is evemu-record output and dmidecode log as requested. I have not got to the photo yet.

The tap click is off by default with that new kernel ! No more tap to click and accidental dragging ! Thanks to jbMacAZ for building that. 

However using right click does not bring up any right click functions. I cannot see anything in "dconf editor" (MATE) that might enable/disable right click. "Menu" key on keyboard (to right of spacebar) that can usually be used to bring up the right click function just opens the MATE menu, but that might be something to do with my MATE keyboard setup.
Comment 9 Michael Z Freeman 2017-11-24 13:56:03 UTC
Created attachment 260817 [details]
Evemu record
Comment 10 Michael Z Freeman 2017-11-24 13:57:04 UTC
Created attachment 260819 [details]
Dmidecode
Comment 11 Hans de Goede 2017-11-24 15:55:37 UTC
Thanks for the dmidecode output.

The purpose of the evemu-record output was to try and find the min/max x and y values being reported with that kernel, and the recording does not seem to contain enough info for that, I was sorta expecting you to keep an eye on the x / y values and try to get as high/low a value as possible by going along the edges several time.

A better way to get this is to run touchpad-edge-detector, which is part of libevdev-utils (may be called libevdev-tools or some such on other distros) can you run touchpad-edge-detector with the new kernel and post the output here ?
Comment 12 Hans de Goede 2017-11-24 16:16:58 UTC
Also if you run evemu-record you should get 3 devices for the keyboard like this:

/dev/input/event4:      Asus Keyboard
/dev/input/event5:      Asus Keyboard
/dev/input/event6:      Asus TouchPad

Can you run evemu-record on the second device node (5 in my example) and test that the rfkill (wifi on/off) brightness up and brightness down keys work please?
Comment 13 Hans de Goede 2017-11-24 16:22:41 UTC
Clicking in the right bottom of the clickpad should send a right click, if that does not work can you please do:

xinput list-props "Asus TouchPad"

And copy and paste the output here?
Comment 14 Michael Z Freeman 2017-11-25 13:15:36 UTC
(In reply to Hans de Goede from comment #13)
> Clicking in the right bottom of the clickpad should send a right click, if
> that does not work can you please do:
> 
> xinput list-props "Asus TouchPad"
> 
> And copy and paste the output here?

Cheers. Here's the xinput output. More on the way.
Comment 15 Michael Z Freeman 2017-11-25 13:16:14 UTC
Created attachment 260833 [details]
xinput list props
Comment 16 Hans de Goede 2017-11-25 14:10:41 UTC
Hi,

(In reply to Michael Z Freeman from comment #15)
> Created attachment 260833 [details]
> xinput list props

Ok, so the problem with right click not working is this:


	libinput Click Method Enabled (296):	0, 1
	libinput Click Method Enabled Default (297):	1, 0

Notice how mate has set the click method to something other then the default. There should be some setting in the mate control panel for this somewhere I guess. Mate right now has it configured to click-fingers, which is the Mac OS X way of doing right clicks, this means that if you click the click-pad with 2 fingers on it instead of 1, then it will do a right click.

If you cannot find how to change this in mate, you can run:

xinput set-prop "Asus TouchPad" "libinput Click Method Enabled" 1 0

to change this.

Regards,

Hans
Comment 17 Michael Z Freeman 2017-11-25 19:07:24 UTC
(In reply to Hans de Goede from comment #16)
> Hi,
> 
> (In reply to Michael Z Freeman from comment #15)
> > Created attachment 260833 [details]
> > xinput list props
> 
> Ok, so the problem with right click not working is this:
> 
> 
>       libinput Click Method Enabled (296):    0, 1
>       libinput Click Method Enabled Default (297):    1, 0
> 
> Notice how mate has set the click method to something other then the
> default. There should be some setting in the mate control panel for this
> somewhere I guess. Mate right now has it configured to click-fingers, which
> is the Mac OS X way of doing right clicks, this means that if you click the
> click-pad with 2 fingers on it instead of 1, then it will do a right click.
> 
> If you cannot find how to change this in mate, you can run:
> 
> xinput set-prop "Asus TouchPad" "libinput Click Method Enabled" 1 0
> 
> to change this.
> 
> Regards,
> 
> Hans

That's what threw me as I've never used that function before. Actually like it so left it on. I checked the MATE mouse settings which I had not done since starting this and now there is a touchpad tab ! See attachment.

Ran touchpad-edge-detector and evemu-record tests. Already knew special keys were working but had not actually tested wifi on/off which works as well.
Comment 18 Michael Z Freeman 2017-11-25 19:08:06 UTC
Created attachment 260857 [details]
MATE mouse settings touchpad tab
Comment 19 Michael Z Freeman 2017-11-25 19:09:56 UTC
Created attachment 260859 [details]
touchpad-edge-detector
Comment 20 Michael Z Freeman 2017-11-25 19:10:28 UTC
Created attachment 260861 [details]
evemu-record keyboard
Comment 21 Hans de Goede 2017-11-26 15:42:27 UTC
Thank you for all the info, so indeed the T100TAF has the same touchpad as the T100TA, including sending the same coordinate range (as shown by the touchpad-edge-detector the send ranges were a good match to the kernel ranges which come from the T100TA), but my T100HA uses the same usb-id and a different coordinate range. So I've had to fall back to adding a dmi match to set the coordinate range. I've just send a new patch upstream which does this, I will also attach it here.

jbMacAZ, you probably will want to replace the patch in your kernels with the one I'm attaching as that one will work better for T100HA owners.
Comment 22 Hans de Goede 2017-11-26 15:44:09 UTC
Created attachment 260881 [details]
[PATCH v2] HID: asus: Add product-id for the T100TAF and T100HA keyboard docks

Note this patch is against the hid branch for kernel 4.16, for 4.14 or 4.15 you will want to keep the changes to the need_special_driver list from the old patch.
Comment 23 Michael Z Freeman 2017-11-26 15:47:57 UTC
(In reply to Hans de Goede from comment #21)
> Thank you for all the info, so indeed the T100TAF has the same touchpad as
> the T100TA, including sending the same coordinate range (as shown by the
> touchpad-edge-detector the send ranges were a good match to the kernel
> ranges which come from the T100TA), but my T100HA uses the same usb-id and a
> different coordinate range. So I've had to fall back to adding a dmi match
> to set the coordinate range. I've just send a new patch upstream which does
> this, I will also attach it here.
> 
> jbMacAZ, you probably will want to replace the patch in your kernels with
> the one I'm attaching as that one will work better for T100HA owners.

Thanks for the patches ! :)
Comment 24 jbMacAZ 2017-11-26 17:24:57 UTC
Created attachment 260883 [details]
T100HA Bluetooth DevID

I've updated the T100TAF/HA keyboard/touchpad patch suitable for 4.14 and 4.15 and will post it at the G+ group after it builds.  I can't test it on my CHI (bluetooth keydock!), but it looks like any fails would be limited to the HA.

Speaking of bluetooth, was a patch submitted to add the Bluetooth deviceID for the HA?  If not I have one against 4.14 (attached).  It's been tested at the G+ group by a T100HA owner and is part of the build I posted (comment #4).
Comment 25 Hans de Goede 2017-11-26 18:22:38 UTC
Since I've a T100HA myself now, I've posted a patch adding the BCM2E72 id to hci_bcm.c a couple of days ago.
Comment 26 jbMacAZ 2017-11-26 20:50:21 UTC
(In reply to Hans de Goede from comment #25)
> Since I've a T100HA myself now, I've posted a patch adding the BCM2E72 id to
> hci_bcm.c a couple of days ago.

Great!  Thanks for all your help here and with the T100 issues in general.
Comment 27 mirh 2017-11-26 21:27:24 UTC
(In reply to Hans de Goede from comment #21)
> but my T100HA uses the same usb-id 

The same, down to also revision and collection ids?
I'd wonder how windows driver could even differentiate between the two, given it's basically shared among the two/three.
Comment 28 Hans de Goede 2017-11-27 16:58:43 UTC
Hi,

(In reply to mirh from comment #27)
> (In reply to Hans de Goede from comment #21)
> > but my T100HA uses the same usb-id 
> 
> The same, down to also revision and collection ids?
> I'd wonder how windows driver could even differentiate between the two,
> given it's basically shared among the two/three.

Knowing Asus they simply have 2 different drivers and you need to download the right one. Upstream has the same concerns about my patch, so Michael, can you provide some more info?

1: lsusb -v output
2: install hid-replay, run hid-recorder, select the last "ASUS Tech Inc. ASUS HID Device" and then report the output here, there is no need to move the mouse on the touchpad, it won't record that since a custom report-id is used.

Regards,

Hans
Comment 29 mirh 2017-11-27 19:36:58 UTC
TA/TAF
http://dlcdnet.asus.com/pub/ASUS/nb/Apps_for_Win10/SmartGesture/SmartGesture_Win10_32_VER406.zip

THA
http://dlcdnet.asus.com/pub/ASUS/nb/Apps_for_Win10/SmartGesture/SmartGesture_Win10_64_VER4012.zip

Yes, they are *technically* different links/packages, but the driver inside is "modeled" the same. 
Down to ideally supported DIDs (at least in infs).
Comment 30 Michael Z Freeman 2017-12-03 13:20:21 UTC
Created attachment 261005 [details]
lsusb
Comment 31 Michael Z Freeman 2017-12-03 13:21:24 UTC
(In reply to Hans de Goede from comment #28)
> Hi,
> 
> (In reply to mirh from comment #27)
> > (In reply to Hans de Goede from comment #21)
> > > but my T100HA uses the same usb-id 
> > 
> > The same, down to also revision and collection ids?
> > I'd wonder how windows driver could even differentiate between the two,
> > given it's basically shared among the two/three.
> 
> Knowing Asus they simply have 2 different drivers and you need to download
> the right one. Upstream has the same concerns about my patch, so Michael,
> can you provide some more info?
> 
> 1: lsusb -v output
> 2: install hid-replay, run hid-recorder, select the last "ASUS Tech Inc.
> ASUS HID Device" and then report the output here, there is no need to move
> the mouse on the touchpad, it won't record that since a custom report-id is
> used.
> 
> Regards,
> 
> Hans

lsusb attached.

But to be sure, what is "hid-replay" ? It's not in my repo but I can see a github page.
Comment 32 Hans de Goede 2017-12-04 09:43:33 UTC
Thank you for the lsusb, the kernel Hid maintainer has decided to go with the dmi based patch, so hid-replay output is no longer necessary:

https://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git/log/?h=for-4.16/hid-quirks-cleanup/asus

So this bug can be closed now. Since the fix was somewhat more then just adding an id it has been queued for addition to the 4.16 kernel.

Note You need to log in before you can comment on or make changes to this bug.