<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - kernel: Elantech 3320KD-3100 Touchpad behind [ASUS T300CHI DOCKING] Bluetooth not recognised"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=98770#c12">Comment # 12</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - kernel: Elantech 3320KD-3100 Touchpad behind [ASUS T300CHI DOCKING] Bluetooth not recognised"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=98770">bug 98770</a>
              from <span class="vcard"><a class="email" href="mailto:vitek.vlasenko@gmail.com" title="Victor Vlasenko <vitek.vlasenko@gmail.com>"> <span class="fn">Victor Vlasenko</span></a>
</span></b>
        <pre>I believe we are working on the similar device here:
- kernel space driver
<a href="https://github.com/vlasenko/hid-asus-fte-dkms">https://github.com/vlasenko/hid-asus-fte-dkms</a>
- user space driver
<a href="https://github.com/redmcg/FTE1001">https://github.com/redmcg/FTE1001</a>
- magic packet searching
<a href="https://github.com/vlasenko/zenbook-touchpad-i2c">https://github.com/vlasenko/zenbook-touchpad-i2c</a>
- protocol sniffing
<a href="https://github.com/ain101/drivers-input-touchscreen-FTS_driver/blob/master/doc/sniff/logic%20analyzer/win%20boot%20after%20grub%202.csv">https://github.com/ain101/drivers-input-touchscreen-FTS_driver/blob/master/doc/sniff/logic%20analyzer/win%20boot%20after%20grub%202.csv</a>

Yeah, that's what we attempted first - to reverse engineer AsusHID.sys from
Asus Smart Gesture drivers, without much success though. But then Frederik
Wenigwieser has soldered logic analyzer and sniffed communication between
Window driver and TouchPad device. Which has opened us the possibility to find
"magic" packet used to switch TouchPad from Mouse-mode to MultiTouch mode:

static int asus_start_multitouch(struct hid_device *hdev) {
        unsigned char buf[] = { FEATURE_REPORT_ID, 0x00, 0x03, 0x01, 0x00 };
        int ret = hid_hw_raw_request(hdev, FEATURE_REPORT_ID, buf, sizeof(buf),
                        HID_FEATURE_REPORT, HID_REQ_SET_REPORT);
        if (ret != sizeof(buf)) {
                hid_err(hdev, "Failed to start multitouch: %d\n", ret);
                return ret;
        }

        return 0;
}

I wonder whether this packet works for your device to start sending multi-touch
events. I guess the simplest way to find this out is to try Brendan McGrath
userspace driver, with minor changes:
<a href="https://github.com/redmcg/FTE1001">https://github.com/redmcg/FTE1001</a>

Regards,
Victor

(In reply to Tj from <a href="show_bug.cgi?id=98770#c8">comment #8</a>)
<span class="quote">> Created <span class=""><a href="attachment.cgi?id=128095" name="attach_128095" title="dmesg v4.9rc4 T300CHI">attachment 128095</a> <a href="attachment.cgi?id=128095&action=edit" title="dmesg v4.9rc4 T300CHI">[details]</a></span>
> dmesg v4.9rc4 T300CHI

> Thanks for the response. Logs being attached now.

> As for the reverse engineering I have started on that (done a lot of it in
> the last 10 years!) but I may need some guidance on the specifics of what to
> look for with regard to how input sub-systems work at the low level.

> I'm currently annotating the ACPI DSDT in case there are some Device/Methods
> which might give some additional clues (as you'll notice acpi_osi= is used
> here and causes several devices to show up that don't with a default OSI).

> I also have the Windows Asus/Elan Tech Touchpad driver installer package
> extracted and am looking at it (basically AsusHID.sys) - will have more time
> to do some decent IDA analysis with it later.

> I'm guessing work needs to be done on the kernel driver side and have been
> getting familiar with the drivers/input/mouse/asus-* code in case some
> additions to the WMI device probes is where we need to start.</span ></pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>