Minibook N4100 touch screen firmware Linux

Hi,
il installed Ubuntu 19.10.
Impossible to have the touchscreen avalaible.

I tried this firmware https://github.com/onitake/gsl-firmware , the touch works but not in the good place.
I tried different Coordinate Transformation Matrix but no way.

Is there a special firwmare for the minibook ?
Thx

Vincent

Hi Vince,
did you find the solution?

No solution yet. I had a big problem with the bios (without flashing) when i activated Linux as OS (black screen), obliged to return to the factory, 3 months for the repair and return 

If you find a solution, i m interested.
Best ,

I followed the gslx680_ts_acpi step in https://github.com/onitake/gsl-firmware (using firmware in http://www.mediafire.com/file/b1ccd9mqvxphuox/Mini_Book-drivers.rar/file ). Touch now works, not perfectly but works. Tomorrow i will try another way to stabilize the touchscreen

1 Like

Looks like the firmware files will work fine if installed correctly.

If they’re for the same device as mentioned in the git repo and if the device have the same model of the touchscreen controller chip then it should work.

@white_sheep how did you install the firmware?

@white_sheep
you say: doesn’t work perfectly, Is it usable?
I can also get the touchscreen to work, but there’s a problem with the position. When you touch one place, the cursor appears in another place.

I got the touchscreen working using the extracted firmware from the windows drivers with the tools from here: github.com/onitake/gsl-firmware

the file needs to be placed under: /lib/firmware/silead/mssl1680.fw in order to be found by silead kernel module which needs to be present and loaded. this way he touchscreen gets recognized.

the next problem is the callibration. I used https://github.com/reinderien/xcal to calibrate the screen (note that I had to select disable rotation: no)

the libintput rotation matrix that I ended up with is

-0.003622923570787379  3.709528216791325    -0.004723837559728938 
 2.442943240520969    -0.014587762028163658 -0.008818738010799037 
 0.0                   0.0                   1.0

I modified the script from rubo77s script (https://pastebin.com/ha3twD3Q) to automatically rotate the screen based on the sensors.

Im using nixos and had to configure everything by hand but more integrated distros like ubuntu might automate some of that.

hope it helps.

2 Likes

Hello and welcome to the forum,

This is good to see chuwi device getting more linux support
Nice work. Hope someone with minibook can make use of your finding.

Keep contributing.
Thanks.

“chuwi device getting more linux support” I wouldn’t go that far :wink:

I have the same problem than Alda (Linux on Chuwi Minibook 8) about linux installed on sata drive. I tested different kernel version and with the lastest 5.6 and the same problem. I can’t install ubuntu without errors, i can install fedora c31 and use it but sometimes i have some freezes. Dmesg return some errors about sata. The sollution will be to install Linux on the emmc memory but i prefere to keep windows on that.

In addition, I have a doubt about the stability of the machine. I just modified a parameter in the BIOS about OS feature and the result was a black screen with the impossibility to boot, obliged to return to the factory :frowning:

@exel
Thank you exel, i will test your matrix.

This must be something from bios side, so maybe chuwi can fix such issues in the future.

Let’s hope for the best though :slight_smile: hopefully we will see many devices with linux pre-installed and officially supported.

I had the same problems with the sata and finally installed on the emmc drive because I thought the sata was just broken. Also I still cant get the system to predict the battery state.

Would be excited to see these things fixed.

The machine is cheap and good enough. Unfortunately there’s these problems with the bios (my fan won’t turn off) and the support (aka. bios updates via media fire links in this forum’) is a total joke


Yes i share your point of vue, in addition the linux compatibility is a joke :wink:
Too bad they had announced an official linux compatibility on chuwi’s official website :frowning:

I don’t dare to modify anything in the bios afraid of having to return it to the factory again, and for the flashing let’s not talk about it 


Concerning a linux support, let’s not talk about it, the only feedback I got on the touchsreen is that the minibook doesn’t support it under linux.

i had the same problem, the solution was to disconnect the battery from the motherboard for about 1 hour >> then returned the BIOS to its original values and the laptop began working again

to do it I had to break the warranty sticker :frowning:

hi exel, thank you for your message

I’m trying ubuntu 20.04 (beta), the screen rotation works great (the screen rotation works out of the box)

I’m trying to make the touch screen work - there is my problem
I uploaded the file mssl1680.fw to /lib/firmware/silead/mssl1680.fw - the touch screen began work, but as exel wrote, the problem is with calibration,
i tried calibrate it via xcal (GitHub - reinderien/xcalibrate: X.org touchscreen calibrator) but it doesn’t work in ubuntu 20.04 and i don’t know how it do it
is there somebody, who did it in ubuntu and can help me with calibration?

thank you

Hello,
Have you tried xinput calibrate?
Here is a very old tutorial on how to calibrate touchscreen.
https://www.thefanclub.co.za/how-to/how-ubuntu-1204-touchscreen-calibration
Someone with good linux knowledge who have the device to test can help. As I don’t have the device I can only point you in the right direction but cannot really get things working.

All the best.

hi spikerguy, at first thank you for your message and for your link

utouch is not available in ubuntu 20.04, so i installed only xinput-calibrator, but the output of this was this:

Calibrating standard Xorg driver “silead_ts”
current calibration values: min_x=0, max_x=65535 and min_y=0, max_y=65535
If these values are estimated wrong, either supply it manually with the --precalib option, or run the ‘get_precalib.sh’ script to automatically get it (through HAL).
→ Making the calibration permanent ←
copy the snippet below into ‘/etc/X11/xorg.conf.d/99-calibration.conf’ (/usr/share/X11/xorg.conf.d/ in some distro’s)
Section “InputClass”
Identifier “calibration”
MatchProduct “silead_ts”
Option “MinX” “32207”
Option “MaxX” “32184”
Option “MinY” “14600”
Option “MaxY” “14454”
Option “SwapXY” “1” # unless it was already set to 1
Option “InvertX” “0” # unless it was already set
Option “InvertY” “0” # unless it was already set
EndSection

i think, that MinX, MaxX, MinY, MaxY have wrong values
i tried instruction from your link or from this link Chuwi Hi10 Air Linux Installation Guide | Page 5 | XDA Forums but unfortunately nothing works (maybe I did it wrong)

I tried this tutorial Ubuntu 18.10 calibration. · Issue #95 · onitake/gsl-firmware · GitHub and make script

#!/bin/bash

set -e

TOUCHSCREEN=‘silead_ts’
XDISPLAY=‘DSI-1’
TRANSFORM=‘libinput Calibration Matrix’

X_SCALE=2.17
Y_SCALE=3.22
X_OFFSET=-0.045
Y_OFFSET=-0.004

if [ -z “$1” ]; then
ROTATION=right
else
ROTATION=$1
fi

xrandr --output $XDISPLAY --rotate $ROTATION
xinput set-prop ‘silead_ts’ --type=float “$TRANSFORM” 0 $Y_SCALE $Y_OFFSET $X_SCALE 0 $X_OFFSET 0 0 1
xinput --map-to-output “$TOUCHSCREEN” “$XDISPLAY”

the touchscreen works better, but it is not exactly calibrated yet
I don’t know how to calculate X_SCALE, Y_SCALE, X_OFFSET and Y_OFFSET for Chuwi Minibook yet

maybe it will help someone or someone tell me how to do it

hi, i am idiot :grinning:
the value for X_SCALE, Y_SCALE, X_OFFSET and Y_OFFSET can i take from @exel, so the script is now:

#!/bin/bash

set -e

TOUCHSCREEN=‘silead_ts’
XDISPLAY=‘DSI-1’
TRANSFORM=‘libinput Calibration Matrix’

X_SCALE=2.442943240520969
Y_SCALE=3.709528216791325
X_OFFSET=-0.014587762028163658
Y_OFFSET=-0.004723837559728938

if [ -z “$1” ]; then
ROTATION=right
else
ROTATION=$1
fi

xrandr --output $XDISPLAY --rotate $ROTATION
xinput set-prop ‘silead_ts’ --type=float “$TRANSFORM” 0 $Y_SCALE $Y_OFFSET $X_SCALE 0 $X_OFFSET 0 0 1
xinput --map-to-output “$TOUCHSCREEN” “$XDISPLAY”

it looks like it works :+1:

1 Like

Yeayyy finally. Good news that touch screen works fine :wink:

1 Like