Skip to content

Added support for Electra EM410X tags#310

Open
mocanew wants to merge 1 commit intoRfidResearchGroup:mainfrom
mocanew:main
Open

Added support for Electra EM410X tags#310
mocanew wants to merge 1 commit intoRfidResearchGroup:mainfrom
mocanew:main

Conversation

@mocanew
Copy link

@mocanew mocanew commented Oct 20, 2025

Fixes #203

Electra tags transmit another 64bit packet (epilogue) after the standard EM410X data. This PR is loosly based on flipperzero-firmware.

During testing I discovered a tag that contained non-repeating data in the full 8 bytes epilogue, contrary to what the Flipper code comments suggests. Because of this, I chose to save the full epilogue rather than the first 2 bytes. Interestingly, even though the tag had 8 bytes of data, only the first 2 were checked by the intercom, so the flipper still managed to succesfully emulate the tag.

This PR has been successfully tested on multiple Electra intercoms (all installed after 2010). I do not have access to any other EM410X tags so I can't confirm the code is regression-free. I do not have access to blank EM410X tags so cannot verify whether Electra tags can be sucessfully written to a blank tag.

Important note: this PR changes the length of decoded data for EM410X tags to 13 bytes. However, the Android app only saves the 5 bytes of decoded data for EM410X tags. If you'd like to test this PR before it's merged you have to use the cli app from the artifacts below.

@github-actions
Copy link

You are welcome to add an entry to the CHANGELOG.md as well

@github-actions
Copy link

Built artifacts for commit adfaff4

Firmware

Client

if args.id is None or not re.match(r"^[a-fA-F0-9]{10}$", args.id):
raise ArgsParserError("ID must include 10 HEX symbols")
if args.id is None or not re.match(r"^[a-fA-F0-9]{26}$", args.id):
raise ArgsParserError("ID must include 26 HEX symbols")
Copy link
Contributor

@Foxushka Foxushka Oct 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't like idea that user is required to use 13 bytes everywhere, when regular 5 byte EM410X are WAY more common (and it will confuse users). Maybe better to add another tag type?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not familiar enough with the codebase to create a new tag type without duplicating a significant amount of code (and I don't consider code duplication to be a solution). That said, other collaborators are welcome to use this PR as a starting point or reference.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Electra intercom

2 participants