explaingit

jlynx/funkeyshifter

Analysis updated 2026-05-18

1C++Audience · generalComplexity · 4/5Setup · hard

TLDR

An ESP32-S3 device and companion website that let you swap virtual U.B. Funkeys characters over Bluetooth while a game reads them as the original USB hub.

Mindmap

mindmap
  root((FunkeyShifter))
    What it does
      Emulates MegaByte USB hub
      Web controlled Funkey selection
      Bluetooth to USB bridge
    How it works
      ESP32 firmware
      Web Bluetooth site
      BLE to USB translation
    Project areas
      Firmware src
      Nextjs web app
      Protocol docs
    Tech stack
      ESP32-S3
      Cplusplus firmware
      Nextjs on Cloudflare
    Audience
      Retro toy collectors
      Hobbyist hardware makers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Flash an ESP32-S3 board so a game recognizes it as the original U.B. Funkeys USB hub

USE CASE 2

Use a browser to switch which Funkey character is active over Bluetooth instead of swapping physical figures

USE CASE 3

Study the USB and Bluetooth protocol documentation to build a similar toy emulation device

USE CASE 4

Deploy the included Next.js controller site to Cloudflare Workers for your own hardware

What is it built with?

C++ESP32-S3Next.jsWeb BluetoothCloudflare Workers

How does it compare?

jlynx/funkeyshifterallentdan/shape_based_matchingamu2mod/radeonmon
Stars111
LanguageC++C++C++
Last pushed2019-03-01
MaintenanceDormant
Setup difficultyhardmoderatemoderate
Complexity4/53/53/5
Audiencegeneraldevelopervibe coder

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Requires an ESP32-S3 board, firmware flashing tools, and a Chrome or Edge browser for Web Bluetooth.

The README excerpt does not state a license for this repository.

In plain English

FunkeyShifter is a hardware and web project that recreates the U.B. Funkeys toy hub using a small ESP32-S3 microcontroller board. U.B. Funkeys were collectible figures that plugged into a special USB hub to unlock characters in an online game. This project lets a computer running that game see what looks like the original MegaByte-style hub, while a companion website lets you swap which Funkey character is active without needing the physical figures at all. The ESP32 board presents itself to the computer as the same kind of USB portal device the original hardware used, so the game reads it the normal way over USB. Separately, a website talks to the ESP32 over Bluetooth Low Energy to control which Funkey is currently selected, so the game keeps working through USB the whole time while the browser changes things in the background. When you pick a Funkey on the website, it sends that choice to the ESP32 over Bluetooth, and the firmware translates it into the raw data packet format the game expects and serves it over USB. Removing a Funkey works the same way in reverse. To use it, you flash the provided firmware onto an ESP32-S3 board, plug the board into the computer running the game, then open the project's website in Chrome or Edge, since Web Bluetooth only works in those browsers over a secure connection. From there you connect to the board over Bluetooth and choose a Funkey from the site to change what the game sees. The repository is organized into firmware code for the ESP32, a Next.js web app for the Bluetooth controller deployed on Cloudflare Workers, documentation covering the USB and Bluetooth protocol and firmware toolchain, and some development utilities. The README does not state a license for the project.

Copy-paste prompts

Prompt 1
Walk me through flashing the FunkeyShifter firmware onto an ESP32-S3 board
Prompt 2
Explain how the website communicates with the ESP32 over Bluetooth to change the active Funkey
Prompt 3
Help me understand the raw USB hub packet format this project emulates
Prompt 4
Show me how the Next.js web controller in this repo is structured

Frequently asked questions

What is funkeyshifter?

An ESP32-S3 device and companion website that let you swap virtual U.B. Funkeys characters over Bluetooth while a game reads them as the original USB hub.

What language is funkeyshifter written in?

Mainly C++. The stack also includes C++, ESP32-S3, Next.js.

What license does funkeyshifter use?

The README excerpt does not state a license for this repository.

How hard is funkeyshifter to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is funkeyshifter for?

Mainly general.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.