---
title: "iDotMatrix client and ESP32 bridge"
description: "A Python library and ESP32 firmware that drive iDotMatrix LED pixel panels from a computer, also over Wi-Fi."
date: 2026-05-19T13:16:10+02:00
lastmod: 2026-11-05T13:51:01+01:00
url: https://klimek.link/projects/idotmatrix/
author: "Marcin Klimek"
source: https://klimek.link/projects/idotmatrix/
---

# iDotMatrix client and ESP32 bridge

iDotMatrix panels are cheap LED pixel displays (16×16, 32×32 or 64×64) that you're supposed to control over **Bluetooth Low Energy** from a phone app. This project drives them from a computer instead, through a Wi-Fi bridge to make this work on machines without Bluetooth too.

The code started as a fork of the community [python3-idotmatrix-library](https://github.com/derkalle4/python3-idotmatrix-library), whose authors reverse-engineered the protocol. I reworked it into a Python package built around an `IDotMatrixClient` with a connection manager and feature modules for text, images, GIFs, clock, countdown, stopwatch, effects, scoreboard, graffiti, eco mode and system commands. On top of that there are helpers to convert images and GIFs, a digital picture-frame mode watching a folder, and work/rest (pomodoro-style) timer with a small web interface.

## The ESP32 bridge

Next to the Python code sits **Rust** firmware for **ESP32** boards. The board joins the Wi-Fi network, announces itself over mDNS as `idotmatrix.local` and exposes a small HTTP API, while updates to the panel keep going over BLE. Rendering and timer state live on the ESP32, which lets computers on the network can drive the display, and the firmware core can be tested on the host.

*Diagram: Direct Bluetooth from Python, or Wi-Fi through the ESP32 bridge*

## The next version

This section is a plan. The current ESP32 is a classic module with 4 MB of flash and no PSRAM, and that's tight, since about a fifth of the update slot is free. I want to move the firmware to an ESP32-S3 with more flash and PSRAM. That would leave room for richer information on the panel, for example calendar events fetched by the board itself, and for more elaborate animations. A calendar screen for the 64×64 panel exists so far as mockups.

Licence: GPL. [Source on GitHub](https://github.com/marcinklimek/dot-matrix-spoon).

Source: https://klimek.link/projects/idotmatrix/
