I have a set of 4 power sockets that can be turned on and off with an RF remote. That remote has 4 pairs of on/off buttons along with a master pair that can control all sockets at once.
Initially, the power sockets do not know about the remote, one needs to "program" the socket by pressing the desired "ON" button while the socket is in learning mode.
Sniffing the 433MHz signal is quite easily done and repeating captured signals works just fine, so there does not appear to be any kind of security here.
Out of curiosity, I wanted to understand the structure of data sent to these sockets and have figured out that it's made of 24 bits with the following structure:
Nibble | Usage |
---|---|
5 | Remote Id |
1-4 | Action code |
0 | Button Id |
So for instance, if I receive 5ae940
, the Remote Id is 5
, the Button Id is 0
and the action code is ae94
Recording multiple button presses, I discovered that the same button, On for A channel for instance, rolls between 4 possible action codes. And using a second set of power sockets bought 3 years ago shows that they are cross compatible with the newer one, with a different set of 4 possible action codes.
When placing the power socket in learning mode, there is only one button press needed, so the socket itself has a way to identify any of the four possible action codes as equivalent to the one it has learnt.
What I have a hard time figuring out is what makes those 4 possible action codes related to each other.
Here are the captured packets and their associated action:
Set year | A On |
A Off |
B On |
B Off |
C On |
C Off |
D On |
D Off |
Master On |
Master Off |
---|---|---|---|---|---|---|---|---|---|---|
2019 | bf756c b7441c bd9c5c be3aac |
b20e7c b5212c b9d88c b8c0bc |
b6af35 b453f5 b0f6e5 bc1705 |
b16bc5 b3b995 bb8dd5 bae245 |
b20e7e b5212e b9d88e b8c0be |
bf756e b7441e bd9c5e be3aaz |
b16bc7 b3b997 bb8dd7 bae247 |
b6af37 b453f7 b0f6e7 bc1707 |
b20e72 b52122 b9d882 b8c0b2 |
bf7562 b74412 bd9c52 be3aa2 |
2022 | 5ae940 592870 52acb0 530d30 |
5814a0 5d5b20 54cf10 559090 |
5ae944 592874 52acb4 530d34 |
5814a4 5d5b24 54cf14 559094 |
5ae94c 59287c 52acbc 530d3c |
5814ac 5d5b2c 54cf1c 55909c |
5814a2 5d5b22 54cf12 559092 |
5ae942 592872 52acb2 530d32 |
5814aa 5d5b2a 54cf1a 55909a |
5ae94a 59287a 52acba 530d3a |
So in 2019, I bought remote with Id b
and in 2002 the new remote has Id 5
What can be seen is that if bit 1 of the button Id is set, then the meaning of the action code is reversed.
What I could not figure out yet is how to detect that a given button Id is the "Master" one for the remote. For remote 5
, it could be because a
is the binary complement of the remote Id, but this does not work for remote Id b
And as already mentioned above, I cannot figure out the logic that connects together any given set of 4 action codes. As a reference, here are the 6 sets I have so far:
Set 1 | Set 2 | Set 3 | Set 4 | Set 5 | Set 6 |
---|---|---|---|---|---|
f756 7441 d9c5 e3aa |
20e7 5212 9d88 8c0b |
6af3 453f 0f6e c170 |
16bc 3b99 b8dd ae24 |
ae94 9287 2acb 30d3 |
814a d5b2 4cf1 5909 |
I have tried various things like xor-ing, and-ing, or-ing values in a group, comparing bits set to 1 in any given values but I could not figure out what makes those group of 4 values related to each other.
I understand that this is quite a lengthy message, but I wanted to make sure that I share all the discoveries I made into this endeavor.
I totally admit that I can store the above 6 sets of values in a constant array and be done with it, but this would leave an itch in my brain...
Many thanks in advance for any suggestions, things to try, hints...
EDIT 2002 02 05
The remote appears to have a global value indicated which of the next four possible values is to be used.
If we consider the 2022 remote, On button A is in the ae94
, 9287
, 2acb
, 30d3
group and On button D is in the 814a
, d5b2
, 4cf1
, 5909
group.
Here are the codes used following the button presses in that sequence:
Button | Code used |
---|---|
On A | ae94 |
On D | d5b2 |
On A | 2acb |
On A | 30d3 |
On D | 814a |
As you can see, some values are "skipped" because another button was pressed.
Taking the battery off for a while and placing it back on does not change the codes that are sent by the remote.
Both sets are sold by LIDL under the Silvercrest brand, the one from 2019 having those references:
IAN 284705
Article# 1 04772 1706
While the one from 2022 has those:
Reference 36626_2101
Model 8 50 50 00066
Both remotes look like this:
The whole point of this research is to be able to make the plugin for the RFLink32 project much more flexible. Indeed, it currently uses the "truth table" approach which only works with my own set of sockets.