Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
58 changes: 58 additions & 0 deletions src/docs/devices/geekmagic-smalltv-pro/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
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
58 changes: 58 additions & 0 deletions src/docs/devices/geekmagic-smalltv-pro/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
title: "GeekMagic SmallTV Pro"
date-published: 2026-08-01
type: misc
standard: global
board: esp32
made-for-esphome: false
difficulty: 2
---

## 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](https://de.aliexpress.com/item/1005005132140010.html) at various vendors.

## Product Images

![GeekMagic SmallTV Pro](GeekMagic_SmallTV_Pro.jpg)

## 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](GeekMagic_SmallTV_Pro_PCB_ESP32.jpg)
![PCB](GeekMagic_SmallTV_Pro_PCB2_ESP32.jpg)

PCB and Pinout - GM32-N16:

![PCB and Pinout](GeekMagic_SmallTV_Pro_PCB_GM32-N16.jpg)
![PCB](GeekMagic_SmallTV_Pro_PCB2_GM32-N16.jpg)

**Note:** To enter flash mode, GPIO0 must be pulled to GND during power-up.

## Basic Configuration

```yaml file=config.yaml
```
Loading