GeekMagic SmallTV Pro
Product Description
The GeekMagic SmallTV Pro is a LCD display designed to look like a mini computer.
It is USB-C powered and has an ESP32 inside (sometimes labeled GM32-N16).
The LCD panel has a 28x28mm size resulting in a 240x240 pixel resolution.
Available on AliExpress at various vendors.
Product Images

Flash ESPHome
Flashing the device can be done in 2 different ways.
1. Upload .bin file (using original firmware)(easiest)
The original firmware comes with the option to upload a custom .bin file. This can be done by connecting to the device’s access point over Wi-Fi. Open a browser and navigate to the IP address displayed on the screen of the device. Find the “Firmware update” section in the web interface and upload your .bin file. The .bin file can be generated with ESPHome Device Builder using the correct config below.
2. Manual flashing via Serial (Disassembly needed)
If the first option is not usable for you, you can always flash the device manually by disassembling it first. Unscrew the 2 screws at the bottom of the device and slide the plastic casing open from the back of the device. Because this device doesn’t have a USB to serial chip, we need to connect some wires to it in order to flash it.
PCB and Pinout - ESP32:

PCB and Pinout - GM32-N16:

Note: To enter flash mode, GPIO0 must be pulled to GND during power-up.
Basic Configuration
esphome: name: geekmagic-smalltv-pro friendly_name: GeekMagic SmallTV Pro
esp32: variant: esp32
esp32_touch: setup_mode: false iir_filter: 10ms
binary_sensor: - platform: esp32_touch name: "Touch" pin: GPIO32 threshold: 1450 filters: - delayed_on: 50ms - delayed_off: 300ms
spi: clk_pin: GPIO18 mosi_pin: GPIO23 interface: hardware id: spihwd
output: - platform: ledc pin: GPIO25 inverted: true id: backlight_pwm
light: - platform: monochromatic output: backlight_pwm name: "Backlight" id: backlight restore_mode: ALWAYS_ON default_transition_length: 1s
display: - platform: mipi_spi id: my_display model: ST7789V spi_id: spihwd dc_pin: GPIO02 reset_pin: GPIO04 dimensions: width: 240 height: 240 offset_width: 0 offset_height: 0 invert_colors: true color_depth: 16 spi_mode: MODE3 data_rate: 40MHz update_interval: 1s show_test_card: true