I’m trying to reverse engineer an IR protocol for laser tag guns, and the documentation I have says there should only be 14 bits, except I’m getting 24 from this particular set. The manufacturer likely modified the spec (Miles Tag 2) so their gear wouldn’t play nicely with anyone else.
In looking at the received codes, the original spec for the first 14 bits of data is correct, the next 6 bits always appear to be 0, and then there are 4 bits that change according to the player, team, and damage that may be a checksum.
It’s not a simple Sum, XOR, or even a XOR for a constant, and that’s pretty much where my skillset ends. It may be a crc, or even something else but I’m not knowledgeable enough to calculate this.
The spec data if it matters is that the first bit indicates it’s a shot (from a tagger) or a message
The 2nd to 8th bits are the player number
The 9-10th are the team (4 teams)
the 11-14th are the damage (looked up in a table with a total of 16 values possible)
Here’s a table of the received IR codes for a shot(0) from Player 9(1001) on Red Team (00) for each of the damage amounts on the left. The hex codes need to be reversed to get the original binary, so I’ve done that. Hyphens were added by me for readability while I tried to figure this out. The 4 bit code does change if you change the player number, team, or damage. I found through testing that Player 9 and 16 collide and have the same codes for the same damage (if both on team red) Also, Player 16, despite using a 5th bit for their player number still has the six 0 bits followed by 4 random bits.
Damage Table for Player 9 on the Red Team
1 0xE00090 00001001-00-0000-00-0000-0111
2 0x202090 00001001-00-0001-00-00000100
4 0x801090 00001001-00-0010-00-00000001
5 0x403090 00001001-00-0011-00-00000010
7 0xD00890 00001001-00-0100-00-00001011
10 0x102890 00001001-00-0101-00-00001000
15 0xB01890 00001001-00-0110-00-00001101
17 0x703890 00001001-00-0111-00-00001110
20 0x600490 00001001-00-1000-00-00000110
25 0xA02490 00001001-00-1001-00-00000101
30 0x001490 00001001-00-1010-00-00000000
35 0xC03490 00001001-00-1011-00-00000011
40 0x500C90 00001001-00-1100-00-00001010
50 0x902C90 00001001-00-1101-00-00001001
75 0x301C90 00001001-00-1110-00-00001100
100 0xF03C90 00001001-00-1111-00-00001111
Any help would be appreciated.