Lukasz Jagiello Side projects Totem Compass

Totem Compass

Inside a festival gadget

The Totem Compass is a handheld gadget designed for festivals. It combines a ring of lights, a glowing touch-sensitive crystal, GPS, and a compass. Friends can link their Totems into a small mesh network to find each other in the crowd, exchange taps and messages, and navigate to a shared meeting point.

Curious about how it works, I reverse-engineered the firmware Totem publishes for its updates. Under the hood, the device runs MicroPython on an ESP32, with its logic compiled into bytecode and embedded in the firmware. It uses three radios on the same 2.4 GHz band: Bluetooth to communicate with the phone app, ESP-NOW for communication between Totems, and Wi-Fi for firmware updates. The accompanying research covers all three, along with the firmware structure and navigation protocols.

I’m also explicit about what I haven’t figured out. Every finding is marked as either confirmed or inferred, and anything I haven’t been able to analyze is documented as well.

The research resulted in two tools. totemctl communicates with a Totem over Bluetooth using the same protocol as the official app, allowing you to check its status, rename it, and change its settings from a laptop. totememu turns a standard ESP32 development board into a virtual Totem. It pairs with a real device using the normal touch gesture and exchanges status updates with it over the mesh network.

This is independent research and is not affiliated with or endorsed by Totem Labs. The firmware analysis is entirely static, and both tools have only been tested against my own Totem. They’re deliberately designed to avoid interacting with or affecting other people’s devices nearby.