Francis brilliantly demonstrates how AI can act as a force multiplier for traditional reverse engineering, turning a closed hardware ecosystem into a programmable playground. It’s a masterclass in reclaiming technical agency from proprietary vendors through sheer curiosity and clever automation.
Deep Dive
Prerequisite Knowledge
- No data available.
Where to go next
- No data available.
Deep Dive
I used Codex to hack my studio lightsAdded:
This is the Nordic NRF52840DK.
If you don't know what that is, I'd forgive you because I don't know what it is either. Codeex told me to buy it because we have been trying to reverse engineer the Bluetooth mesh network for this. This is an Amaran light. And I have several of these here in the studio. Okay, I've got one over here.
This is my big light. This is my desk key. I've got three up behind me. I've got the kicker and then I have two tube lights. Now, these are all very professional lights. They're great lights. I love them. They're all amaran.
Uh but they're controlled by this iPad app. They do have a desktop app. It sucks. But the iPad app is pretty good.
But as a developer, I want it on the command line. I want to be able to wire it up to other scripts. I want to push a button on my stream deck and just have all my lights come on. So, Codeex spent 24 hours and I spent maybe $100 on this board at Codeex's direction. And we now have the ability to press a button on my computer and have the lights turn on or turn off or turn on or we have the ability to change the brightness. Did it work? I think it might have. So, we can turn it back down. In fact, let's turn this one off. In fact, I can push a single button here and boop, everything goes away.
Hey, the lights turned off. Or push a single button and boop, and we're ready to record.
Let's see how we did it. Before we get into the full backstory, here is my kind of control panel. This is a sort of graphic 2y, right? So, I can use this to set the different scenes. Like, I can turn all the lights off or I can set it up for my R six, which is this main camera. This is really nice for tinkering with things and then saving the scene. But of course, I do have just a regular CLI. So, if I turn on the tall guy, which is this one, the tall guy turns on. And if I turn off the tall guy, it just turns back off. Now, I've wired that up to my stream deck. So, I can press a single button over here and all the lights go off. And a single button over here, and all the lights come back on. So, how did we get there?
Well, Codeex, like I said, did most of the work. I put it in a goal loop and it spent about 26 hours just looping through trying different Bluetooth protocols and it finally did crack it.
This is how I started. This is the amaran desktop application. And so I told Codeex, I need you to figure this desktop application out. So when you run a goal loop, basically you're telling Codeex, keep going until you figure this goal out. And you always need some sort of thing that you're after and some sort of way of verifying if you got there.
And so for my goal loop, what I told it was break into this desktop application for research purposes and then try to send Bluetooth commands to this Sentinel light right here and then read back the status of the light from the desktop application. So now we have a we have a successful verifiable loop. It's going to guess Bluetooth commands and then it can read from the desktop application.
Did that command take? Did it actually work? So the desktop application served as our initial source of truth verifier while it was trying to decode and discover the Bluetooth commands. And it worked after about 26 hours. That's how we ended up here where I have this little CLI tool where I can turn a node on or off as long as it's paired to my computer, which is the next problem. All of these lights in here, they all live inside of their own little mesh network.
And to have my Sentinel light join that mesh network, I needed a net key, an app key, a device key, an IV index, a sequence number. I needed uh a lot of stuff that I didn't actually have, which leads us to this guy, the Nordic NRF-52840-DK eval board. I'm sure you're super familiar with it, but forgive me because I wasn't. And what I learned is that this is a Bluetooth traffic sniffer amongst other protocols. But for us, it was sniffing Bluetooth packets. So I put it between my iPad and the lights up there. And then I started controlling the lights from my iPad. And this thing captured all the Bluetooth traffic.
That's how we learned how to control the intensity and the color temperature and the green magenta. So I can change the color of these tube lights behind me.
What we also learned is that if you put this guy in pairing mode, it advertises a certain signature. So, we copied that signature and made this thing advertise that signature. Now, the iPad app thinks that this is an amaran light. So, I paired it from my iPad to this board, hoping hoping that we could catch the app key. I want this thing to capture that app key so that new lights can join the existing mesh network. I could make my own mesh network, but then it wouldn't show up on my iPad. And having it on my iPad is still really useful when I'm trying to walk around and tune the lights exactly correct, but then I want to sit down at my desk and control it from the CLI. So my thought was if this is a light and it pairs, we can capture the app key. We couldn't.
Unfortunately, it didn't work. So that led us to the next step. The next step was let's go after the iPad. The iPad obviously contains those keys for this existing mesh network. So I created an encrypted backup, put it on my Mac, and told Codeex, "Go figure it out." What it found inside of the Situs link app was a SQLite database that contained the app key, the exact thing that we were missing. So now I can add a new light on my iPad. My lighting guy can come in and adjust everything with the interface that he's used to with the iPad and then from my desktop I can still control that even though it was paired on my iPad. If I wanted to get away from the iPad altogether, I could just pair it with my desktop. I don't need the board. I don't need the amaran desktop app. I don't need the iPad. I have full control over all of my lights from the CLI. So now we're here. I can run bin Amaran list.
And these are all of my lights. I gave a few of them a nice name. I can run bin amaran on. And we'll turn on the tall guy. That's this one over here. It has a tall softbox, so I call it tall guy.
That is incredibly bright. Let's turn off tall guy. Now we have the building blocks. We're in a good spot. Right now we have the building blocks. And of course, now we got to put the building blocks together. So we added scenes. So if we look at um this is my stream deck directory right here stream deck and then I have an amaran R six. So if I look at this file you'll see all I need to do is apply the main R six scene main R six. This is my R six camera and I can turn on this scene. Another scene is the alloff scene that turns everything off which I probably shouldn't do while recording. So I'm going to turn everything back on by using that scene.
Now, we could uh we could just fuss around with the command line, right? So, if you look at this, you'll see, holy moly, this is all available on GitHub for research purposes only. This is all available on GitHub. So, you can uh discover, you can identify which flashes the lights.
I love a CLI, especially for chaining things together. That's how I have my stream deck set up. But yeah, you know what?
Maybe maybe I actually want to see a little maybe I want to see a little bit of a gooey. So I can come over here and if I do tall guy again and hit identify, it's going to flash, which is kind of it's kind of cool. Um boy, it's really bright. I need to turn that down, which I can do by just turning this down. And then, you know, we'll use the keyboard to turn it up a notch. And then I can turn it back on. There we go. That's a little better. Hey, look at that. Now you'll see I have these two lights here.
These lights are in the other room.
They're part of a different mesh network. So, I need to have these join.
But now I can come in here and let's click over here and say I want to capture this one, this one, this one, and this one. And I want this one as well. And I want to save that as a new scene. And so if I save that as a new scene, then that's available here in the TUI, of course, but it's available on the command line as well. These tube lights behind me have green magenta. So I can change the color and not only the color temperature. So if I turn the brightness on this one all the way up.
This one is over here. I'm going to turn tube stage left off. And then I can change we'll change the temperature and the green magenta. And you'll see that that color behind me starts to change.
So there's the magenta. I can turn this down and it changes colors again. Oh, that's nice. But, you know, we're recording a video. Let's turn on the main R six scene again. Now, why do something like this? Why not just use the iPad app or the desktop app? Because I freaking wanted to. It's the golden age of tinkering. Look, this is cool. I don't really still know how this works, but this is freaking awesome, and I'm glad that I have it now. You can build anything. And I think you should start by building things that make your life easier. Now I can push a button and everything works. Now I can tell my agent, "Hey, why don't we set up a new scene? Turn this light down a little.
Turn that light up a little. Make those lights a little more green or orange or whatever." It's so fun. So my encouragement to you is to go out and build something. Ask your agents, "How do we do this? I've got a couple ideas.
What do you think? Let's work together."
Just talk to the agent. I didn't use any special frameworks, any special tooling.
I just talked to the agent. So, I'll put all this on GitHub. I hope you enjoy it and until the next time, see you.
Related Videos
Agentforce NOW AMA: Build with React and Salesforce Multi-Framework
SalesforceDevs
490 views•2026-05-28
How agent o11y differs from traditional o11y — Phil Hetzel, Braintrust
aiDotEngineer
450 views•2026-05-28
Re: 🗣️📍theprophedu📍2026 GST 103 CLASS (E-EXAM REVISION)
theprophedu
636 views•2026-06-04
WEB TECHNOLOGIES UNIT-2 | Degree 4th sem BCOM Computers web technologies unit-2 full explanation💯✅
LearnwithSahera
1K views•2026-05-29
More tests are always better? How to use AI to identify tests that bring little value
Alliance4Qualification
335 views•2026-05-29
Search Algorithms Explained in 60 Seconds! 🤖💨
samarthtuliofficial
218 views•2026-06-01
People of Game of Thrones using JavaScript DOM
AltCampus
296 views•2026-05-30
Instagram accounts got PWNed
EricParker
13K views•2026-06-03











