sigroot FW LED Matrix Firmware
sigroot FW LED Matrix Firmware is an alternate firmware for the Framework Laptop 16 LED Matrix Input Module, written in Arduino/C++ by sigroot1. It was created to address two limitations of the official FrameworkComputer/inputmodule-rs firmware: the inability to produce all 256 brightness levels and difficulty developing with the provided interface software1.
The firmware supports full 256 brightness levels, achieves approximately 80 FPS full refresh rate, and includes a rich set of serial commands for animations and pixel-level control1. It is recognized as a third-party firmware project by Framework's official InputModules documentation2.
Background
The Framework LED Matrix is a 9×34 (306 LED) monochrome display panel driven by an RP2040 microcontroller and an IS31FL3741A LED controller23. The official firmware, written in Rust, cannot produce all 256 brightness levels possible on the hardware1. Sigroot's firmware solves this by allowing programs to write both PWM and scale values (as defined by the IS31FL3741A documentation) for single LEDs, all LEDs, or as a 9×34 pixel image1.
Capabilities
Brightness Control
The firmware allows writing both PWM and scale values for1:
- Single LEDs (per-pixel PWM and scale control)
- All LEDs at once
- Full 9×34 pixel grid images
A gamma correction function is included that changes the PWM brightness curve to be more visible across its entirety by the human eye3.
Animations
The firmware includes several built-in demo animations13:
| Animation | Description |
|---|---|
| Boot-up animation | Custom startup animation1 |
| Fire / Fireplace | Animated fire effect1 |
| Diamond | Animated diamond pattern1 |
| Spinning gear | Rotating gear animation1 |
| Spinning ring | Rotating ring animation1 |
| Test pattern | Cycles through all brightness levels on every pixel13 |
Performance
| Metric | Value |
|---|---|
| Brightness levels | 256 (full range)1 |
| Refresh rate | ~80 FPS (full grid refresh)1 |
| LED controller | IS31FL3741A3 |
| Grid size | 9×34 (306 LEDs)1 |
Installation
The firmware can be installed via two methods1:
UF2 File
Download the UF2 file from the repository, enter BOOTSEL mode on the LED Matrix module (DIP switch pin 2 ON), and copy the UF2 file to the mass storage device that appears1.
Arduino IDE
Follow Joe Schroedl's instructions for reinstalling firmware to his RGB LED Matrix, but install the Arduino code from this repository instead. The Adafruit NeoPixel Library is not required1.
Ecosystem
The firmware is part of a companion ecosystem of repositories by sigroot:
| Repository | Description |
|---|---|
| FW_LED_Matrix_Firmware | The Arduino firmware itself1 |
| FW_LED_Matrix_Interface | Rust library for interfacing between this firmware and other Rust programs14 |
| FW_LED_Matrix_Board | Divides the 9×34 matrix into 3 smaller 9×11 "applets" with a language-agnostic interface15 |
| FW_LED_Applet_Interface | Rust library for developing applets1 |
Applet System
The FW_LED_Matrix_Board server holds four total applets: Applet 0 is a 9×1 status bar across the top, and Applets 1–3 are 9×11 grids (each with an optional separator bar) from top to bottom of the LED matrix5. This allows multiple programs to display content on different regions of the matrix simultaneously.
Technical Specifications
| Specification | Details |
|---|---|
| Language | Arduino/C++1 |
| Target | Framework Laptop 16 LED Matrix Input Module (RP2040)1 |
| LED controller | IS31FL3741A3 |
| Grid size | 9×34 (306 LEDs)1 |
| Brightness | 256 levels (full range)1 |
| Refresh rate | ~80 FPS1 |
| Interface | USB serial1 |
| License | MIT1 |
| Commits | 201 |
| GitHub Stars | 41 |
| Source | sigroot/FW_LED_Matrix_Firmware (GitHub)1 |
Related Projects
| Project | Description |
|---|---|
| sparkle-fw16 | C-based alternative firmware using the Glitter Protocol (USB HID) |
| LED Matrix Controllers | Cross-firmware JS/TS library supporting sigroot firmware |
| LED Matrix Vocab | Japanese vocabulary tool with sigroot firmware auto-detection |
| led-matrix-manager | Qt GUI for LED matrix management |
| fw16-led-matrixd | Cross-platform Rust daemon for the LED matrix |