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:
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.
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??