RDM880 and multiple tags

Hello.

I just bought an RDM880, but I’m having strange problems when there are multiple tags (I need to access two tags “at the same time”… more or less).
Seems there’s no way I can issue an “inventory” command:
Send: 0xaa 0x00 0x04 0x10 0x04 0x00 0x00 0x10 0xbb
Recv: 0xaa 0x00 0x02 0x01 0x85 0x86 0xbb
So Status = 01 (FAILURE), Code=85 (Parameter or command format error)

This, according to the spec document linked from neophob.com/2010/03/bus-pirate-f … id-module/, should be a valid command… And source included in the demo code seems to confirm that.
If not, where can I get the protocol documentation?

If any1 is interested in my (ugly!) code, I can post it. But w/o full specs it’s nearly useless… Even the only “well” documented command 0x25 (get_snr) should return a flag telling if there is more than one tag, but often it says there’s only one even if there are three!

Hope someone can help me…

TIA!

Dear customer,

This module WIKI seeedstudio.com/wiki/index.p … 443_type_a.
There are some doc. you can refer to.

Hope can help you.

Best regards,

Yuri

Yep. Already found it. And digged neophob site (linked by wiki page) too.
Too bad the module doesn’t seem to act according to the specs.
For example, it doesn’t set the flag when answering command 0x25(getSNR) and there are multiple tags “in field”… And doesn’t honor “halt request” in the same command (that should place the answering tag in halt state after getting its ser# so other tags have a chance to answer the following getSNR request).
To be even more complete, I remember seeing that flag set… just couldn’t reproduce the conditions.
See that comm log I took ( > = what I’m sending, < = what the reader is answering, | = decoded answer):

[code]> 0xaa 0x00 0x03 0x25 0x26 0x01 0x01 0xbb
< 0xaa 0x00 0x06 0x00 0x00 0xc2 0x8c 0xf8 0x26 0x96 0xbb
| Status = 00 OK
| flag = 0 (single tag)
| sn=c28cf826

0xaa 0x00 0x01 0x06 0x07 0xbb
< 0xaa 0x00 0x02 0x00 0x80 0x82 0xbb
0xaa 0x00 0x03 0x25 0x26 0x01 0x01 0xbb
< 0xaa 0x00 0x06 0x00 0x00 0xc2 0x8c 0xf8 0x26 0x96 0xbb
| Status = 00 OK
| flag = 0 (single tag)
| sn=c28cf826
0xaa 0x00 0x01 0x06 0x07 0xbb
< 0xaa 0x00 0x02 0x00 0x80 0x82 0xbb
0xaa 0x00 0x03 0x25 0x26 0x01 0x01 0xbb
< 0xaa 0x00 0x06 0x00 0x00 0xc2 0x8c 0xf8 0x26 0x96 0xbb
| Status = 00 OK
| flag = 0 (single tag)
| sn=c28cf826
0xaa 0x00 0x01 0x06 0x07 0xbb
< 0xaa 0x00 0x02 0x00 0x80 0x82 0xbb
[/code]
I iterated the same requests (getSNR (0x25) from idle tags (0x26), halt(0x01), followed by an explicit halt (0x06) command) three times w/ two MIFARE cards on the antenna (tried keeping 'em about 5mm away too, but same result). I expected to see the first code on the first iteration, the second code at the second iteration and an error the third iteration. Instead I see always the same code (resulting from anticollision loop)!

I based my code on python library, neophob’s infos and neophob.com/files/rfid/PROTOCOL- … %20_2_.pdf (from neophob’s site).
BTW the sample code doesn’t work on Linux x86_64 (SDK libs are nearly undocumented and i386 only). But I could run the supplied executable and it gave me the very same results as my code. That makes me think there’s something else not working correctly…

That’s why I’m asking if there’s some other complete protocol specs available. Maybe from the micro’s manufacturer? It’s possible they implemented just a subset of the full command set… but how to tell w/o their specs?

The wiki docs are enough just to connect it, not to actually use it. It could be really better to include actual specs (so not to depend on external sites).

Even stranger: today tags must not be too near to the antenna.
If I put tags just on the antenna, I get:

[code]> 0xaa 0x00 0x02 0x03 0x26 0x27 0xbb
< 0xaa 0x00 0x03 0x00 0x04 0x00 0x07 0xbb
| Status = 00 OK
| ATQ = 0400

0xaa 0x00 0x01 0x04 0x05 0xbb
< 0xaa 0x00 0x02 0x01 0x83 0x80 0xbb
| Status = 01 FAILURE! Code=83 (Card does not exist)[/code]

But if I place a thick newspaper (so the reader have something to read :laughing: ) between tags and antenna, with the same reader and the same tag set as above I get:

[code]> 0xaa 0x00 0x02 0x03 0x26 0x27 0xbb
< 0xaa 0x00 0x03 0x00 0x04 0x00 0x07 0xbb
| Status = 00 OK
| ATQ = 0400

0xaa 0x00 0x01 0x04 0x05 0xbb
< 0xaa 0x00 0x06 0x00 0x00 0xe2 0xc4 0x77 0x33 0x64 0xbb
| Status = 00 OK
| Flag = 00
| ID=e2c47733[/code]

Well, strange but still “understandable”. What I really can’t understand is that “Flag = 00” instead of “Flag = 01”. Maybe a limit in the reader firmware? But I remember seeing a ‘01’…

Hi there,
I test the problem of you had said . And I failed to recognised multiple RFID tags but succeed to recognised multiple RFID card . They are the same MHz .
Which RFID you used?

Deray

I have 2 cards and a tag (bought together with the reader).
When I place all three near the antenna, only one (and always the same) of the cards gets recognized (probably that would be the first one selected by anticollision algorithm).
That’s not order-dependant.
And the multi-card flag doesn’t get set.

PS: on the wiki page there’s only the name of the file with the protocol description, but the file is not there. It’s on neophob’s blog.

Small update: if I put one card and the tag I get the “multi card” flag set.
If I put the two cards in the field, I get the SN of one of the cards and the “multi card” flag not set !
And, as already said, if i place the two cards and the tag in the field, the “multi card” flag doesnot get set.

And it seems the ISO15693_Inventory (0x10) command doesn’t work as documented (sending the command as detailed on page 29 of the docs results in a "parameter error), just like MF_GET_SNR (that doesn’t halt the card as said on page 24).

PS: LEDs need the current limiter resistor, right? And how much current is available for them and for the buzzer?

Please, some decent documentation is needed to avoid wasting time!

More info available at: datarfid.com/doce/Product/pic_69.html

Since it’s a T-A, it only supports ‘A’ command set and Mifare cards. That explains why ISO15693_Inventory (0x10) fails: it would require RDM880-T-E reader!

Last post about this issue…
Talking with the tech assistance (incredibly fast with answers!) I discovered that anticollision on ISO14443A is not yet implemented in current modules. Implementing it would require an order of at least 300 pieces – I don’t know how many pieces Seeed orders, but if they ordered T-E (the most complete module, costs just about 4 bucks more, less for quantities!) model with the anticollision patch, I’d buy some for sure… But for now I’ll have to look at other modules – maybe one based on PN512 (preferably NOT an Arduino shield).

Too bad currently the T-A is useless for my original project.
Going to update wiki page so to avoid others making the same error I did.

Hi,thank for your advise. And sorry that can not help you. It is no our product ,so we don’t clear understanding it. Therefore, more information, you ask to the manufacturer of it .

Regards,
Deray