Luma OLED is a Python 3 library that gives you full control of OLED matrix displays connected to a Raspberry Pi or other Linux-based single-board computers. It handles the low-level initialization sequences, memory addressing, and display refresh logic for each supported chipset, so you can focus on drawing content rather than managing hardware registers.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/rm-hull/luma.oled/llms.txt
Use this file to discover all available pages before exploring further.
Supported controllers
Luma OLED provides device drivers for the following controllers:- SSD1305, SSD1306, SSD1309, SSD1315, SSD1316
- SSD1322, SSD1325, SSD1327, SSD1331, SSD1351, SSD1362
- SH1106, SH1107
- WS0010, CH1115
A community-maintained list of tested devices and benchmarks is available in the luma.oled wiki.
Key features
Multiple interfaces
Communicate with your display over I2C, SPI, PCF8574-based parallel, or 6800-style bitbang parallel.
Pillow-compatible canvas
Draw text, shapes, and images using the familiar Pillow (PIL)
ImageDraw API — no new drawing primitives to learn.Color and greyscale
Supports monochrome (1-bit), 4-bit greyscale (SSD1322, SSD1325, SSD1362), and full 16-bit RGB color (SSD1331, SSD1351).
Scrolling and state
Built-in scrolling and panning, terminal-style printing, and state management for dynamic display content.
Dithering
Convert color or greyscale artwork to monochrome using dithering — useful when targeting 1-bit displays.
Orientation control
Rotate the display 0°, 90°, 180°, or 270° in software without any hardware changes.
The luma ecosystem
Luma OLED is one library in a broader ecosystem that shares a common API andluma.core foundation:
| Library | Description |
|---|---|
luma.core | Shared base classes, rendering canvas, and interface abstractions |
luma.oled | OLED display drivers (this library) |
luma.lcd | LCD display drivers (PCD8544, ST7735, ILI9341, and more) |
luma.led_matrix | LED matrix drivers (MAX7219, WS2812, APA102) |
luma.emulator | Software emulators for testing without physical hardware |
Because all luma libraries share the same
canvas API from luma.core, code you write for an OLED display will work with minimal changes on LCD or LED matrix displays.Next steps
- Install luma.oled — set up your Python environment and install the library
- Quickstart — connect a display and draw your first image in minutes
- Hardware setup — wire up your display over I2C, SPI, or parallel