Hyperpixel driver for piCore


#1

Hi, is there any way of getting the Hyperpixel screen to work with piCore (TinyCore Linux)?


#2

I suspect that it’s possible, but I don’t know enough about the innards of piCore to approach giving it a try.

You should attempt to transplant the dtoverlay and config.txt changes into the right places, fire it up and then SSH in to copy over and run the hyperpixel4-init binary that initialises the display. Your mileage may vary but it’s worth a shot!


#3

Thanks for the reply.

It worked! - fantastic

For others using piCorePlayer or tinyCore just need to install git
tce-load -wi git
then clone the hyperpixel files
git clone https://github.com/pimoroni/hyperpixel4 hyperpixel

mount the boot partition
mount /mnt/mmcblk0p1

cd hyperpixel
I edited the install.sh file to use /mnt/mmcblk0p1 instead of /boot (probably an easier way of doing this but it works)

run the installer
./install.sh
reboot
run hyperpixel4-init from ~/hyperpixel/dist/


#4

OK so I have a picture but now does anyone have any ideas how to get the touch working with piCore?


#5

You will need the goodix touch kernel module compiled for the kernel you’re running, plus potentially i2c-dev. I strongly suspect you’d need a cross compile environment to accomplish this, but it’s not insurmountable.

I’m guessing tinyCore/piCore has no DKMS support/kernel headers (that would somewhat defeat the point although both may be available as packages) but you may be able to build this driver: https://github.com/AndrewCapon/HyperPixel4TouchScreen/tree/master/driver


#6

ok thanks
I managed to build the hyperpixel4 driver ok and it worked but struggling with the the goodix touch kernel module. There are indeed no DKMS or kernel headers with piCore. I might keep trying but think I am out of my depth now.


#7

ok i got the touch screen working but i have encountered the same problem reported in this thread:

The screen is reporting 800x480 but the touchscreen is reporting 480x800. This makes the calibration way off.
unfortunatley i cannot understand the conclusion to that thread, is there a firmware issue. Can anyone help?


#8

The solution is to replace the upstream gt911 drive with this one- https://github.com/pimoroni/HyperPixel4TouchScreen

I don’t know how you go about doing that in piCore, but the upstream (officially available as part of Linux) driver doesn’t support any of the calibration features of the touch chip.


#9

Thanks
I managed to replace the driver as suggested, rebuilt from source. It works but I
still have the same problem. In landscape mode X is reporting max 480 and Y is 800 it should be the other way round.


#10

Did you also swap over to the dts (needs to be compiled into a dtbo for your system using the dtc command) supplied in that repository?


#11

Hi,

Yes compiled the dts and a new dbto was created ok. There were couple of warnings but it appeared to work.

The new goodix.c also complied ok and goodix.ko works apart from the calibration is way off.

ts_calibrate reports xres=800 and yres=480 but touching the screen at maximum x reports 480 and max y reports 800.

Any help would be really appreciated, even its just a hack to the driver (I will only ever need it in landscape mode).

P.S. my config.txt contains
dtoverlay=hyperpixel4:rotate_3
display_rotate=3
display_lcd_rotate=3