You are not logged in.

#1 2026-02-02 18:18:01

glider.kmn
Member
Registered: 2022-05-15
Posts: 4

Dual Screen Aliexpress LaptopTouchscreen issues [SOLVED]

So I go one of those generic dual 10,5 inch laptop . The Touch functionality of the screens is messed up (windows everyting works fine)
tldr
in linux either one or both of them show up in libinput list-devices. When one shows up (always the bottom one) the bottom screen touchscreen works (albeit the output is on the wrong screen but thats a problem for later) alongside with errors in dmesg.  Reloading the goodix_ts i2c_hid_ acpi and hid_multitouch does not do anything to change the number of devices. When both show up in libinput (I have no clue why this happens, maybe something to do with rebooting] sometimes both give output in evtest (happened once) sometimes only one shows input (again the bottom one), again with errors in dmesg, reloading the goodix_ts module when both where initially detected most of the time dissapears one of the touchscreen again from libinput list-devices

I am honestly quite lost, I would appreciate any help, have spent the better part of a day or two scouring forums, so far most similar errors where either due to the wrong kernel, or fixed through some sort of patching, I hope someone can at least point me in the right direction <3

Linux 6.18.7-arch1-1 #1 SMP PREEMPT_DYNAMIC Sat, 24 Jan 2026 00:47:39 +0000 x86_64 GNU/Linux

in linux (new wayland sway, minmal arch install)

most of the time only one shows up in sudo libinput list-devices, and works (inverted and on the wrong screen, but sudo evtest /dev/input/event13 shows things happening

Device:                  Goodix Capacitive TouchScreen
Kernel:                  /dev/input/event13
Id:                      i2c:0416:2437
Group:                   8
Seat:                    seat0, default
Capabilities:            keyboard touch 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             identity matrix
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

in demesg we can see error -121 (kernel error??) and the first screen initializing while the second one fails to do so (sudo dmesg | grep -i goodix

[    4.316340] Goodix-TS i2c-GDIX1002:00: supply AVDD28 not found, using dummy regulator
[    4.316378] Goodix-TS i2c-GDIX1002:00: supply VDDIO not found, using dummy regulator
[    4.319036] Goodix-TS i2c-GDIX1002:00: ID 9271, version: 1044
[    4.324770] input: Goodix Capacitive TouchScreen as /devices/pci0000:00/0000:00:15.2/i2c_designware.2/i2c-2/i2c-GDIX1002:00/input/input18
[    4.344721] Goodix-TS i2c-GDIX1002:01: supply AVDD28 not found, using dummy regulator
[    4.344751] Goodix-TS i2c-GDIX1002:01: supply VDDIO not found, using dummy regulator
[    4.346860] Goodix-TS i2c-GDIX1002:01: Error reading 1 bytes from 0x8140: -121
[    4.368592] Goodix-TS i2c-GDIX1002:01: Error reading 1 bytes from 0x8140: -121
[    4.475454] Goodix-TS i2c-GDIX1002:01: Error reading 1 bytes from 0x8140: -121
[    4.497404] Goodix-TS i2c-GDIX1002:01: Error reading 1 bytes from 0x8140: -121
[    4.518329] Goodix-TS i2c-GDIX1002:01: I2C communication failure: -121
[    4.518609] Goodix-TS i2c-GDIX1002:01: probe with driver Goodix-TS failed with error -121

sometimes, for whatever reasion both show up (afaik due to me rebooting or something?, for some reason when switching from a live usb of the latest fedora desktop environment back to sway arch it appears), one time this has happened I was able to get output through evtest from both events (this was under fedora, ik don't shoot me), but I have had both show up under arch too

when both show up I the result of dmesg when touching the top screen is hundreds of lines of roughly this: (had to paraphrase don't have a current paste from this happening)

Goodix-TS i2c-GDIX1002:01: Error writing 1 byte to 0xB14e: -121
Goodix-TS i2c-GDIX1002:01: Error writing 10 byte from 0xB14e: -121

here the output of libinput list-devices

Device:                  Goodix Capacitive TouchScreen
Kernel:                  /dev/input/event12
Id:                      i2c:0416:2437
Group:                   8
Seat:                    seat0, default
Capabilities:            keyboard touch 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             identity matrix
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

Device:                  Goodix Capacitive TouchScreen
Kernel:                  /dev/input/event13
Id:                      i2c:0416:2437
Group:                   8
Seat:                    seat0, default
Capabilities:            keyboard touch 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             identity matrix
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

i2cdetect for the non-working one

sudo i2cdetect -y -r 3
[sudo] password for leah: 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- 5d -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         

i2cdetect for the working one

udo i2cdetect -y -r 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --               

Last edited by glider.kmn (2026-02-05 10:41:07)

Offline

#2 2026-02-05 14:13:54

glider.kmn
Member
Registered: 2022-05-15
Posts: 4

Re: Dual Screen Aliexpress LaptopTouchscreen issues [SOLVED]

BINGO! I found it!

sudo i2cget -y 3 0x5d 0x81 w
0x0000    <- Device responds at 0x5d!

sudo i2cget -y 3 0x14 0x81 w
Error: Read failed    <- But ACPI says it should be at 0x14
The second touchscreen IS at address 0x5d (93 decimal), NOT 0x14 (20 decimal)! The ACPI tables are wrong.

Also notice:

gpio-305 reset
gpio-306 irq
Only ONE set of GPIOs for reset/irq, not two! The second touchscreen doesn't have proper GPIO configuration.

The Real Fix: Override the I2C Address
The device is there, it's just at the wrong address. Let's create a proper fix by submitting an upstream patch, but first let's test it works:

bash
cd ~/goodix-fix

# Reset goodix.c to clean state
curl -o goodix.c https://git.kernel.org/pub/scm/linux/ke … ?h=v6.18.7

nano goodix.c
Find the goodix_ts_probe function and add this right at the beginning (around line 1370):

c
static int goodix_ts_probe(struct i2c_client *client)
{
    struct goodix_ts_data *ts;
    const char *cfg_name;
    int error;

    /* HACK: Fix for dual-screen laptops where second touchscreen
     * has wrong I2C address in ACPI (should be 0x5d not 0x14) */
    if (client->addr == 0x14 && client->adapter->nr == 3) {
        dev_info(&client->dev, "Fixing I2C address 0x14 -> 0x5d for I2C3\n");
        client->addr = 0x5d;
    }

    dev_dbg(&client->dev, "I2C Address: 0x%02x\n", client->addr);
Save, then:

bash
make clean
make
sudo make install
sudo reboot
After reboot:

bash
sudo dmesg | grep -i goodix
sudo libinput list-devices | grep -A 20 Goodix
This should work! The device is there, we just need to talk to it at the correct address.

Offline

Board footer

Powered by FluxBB