Yio Remote Community

Touchscreen not working - advice please!

It should show up as UU, when the kernel loaded the driver.

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: 20 21 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- 39 -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- 55 -- -- -- -- 5a -- -- UU -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --    

There could be many reasons. I circled a couple of areas on the picture that could be problematic. I don’t know if these scratches are cutting traces or not. Also I see a weird thing around the HDMI port. A little extra leg?

37bdc2377ca3611d15a6d9e50563d7f25b74b515

The ribbons are fragile, please be careful inserting them a lot of times. Could you take a picture of the other side where the small FPC connector is and also the ribbon of the display?

Not sure what that was near the HDMI port. I just flicked it off, it wasn’t attached. I thinks it’s crap from my workbench I’m sat at now!

Could be damage around the ground I suppose? Seems weird as everything was working fine for a number of days.

Have you seen this post about an issue with the Pi 4 where it would allocate 0x14 in place of 0x5d potentially due to temp issues. I2C select feature for the touchscreen is based on interrupt pin being pulled one way or the other on init? Is this a possibility? Http://github.com/pimoroni/hyperpixel4/issues/41

Haven’t seen this issue about the hyperpixel, but it looks quite similar. The touch IC shows up on a different i2c address. A short between pins could cause this. Could you check the small FPC connector? No debris or anything that could cause a short there?

I have been using the remote for 1,5 years and had no overheating issues.

This is the original overlay that is used:

// Device tree overlay for I2C connected Goodix gt911 touch controller
/dts-v1/;
/plugin/;

/ {
        compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";

        fragment@0 {
                target = <&gpio>;
                __overlay__ {
                        goodix_pins: goodix_pins {
                                brcm,pins = <26 19>; // interrupt and reset
                                brcm,function = <0 0>; // in
                                brcm,pull = <2 2>; // pull-up
                        };
                };
        };

        fragment@1 {
                target = <&i2c_gpio>;
                __overlay__ {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "okay";

                        gt911: gt911@5d {
                                compatible = "goodix,gt911";
                                reg = <0x5d>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&goodix_pins>;
                                interrupt-parent = <&gpio>;
                                interrupts = <26 2>; // high-to-low edge triggered
                                irq-gpios = <&gpio 26 0>; 
                                reset-gpios = <&gpio 19 0>;
                        };
                };
        };
};

You can see that it is looking for 0x5d. If you have a raspbian image around, load that to the sd card, create a file called goodix-fix.dts:

// Device tree overlay for I2C connected Goodix gt911 touch controller
/dts-v1/;
/plugin/;

/ {
        compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";

        fragment@0 {
                target = <&gpio>;
                __overlay__ {
                        goodix_pins: goodix_pins {
                                brcm,pins = <26 19>; // interrupt and reset
                                brcm,function = <0 0>; // in
                                brcm,pull = <2 2>; // pull-up
                        };
                };
        };

        fragment@1 {
                target = <&i2c_gpio>;
                __overlay__ {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "okay";

                        gt911: gt911@5d {
                                compatible = "goodix,gt911";
                                reg = <0x14>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&goodix_pins>;
                                interrupt-parent = <&gpio>;
                                interrupts = <26 2>; // high-to-low edge triggered
                                irq-gpios = <&gpio 26 0>; 
                                reset-gpios = <&gpio 19 0>;
                        };
                };
        };
};

Then run the command:
* dtc -@ -I dts -O dtb -o goodix-fix.dtbo goodix-fix.dts

Copy the dtbo file to the YIO sd card into /boot/overlays/, edit the config.txt to load goodix-fix instead of goodix.

Looks like the YIO display is quite similar to the hyperpixel, so I hope this will fix the issue :slight_smile:

I did as you state above. Not sure if this is progress or not.

001670.720: brfs: File read: 1638 bytes
001672.451: brfs: File read: /mfs/sd/overlays/goodix-fix.dtbo
001679.420: Loaded overlay 'goodix-fix'

i2cdetect now reads:

 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- --
20: 20 21 -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- 39 -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- 55 -- -- -- -- 5a -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

and dmesg now reads:

[    7.174245] Goodix-TS 3-0014: ID 911, version: 1060
[    7.174527] Goodix-TS 3-0014: Direct firmware load for goodix_911_cfg.bin failed with error -2
[    7.188167] i2c-gpio i2c@0: using pins 10 (SDA) and 11 (SCL)
[    7.223656] input: Goodix Capacitive TouchScreen as /devices/platform/i2c@0/i2c-3/3-0014/input/input0

but touchscreen is still not responding. Is the issue with the firmware not loading?

I did see a missing part of the pi:
Right beside the hdmi port and the big capacitor is an empty space where normaly another part sits. Dunno what this is for:

I’m currently only on my mobile phone so can’t check better.

I think it is progress. Could you check if you ssh into the pi and do this: cat /dev/input/event0 then touch on the screen. Do you see something appearing?

dmesg gives me the same about the driver actually, except for the address:

[    6.544346] Goodix-TS 3-005d: ID 911, version: 1060
[    6.544629] Goodix-TS 3-005d: Direct firmware load for goodix_911_cfg.bin failed with error -2
[    6.558643] i2c-gpio i2c@0: using pins 10 (SDA) and 11 (SCL)
[    6.592914] input: Goodix Capacitive TouchScreen as /devices/platform/i2c@0/i2c-3/3-005d/input/input0```

I tried cat /dev/input/event0 and nothing.

Good spot in the picture above!! It looks like I did f it up!! So I guess the next step is to swap out the Pi. I have another Pi Zero W and a desoldering gun in the post so I can try swapping the Pi out later in the week…although that be could the source of the HDMI errors?

I have no idea why it was all working perfectly and then just stopped though.

I don’t know for what the piece is, but it may be a current limiter or such a thing. And therefor it may be an issue. I can try to find more I fo about it, but this will take me a moment.

Looks like something is mixing up the interrupt pin. You can also try the suggested hardware mod in the hyperpixel issue thread: solder a 1Mohm/330k/150k resistor between the touch interrupt pin (PIN37) and 3.3V.

In this case, use the original goodix.dtbo file

Also check for shorts with the neighbouring pins around the interrupt pin(37).

No luck with the resistor. Changed it back to the standard dtbo file and it still appeared at 0x14. No shorts on pin 37 either.

What resistor did you use? You can also try soldering a resistor between pin 35(one below the one on the top) and 3.3V. That is the reset pin.

I used 1M as advised. I just tried a 1M also between pin 35 and 3.3v as advised but no change.

Do you maybe have 10k resistor to try with on both lines?

Yes, I have just about every value here. Okay so kinda progress. I got a touch event to register with a 10k between pin37 and 3.3v. It then stopped working. I fired up cat /dev/input/event0 and some garbled crap come out but also the remote wasn’t behaving - when i used the hard buttons to move left and right the main page wasn’t updating for instance so it was unstable.

With both resistors connected I got nothing.

It continues to appear at 0x14 btw.

Update went back to the single resistor and the touch is working.Update again… no it stopped working. :rofl:

Ok. Cool. So what resistor where? :slight_smile: just so we have the solution here.

I don’t know what happened. With the 10k between pin37 and 3.3V it work for about 5 seconds. When I went back to it it didn’t work anymore and now I can’t get it to repeat this behaviour.

Maybe 10k is not enough. Try with 100k.