hyperpixel4
hyperpixel4 copied to clipboard
dtoverlay settings in /boot/config.txt sporadically applied depending on i2c address / temperature, solution?
Bug description and reproduction steps
I'm trying to rotate the display and the touch-overlay from portrait to landscape.
I tried both the one-line-installation for the rpi4 with and without "experimental touch fix".
The command "hyperpixel4-rotate left" led to a correct display rotation with inverted touch-overlay and also the rotation did not persist after reboot, so I rotated back with hyperpixel4-rotate normal.
I then edited /boot/config.txt
out-commenting:
#dtoverlay=vc4-fkms-v3d
and adding
display_lcd_rotate=3
and then
dtparam=touchscreen-swapped-x-y=1
dtparam=touchscreen-inverted-x=1
after
dtoverlay=hyperpixel4
or instead writing
dtoverlay=hyperpixel4, touchscreen-swapped-x-y=1, touchscreen-inverted-x=1
complete config.txt: https://gist.github.com/fhb/4f45b8d86cfb7bb011703334c275983f
This led to a temporary solution with both screens and touch-overlay being rotated properly. But after a reboot of the RPI I'm stuck with the touchscreen x-axis being inverted and my settings in /config.txt regarding the dtoverlay don't seem to have an effect. Reading through the documentation and the documented issues I found that the touchscreen driver tries to connect through i2c to the addresses 0x5d and 0x14, one of them failing. The cause of the dtoverlay settings in /boot/config.txt being applied or ignored seems to be related to the temperature dependent address switch. After shutting down and letting the display and rip4 cool down, the touchscreen connects to 0x14 and the dtoverlay settings get applied. After a "hot" reboot and the touchscreen being connected to 0x5d the setting gets ignored. This seems to be a consistent finding.
-
How do you suggest getting the settings applied to both cases?
-
Is the "experimental touch fix" offered by the installer what's been described as trying to reach both display addresses in https://github.com/pimoroni/hyperpixel4/issues/41?
-
Is the i2c error documented below expected behaviour due to trying both addresses in the "experimental touch fix" version?
-
Is my hyperpixel4 already a hardware revised model or can the hardware fix with a 1meg resistor still be applied?
-
I suppose the "experimental touch fix" is not necessary after a the hardware fix?
-
How relevant is the order of instructions in /boot/config.txt? Could this also be the cause of ignored dtoverlay settings?
Your HyperPixel 4 Rectangular, Touch, purchased a week ago, connected via gpio
Your Raspberry Pi RPI4 Revision : b03114 with OctoPi, Raspbian GNU/Linux 10 (buster) 5.10.17-v7l+
Extra debugging information
-
dmesg | grep Goodix
for HyperPixel 4.0" Rectangular warm/settings ignored
[ 5.959145] Goodix-TS 11-005d: ID 911, version: 1060 [ 5.983433] Goodix-TS 11-005d: Checking firmware [ 5.985364] input: Goodix Capacitive TouchScreen as /devices/platform/i2c@0/i2c-11/11-005d/input/input1 [ 5.987206] Goodix-TS 11-0014: i2c test failed attempt 1: -6 [ 6.034212] Goodix-TS 11-0014: i2c test failed attempt 2: -6 [ 6.083566] Goodix-TS 11-0014: I2C communication failure: -6
-
dmesg | grep Goodix
for HyperPixel 4.0" Rectangular cold/settings applied
[ 6.241638] Goodix-TS 11-005d: i2c test failed attempt 1: -6 [ 6.274569] Goodix-TS 11-005d: i2c test failed attempt 2: -6 [ 6.323971] Goodix-TS 11-005d: I2C communication failure: -6 [ 6.326096] Goodix-TS 11-0014: ID 911, version: 1060 [ 6.350466] Goodix-TS 11-0014: Checking firmware
-
ls /dev/i2c-*
/dev/i2c-11
-
i2cdetect -y 11
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --