Open-source driver for the Cooler Master MasterLiquid Atmos II Pixel LED hexagonal screen
Project description
cm-pixel
Open-source driver + toolkit for the Cooler Master MasterLiquid Atmos II Pixel LED hexagonal pixel screen — a clean, lightweight alternative to the official MasterCTRL app for controlling the LEDs over USB. Screen only (pump/fans are PWM and untouched).
The USB protocol was reverse-engineered from scratch; see PROTOCOL.md.
Hardware
- Cooler Master "Atmos V2 - Pixel", USB
2516:021C, plain HID (no special driver). - 32×32 addressing grid, 556 real LEDs arranged in a hexagon, RGB888.
Install
This project uses uv. From a clone:
uv sync # creates .venv and installs everything (incl. uv.lock)
uv run cm-pixel list # run the CLI
Or add it to your own uv project:
uv add cm-pixel
(Plain pip also works: pip install cm-pixel.)
Close the official MasterCTRL software first — only one program can drive the screen. On Linux you may need a udev rule for HID write access.
CLI
cm-pixel color 255 0 0 # solid red
cm-pixel image photo.png # show an image (auto-fit to the hexagon)
cm-pixel gif spinner.gif # play a GIF
cm-pixel text "HI" # static centered text
cm-pixel scroll "HELLO WORLD" # scrolling marquee
cm-pixel anim plasma # procedural animation
cm-pixel anim fire --speed 1.5
cm-pixel list # list animations
Common flags: --fps, --duration, --mask (blank pixels outside the hexagon), --keep,
--brightness 0-100, --rotate 0|90|180|270. Brightness and rotation are applied in software
(the device has no command for them); 180° is exact, 90/270 clip slightly at the hexagon vertices.
Animations: plasma rainbow swirl ripple breathe sparkle fire starfield.
Library
from cmpixel import PixelDisplay, Canvas
from cmpixel.font import draw_text
with PixelDisplay() as d:
c = Canvas().fill((0, 0, 20))
c.set_pixel(16, 16, (255, 255, 255))
draw_text(c, "GO", color=(0, 255, 0))
d.send_canvas(c)
# play a built-in animation
from cmpixel import PixelDisplay
from cmpixel.animations import plasma
from cmpixel.media import play
with PixelDisplay() as d:
play(d, plasma(speed=1.0), fps=30, duration=10)
How it works (short version)
A frame is 28 HID output reports of 64 bytes: 80 DD <pkt:u16> + 60 data, concatenated to
556×RGB in serpentine LED order. Streaming a frame displays it immediately — no handshake.
Full details and the LED layout map are in PROTOCOL.md and cmpixel/layout.json.
Status
v0.1 — drawing, text, GIF, procedural animations, software brightness & rotation.
Disclaimer
Unofficial, not affiliated with Cooler Master. Use at your own risk; touches only the screen framebuffer (no firmware/DFU).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cm_pixel-0.1.0.tar.gz.
File metadata
- Download URL: cm_pixel-0.1.0.tar.gz
- Upload date:
- Size: 17.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c43b97edcbecbf01bfa5bfe447e41a385ebb3e0d6d102b4ad2b0b11883f1480e
|
|
| MD5 |
110416492e15a10e72e690df9ce1992d
|
|
| BLAKE2b-256 |
211e52d3b3ea468649b8353e700d0e988d40541666ea2d7081f6dbbafe7038ae
|
File details
Details for the file cm_pixel-0.1.0-py3-none-any.whl.
File metadata
- Download URL: cm_pixel-0.1.0-py3-none-any.whl
- Upload date:
- Size: 18.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fb738bf5421a494747a8d752b88962ac0d67600e13c6f8f25de1f25aba07714
|
|
| MD5 |
be36ed0ecda48e396b00b72795b4d8bc
|
|
| BLAKE2b-256 |
48b8f3593d4b18ff5d1e45b9189b3c4164b9c6dc041e09302a713d9ac881ffa7
|