DevTerm Touch - A Touchscreen Mod for the DevTerm

Hello, in this thread I’ll introduce my touchscreen mod for the DevTerm.
This was one year in the making, and I want to share my findings with the community here.

DevTerm with usable touchscreen

This mod has one constraint: do not use the EXT IO.
With the wonderful work already done in The booby-trapped DevTerm GPIO I managed to use the PMU I2C and interrupt to attach a GPIO expander giving me the additional inputs and outputs to attach a Goodix GT911 driven touchscreen.

With an initial prototype working, I designed a flex PCB which connects the touchscreen to the forbidden connector.

To tie it together, I created a device tree overlay which ties the touchscreen to the expander, and the expander to the CPU’s GPIO.

/dts-v1/;
/plugin/;

#include <dt-bindings/clock/rk3399-cru.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/rk3399-power.h>

/{
	/*compatible = "brcm,bcm2835";*/
	compatible = "rockchip,rk3399";

    fragment@1 {
        target = <&i2c5>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            
            status = "okay";
            touchgpio:touchio@20 {
                compatible = "microchip,mcp23008";
                reg = <0x20>;
                gpio-controller;
                #gpio-cells = <2>;
                interrupt-parent = <&gpio3>;
                interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
                interrupt-controller;
                #interrupt-cells=<2>;
                //microchip,irq-mirror;
                drive-open-drain;
                };
            gt911@5d {            
                compatible = "goodix,gt911";
                reg = <0x5d>;
                interrupt-parent = <&touchgpio>;
                interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
                irq-gpios = <&touchgpio 1 0>;
                reset-gpios = <&touchgpio 2 0>;
                //goodix,int-sync = <1>;
                touchscreen-size-x = <1280>;
                touchscreen-size-y = <480>;
                touchscreen-inverted-x = <1>;
                touchscreen-inverted-y = <1>;
            };
        };
    };
};

With any distro allowing for device tree overlays, this is easy to install.
I am using yatli’s Clockworkpi Arch Linux.

Lastly, as the touchscreen needs some room I slightly increased the vertical size of the top shell and cut out some room for the touchscreen internally.
You can tell by how the keys and buttons are a bit more recessed, but that does impact usability only slightly if not at all.

I know with the uConsole and the PicoCalc the DevTerm isn’t the hot thing anymore, but I hope this is somewhat interesting to people who still use it occasionally.

8 Likes

I must say ,great work

How about release the patch and anything else.

I think it is very interesting

3 Likes

Wow! Fantastic work. Since the Alps track ball barely functions, I can see how this can be a great asset. I for one am DevTerm bound… at least after I manage to get an ARM CPU, an RTC installed and come up with a viable pointing device… Unfortunately I don’t get along with capacitive touch anything.

I just have to repeat: this really is “cool”! :smiley:

1 Like

Very exciting! I’d love to know more about how your board fits into the DevTerm and what display you’re using.

1 Like

Here’s a few more photos which will clear things up hopefully.
Hopefully I don’t have to disassemble it again soon because stowing the cable is very finicky,
but once it’s in place there are no issues.

As you can see, it’s not a new display but a standalone touch panel.
I had to go to moderate lengths to get samples from a manufacturer, so it’s not some part ready to be bought off Aliexpress I think.
Sure, you can individually request samples but that would annoy the crap out of my supplier I think.

Regarding release of design files, I’ll need to make one major correction with the flexible PCB.
I made the mistake of putting the fingers for the touchscreen on the other side, so the hack to make it work is to bend the ribbon cable in half so that it does make contact.
Patches are not needed, the stock Linux Kernel 6 supports the GT911 out of the box if I’m not mistaken. Maybe I configured the kernel but I can’t remember, I don’t think I needed to.

3 Likes