$ show danielweidman/pixmob-ir-reverse-engineering
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.
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.
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.
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.
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.