Revision as of 21:30, 15 July 2013

Contents

950 MHz UHF RFID system

This RFID reader is installed near the entry door of Noisebridge (at the top of the stairs). If it can be made to work properly, we can put RFID tags in any items we want (private or public) and program our computer systems to react if and when those items go near or through the door (or elevator room). This could be useful in deterring or preventing theft, so that Noisebridge CAN Have Nice Things.

current state of things: the reader works, we talk to it through serial, and it detects tags, but all the tags we have result in the same line of text from the reader. We need to figure out what command to send to the reader to get it to tell us the full data of the tags, or at least their unique serial number. We have over 100 tags, but they aren't readable until a piece of wire is soldered onto them as an antenna, which can be tailor made for the article they are being fixed onto. The PDF for the tags we have is linked to below, uploaded to the wiki as rfid.pdf If you want to help with this project, contact me. -jake

The reader is connected to Minotaur through a USB to Serial adaptor which comes up as /dev/ttyUSB2 (this time) BUT
you should talk to it through its reliable pathname which is:/dev/serial/by-path/pci-0000:02:02.3-usb-0:1.1.4:1.0-port0
try the following command (as root on minotaur)# screen /dev/serial/by-path/pci-0000:02:02.3-usb-0:1.1.4:1.0-port0 57600
(press control-A and then k to "kill" or exit screen when you're done)

the reader is now configured and it works. when it detects a tag, the windows software tells you
Tag ID,Tag Name,Tag Type, Total Reads, Rate, Antenna, Date/Time
3005FB63AC1F3841EC880467,,EPC1G2,1648,0.0,0,1/21/2013 11:04:06 PM

this is what the serial data looks like, 57600 baud: (it repeats constantly while the tag is nearby)
{Rd,d:3005FB63AC1F3841EC880467,t:EPC1G2,e:28;14

this reader has four antenna ports. The windows software seems to tell you which antenna the tag was seen on, but we will need to find that information in the serial data, which should be easy. The reason this matters is because we will end up having antennas in different locations (door at the top of the stairs, elevator room door, bottom of the steps) and we will want to react differently depending on where a tag is detected.

we got these 900mhz band RFID tags available from mouser.com as part number SL3S1202AC0,118 they cost 7.4 cents each.mouser.com link to buy these tags
(the picture on the mouser site is wrong for these parts, they do not look anything like a 1206 capacitor)

these tags do not have an antenna - they are a grain of sand in the middle of a 3mm x 9mm piece of plastic. On either side of the grain of sand is a copper contact that you can solder to if you're careful. don't melt the plastic backing! the whole thing will probably stick to whatever it was resting on when you soldered it, so prepare. Make your antenna (a loop of wire probably, we are trying to figure out what works best) and solder it to the two contacts and then protect the thing with some hard (hitemp) hotglue or epoxy or something.

AN0969 has a 98 mm long antenna design, with a read range of 1 m to 6 m depending on the substrate you use. Teflon and polystyrene are best; Rogers TMM6 is the worst but has the least variation across the frequency range.

Our reader appears to display some form of the EPC when a tag is in range. It's possible the query tags in the field for TID, but I'm not sure if we can display TID by default when a tag is in range (the EPC appears to be read by default) -- but we can reprogram the EPC to some arbitrary value!

User Guide - Though for a different model, pg 52-56 provide some good examples on writing to gen2 tags

code - script to read/write to a serial port, to filter out duplicate output]

Some example commands (note: wa command will write to any unlocked tag in the field):

To write an EPC ID value of 332233445566778899aabbcc onto a tag with the Protocol Control field set for a 96 bit tag, enter:
}wa,a:01,s:02,b:332233445566778899aabbcc!
To add the length field, enter:
}wa,a:01,s:02,b:332233445566778899aabbcc,l:6!
To request a read/verify cycle following the write operation, enter:
}wa,a:01,s:02,b:332233445566778899aabbcc,l:6,f:1!
In order to write an EPC ID to a blank tag, the Protocol Control bits must also be
set. This can be accomplished in a single write command since the Protocol Control
bits are contained in the same memory bank as the EPC ID. Following the previous
example, the command would include setting the Protocol Control to 3000 as follows:
}wa,a:01,s:01,b:3000332233445566778899aabbcc!

Changing Registers

This reader has a number of config registers we can modify. Use the following CHUMP command to read the current registers:

}Cr!

To make changes to a setting you'll need to generate a hex value for the 32 bit register. Refer to section 4 and 5 in the CHUMP reference guide for bit positions and usage. This calculator can make the process easier. Of particular interest is P2I, the GEN2 identification layer control register, which maybe will allow us to change the default memory read location (from EPC to TID).

When you're done you can write your register as follows:

}Cw,d:REGISTER,b:10100!

add ",f:1" to save to NVM, otherwise the setting will revert upon restart.

125KHz and 13.56MHz card-style and fob-style and implant-style RFID systems

Please bring RFID tags and readers to Noisebridge! We currently have very few tag samples. We're also looking for readers and ways to interface with RFID.

The current tag types (as detected by RFIDIOt) we have are:

* MASTERCARD - a0 00 00 00 04 10 10 (HSBC MASTERCARD)

The current readers we have are:

* Jake A. has a CardMan 5321 in his backpack, Noisebridge could use one if someone wants to donate one.
* chris paget brought a small stack of parallax (grand idea studios) units to the 2009-04-11 talk.