RFID 522 Reader Firmware Problem gelöst

Page content

Im Zuge von Experimenten im RFID / NFC Bereich bin ich auf ein Problem mit meinen fernöstlichen RFID 522 Readern gestoßen.

Die beliebte Arduino Library MFRC522 (https://github.com/miguelbalboa/rfid) beinhaltet ein Beispielprogramm namens “DumpInfo”, mit dem die Versionsnummer der Firmware des Readers und Daten von erkannten RFID Tags ausgegeben werden können.

Als gültige Firmware sind mir derzeit (lt. NXP) nur zwei Versionen bekannt:

  • 0x91 = V1.0
  • 0x92 = V2.0

Anscheinend treten im Feld aber wohl häufiger auch andere Werte auf, die dann als (unknown) angezeigt werden.

Dieses Phänomen hatte ich auch bei zwei meiner Reader, die an einen Arduino Nano (328P) angeschlossen waren:

  • Firmware Version: 0x12 = (unknown)
  • Firmware Version: 0x80 = (unknown)

Hier können aber auch beliebige andere Werte auftreten.

Hier lag nach Recherche im Netz immer der Verdacht auf einer entweder nicht ordnungsgemäßen Verkabelung (die ich zumindest bei einem Aufbau ausschließen konnte) oder auf einen defekten oder gefälschten Readerchip.

Auch auf der Githubseite der MFRC522 Library wird dieses Verhalten (Stand heute) als ungelöstes Problem aufgeführt:

  • Firmware Version: 0x12 = (unknown)
    • The reason of this behaviour is unknown.

Werfen wir kurz einen Blick auf die entscheidenen zwei Zeilen in der setup Funktion von DumpInfo an:

   mfrc522.PCD_Init();		// Init MFRC522
   mfrc522.PCD_DumpVersionToSerial();	// Show details of PCD - MFRC522 Card Reader details

Hier sieht man, das die Firmware ausgebende Zeile direkt auf den Init() Aufruf folgt.

Meine Änderung, um das Problem zu lösen liegt einfach nur in einem delay() Aufruf über mindestens 3 Millisekunden nach dem Init().

   mfrc522.PCD_Init();		// Init MFRC522
   delay(3);
   mfrc522.PCD_DumpVersionToSerial();	// Show details of PCD - MFRC522 Card Reader details

Mit dieser einfachen Änderung gibt der Reader, der vorher 0x80 geliefert hat, jetzt ordnungsgemäß ein

  • Firmware Version: 0x92 = v2.0

und der Reader, der sich vorher mit Firmware Version: 0x12 = (unknown) gemeldet hat gibt jetzt ein

  • Firmware Version: 0x91 = v1.0

aus.

Es scheint jedenfalls so, aus benötigt der Chip auf dem Reader etwas länger zur Initialisierung, bevor er auf Anfragen anworten kann. Da hier auch Antennentechnik im Spiel ist (Einschwingen etc.), muss Timing immer berücksichtigt werden.

Wahrscheinlich war das Problem auch abhängig von der Mikroprozessorgeschwindigkeit (ich habe keine weiteren MCs getestet), so das es bei machen Mikroprozessoren nicht aufgetreten ist, bei anderen dagegen häufiger.

Für mich ist das Problem der falschen Firmwareanzeigen meiner RFID 522 Reader damit gelöst. Ein Patchrequest für die obenen genannte Library wird im Laufe des Wochenendes erstellt und dann hoffentlich auch zeitnah gemerged. Wer darauf nicht warten kann, weiß jetzt, was er zu tun hat.

Auch müssen funktionierende Reader zukünftig nicht mehr unnötig entsorgt werden.

Munter bleiben …

Stay tuned ...
Carsten

reader_522.jpg