Logo
journals
journal2026.03.25
bluetoothbora wavesplanningexperiment

Planning Bora Waves (The lightstick syncing website)

Before I start explaining this whole journey—which is still ongoing—I need to give you a bit of a disclaimer. Even though CodeTheNight was already up before I began developing Bora Waves, I didn’t really have the time to jot down my thoughts or document the entire process. So all of the journal and lab entries are a mix of snippets I could find on my laptop, along with reflections on the overall experience.

What triggered it

In case it wasn’t clear, I’m a huge fan of BTS and an ARMY (that’s the fandom name). There are usually online livestreamed concerts and sometimes even screenings in cinemas, and it so happens that I have the perfect setup to watch them—especially with a 4K projector and sound system that bring the concert vibe into my house.

But the catch was that the expensive lightsticks we had couldn’t sync with the online concerts; that feature was only available for people attending the concert venue, which was a bit of a bummer. And so my journey began—trying to “reverse-engineer” the ARMY Bomb (the official BTS lightstick) to see if I could get it to sync with these online concerts and eventually host viewing parties at my house.

How I started working on it

I started working on it around the middle of last year, so do note that at that point, things like Claude Code weren’t really widely used yet. My initial goal was to sync my lightstick to live concerts just for me and my group of friends.

At one point, the Weverse app (the official fandom app) had the ability to connect the lightstick via Bluetooth and sync it with music videos, but they later removed it. Based on that—and of course the official lightstick app itself—it was obvious that it was possible to create a “lightshow” using the lightsticks.

So I started searching for how to connect these lightsticks. I even bought a Raspberry Pi (a mini computer) in case I needed to broadcast using BLE. Let’s just say the whole process of even getting the lightstick to connect wasn’t easy at first—I wasn’t really familiar with Bluetooth technology either.

I scoured the internet to see if anyone had any idea where to start with fandom lightsticks, but most of what I found were DIY lightstick projects. None of the reverse-engineered GitHub repos or posts were helpful.

Breakthrough

On my own, I tried experimenting with a lot of ways to reverse-engineer it. Along with the Pi, I bought the nRF52840 Dongle, which is basically a BLE sniffer. I used it along with Wireshark to track the Bluetooth packets between my lightstick and the mobile app. For some reason, I was only able to track the packets until it paired, and then the connection was lost.

At one point, even ChatGPT was telling me it wasn’t possible, suggesting that the send commands might be encrypted. After that, I tried using nRF Connect and similar apps to see if I could track anything from my phone (which was an iPhone). I even used a spare Android phone to see if I could track it there, but the issue was the same—once paired, I just wasn’t able to monitor it.

I remember there was a point where I thought maybe the current version of the official lightstick wasn’t allowing me to properly detect it, and I even tried to downgrade it, but that wasn’t really successful. This went on and off until around November, when I finally broke through.

At that point, I was using every tool I could get my hands on to attempt to reverse-engineer the lightstick—be it Gemini, ChatGPT, Claude, etc. Eventually, Gemini suggested using Apple’s PacketLogger to track the Bluetooth packets so they could be used for reverse engineering.

And that’s where I’ll end this journal entry, because I want to create another one focused on the logs I captured—but that’s how I was finally able to figure out how to properly pair the lightstick.

Some reflections

Looking back on it now, I don’t know why I never thought of just starting with whatever tools I already had—my MacBook itself. Surprisingly, none of the AIs (Claude or ChatGPT) ever suggested using PacketLogger. It wasn’t until I got to Gemini that I realized Apple had its own way to detect and track Bluetooth packet data.

Also, frankly, even now I don’t understand Bluetooth as much as I’d like. Most of what I’ve learned about it came through the whole reverse-engineering process. Later, I might do a deeper dive into Bluetooth handshake protocols, data packet structures, and so on.

Created on 25 March 2026

comments

loading...