rfid: [Collection] Bad boards
Hi community,
we often got issues which base on bad manufactured boards. I want this issue as a place to collect known bad boards. Maybe there is a way to detect them.
For example the
Firmware Version: 0x12 = (unknown)
Please only post your pictures or descriptions how to detect those boards. Please do not post any please help me request, they will be deleted.
edit: here a analysis: https://www.eluke.nl/2018/03/08/fixed-rc522-rfid-reader-not-reading-some-cards-part-1/ https://web.archive.org/web/20200828151219/https://www.eluke.nl/2018/03/08/fixed-rc522-rfid-reader-not-reading-some-cards-part-1/
Best.
About this issue
- Original URL
- State: open
- Created 6 years ago
- Reactions: 3
- Comments: 24
I have one of these https://core-electronics.com.au/piicodev-rfid-module.html . It reports version 0xB2 but seems to work fine. I haven’t seen much mention of 0xB2 elsewhere online.
I just bought one to do some early testing, it’s also 0xB2, it reads and dumps data without an issue, but it simply wont let me write to the card and tag that came with it, both MiFare 1K’s, I’d assume they’re counterfit or straight up defective. I’ve got a pack of 10 EM4035 cards coming, which i’m hoping will work.
We work with these devices in our company. We have used thousands of these readers and we are getting them from many different sellers. I have encountered many problematic readers but most of them work in some ways. However, I have noticed a correlation between reading performance and the amount of power radiated from the antenna. Some cards have a poor matching, so higher amounts of power needed to read them. So the reader needs to have good matching on the antenna impedance using capacitors. You can’t tell this by inspecting visually but it is visible on an oscilloscope screen. Here is an example of three Chinese RFID boards with different rates of success. You can tell which one works better by measuring how much energy is being radiated to the environment. You can measure this using a wire loop connected to an oscilloscope. I have used 4 turns for the measurement wire. I hope you find this useful.

I have a very similar board to the Board B posted by @ma-ze. The markings on the board itself are nearly identical, but the chip on mine is marked:
In software, the device identifies itself as using firmware 0x92. However, the data buffer left behind by the self-test command does not match the NXP datasheet or this library’s header:
Unfortunately I’m not able to get close-up photos of the chip markings. I also haven’t had a chance to do any functional testing as far as reading and writing tags. I’m hoping to spend some time on that today, and I’ll update with my findings.
[UPDATE 1] During my tests today, I discovered a very peculiar interaction between the self-test functionality and the
RcvOffbit of theCommandRegregister. In my original test code, I sought to preserve the value ofRcvOffand only modify the lower nybble containing the command to start the test. (I.e., I setCommandRegto be(CommandReg & 0xF0) | MFRC522::PCD_CalcCRC.) Since the chip’s soft-reset sequence initializesCommandRegas0x20, the byte being written back was0x23. In this configuration, I receive the incorrect result I described above. However, if I do not preserveRcvOffand instead simply write0x03toCommandReg, the self-test result matches the datasheet listing for this firmware version.This seems very unintuitive to me. The test is described several times in the datasheet as a “digital self test,” and so I would expect a bit controlling the “analog part of the receiver” to have no effect on the results. In addition, the steps listed for starting the test do not mention clearing the
RcvOffbit; the soft reset at the beginning of the sequence turns this bit on, and unless it is turned off the test will fail. Has anyone else observed this behavior and/or understand what causes the invalid result data?