Skip to content

touchscreen

kotc edited this page Jul 19, 2019 · 15 revisions

how to enable touchscreen on your h3droid

1/ first determine kind of device you have (usb or i2c/spi)
2/ if it's usb, check lists below to determine driver
3/ add following line to /data/rc.local to be executed on every boot: modprobe yourdriver, for example: modprobe usbtouchscreen or modprobe hid-multitouch
4/ if you device is of resistive type it might require calibration and additional parameters to above command. instructions are further down this page
5/ i2c/spi touch is for advanced users. choose usb one if you can
6/ if you have any troubles, feel free to join us on irc and we will try helping you
7/ send beer

module name "usbtouchscreen"

works with usb device ids:

0123:0001
0403:F9E9
04E7:0020
0596:0001
0637:0001
0664:0306
0664:0309
08F2:007F
08F2:00CE
08F2:00F4
0AFA:03E8
0DFC:0001
0EEF:0001
0EEF:0002
0EEF:0005
0F92:0001
10F0:2002
1234:0001
1234:0002
1234:5678
134C:0001
134C:0002
134C:0003
134C:0004
1391:1000
14C8:0003
16E3:F9E9
1870:0001
1AC7:0001
3823:0001
3823:0002
595A:0001
6615:0001
7374:0001

available parameters:

swap_xy : If set X and Y axes are swapped. (bool)
reverse_y : If set Y axe is reversed. (bool)
reverse_x : If set X axe is reversed. (bool)
hwcalib_xy : If set hw-calibrated X/Y are used if available (bool)
debug : set to 1 to enable debug (bool)
xoffs : x offset, def:0 (x+xoffs) (int)
yoffs : y offset, def:0 (y+yoffs) (int)
xscale : x scale %, def:100 (xscale/100) (int)
yscale : y scale %, def:100 (y
scale/100) (int)
egalax_mt_pkt_len : def: 25, might be 23 or 22 too (int)

module name "hid-multitouch"

works with usb device ids:

03EB:2118
03EB:211C
0408:3000
0408:3001
0408:3008
0483:3261
0486:0185
0486:0186
04B4:C001
04DA:1044
04DA:104D
04E7:0022
0596:0500
0596:0502
0596:0506
0603:0600
062A:7100
093A:8001
093A:8002
093A:8003
0DFC:0003
0EEF:0005 <-- doesnt work with "hid-multitouch", use "usbtouchscreen"
0EEF:480D
0EEF:480E
0EEF:7207
0EEF:720C
0EEF:7224
0EEF:722A
0EEF:725E
0EEF:7262
0EEF:726B
0EEF:72A1
0EEF:72AA
0EEF:72FA
0EEF:7302
0EEF:7349
0EEF:A001
1403:5001
1477:1006
1477:1007
1477:100E
1477:1021
1477:1022
1477:1023
1477:1024
1477:1025
1477:1026
14E1:3500
1784:0016
1AAD:000F
1CB6:6650
1CB6:6651
1E5E:0313
1F87:0002
1FD2:0064
1FF7:0013
202E:0006
202E:0007
2087:0703
2087:0A01
2087:0A02
2087:0B03
2087:0F01
20B3:0A18
2101:1011
222A:0001
2247:0001
227D:0709
227D:0A19
22ED:1010
2453:0100
2505:0220
6615:0070

usbtouchscreen.ko module

It drives many popular TS and accepts few calibration parameters. Procedure requires root shell (either ssh/adb/uart) so you will be able to: rmmod usbtouchscreen; modprobe usbtouchscreen params..
To get a full list of available params do: modinfo usbtouchscreen.ko

If you need to calibrate it, you can try following procedure:
1/ install some "screen test" app that allows you to see the touches
2/ start with reverse_x (or y)
3/ then adjust xscale param (default is 100) until pointer on the screen moves the same speed as your finger
4/ ..then yscale
5/ adjust xoffset and yoffset (default is 0)
6/ add final line to /data/rc.local (modprobe usbtouchscreen xscale=... etc) to enable TS on every boot
7/ report your failure/success to #h3droid on irc.freenode.com and optionally send us some beer!

user provided goodix gt911 i2c touchscreen example:

How to connect GT911 Goodix touchscreen to OrangePi with H3Droid

You need:

  1. Touchscreen Goodix GT911
  2. OrangePi
  3. H3Droid

First stage is correct connection touchscreen to OrangePi. Pinout:

OrangePi: Goodix GT911:
1 3.3V VCCa
3 PA12 SDA
5 PA11 SDL
7 PA06 RST
9 GND GND
11 PA01 INT

Additional information: https://linux-sunxi.org/Touchscreen

Second stage - configure FEX (script.bin), boot H3resc (long press on 'restart' in power menu) and choose "edit fex" mode. Next add/edit those lines to end of fex file:

[ctp_para]
ctp_used = 1
ctp_twi_id = 0
ctp_name = "Goodix-TS"
ctp_twi_addr = 0x14

ctp1_used = 1
ctp1_twi_id = 0
ctp1_name = "Goodix-TS"
ctp1_twi_addr = 0x5d

ctp_screen_max_x = 1024 #X Settings
ctp_screen_max_y = 600 #Y Settings
ctp_revert_x_flag = 0 #Set this and ctp_revert_y_flag to 1 to flip x and y axis
ctp_revert_y_flag = 0
ctp_exchange_x_y_flag = 0
ctp_int_port = port:PA01<6> #INT port settings
ctp_wakeup = port:PA11<1><1> #Wakeup port settings
ctp_io_port = port:PA12<0> #IO Port Settings
rst_port = port:PA06<1> #RST port settings

[ctp_list_para]
ctp_det_user = 1
gt8xx = 1
gt911 = 1
gt911_ts = 1
gt9xx_ts = 1
gt9xxf_ts = 1
gt818_ts = 1

Next, make modules load on h3droid boot, example uses vi, but you can use nano or mcedit editors too. Choose option 11 to spawn shell then:

vi /mnt/data/rc.local

In vi editor you need enable insert text mode - press "i" or "INSERT" key on your keyboard and add those lines:

modprobe gt9xx_ts
modprobe gt9xxf_ts

Next press "esc" twice to exit edit mode, next enter "ZZ" to save and exit. Configuration is done and you can reboot your system.

Enjoy! Your touchscreen is working! =)

even more advanced way to make touchscreen work

https://4pda.ru/forum/lofiversion/index.php?t871043-40.html
gtranslated: https://translate.google.com/translate?hl=en&sl=auto&tl=en&u=https%3A%2F%2F4pda.ru%2Fforum%2Flofiversion%2Findex.php%3Ft871043-40.html