The "Cheap Yellow Display" -- an ESP32 dev board with a 2.8" TFT touchscreen soldered directly onto it, no wiring required -- has become a bit of a phenomenon in the hobbyist ESP32 world. Mine are the ESP32-2432S028R model (2.8" resistive touch, ILI9341 driver, XPT2046 touch controller), the two-USB-port variant (micro-USB and USB-C), bought as a two-pack. At a few dollars each, with a screen, an onboard speaker amplifier, an SD card slot, and a real ESP32-WROOM-32 underneath, it's absurdly inexpensive for what it is -- and because it's so cheap and so common, there's a large community around it: ready-made pinout references, several competing display/touch library forks patched specifically for its wiring, and a growing pile of projects built for it out of the box. Two of those projects are on my two boards now.

Everything below is other people's work I'm trying out. My own CYD project lives at Weather & Sensors Station instead (just the one so far).

Fr4nkFletcher/ESP32-Marauder-Cheap-Yellow-Display on GitHub -- a CYD port of justcallmekoko's ESP32 Marauder, a WiFi/Bluetooth diagnostic and penetration-testing toolkit (AP/station scanning, packet sniffing, deauth detection, and similar RF tools) with a touchscreen menu system built for exactly this display.

Flashing this one was the easy path: the repo ships prebuilt binaries for every CYD variant under bins/, so there was no need to install Arduino IDE or compile anything. Three files, written with esptool at the offsets the project's README specifies:

One local snag: Debian/Ubuntu's packaged esptool (apt install esptool) ships without the "stub flasher" binaries it normally uses for fast, verified writes -- a Debian-packaging trim, not an upstream bug -- so a plain write_flash failed with a missing-file error. Adding --no-stub falls back to the slower ROM bootloader protocol and flashed cleanly.

e2002/yoradio on GitHub -- a full internet radio built on the ESP32-audioI2S decoder library, with station browsing and playback controls on the TFT, a web UI for managing the station list, and (unused here) MQTT/Home Assistant integration. Chosen specifically because it supports the ESP32's internal DAC as an audio output, not just an external I2S DAC/amp board -- the CYD's speaker header is wired straight to GPIO26 through an onboard SC8002B amplifier chip, with no external DAC to speak of, and most other CYD radio projects assume one is present.

This one needed an actual Arduino build rather than a prebuilt binary, plus two changes specific to this board:

Touch is disabled (TS_MODEL TS_MODEL_UNDEFINED) for now: yoRadio's touchscreen driver assumes the touch controller shares the display's SPI bus, but the CYD wires its XPT2046 touch chip to a separate bit-banged bus entirely. The radio is controlled from its web UI instead, reachable once it's on the WiFi network.

Also required a one-time, machine-wide change: yoRadio's documentation calls for replacing Adafruit_GFX_Library's bundled font file (glcdfont.c) with its own, which adds the extended character set its localization needs. That's a shared Arduino library directory, so it affects any other sketch on this machine using Adafruit_GFX's default font, not just yoRadio -- the original was backed up alongside it.

Build details: compiled with arduino-cli against the plain ESP32 Dev Module board definition, with the partition scheme bumped from the 4MB default (1.2MB app space) to No OTA (2MB APP/2MB SPIFFS) -- the compiled sketch runs about 1.5MB, past the default scheme's app partition. Firmware and the SPIFFS filesystem image (the web UI's HTML/CSS/JS, built with mkspiffs) were flashed as two separate esptool writes, at 0x10000 and 0x210000 respectively.

First boot starts a yoRadioAP WiFi access point for initial setup -- connect and browse to 192.168.4.1 to hand it real WiFi credentials, then manage stations from its web UI afterward.

Not yet built -- notes so far.

harbaum/galagino on GitHub -- an ESP32 arcade emulator (Z80 software emulation) for Galaga, Pac-Man, Donkey Kong, Frogger, Digdug, and 1942, with native support for the CYD listed in its README: uncomment CHEAP_YELLOW_DISPLAY_CONF in galagino/config.h and it targets the board's display and onboard SC8002B speaker directly, no separate TFT wiring needed like the original breadboard build.

Two things to sort out before flashing:

Also worth a compile-time check rather than assuming it still holds: the README flags I2S/DAC audio as broken on ESP32 Arduino board package 2.0.10 and newer, recommending 2.0.9 -- this repo hasn't been touched since 2023, while the Internet Radio build above used core 3.3.11 without incident, just not through this same audio path. The README itself also points to several actively-maintained forks (GalaginoPlus, Galagino3, and others) with more games and broader display support, worth a look if this original stalls.