Enabling GT911 Touchscreen on Raspberry Pi Zero 2W with Yocto
A step-by-step guide to configuring Yocto recipes and hardware setup for the GT911 touch controller
February 4, 2026

Enabling GT911 Touchscreen on Raspberry Pi Zero 2W with Yocto

Raspberry Pi Zero 2W 기반으로 나만의 E-paper Device를 만들기 위해 7.5인치 E-Ink 디스플레이와 터치스크린을 구매했습니다.
E-Ink 디스플레이에 GT911 터치스크린이 결합된 Goodix 제품인데, 아마존에서 저렴하게 판매하길래 망설임 없이 구매했습니다.

이전 글에서 만든 meta-jooojub-rpi를 수정하여 제가 구매한 터치스크린과 E-Ink가 동작하도록 Yocto를 수정해 보려고 합니다.

우선 이번 글에서는 GT911 터치스크린을 먼저 활성화해 보겠습니다.

1. Hardware Setup

구매한 Goodix 제품은 아래와 같습니다.

Specification Drawing를 보면 터치스크린은 GT911 IC를 사용하며 I2C 통신을 합니다.
E-Ink 디스플레이는 SPI를 사용하며 별도 컨트롤러가 필요해 보입니다.

GDEY075T7-T01 Specification Drawing

다행히 E-Ink 디스플레이 컨트롤러는 기존에 가지고 있던 것을 사용했습니다.
문제는 터치스크린인데, FPC 연결을 위한 커넥터 여유분이 없어서 인터넷으로 따로 주문해야 했습니다.

Pin Map을 보며 GPIO를 연결했고, 최종적으로 아래와 같이 하드웨어 구성이 완성되었습니다.

HW Configuration

지금 당장 샘플 코드로 테스트해 보고 싶었지만, 우선 Yocto로 이미지를 구성하기로 했습니다.

2. Modifying Yocto Recipes - DT overlay

최신 라즈베리파이 커널 소스에서 overlay DT를 발견 하였습니다. 이를 사용하면 터치스크린을 쉽게 활성화할 수 있을 것 같습니다.

원하는 수정 사항을 적용하기 위해 goodix-overlay.dts 파일을 meta-jooojub-rpi 내 적절한 위치로 복사하고, Yocto 빌드 시 복사되도록 설정해줍니다.

기존 kernel 빌드는 그대로 유지하면서 원하는 동작을 추가하거나 삭제하려면 .bbappend 파일을 생성하면 됩니다.
meta-jooojub-rpi에 아래 파일을 추가해서 goodix overlay 사용하도록 합니다.

recipes-kernel/linux/linux-raspberrypi_%.bbappend
make

이제 files 디렉토리를 만들고 goodix-overlay.dts를 복사한 뒤 원하는 값을 수정합니다.
저는 제 하드웨어 구성에 맞게 size-x, size-y와 실제 물리적 사이즈를 추가했습니다.
그리고 터치스크린을 세로로 세워서 사용할 예정이므로 inverted-y와 swapped-x-y를 추가했습니다.

recipes-kernel/linux/files/goodix-overlay.dts
shell

이제 dtoverlay=goodix를 라즈베리파이 config에 추가해야 하는데, meta-raspberrypi를 살펴보니 RPI_EXTRA_CONFIG를 통해 설정할 수 있을 것 같습니다.

이러한 설정은 이전에 생성한 distro에 추가하면 됩니다.
이번에 설정하는 김에 i2c 사용을 위한 설정과, init manager를 기존 sysvinit에서 systemd를 사용하도록 수정하겠습니다.

conf/distro/rpi0-2w.conf
diff

3. Modifying Yocto Recipes - GT911 firmware

빌드 후 부팅해 보니 goodix는 정상적으로 probe 되었으나, firmware가 없다는 메시지가 나타났습니다.

Attempting to load firmware
shell

goodix 드라이버 코드에서 펌웨어의 역할을 찾아보니 GT911이 사용하는 Configuration 값들이었습니다.

drivers/input/touchscreen/goodix.c - goodix_config_cb
c
drivers/input/touchscreen/goodix.c - goodix_config_cb, goodix_send_cfg
c

GT911의 불친절한 매뉴얼을 보면 0x8047Configuration Information (R/W)임을 확인할 수 있습니다.
GT911 User Manual - Configuration Information

제 하드웨어 구성에 맞게 펌웨어를 설정해야 했는데, Goodix에서는 따로 제공해준 펌웨어는 없었습니다.
설명이 불충분한 GT911 developer manualLLM의 RAG를 이용하여 하나하나 테스트하며 펌웨어를 만들 수밖에 없었습니다.

이렇게 만들어진 goodix_911_cfg.bin 파일을 Yocto가 빌드될 때 원하는 위치에 복사되도록 패키지로 구성하였습니다.

Yocto에서 패키지를 만드는 방법은 간단합니다.
원하는 패키지 이름으로 .bb 파일을 만들고, IMAGE_INSTALL에 추가하면 됩니다.

recipes-bsp/goodix-firmware/goodix-firmware.bb
shell

4. Modifying Yocto Recipes - INSTALL packages

마지막으로 필요한 패키지들을 설치하도록 image recipe를 수정합니다.
이후에 필요할 것으로 예상되는 패키지들도 함께 추가했습니다.

recipes-core/images/jooojub-rpi0-2w.bb
diff

5. Build and test

이제 이미지 빌드 후 터치스크린이 잘 동작하는지 테스트해 보겠습니다.

Build and flashing to SD Card
shell

빌드 된 이미지를 Flash 한 후 부팅 하면 기존에 있었던 firmware load 실패 로그도 사라졌습니다.

Attempting to load firmware
shell

i2c-detect로 보면 문제 없이 probe 된거 같네요.

i2cdetect
shell

evtest로 터치 테스트 해보니 정상적으로 원하는 event 가 올라옵니다.

evtest
shell

6. Next Steps

GT911 터치스크린을 probe하기 위한 firmwareDT 파일을 Yocto에 추가하여 빌드된 이미지에서 바로 사용할 수 있도록 했습니다.

이제 meta-jooojub-rpi에 E-Ink 디스플레이를 활성화하기 위한 수정 사항도 적용해 보겠습니다.

7. On a side note

여담이지만, i2c probe가 계속 실패하여 몇 달간 손놓고 있었습니다.
혹시나 하여 Power Meter로 3V GPIO를 측정해 보았는데, 전압이 인가되지 않고 있었습니다.

전류가 흐르지도 않는 컨트롤러를 활성화하려고 열심히 삽질을 하고 있었네요. ㅠ-ㅠ
결론적으로 GPIO 핀 헤더 납땜 문제였습니다.

NextDefining Custom Image and Distro for Raspberry Pi Zero 2W
Jooojub
System S/W engineer
Explore Tags
Series
    Recent Post
    © 2026. jooojub. All right reserved.