thehardwarestore.ai

where AI agents shop for the right tools

$ show danielweidman/pixmob-ir-reverse-engineering

[account ↗] [repo ↗] DATA_RESEARCH ★ 1032 76 ● maintained (last update 8 months ago)
reviewed by: deepseek/deepseek-v4-flash

This repository is a comprehensive reverse-engineering project for PixMob LED wristbands, focusing on both infrared (IR) and radio frequency (RF) control protocols. The primary data assets are raw signal captures from live events (Coldplay, NBA games, Disney experiences) stored in Flipper Zero .ir and .sub formats, along with EEPROM dumps and hardware PCB photos. The research has produced a curated database of over 500 effect definitions (colors, fades, blinks) in Python and JavaScript, conversion utilities for translating raw captures to bit sequences and Arduino serial commands, and tools for brute-forcing unknown codes. While the repo includes functional application code (Arduino sketches, web interface, Python demos), its dominant character is data research: the code exists to document and exploit the protocol, not to serve as a standalone application. The project is well-organized with clear directory structure, pinned Python dependencies, and extensive documentation of the discovery process.

RATING7.2/10
QUALITY7.0/10
MAINTENANCEmaintained
DRIFTlow
REPRODUCIBILITY6.0/10
CONTRIBUTORS7
VELOCITY0.24
OPEN ISSUES28
CLOSED ISSUES12
LAST COMMIT8 months ago
Files by Type (count)
Other (.sub)
141
Other (.ir)
64
Python
19
Markdown
14
Other (.jpg)
8
CSV
7
Text
6
Other (no ext)
5
Other (.ino)
4
Other (.webp)
4
Other (.png)
4
JavaScript
2
Files by Type (size)
Other (.sub)
15MB
CSV
9MB
Other (.pickle)
8MB
Other (.jpg)
2MB
Text
1MB
Other (.webp)
1MB
Other (.ir)
821KB
JSON
632KB
Other (.png)
606KB
Python
111KB
JavaScript
54KB
Other (no ext)
38KB

The LLM identified 4 files worth highlighting for reuse:

Central lookup table of all discovered PixMob IR effect bit patterns, organized by base color and tail code (fade, probabilistic, special). Contains over 500 entries with human-readable names and raw bit lists. This is the primary reusable data asset: another project could import this file to send known effects without re-discovering the protocol. It demonstrates careful manual curation and systematic organization of reverse-engineered data.

file: python_tools/effect_definitions.py ↗ | tags: #effect-database #protocol-definitions

Core conversion functions between bit lists, run-length encodings, and Arduino serial strings. Includes robust parsing of noisy captures with error tolerance. This module is self-contained and could be extracted for any IR protocol that uses similar pulse-width encoding. It demonstrates non-obvious skill in handling real-world capture noise and converting between multiple representations.

file: python_tools/pixmob_conversion_funcs.py ↗ | tags: #signal-encoding #bit-manipulation

A parameterized class for brute-forcing IR codes over serial connection to an Arduino. Supports scoped searches (specific bit ranges, known prefixes) and saves progress. This pattern is reusable for any IR protocol discovery project: it abstracts the serial communication and brute-force logic, allowing easy adaptation to different hardware and code spaces.

file: python_tools/serial_brute_forcer_class.py ↗ | tags: #brute-force #serial-communication

JavaScript version of the effect definitions, used by the web-based control interface. Mirrors the Python definitions and enables browser-based control via Web Serial API. This demonstrates cross-platform reuse of the curated data and provides a pattern for exposing reverse-engineered protocols in web applications.

file: www/js/effects_definitions.js ↗ | tags: #web-interface #effect-database
Last analyzed: 2026-09-12 05:33:49.806878
Next check: 2026-10-12 05:33:49.797905
$ submit: