I was gifted a GeekMagic HelloCubic-Lite as a tinker toy and of course I could not resist to put ESPHome on it as soon as I got it. The GeekMagic Ultra seems to be officially supported by ESPHome, bot the HelloCubic isn’t. Based on this excellent thread I managed to get it working fairly easily.
While it may be possible to flash ESPHome to the device directly from the original firmware, I decided to immediately open the device and look for any serial pins that I could attach to, and luckily for us the board provides all the necessary pins.
Opening the device is fairly easy. If you look closely to the front you can see a little notch on top of the display. With a small screw driver you can very gently lift the plastic as it’s just held in place with some double sided tape. Just make sure not to slip or scratch the screen.
Once inside you can see the UART pins. You can connect this to any USB-Serial adapter, just make sure to connect the TX side on the adapter with the RX side on the board. Make sure to also connect GND to your adapter.
Once connected over serial, it’s time to flash the first ESPHome firmware. It’s easiest to first flash a very basic firmware with just wifi and OTA functionality.
substitutions:
plug_name: hellocubic-lite
plug_id: hellocubic-lite
ip: 10.0.0.2 # or whatever you want the IP to be
comment: HelloCubic-Lite
mdns:
disabled: true
esphome:
name: ${plug_name}
comment: ${comment}
esp8266:
board: nodemcuv2 #esp8285
# WiFi connection
wifi:
ssid: !secret new_wifi_ssid
password: !secret new_wifi_password
fast_connect: false
reboot_timeout: 6h
power_save_mode: high
min_auth_mode: wpa3
manual_ip:
static_ip: ${ip}
gateway: 10.0.0.1
subnet: 255.255.0.0
api:
reboot_timeout: 14h
encryption:
key: !secret encryption_key
ota:
platform: esphome
password: !secret ota_password
In ESPHome, hit the install button and under advanced options, choose download firmware.
After the firmware has compiled, download the firmware image to your pc. We’ll be flashing the device using esptool. I like to install it in a Python virtualenv on linux, but feel free to use whatever flashing tool you prefer (I’m using Linux, so on Windows or Mac you might need different commands or tools).
python3 -m virtualenv .venv
. .venv/bin/activate
pip3 install esptool
With the board connected to the USB-Serial adapter, make sure to connect FLASH to GND before powering up the board via USB-c. A blue light should briefly flash but the screen should not display anything. We’re now in flash mode and it’s time to write our first ESPHome binary to the device.
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash 0x00000 ~/Downloads/hellocubic-lite-firmware.bin
Once esptool finished flashing the device, unplug it from USB, disconnect the FLASH pin and power it up again. You should see absolutely nothing on the screen, but if everything goes right, the device should come online in ESPHome.
Now it’s time to get the display up and running by adding the following configuration.
spi:
clk_pin: GPIO14
mosi_pin: GPIO13
output:
- platform: esp8266_pwm
pin: GPIO05
frequency: 60 Hz
id: pwm_output
light:
- platform: monochromatic
output: pwm_output
name: "Display Backlight"
display:
- id: geekmagic
platform: mipi_spi
model: GEEKMAGIC-SMALLTV
dimensions:
height: 240
width: 240
offset_height: 0
offset_width: 0
dc_pin: GPIO00
reset_pin: GPIO02
cs_pin: GPIO15 # dummy, it's wired to GND actually
spi_mode: mode3 # Important for CS-less design
color_depth: 8
update_interval: 30s # Do not set this too low, the device has very little memory
invert_colors: true
buffer_size: 20%
transform:
mirror_x: true # This mirrors the image left-to-right as the cube will mirror the screen
mirror_y: false
swap_xy: false
show_test_card: true
Flash this image over wifi to your device and if everything goes right, you should see a test card on your cube.
At this point, it’s completely up to your imagination on what you want to show on the cube, but if you want some inspiration, feel free to have a look at my git repository.

















