Gem Version

This project is aiming to provide easy access to MIFARE RFID tags using MFRC522 and Raspberry Pi.

The code itself can be ported to other platform with little effort since it's purely written in Ruby.

Inspired by miguelbalboa/rfid and Elmue/electronic RFID Door Lock.


Ruby version 2.3+ is required.

Linux SPIDEV is required. Raspberry Pi can use raspi-config to enable.

You can install it by doing gem install mfrc522 or using bundler.


RDoc is available at RubyDoc.


This library assumes you have the reader connected to SPI0 CE0 on Raspberry Pi.

If not, adjust the parameters when calling MFRC522 initialize method.

NRSTPD(RST) pin should be connected to 5V or something logically HIGH.

Supported RFID tags

Models supported and have been tested by the author:

  • MIFARE Classic
  • MIFARE Ultralight
  • MIFARE Ultralight C
  • MIFARE DESFire EV1, without ISO-7816 APDU
  • MIFARE DESFire EV2, without ISO-7816 APDU and new features since EV1

Models implemented but not tested:

  • MIFARE Ultralight EV1

Models under development:

  • MIFARE Plus

If the card model you want to use is not on the list, you can implement it on top of the PICC class.

The library provide basic access to ISO 14443-3 and ISO 14443-4 protocol.

Get started

Check out files in folder test for example usage.

You have to rescue exceptions yourself.

Known Issue

For older versions(< 3.0.0), the underlying library pi_piper we used is known to cause SegFault if you use it along with Gtk3 on Respbian Stretch, which comes with Ruby 2.3.3 by default. Upgrading Ruby to newer version is likely to solve the issue. Ref: issue#4