Skip to main content

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:

AnimationDescription
Boot-up animationCustom startup animation1
Fire / FireplaceAnimated fire effect1
DiamondAnimated diamond pattern1
Spinning gearRotating gear animation1
Spinning ringRotating ring animation1
Test patternCycles through all brightness levels on every pixel13

Performance

MetricValue
Brightness levels256 (full range)1
Refresh rate~80 FPS (full grid refresh)1
LED controllerIS31FL3741A3
Grid size9×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:

RepositoryDescription
FW_LED_Matrix_FirmwareThe Arduino firmware itself1
FW_LED_Matrix_InterfaceRust library for interfacing between this firmware and other Rust programs14
FW_LED_Matrix_BoardDivides the 9×34 matrix into 3 smaller 9×11 "applets" with a language-agnostic interface15
FW_LED_Applet_InterfaceRust 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

SpecificationDetails
LanguageArduino/C++1
TargetFramework Laptop 16 LED Matrix Input Module (RP2040)1
LED controllerIS31FL3741A3
Grid size9×34 (306 LEDs)1
Brightness256 levels (full range)1
Refresh rate~80 FPS1
InterfaceUSB serial1
LicenseMIT1
Commits201
GitHub Stars41
Sourcesigroot/FW_LED_Matrix_Firmware (GitHub)1
ProjectDescription
sparkle-fw16C-based alternative firmware using the Glitter Protocol (USB HID)
LED Matrix ControllersCross-firmware JS/TS library supporting sigroot firmware
LED Matrix VocabJapanese vocabulary tool with sigroot firmware auto-detection
led-matrix-managerQt GUI for LED matrix management
fw16-led-matrixdCross-platform Rust daemon for the LED matrix

Footnotes

  1. sigroot/FW_LED_Matrix_Firmware — GitHub (README, capabilities, installation instructions) 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

  2. FrameworkComputer/InputModules — GitHub (official InputModules documentation, lists third-party firmware) 2

  3. sigroot/FW_LED_Matrix_Firmware — rp2040_firmware.h — GitHub (source code: IS31FL3741A registers, gamma correction, pixel mapping) 2 3 4 5 6

  4. sigroot/FW_LED_Matrix_Interface — GitHub (Rust interface library)

  5. sigroot/FW_LED_Matrix_Board — GitHub (applet server, 9×11 grid division) 2