Kate Temkin Profile picture
17 Nov, 16 tweets, 6 min read
Okay, as promised, it's time to live-tweet as I "quickly" reverse the RF protocols associated with this wonderfully-named JOOFOO floor lamp:

amazon.com/JOOFO-Torchier…

The lamp's pretty bright; but it's defining features are accessed via a small remote control.
The remote allows one to adjust the lamp’s brightness and color temperature— and despite having no FCC identifying label, seems to communicate over RF.

At a glance we can guess this slightly dopey looking remote uses a simple modulation in one of the ISM bands. ImageImage
When looking at a device like this, my instinct tends to be to check ~433.92MHz first; lots of these kinds of devices broadcast over little pulse-width modulations up there.

Sure enough, monitoring around 433MHz using gr-fosphor quickly shows us a signal on button presses: Image
I like to grab signals quickly osmocom-fft; and then explore them using @assortedhackery's Inspectrum.

A quick bit of fiddling, and we can easily see the little train of pulses our remote emits as we press the "brightness up" button: Image
This is a very simple type of encoding: a single bit is sent at regular intervals by generating an RF pulse. The value of the bit to be sent is encoded into the _length_ of that pulse.

If we mark each bit period, we can easily see our "long pulse" and "short pulse" periods. Image
At this point, we could very easily start comparing this signal with other similar protocols--there are lots of devices that use very similar encodings up at 433MHz!

To make a better post, I'm going to ignore all of them, and reverse this simple protocol from "first principles".
Inspectrum gives us an awesome ability to easily extract the signal's vitals by tweaking cursors; which gives us an easy approximate measurement of our per-bit timing.

We'll put these values aside for later reference, and use them in a bit! Image
Holding the "brightness up" button for a bit gives us one more important piece of information: this protocol is super simple: it sends the same data repeatedly while the button is held.

This makes RE'ing easy; we'll only need to interpret a short burst for each of the buttons. Image
To make this data a bit easier to describe, let's assign bit values to the "short" and "long" pulses.

We'll call the short values '0', and the long values '1', which makes this pattern:

BRIGHTNESS UP: 0100_1000_0110_0101_0110_1000_0 Image
We'll do the same thing for each of our other buttons.

Fortunately, there are only four buttons total, so we can do this pretty quickly!

P: 0100_1000_0110_0101_0110_0001_0
C: 0100_1000_0110_0101_0110_0010_0
+: 0100_1000_0110_0101_0110_0100_0
-: 0100_1000_0110_0101_0110_1000_0 ImageImage
[An astute reader will notice a slight change in the code here from what I reported earlier. This is because of human error: I misinterpreted the pictures on my remote, and thought 'brightness up' was 'brightness down'.

This doesn't change much, so we'll roll with it.]
Looking at each of the four codes, you'll notice that only four of the bits really seem to encode which button is being pressed.

So, why are the remainder there? I'm going to assume for two reasons:

1) to help both sides sync up (a "sync word"); &
2) to carry a unique remote ID
There's a very real chance that someone might buy multiple of these lamps; and it'd probably suck if every lamp responded to every remote.

As fun as it might be to have control over your neighbors' lights, I imagine the fun would dim when you realize they have the same power 😓.
This raises one last little question: if they're using one bit for each button, what happens if you jam your fingers down on multiple buttons at once?

You guessed it: multi-track drifting!

brightness up -and- down:
0100_1000_0110_0101_0110_1100_0 Image
I'm going to end -this- thread here; and start another one in a bit in which we'll implement our own simple transmitter capable of controlling these lamps. :)
(I'll follow up with a lab notebook post shortly; and it'll have full alt-text for accessibility. Apologies for forgetting on twitter. 😳)

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Kate Temkin

Kate Temkin Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @ktemkin

18 Nov
okay; now that we have that remote black-box RE'd; let's cheat a little, and open the remote up! ^_^ Image
The remote's PCB is ultra-simple-- it's literally:

- a single EV1527 control IC
- four buttons
- four diodes
- a crystal
- a switching FET
- an LED
- a PCB antenna

We can guess a lot of this by looking; but it turns out we don't have to-- we can pretty easily grab a schematic!
If we take a moment to look up the part number on the main SO-8 IC, we'll find that it's an EV1527 "OTP Encoder", manufactured by Silvan Chip Electronics.

Looking just a bit further, we can find a short data brief, which happens to contain the schematic for a reference design! Image
Read 13 tweets
15 Nov
so, my body doesn’t produce sex hormones on its own (and hasn’t, based on a long history of lab tests); and if I don’t inject synthetic ones myself, I’m super exhausted all the time

(this is probably related to an intersex condition, but I’m super hesitant to apply labels)
CW: consequences of bad politics

the bad political state of the US recently has made me increasingly worried that some of these meds would be less available, as they’re often used for birth control — and for trans care

i *really* don’t want to go back to being eternally tired
CW: consequences of bad politics

the thing is, for a lot of people, going without synthetic hormones is more than just a threat of perpetual tired

for lots of trans folks, this kind of thing can have much more dire consequences; & genuinely cause serious damage to mental health
Read 5 tweets
5 Sep
a few years ago, at the virtualization company I worked at:

customer: ever since we installed your new GPU driver, excel has been coming up with... wrong answers
me: wait what
customer: here, watch
me: how the *fuck*

bonus points to the first person to guess how that happened
background:
- this was a Windows XP driver (XPDM)
- there was no GPU compute involved
- only excel showed any kind of weirdness at all; everything else was perfect
(I’ll be good and not give feedback on guesses until someone gets it reasonably exactly or a few hours pass. >:])
Read 4 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!