Yio Remote Community

Touchscreen not working - advice please!

Just tried it and still no difference. :slightly_frowning_face: Could it be hardware related then?

I looked at vcdbg log msg and it seems the overlay is being loaded okay…

001533.104: brfs: File read: 23315 bytes
001533.533: brfs: File read: /mfs/sd/config.txt
001533.612: brfs: File read: 394 bytes
001535.649: brfs: File read: /mfs/sd/overlays/sharp.dtbo
001553.639: Loaded overlay 'sharp'
001618.773: brfs: File read: 1638 bytes
001620.486: brfs: File read: /mfs/sd/overlays/goodix.dtbo
001627.653: Loaded overlay 'goodix'

As an aside I also get the following HDMI errors:

001175.307: brfs: File read: 394 bytes
001175.772: hdmi: HDMI:EDID error reading EDID block 0 attempt 0
...
001187.508: hdmi: HDMI:EDID error reading EDID block 0 attempt 9
001188.574: hdmi: HDMI:EDID giving up on reading EDID block 0
001188.951: hdmi: HDMI:EDID error reading EDID block 0 attempt 0
...
001200.644: hdmi: HDMI:EDID error reading EDID block 0 attempt 9
001201.706: hdmi: HDMI:EDID giving up on reading EDID block 0
001201.792: hdmi: HDMI:hdmi_get_state is deprecated, use hdmi_get_display_state instead
001201.865: hdmi: HDMI:hdmi_get_state is deprecated, use hdmi_get_display_state instead

But progress, with dmesg | grep Goodix I get:

[    6.843334] Goodix-TS 3-005d: i2c test failed attempt 1: -6
[    6.883303] Goodix-TS 3-005d: i2c test failed attempt 2: -6
[    6.922651] Goodix-TS 3-005d: I2C communication failure: -6

Contents of /proc/interrupts is:

 17:       1131  ARMCTRL-level   1 Edge      2000b880.mailbox
 18:       3101  ARMCTRL-level   2 Edge      VCHIQ doorbell
 27:     283829  ARMCTRL-level  35 Edge      timer
 40:          0  ARMCTRL-level  48 Edge      bcm2708_fb dma
 42:          0  ARMCTRL-level  50 Edge      DMA IRQ
 44:          0  ARMCTRL-level  52 Edge      DMA IRQ
 45:       2141  ARMCTRL-level  53 Edge      DMA IRQ
 48:       3539  ARMCTRL-level  56 Edge      DMA IRQ
 53:       5896  ARMCTRL-level  61 Edge      bcm2835-auxirq
 80:       1983  ARMCTRL-level  88 Edge      mmc0
 86:     203649  ARMCTRL-level  94 Edge      mmc1
160:       5896  bcm2835-auxirq   0 Edge      ttyS0
164:     154178  pinctrl-bcm2835  18 Edge      gpiolib
Err:          0

Can you check if the proximity sensor is sitting right? Not sure if that could block the touch IC from initialisation.

The system can see the chip but on a different address. That is weird. I don’t see any HDMI errors on my pi. Can you check if you accidentally damaged something around the HDMI port?

I checked the proximity sensor and reapplied the connector again. Still no luck. What address should the touch screen be turning up on? 5d?

Not sure if I damaged the HDMI connector. I did take a chunk out around the front leg but I’m not sure it damaged anything.
image

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: