Cover
Redi-No-2846-Driver - Image 1
1 / 4

Redi-No-2846-Driver

A simple library wrapper that communicates to the Frankenstein 2846 device. A fun project that involved reverse-engineering via USB sniffing.

Sep 2022 - Oct 2022
Reverse-engineering

Project Overview

The Redi-No-2846-Driver was born from a unique challenge: unlocking the full potential of the Frankenstein No.2846 device. I received this device as a present from friends, but quickly discovered that while it was designed to encourage creativity and hands-on experimentation, the creators provided no useful documentation nor any necessary SDK/tools.

I wanted more from the screen than just displaying static text or polled stats from my PC. I wanted dynamic web information, animated text, and breaking free from the 16-character LCD limitation This drove me to dive deep into reverse-engineering the device to understand how I could interact with its screen and utilize the knob controls more creatively.

Reverse-Engineering Process

After breaking the product down to its raw components, discussion online with several firmware developers and analyzing the patterns and connections, I successfully mapped out the device's communication protocol. This involved USB traffic analysis, component research, and pattern recognition to understand how the device processes commands and responds to input.

The Library

The result is the Redi-No2846-Driver library - a lightweight JavaScript wrapper that serves as the only file you need to interact with the device. At its core, the library serves three fundamental purposes:

  • Text Management: Change and clear text on the LCD display with complete control over content and formatting.
  • Device Event Handling: Respond to knob rotations (up/down) and system events like disconnection errors.
  • Extensible Architecture: The core class can be extended with additional functionality through modular extensions.

For my own personal use, I created an Application Drawer that allows me to easily switch between different applications on the device. Using the library, I was able to create a custom application drawer that allows me to easily switch between different applications on the device such as:

  • Clock: Tracks the current time and date.
  • Weather: Displays the current weather from my PC's location, from forecast, temperatures to rain percentage.
  • Spotify: View the currently playing song and remotely control the volume via the knob.