RFID tag read/write on FreeBSD

Waitman Gobble gobble.wa at gmail.com
Mon Oct 13 03:45:42 UTC 2014


On Sun, Oct 12, 2014 at 5:05 PM, Waitman Gobble <gobble.wa at gmail.com> wrote:

> Hi,
>
> If you are wanting to read and write RFID tags (for like tracking people,
> and stuff) on FreeBSD I am working on software based on the Impinj R2000
> chipset. The SDK/demos are in c# / .NET, which runs in 'mono' but the mono
> people have apparently omitted the code for serial port callback functions
> so it basically sits there.. which is useless IMHO. So it looked to me like
> more work to make the code do what i need it to, at least in my
> application, instead of starting from scratch.
>
> Anyhow at the moment it's performing basic functions and reading tags..
> writing tags soon.
>
> ie,
>
> # ./rfid
> Connected to /dev/cuaU0 at 115200 baud.
> RFID read/write tags
> Control-C or Q<enter> to quit,
> R<enter> to Read Tag
>
> Received Command: 72
> Firmware Version: 1.9
> r<enter>
> Received Command: 81
> Tag: [pc 30 0] [epc e2 0 57 76 76 6 1 52 5 90 d7 5f] [crc 7f 6] [data e2 0
> 57 76] [ant 1]  [cnt 1]
>
> It's free.
>
> https://github.com/waitman/rfid
>
> builds with clang but needs boost port. i presume it may work with the
> RS500, R500 or R1000 chips but I've not any of those to test.
>
> --
> Waitman Gobble
> Los Altos California USA
> 510-830-7975
>


Update, writing tags now works.

Also tested on PR9200 chip, Phychips. Which is apparently optimized for
"Fast Moving Consumer Goods". so if you want to track those kinds of things
instead of people. After I talked to some people I now understand the
protocol is mostly standardized so it might be good to turn this into a
port, since it should theoretically work with all the modern RFID
chipsets.  And "AFAIK" RFID tag stuff has been limited to MS OS computers.



# ./rfid
Connected to /dev/cuaU0 at 115200 baud.
RFID read/write tags
Control-C or Q<enter> to quit,
R<enter> to Read Tag
W<enter> to Write Tag

Received Command: 72
Firmware Version: 1.9
r
Received Command: 81
Tag: [pc 30 0] [epc 11 22 33 44 76 6 1 52 5 90 d7 5f] [crc 8a 6] [data 11
22 33 44] [ant 1]  [cnt 1]
w
Write Tag. Now enter data on one line. Four bytes separated by SPACEs.
Example: 11 22 33 44<enter>
55 77 88 33
Received Command: 82
Tag Write Operation Complete. Read Tag to confirm data.
r
Received Command: 81
Tag: [pc 30 0] [epc 55 77 88 33 76 6 1 52 5 90 d7 5f] [crc 6a 2f] [data 55
77 88 33] [ant 1]  [cnt 1]
q


Note:

At the moment it's hard-coded for 4 data bytes in EPC. This can be adjusted
in the code, eventually may be entered as command.


-- 
Waitman Gobble
Los Altos California USA
510-830-7975


More information about the freebsd-questions mailing list