Reverse touch detection - Goodix touch screen

586 views
Skip to first unread message

Zsigus Attila

unread,
Aug 19, 2019, 2:30:32 AM8/19/19
to Android-x86
Hi

The Android X86 8.1-r2 k4.9 on iWork 10 Ultimate (Goodix-Ts) tablet reverse touch detection X-axis.

Please help.

Thank you

IMG_20190819_082356.jpg

Chih-Wei Huang

unread,
Aug 19, 2019, 2:47:24 AM8/19/19
to Android-x86
That's easy to be solved. Refer to the commit:
https://osdn.net/projects/android-x86/scm/git/kernel/commits/69d201a837884f67401e2e0046817b5ede78ca7f

Zsigus Attila <zsigus...@gmail.com> 於 2019年8月19日 週一 下午2:30寫道:
--
Chih-Wei
Android-x86 project
http://www.android-x86.org

Zsigus Attila

unread,
Aug 19, 2019, 5:56:19 AM8/19/19
to Android-x86
Thank you very much. :)

How do i use it?


Thank you

Mauro Rossi

unread,
Aug 19, 2019, 9:58:21 AM8/19/19
to Android-x86
Hi,


On Monday, August 19, 2019 at 11:56:19 AM UTC+2, Zsigus Attila wrote:
Thank you very much. :)

How do i use it?

The problem for "Microtech e-tab Pro" model was the same,
so you need to check the DMI string of your model using command line via Terminal+ after 'su' command:

cat /sys/class/dmi/id/sys_vendor

cat /sys/class/dmi/id/product_name

After having taked note of sys_vendor and product_name strings
you can modify drivers/input/touchscreen/goodix.c by adding the following lines

@@ line 148
static const struct dmi_system_id x_inverted[] = {
#if defined(CONFIG_DMI) && defined(CONFIG_X86)
   
{
       
.ident = "Microtech e-tab Pro",
       
.matches = {
            DMI_MATCH
(DMI_SYS_VENDOR, "Microtech"),
            DMI_MATCH
(DMI_PRODUCT_NAME, "e-tab Pro")
       
}
   
},
    {
       
.ident = "[your sys_vendor] [your product_name]",
       
.matches = {
            DMI_MATCH
(DMI_SYS_VENDOR, "
[your sys_vendor]"),
            DMI_MATCH
(DMI_PRODUCT_NAME, "
[your product_name]")
       
}
   
},

#endif
   
{}
};


and then recompile the android iso
M.

Zsigus Attila

unread,
Aug 20, 2019, 6:16:42 AM8/20/19
to Android-x86
Thank you. :)

I'm trying. :)

BrokenE39

unread,
Jan 10, 2021, 8:06:46 PM1/10/21
to Android-x86
Sorry to dig up an old thread but seem more appropriate to post here then start a new one since my Teclast X98 Plus (A5C6) also uses the Goodix touch screen.

I recently compiled Pie with 5.9 and noticed the touch is inverse on both X and Y axis. I tried to modify the goodix.c source file with the following:

Yes, my sys vendor and product name both came back as "Default string"

static const struct dmi_system_id xy_inverted[] = {
#if defined(CONFIG_DMI) && defined(CONFIG_X86)
    {
        .ident = "Default string Default string",
        .matches = {
            DMI_MATCH(DMI_SYS_VENDOR, "Default string"),
            DMI_MATCH(DMI_PRODUCT_NAME, "Default string")
        }
    },
#endif
    {}
};

Then inside static int goodix_configure_dev(struct goodix_ts_data *ts) I added a new if block:

if (dmi_check_system(xy_inverted)){
        ts->prop.invert_x = true;
        ts->prop.invert_y = true;
        dev_dbg(&ts->client->dev,
            "Applying 'inverted xy screen' quirk\n");
        dev_err(&ts->client->dev, "Applying 'inverted xy'\n");

    }

Deleted the old goodix.ko module, copy the new one and then insmod to install and reboot. Use the calibration app and the touch points are completely messed up. Not sure where the dev err or dev dbg error would show up. Logcat or dmesg? Any advice?

BrokenE39

unread,
Jan 13, 2021, 11:25:19 PM1/13/21
to Android-x86
OK I got it working. I made 2 mistakes:
  • Adding a new static struct in probably incorrect location
  • Adding a new if block under goodix_configure_dev
Didn't notice there's already a static const struct dmi_system_id rotated_screen[] definition. Since my device was flipped x and y, I just have to modify static const struct dmi_system_id rotated_screen[] to include the following:

    {
        .ident = "Default string Default string",
        .matches = {
            DMI_MATCH(DMI_SYS_VENDOR, "Default string"),
            DMI_MATCH(DMI_BIOS_DATE, "04/09/2016")
        },
    },

I do not recommend copying that to every single A5C6 out there because there are 3 firmware for this device and I'm running the last one. Looking back at my previous post way back in the Android 7.1 days, the DMI values for sure aren't the same.
Reply all
Reply to author
Forward
0 new messages