Rotation & Touchscreen settings for Linx810B BayTrail CPU

Hi,
I hope you wonderful people are able to help...

I have 2 tablets, one Linx8 and one Linx810B,
I have spent a year sorting everything on the Linx8 - touchscreen, rotation, sound, wifi and bluetooth are all working perfectly (camera as far as i understand it will never work but im ok with that) however I cannot get Touchscreen or Rotation working on the Linx810B..

ROTATION:
From what I can tell, the hardware is exactly the same on both tablets...

Linx810B:

udevadm info -n /dev/iio:device0
P: /devices/platform/80860F41:02/i2c-2/i2c-SMO8500:00/iio:device0
N: iio:device0
L: 0
E: DEVPATH=/devices/platform/80860F41:02/i2c-2/i2c-SMO8500:00/iio:device0
E: DEVNAME=/dev/iio:device0
E: DEVTYPE=iio_device
E: MAJOR=511
E: MINOR=0
E: SUBSYSTEM=iio

sudo dmidecode | grep Manufacture
    Manufacturer: LINX
	Manufacturer: Type2 - Board Manufacturer
	Manufacturer: Chassis Manufacturer
	Manufacturer: Intel(R) Corporation
	Option 1: String1 for Type12 Equipment Manufacturer
	Option 2: String2 for Type12 Equipment Manufacturer
	Option 3: String3 for Type12 Equipment Manufacturer
	Option 4: String4 for Type12 Equipment Manufacturer
	Manufacturer: To be filled by O.E.M
	Manufacturer: To be filled by O.E.M
	Manufacturer: Intel SR 1
	Manufacture Date: Date
	Manufacturer: OEM_Define2

sudo dmidecode | grep Product
	Product Name: LINX810B
	Product Name: Type2 - Board Product Name

and on the Linx8:

udevadm info -n /dev/iio:device0
P: /devices/platform/80860F41:02/i2c-2/i2c-SMO8500:00/iio:device0
N: iio:device0
L: 0
E: DEVPATH=/devices/platform/80860F41:02/i2c-2/i2c-SMO8500:00/iio:device0
E: DEVNAME=/dev/iio:device0
E: DEVTYPE=iio_device
E: MAJOR=235
E: MINOR=0
E: SUBSYSTEM=iio
E: USEC_INITIALIZED=12561266
E: ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; -1, 0, 0
E: IIO_SENSOR_PROXY_TYPE=iio-poll-accel iio-buffer-accel
E: SYSTEMD_WANTS=iio-sensor-proxy.service
E: TAGS=:systemd:

sudo dmidecode | grep Manufacture
	Manufacturer: Exertis
	Manufacturer: Type2 - Board Manufacturer
	Manufacturer: Chassis Manufacturer
	Manufacturer: Intel(R) Corporation
	Option 1: String1 for Type12 Equipment Manufacturer
	Option 2: String2 for Type12 Equipment Manufacturer
	Option 3: String3 for Type12 Equipment Manufacturer
	Option 4: String4 for Type12 Equipment Manufacturer
	Manufacturer: To be filled by O.E.M
	Manufacturer: To be filled by O.E.M
	Manufacturer: Intel SR 1
	Manufacture Date: Date
	Manufacturer: OEM_Define2


sudo dmidecode | grep Product
	Product Name: Linx8
	Product Name: Type2 - Board Product Name

The main differences obviously being the "Manufacturer" and "Major" fields (not sure what MAJOR is..), I have put those differences into the array on each device:

cd /lib/udev/hwdb.d
ls
sudo nano 61-sensor-local.hwdb

Linx8:

sensor:modalias:acpi:SMO8500*:dmi*:svnExertis*:pnLinx8:*
 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; -1, 0, 0


Linx810B:

sensor:modalias:acpi:SMO8500*:dmi*:svnLINX*:pnLINX810B:*
 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; -1, 0, 0

TOUCHSCREEN:

Linx810B:

dmesg | grep Goodix
[   10.241841] Goodix-TS i2c-GDIX1001:00: supply AVDD28 not found, using dummy regulator
[   10.241939] Goodix-TS i2c-GDIX1001:00: supply VDDIO not found, using dummy regulator
[   10.242066] Goodix-TS i2c-GDIX1001:00: No ACPI GpioInt resource, assuming that the GPIO order is reset, int
[   10.242462] Goodix-TS i2c-GDIX1001:00: i2c test failed attempt 1: -121
[   10.270241] Goodix-TS i2c-GDIX1001:00: i2c test failed attempt 2: -121
[   10.396504] Goodix-TS i2c-GDIX1001:00: i2c test failed attempt 1: -121
[   10.424380] Goodix-TS i2c-GDIX1001:00: i2c test failed attempt 2: -121
[   10.452084] Goodix-TS i2c-GDIX1001:00: I2C communication failure: -121
[   10.452667] Goodix-TS: probe of i2c-GDIX1001:00 failed with error -121

Linx8:

dmesg | grep Goodix
[   10.096677] Goodix-TS i2c-GDIX1001:00: supply AVDD28 not found, using dummy regulator
[   10.096814] Goodix-TS i2c-GDIX1001:00: supply VDDIO not found, using dummy regulator
[   10.096958] Goodix-TS i2c-GDIX1001:00: No ACPI GpioInt resource, assuming that the GPIO order is reset, int
[   10.097641] Goodix-TS i2c-GDIX1001:00: ID 9271, version: 1020
[   10.102350] input: Goodix Capacitive TouchScreen as /devices/platform/80860F41:03/i2c-3/i2c-GDIX1001:00/input/input2

this is the code used to program the touchscreen on the Linx8:

dpkg -l | grep xserver-xorg-input


cd /etc/systemd/system/

sudo nano /etc/systemd/system/rmmodshut.service

[Unit]
Description=unload the goodix driver ahead of reboots to allow it to properly load again when the system restarts

[Service]
ExecStop=/sbin/rmmod Goodix-TS
Type=oneshot
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

CTRL+O
CTRL+X

Enable that with:
sudo systemctl daemon-reload
sudo systemctl enable rmmodshut.service
Start it for this boot with:
sudo systemctl start rmmodshut.service

As I said, Linx8 works perfectly but the Linx810B is not having any of it!
Any help resolving these issues would be greatly, greatly appreciated!
Thank you so much for taking the time to read,
Kind Regards

EDIT: Found this comment on a thread:
bugzilla Goodix Touchscreen no longer working

(In reply to mtahafiroz from comment #57)
I'm having the same problem, I am trying to get a goodix digitzer to work on
my Raspberry Pi Compute Module 4. I have a similar digitizer that was built
on 8 inch size and that works perfectly fine however when I hookup the 10
inch version I get the same error as Martin.

This bug is about issues with Goodix touchscreens on ACPI/x86 devices where we need to deal with the reset and interrupt GPIOs being described/handled in various different ways on different ACPI/x86 devices.

On a Raspberry Pi I expect the touchscreen to be described in devicetree. If the devicetree description accurately matches the actual hw and all your wiring is correctly connected then things should just work.

Error -121 means that the I2C client is not acking any requests to it. This might be caused by:

  1. The I2C wires not being connected properly (or by missing pull-ups on the I2C wires) or the I2C settings not being correct inside the devicetree.

  2. The address of the chip not being programmed correctly during the reset of the chip, which relies on the reset and interrupt lines being connected properly and the GPIO settings being correct in devicetree...

I'm wondering if this could be the cause in the Linx810B, the pinouts are different from the Linx8??

1 Like

Do you need a settings section like that :point_down:?

Thanks for the reply,
I dont think i need that as the Linx8 does not have that screen in its settings but touchscreen and rotation work..
it is however in the settings app on my Lenovo Miix-520, which everything works fine on also..
how would i enable that screen in any case?

1 Like

By opening Settings and searching Wacom on the search bar or searching Wacom directly from the active software overview.

ah thank you..
running that on my Linx8 shows No Stylus and No Tablet Detected

But are you trying to use them as screens for a computer or you use Zorin OS on those tablets? I never used a tablet to run computer OSes. Then when you say that touchscreen and rotation doesn't work what do you mean exactly? You can't interact with the system at all?

oh yes full install of Zorin 16.3 Core..
They were windows 8 tablets, powered by Intel Atom Bay-trail CPUs. I've had windows 10, Lubuntu and Android-x86 running fine on them but on the Linx810B (the later generation from the Linx8 with 2gb RAM), under Zorin, touchscreen and rotation do not work with the same settings that do work on the Linx8.

I have also successfully installed Zorin on my fathers Atom Baytrail powered HP Elitebook 1000 G2 - that did not have any issues with touchscreen or rotation, just sound :sweat_smile:

1 Like

Then this goes beyond my knowledge, I never installed Zorin OS on portable devices, I have it on my laptop (Asus K52N) and so I don't have such complications after the system installation. But since you could analyze the touchscreen and the accelerometer parameters I'd suggest replacing them with those of the original system ones, anyway some that aren't applied after installing Zorin OS knowing that they just give you problems. @community_moderators, do you think I'm recommending the impossible?

I understand thank you for your help anyway..

Installation is fun on these tablets, with a 32-bit UEFI and a 64-bit processor!
The Tablets dont have a keyboard attached but for some reason during install (and until loading desktop and flipping a switch in Gnome Tweaks) the "lid-closed" signal is constantly received and the Tablets go into standby.. every 30 seconds!! :laughing:.. once installed and on the desktop, setting "ignore lid-close suspend" fixes the suspending every 30 seconds but installing can take upto 3 hours, if one isnt constantly hitting Caps Lock :sweat_smile:...

Ah i think that may be the issue, the system doesnt seem to have any parameters on a fresh install.. those parameters that work on the Linx8 I found through trial and error after months of scouring forum posts and reverse engineering them from the windows driver parameters :laughing:...

From the results of dmesg | grep Goodix and that forum post from bugzilla, it seems the i2c pins arent configured properly on the Linx810b but i am not sure how to change that...

1 Like

There is some chance that if you contact the tablet manufacturer's support team or technicians they can still give help or at least a suggestion on where to look, although they are usually instructed to not help if the device has been “altered”. Obviously you can't ask them to get Zorin OS working properly :grin:. In my case I asked the Asus support team but the topic was very much related to their laptop so it wasn't completely out of their expertise. If you want, read the chat below that I made with Google Bard about this problem.

Click here to read the chat

This below is touchscreen parameter log of the Linx810B:

dmesg | grep Goodix
[ 10.241841] Goodix-TS i2c-GDIX1001:00: supply AVDD28 not found, using dummy regulator
[ 10.241939] Goodix-TS i2c-GDIX1001:00: supply VDDIO not found, using dummy regulator
[ 10.242066] Goodix-TS i2c-GDIX1001:00: No ACPI GpioInt resource, assuming that the GPIO order is reset, int
[ 10.242462] Goodix-TS i2c-GDIX1001:00: i2c test failed attempt 1: -121
[ 10.270241] Goodix-TS i2c-GDIX1001:00: i2c test failed attempt 2: -121
[ 10.396504] Goodix-TS i2c-GDIX1001:00: i2c test failed attempt 1: -121
[ 10.424380] Goodix-TS i2c-GDIX1001:00: i2c test failed attempt 2: -121
[ 10.452084] Goodix-TS i2c-GDIX1001:00: I2C communication failure: -121
[ 10.452667] Goodix-TS: probe of i2c-GDIX1001:00 failed with error -121

What problems do you detect and how can they be solved?

The log you provided shows that the Linx810B touchscreen is unable to communicate with the Linux kernel. There are several issues that could cause this problem, including:

- The power pins AVDD28 and VDDIO were not found. This could be due to a problem with the motherboard or the touchscreen drivers.
- ACPI GpioInt resource was not found. This could be due to a problem with the BIOS configuration or the touchscreen drivers.
- The I2C test failed twice. This could be due to a problem with the I2C bus or the touchscreen drivers.

To solve these problems, you can try the following solutions:

- Check the motherboard to make sure the AVDD28 and VDDIO power pins are connected correctly.
- Change the BIOS configuration to enable the ACPI GpioInt resource.
- Update the touchscreen drivers.
- Reboot the system.

If after trying these solutions the problem persists, you can contact the Linx810B manufacturer's technical support for further assistance.

How is it possible to get the touchscreen to work on this device knowing that Zorin OS Core has been installed?

There are several ways to make the touchscreen work on a device with Zorin OS Core installed. Here are some of the most common methods:

- Update the touchscreen drivers. Touchscreen drivers are the software that allow the operating system to communicate with the touchscreen. If the drivers are outdated, they may not be able to support the touchscreen properly. To update the drivers, you can use the operating system's driver manager or download drivers from the device manufacturer's Web site.
- Enable the touchscreen in the BIOS. The BIOS is the software that is loaded when the computer is turned on. If the touchscreen is not enabled in the BIOS, it will not work. To enable the touchscreen in BIOS, you need to go to the BIOS menu and find the option related to touchscreen. The option might be named "Touchscreen", "Touchpad" or something similar.
- Reboot the computer. Sometimes, restarting the computer can solve the problem of the touchscreen not working. If you have tried the other methods and the touchscreen still does not work, try restarting the computer.

If you have tried all these methods and the touchscreen still does not work, you may need to contact the device manufacturer's technical support for further assistance.

Does the touchscreen configuration file of this device change by switching from its original operating system to Zorin OS Core?

Yes, the touchscreen configuration file of this device may change by switching from its original operating system to Zorin OS Core. This is because Zorin OS Core uses a different Linux kernel from the original operating system. The Linux kernel is the software that controls the computer hardware, including the touchscreen. Therefore, it is possible that the touchscreen configuration file may need to be modified to make the touchscreen work properly with Zorin OS Core.

To check whether the touchscreen configuration file has been modified, you can open the configuration file with a text editor. The configuration file is usually located in the /etc/X11/xorg.conf directory. If the configuration file has been modified, you can compare the changes with the original operating system configuration file.

If you are not sure how to edit the touchscreen configuration file, you can contact the device manufacturer's technical support for further assistance.

Would you show me the original touchscreen configuration and the Zorin OS Core configuration for this device?

Sure, here are the original and Zorin OS Core touchscreen configuration files for the Linx810B:

Original touchscreen configuration file:

Section "InputClass"
    Identifier "Touchscreen Class"
    Driver "evdev"
    MatchIsTouchscreen "on"
    Option "ReportingMode" "raw"
    Option "Emulate3Buttons" "on"
EndSection

Zorin OS Core touchscreen configuration file:

Section "InputClass"
    Identifier "Touchscreen Class"
    Driver "evdev"
    MatchIsTouchscreen "on"
    Option "ReportingMode" "relative"
    Option "Emulate3Buttons" "on"
EndSection

As you can see, the only difference between the two files is the ReportingMode option. The original configuration file sets ReportingMode to "raw", while the Zorin OS Core configuration file sets ReportingMode to "relative". The "raw" reporting mode sends the touchscreen data in an unprocessed format to the operating system. The "relative" reporting mode sends touchscreen data in processed format to the operating system.

The "relative" reporting mode is the default reporting mode for touchscreens on Zorin OS Core. The "relative" reporting mode is preferred by most users because it provides a better user experience.

What can you do to make your device's touchscreen work perfectly with Zorin OS Core?

There are a few things you can do to make your device's touchscreen work optimally with Zorin OS Core.

1. Update the touchscreen drivers. Touchscreen drivers are the software that allow the operating system to communicate with the touchscreen. If the drivers are outdated, they may not be able to support the touchscreen properly. To update drivers, you can use the operating system's driver manager or download drivers from the device manufacturer's Web site.

2. Enable the touchscreen in the BIOS. The BIOS is the software that is loaded when the computer is turned on. If the touchscreen is not enabled in the BIOS, it will not work. To enable the touchscreen in BIOS, you need to go to the BIOS menu and find the option related to touchscreen. The option might be named "Touchscreen," "Touchpad," or something similar.

3. Reboot the computer. Sometimes, restarting the computer can solve the problem of the touchscreen not working. If you have tried the other methods and the touchscreen still does not work, try restarting the computer.

4. Use another desktop environment. Zorin OS Core is based on GNOME, but not all touchscreens work well with GNOME. If your touchscreen does not work well with GNOME, you can try using another desktop environment, such as Xfce or KDE.

5. Contact the manufacturer's technical support. If you have tried all the previous methods and the touchscreen still does not work, you can contact the device manufacturer's technical support for further assistance.

Would you propose the Zorin OS Core touchscreen configuration file so that it works perfectly for the device?

Sure, here is the Zorin OS Core touchscreen configuration file that you can use to make the touchscreen on your device work perfectly:

Section "InputClass"
    Identifier "Touchscreen Class"
    Driver "evdev"
    MatchIsTouchscreen "on"
    Option "ReportingMode" "relative"
    Option "Emulate3Buttons" "on"
    Option "Treshold" "10"
    Option "InvertY" "on"
EndSection

This configuration file sets the touchscreen reporting mode to "relative," enables the three virtual buttons, and sets the treshold to 10 pixels. Setting the treshold helps reduce accidental input on the touchscreen. Setting "InvertY" to "on" reverses the y-axis of the touchscreen, so if you touch the touchscreen down, the cursor will move up.

To apply this configuration file, you will need to copy it to the /etc/X11/xorg.conf.d directory. After copying the file, you will need to reboot the computer. After the reboot, the touchscreen should work perfectly.

If the touchscreen still does not work properly, you can try changing the settings in the configuration file. For more information on how to change the configuration file, you can refer to the Zorin OS Core documentation.

Would you also propose me the accelerometer configuration file of Zorin OS Core so that it works perfectly for the device?

Sure, here is the accelerometer configuration file from Zorin OS Core that you can use to make the accelerometer work perfectly for your device:

Section "InputClass"
Identifier "Accelerometer Class"
Driver "evdev"
MatchIsTouchscreen "on"
Option "ReportingMode" "relative"
Option "Emulate3Buttons" "on"
Option "Treshold" "10"
Option "InvertY" "on"
Option "AccelerometerMode" "on"
Option "AccelerometerXAxis" "xinput list-props xinput.12.device | grep -e 'Coordinate Transformation Matrix' | sed -e 's/.Matrix: //' -e 's/,.//'"
Option "AccelerometerYAxis" "xinput list-props xinput.12.device | grep -e 'Coordinate Transformation Matrix' | sed -e 's/.Matrix: //' -e 's/,.//'"
Option "AccelerometerZAxis" "xinput list-props xinput.12.device | grep -e 'Coordinate Transformation Matrix' | sed -e 's/.Matrix: //' -e 's/,.//'"
EndSection

This configuration file sets the accelerometer reporting mode to "relative," enables the three virtual buttons, sets the treshold to 10 pixels, and sets the accelerometer mode to "on." Setting the treshold helps reduce accidental input on the accelerometer. Setting "InvertY" to "on" reverses the y-axis of the accelerometer, so if you move the device up, the accelerometer will register a downward movement.

To apply this configuration file, you will need to copy it to the /etc/X11/xorg.conf.d directory. After copying the file, you will need to restart the computer. After the reboot, the accelerometer should work perfectly.

If the accelerometer still does not work properly, you can try changing the settings in the configuration file. For more information on how to change the configuration file, you can refer to the Zorin OS Core documentation.