Hardware Bus Architecture
Accelerated C usermods registering directly into the MicroPython interpreter.spibus & i2cbus
High-frequency hardware SPI and I2C panel buses for displaydev.BusDisplay with DMA transfer capability.
i80bus Parallel Bus
8080-style 8-bit / 16-bit parallel bus accelerated via ESP32-S3 LCD peripheral, RP2 PIO+DMA engines, i.MX RT FlexIO, and SAMD51 GPIO.
dotclockframebuffer (RGB)
Parallel RGB dot-clock hardware framebuffer backend supporting large 480x480, 800x480, and 1024x600 IPS displays.
mipidsi & picodvi
MIPI DSI panels on the ESP32-P4 and i.MX RT1176, and DVI output from RP2040 PIO or RP2350 HSTX.
Building MicroPython Firmware with displayif
One manifest line on MicroPython 1.29
# Add one line to the manifest your build already uses:
include("/path/to/displayif/manifest.py")
# Then build as usual, e.g. esp32 after sourcing ESP-IDF's export.sh:
cd micropython/ports/esp32
make BOARD=ESP32_GENERIC_S3
The build picks the modules your port supports; on unix that is usdl2 and jpegio. Your own FROZEN_MANIFEST and builds older than 1.29 are in the README, and micropython-pydevices has presets that build displayif with the rest of the stack.
MicroPython Port & Bus Support Matrix
| Port / SoC Architecture | SPI / I2C Bus | i80 Parallel Bus | RGB DotClock | DSI / DVI |
|---|---|---|---|---|
| ESP32-S3 / ESP32-P4 (Espressif) | ✓ (SPI DMA) | ✓ (LCD Peripheral) | ✓ (RGB Peripheral) | ✓ (MIPI DSI, P4) |
| RP2040 / RP2350 (Raspberry Pi) | ✓ (SPI DMA) | ✓ (PIO + DMA) | — | ✓ (PicoDVI) |
| i.MX RT1062 / RT1176 | ✓ (LPSPI) | ✓ (FlexIO) | ✓ (eLCDIF) | ✓ (MIPI DSI, RT1176) |
| SAMD51 (Microchip) | ✓ (SERCOM) | ✓ (GPIO) | — | — |
Read more
Depth lives in the repositoryNewcomer's guide
The board-to-backend map, the firmware boundary, and the lifecycle rules.
Port matrix
Every native module on every port, with its status and constructor notes.
Bring-up
Getting a new panel lit, and the symptoms that point at each mistake.
pydevices
The board configs that hand these buses to displaydev.