Close

Testing the Touchscreen

A project log for Liberating a $50 Windows Tablet

Installing Arch Linux on a Pipo W7

marblemarble 03/12/2018 at 05:492 Comments

After some googling around and good comments from friend of mine i was able to get some good key words to look for when trying to get the touchscreen running.

The first is silead. Silead Inc. is the manufacturer of the touchscreen and silead is also the Linux kernel module providing the driver.

lsmod  | grep silead
silead                 16384  0 
dmesg | grep silead
[    3.089142] silead_ts i2c-MSSL1680:00: i2c-MSSL1680:00 supply vddio not found, using dummy regulator
[    3.089179] silead_ts i2c-MSSL1680:00: i2c-MSSL1680:00 supply avdd not found, using dummy regulator
[    3.089698] silead_ts i2c-MSSL1680:00: Silead chip ID: 0x50910000
[    3.234661] silead_ts i2c-MSSL1680:00: Direct firmware load for silead/mssl1680.fw failed with error -2
[    3.234671] silead_ts i2c-MSSL1680:00: Firmware request error -2
[    3.235217] silead_ts: probe of i2c-MSSL1680:00 failed with error -2

Here we get the chip ID 0x50910000 and also the path where it assumes a firmware silead/mssl1680.fw (this path is relative to /lib/firmware/ so the full path ist /lib/firmware/silead/mssl1680.fw)

On GitHub there is a repository containing these firmware files for multiple tablets, but mine. But there is a firmware for the PiPO W2S. So I tried it out.

git clone https://github.com/onitake/gsl-firmware
sudo mkdir -p /lib/firmware/silead/
sudo cp gsl-firmware/firmware/linux/silead/gsl1680-pipo-w2s.fw /lib/firmware/silead/mssl1680.fw
sudo rmmod silead; sudo modprobe silead
dmesg | grep silead
[    3.089142] silead_ts i2c-MSSL1680:00: i2c-MSSL1680:00 supply vddio not found, using dummy regulator
[    3.089179] silead_ts i2c-MSSL1680:00: i2c-MSSL1680:00 supply avdd not found, using dummy regulator
[    3.089698] silead_ts i2c-MSSL1680:00: Silead chip ID: 0x50910000
[    3.234661] silead_ts i2c-MSSL1680:00: Direct firmware load for silead/mssl1680.fw failed with error -2
[    3.234671] silead_ts i2c-MSSL1680:00: Firmware request error -2
[    3.235217] silead_ts: probe of i2c-MSSL1680:00 failed with error -2
[    3.156110] silead_ts i2c-MSSL1680:00: i2c-MSSL1680:00 supply vddio not found, using dummy regulator
[    3.156145] silead_ts i2c-MSSL1680:00: i2c-MSSL1680:00 supply avdd not found, using dummy regulator
[    3.158094] silead_ts i2c-MSSL1680:00: Silead chip ID: 0x50910000
[    6.133417] input: silead_ts as /devices/platform/80860F41:01/i2c-1/i2c-MSSL1680:00/input/input7
sudo cat /dev/input/mouse0

When running the last command and touch around on the display, I get gibberish, which means, it works in gerenal. When running the X server, the curser wasn't below my finger and also the axis seemes swapped. So apparently some configuration and calibration is needed.

Discussions

Scorpion2185 wrote 09/08/2018 at 10:14 point

You can extract the firmware from the driver of your device using that repository don't convert it. Then place it in /lib/firmware/silead/ with the name that you had referred in the /driver/platform/x86/silead_dmi.c of the custom  kernel. Also made a copy with the mssl1680.fw name  (backup firmware) in that folder. Then using onboard or a screen-keyboard (with some settings) you have the touchscreen!

  Are you sure? yes | no

marble wrote 01/14/2021 at 13:01 point

Thanks for the pointer! :-)
I did that and updated the file in the uploads section.

  Are you sure? yes | no