SparkFun will be closed May 25, 2015 for Memorial Day. Orders placed after 2pm on Friday the 22nd will ship out on Tuesday. Thanks!

RFID USB Starter Kit Quick Start Guide

RFID Basics

Most of us probably use some type of RFID device every day. Everything from credit cards, security badges, toll booths, inventory security systems, and even identification implants all are beginning to use RFID technology.

Radio Frequency Identification (RFID) uses radio waves to communicate between two objects: a reader and a tag. RFID communication is the same as two way radio communication in the sense that information is transmitted or received via a radio wave at a specific frequency. However, one of the major differences is that RFID systems detect the presence of the other remote device, namely the tag. In addition, passive or un-powered tags can be powered remotely for a short period of time by the reader. Also, all tags contain a small amount of memory that can be read from (and sometimes written to) over the air by the reader. Most of the time, the piece of memory contains some type of unique identification information.

RFID USB Hardware Description

The SparkFun RFID USB board allows you to easily communicate with a 125kHz RFID reader.  There is a read buzzer and LED that are activated once a tag has been read.

The SparkFun RFID USB board allows you to control a RFID reader via USB...

 ...or a microcontroller like Arduino. The breakout pins are 5V tolerant TTL pins. See the reader datasheet for pin descriptions.

Compatible Readers and Tags

The SparkFun RFID USB can use either the ID-20, ID-12, or ID-2 readers.

The ID-20 has the longest read range, the ID-12 is the most common, and the ID-2 is the smallest, but doesn't have a built in antenna like the previous two.

The readers above will read any 125kHz tag that uses the EM4001 card format. There are three compatible tags that SparkFun sells.

From left to right: card tag, button tag, and glass tag.

Getting Started - Basic

Here is what you will need:

Here are the steps you need to take to verify functionality of the SparkFun RFID USB board.

  1. The first thing you need to do is download FTDI virtual COM port drivers for the RFID USB board. The FTDI drivers allow you to communicate with the board over USB. Save the extracted folder to a safe spot on your computer.
  2. Attach the ID-12 or ID-20 to the RFID USB board, make sure the pins line up correctly.
  3. Plug in a mini-USB type-B cable to the board and to your computer. Depending on your OS, you should be asked for drivers. Point to the folder for the FTDI drivers you just downloaded.
  4. If the driver install was successful, the RFID USB board should enumerate as a COM port. To check this in Windows: right click on 'My Computer', goto 'Properties' -> Hardware' -> 'Device Manager'. In the Device Manager under 'Ports (COM & LTP)', you should see 'USB Serial Port (COMxx)'

  5. Next, you need to open a serial terminal program. Most Windows machines (except Vista and 7) have a program called hyperterminal already installed. You can use hyperterminal or any other alternative, FYI, there are many, i.e. TeraTerm, Minicom, etc. To find hyperterminal, goto the Start menu, 'Programs' -> 'Accesories' -> 'Communication' -> 'HyperTerminal'. Open the program and hit the 'properties' button.

      Make sure you select the same COM number as shown in device manager.

    Also, click on the 'Configure' button and make sure 9600 baud rate is selected.

    And finally click the 'Call' button. (Note: if hyperterminal asks you to name your session, just name it whatever you like). 

  6. Grab one of your tags and hold it above the reader. You should hear a loud beep, see the 'Read' LED light, and also see a unique serial number pop up in hyperterminal, similar to this one.


If you have gotten this far, your have verified the functionality of the RFID USB!

Check out this cool project to get an idea of what you can do with this now that you have it working!

Comments 28 comments

  • Thanks for the guide. Is there one for Mac OS users?
    Thank you.

    • hey!
      no Problem, ask google.
      my solution (mac lion an pro book):
      * first: download driver http://www.ftdichip.com/Drivers/VCP.htm
      * second: open Terminal.app (use spotlight or …)
      * third: type in the following: screen /dev/cu.usbserial-A700eyoT 9600
      problems? unplug usb and try again.
      good luck!

      • Thanks! I had no problem using the screen command in the terminal, but when I try to test it within a simple bash shell, I get an error reporting “Sorry, could not find a PTY”. Here is the script:


        while :
        rfid=screen /dev/cu.usbserial-A600JNHR 9600
        echo “RFID #: $rfid"
        sleep 1
        Any ideas would be great!

        • The problem you’re seeing is that screen consumes the output generated by the usb device, so nothing will be written to your rfid variable. If you simply run the cat command on the usb device file, you’ll also see the RFIDs printed to STDOUT:

          cat  /dev/cu.usbserial-A800f8sK

          To capture the ids in a script, you’d do something like this:

          cat /dev/cu.usbserial-A800f8sK |
          while read rfid 
              echo "found $rfid"
              # do something interesting!
          • Another idea to try is to install the FTDI drivers from above, plug in your RFID board and sensor, install and start Arduino programming software, go to Tools>SerialPort>/dev/cu.usbserial… and then go to Tools> Serial Monitor. The code of the scanned card should appear in the window (9800 baud rate)

  • Hi all! Quick question please: Shouldn’t the id read and shown in my terminal be equal to the id number printed in the tag? I’m getting numbers that look like these:

    id printed in the blue chip: 0009415736 (10 digits)

    id shown in terminal: 30008FAC382B (12 digits)


  • Hello I need help please, I am using this RFID adapter, but my profesor does not allow me to use arduino or msp430, he only want me to use TIVA TM4C, and I cannot manage to detect the Cards, Im trying to modify this code I found:

    include <stdint.h>

    include <stdbool.h>

    include “inc/hw_memmap.h”

    include “inc/hw_types.h”

    include “driverlib/gpio.h”

    include “driverlib/pin_map.h”

    include “driverlib/sysctl.h”

    include “driverlib/uart.h”

    uint32_t ui32SysClkFreq; int main(void) { ui32SysClkFreq = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 120000000); SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); GPIOPinConfigure(GPIO_PA0_U0RX); GPIOPinConfigure(GPIO_PA1_U0TX); GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); UARTConfigSetExpClk(UART0_BASE, ui32SysClkFreq, 115200,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE)); UARTCharPut(UART0_BASE, ‘E’); UARTCharPut(UART0_BASE, ‘n’); UARTCharPut(UART0_BASE, ’t'); UARTCharPut(UART0_BASE, ‘e’); UARTCharPut(UART0_BASE, ‘r’); UARTCharPut(UART0_BASE, ‘ ’); UARTCharPut(UART0_BASE, ’T'); UARTCharPut(UART0_BASE, ‘e’); UARTCharPut(UART0_BASE, ‘x’); UARTCharPut(UART0_BASE, ’t'); UARTCharPut(UART0_BASE, ‘:’); UARTCharPut(UART0_BASE, ‘ ’); while (1) { if (UARTCharsAvail(UART0_BASE)) UARTCharPut(UART0_BASE, UARTCharGet(UART0_BASE)); } }

  • I added the FTDI drivers on Kali Linux, connected the mini USB interface to my PC and I got the following output in dmesg:

    [71621.642321] usb 2-1.4: new full-speed USB device number 13 using ehci_hcd
    [71621.743948] usb 2-1.4: New USB device found, idVendor=0403, idProduct=6001
    [71621.743952] usb 2-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [71621.743954] usb 2-1.4: Product: FT232R USB UART
    [71621.743955] usb 2-1.4: Manufacturer: FTDI
    [71621.743957] usb 2-1.4: SerialNumber: A601LM9M
    [71621.746558] ftdi_sio 2-1.4:1.0: FTDI USB Serial Device converter detected
    [71621.746580] usb 2-1.4: Detected FT232RL
    [71621.746582] usb 2-1.4: Number of endpoints 2
    [71621.746583] usb 2-1.4: Endpoint 1 MaxPacketSize 64
    [71621.746585] usb 2-1.4: Endpoint 2 MaxPacketSize 64
    [71621.746586] usb 2-1.4: Setting MaxPacketSize 64
    [71621.748490] usb 2-1.4: FTDI USB Serial Device converter now attached to ttyUSB4

    But when I cat /dev/ttyUSB4 or minicom to it, I don’t see anything. I’ve added the ID20LA to this and when I bring a 125kHz tag close to it nothing shows up, no lights light up… seems like I’m doing something wrong or it just doesn’t work. The right drivers are seemingly picked up by the OS per the dmesg output. Any ideas?

  • I have a problem!!! the drivers installed correctly, but when i plug in the usb cable my computer does identify it. but when i go to device manager to make sure its in com port, its not there. It comes up as a “USB Input Device” and no matter what i try it wont come off!!! I really need help, I’m stuck!!!

  • Terrific guide, that’s much appreciated! Is it a problem if my reader doesn’t make a buzzing sound when it reads the RFID card? The ‘read’ light does light up, and a 12 digit serial pops into the window (after a heart and a smiley face…) Thank you!

  • I followed the instructions on this page perfectly over dozen times. not working, first tried on mac, then on windows, tried every driver, but that’s not the problem. when I plug in the board it doesn’t recognise. I can’t install driver if it doesn’t even rec. somethings plugged in.

    • Sorry to hear you are running into issues with your board. Shoot us an email at techsupport at sparkfun dot com and we can help you out with this.

  • Everything seems to be working as shown here but when I scan a tag two additional characters are showing, one before and one after the 12 character id. I’m not terribly familiar with rfid, can anyone explain to me what this is about and/or why the additional characters aren’t shown here? -thanks

    • Are they consistently the same characters? If so it’s just how they are making the packet of information so you know that the serial data you are getting is intact. For example, I’ve seen RFID readers output with the following format; “/n[12 characters]/n”. So, that is a return followed by your 12 characters of the id and then a new line.

      Why is this important? Let’s say you started reading a serial buffer and the first character you read in wasn’t ‘/n’, it was something else. You then would know that this isn’t the beginning of the data you were looking for. If it was, then the following 13 characters should be your 12 characters followed by your end character.

  • I’m wondering if it is possible to use this board with a RS-232 interface. I know one option is going through an arduino board. But is there another way to do this? The RS-232 won’t be able to power the board but I was wondering of anybody has tried attaching an external power supply and still using the usb port.

    thank you

  • Will this kit read any 125kHz or just the cards in the kit/from SparkFun? I did purchase the kit with the assumption that it’d read anything 125kHz, but it seems it will only read the cards with the kit.

  • Hello,

    How can I copy or echo the data read by TeraTerm to microsoft access 2011? Hope that someone can help me!

    Thnx, Marabunta

  • How can I redirect or echo the data read by hyperterminal to the password field on a web page????? I also have a VB 2008 Application that reads the tag OK, How can I redirect this one too to the same web page(password field)??? Thanks

  • I ordered this RFID kit together with the starter kit for Arduino (UNO), assuming that they would match up since they were grouped together on the shop site. I probably did not study the specs close enough, and I didn’t notice that it uses an USB connection. My bad ;-(

    Anyways, is it possible to connect it to the Arduino Uno board and used it that way? - and if so, are there any tutorials, or hints for wireing it up available?

    • Don’t worry, you can still connect this board to your Arduino. On the opposite side of the board from the USB connector is a row of holes (the header). The first three pins on the header are VCC, GND, and TX. Connect these to your Arduino: VCC to 5V, GND to GND, and TX to the Arduino’s RX (pin 0). Don’t plug the USB cable in, the Arduino will power the RFID board. Now when the card reads a tag, it will send a string of text to the Arduino’s serial port at 9600 baud. (Note that having something connected to the Arduino’s RX line will interfere with code uploading, so disconnect the RX line while reprogramming the Arduino.) Hope this helps, if you need more assistance let us know.

      • Sorry I’m really new to this and I’m trying to figure it all out. How to access the string that the RFID board sends to the arduino?

        • You’d want to use the Serial.read() command. There’s example code for this included in the Arduino IDE under Examples ->Software Serial->SoftwareSerialExample.

  • an other link is here

  • i just placed an order for the starter kit. I’m also wondering if i can use the module ID-12 and the pic16f628 to read the data in order to use ir at my entrance door. I will try to use picbasic. I found a similar code and example in there….

  • Can anybody help with a Java development tutorial, please?? :-S

    • Hi,

      I was searching from a while for such info about the RFID starter kit, with java… any news, any tutorials… regards, Sam

  • Hello thr,
    I m gonna use this device along with my java project. So I require the Java SDK along with starter pack.
    Plz let me ensure that Java SDK would be there along with the device. So that I can start with my project.

  • Is it possible to read and write with this?
    So I could make a access system for my home. Eg make a RFID inside a bracelet…