Skip to content

IPTS Firmware

Maximilian Luz edited this page Oct 2, 2019 · 1 revision

Issues

Bogus HID descriptor for Surface Laptops (MSHW0079)

The touchscreen contact count on the Surface Laptop (1) and Surface Laptop 2 is incorrectly declared as being reported 4 times as one byte value (report count of 4) in the HID descriptor (vendor_desc.bin for MSHW0079), whereas it should be one time (report count of 1) with one byte value and three padding bytes. This causes Linux to read the contact count as zero, thus not producing any touch events, due to which it looks as if touch is not working. The stylus is not affected.

To fix this, the hidrd-convert tool can be used to convert the binary descriptor to XML (and back), where the following patch can be applied:

diff --git a/mshw0079_vendor_desc.xml b/mshw0079_vendor_desc.xml
index 2338a64..259a7a2 100644
--- a/mshw0079_vendor_desc.xml
+++ b/mshw0079_vendor_desc.xml
@@ -1103,9 +1103,14 @@
     </COLLECTION>
     <usage_page>digitizer<!-- Digitizer (0Dh) --></usage_page>
     <usage>digitizer_contact_count<!-- Contact count (54h, dynamic value) --></usage>
-    <report_count>4</report_count>
     <report_size>8</report_size>
+    <report_count>1</report_count>
+    <input>
+      <variable/>
+    </input>
+    <report_count>3</report_count>
     <input>
+      <constant/>
       <variable/>
     </input>
     <usage>digitizer_scan_time<!-- Scan time (56h, dynamic value) --></usage>

Table of Contents

Home

Clone this wiki locally