MC3190Z - Error Changing EPC ID of RFID tags

Hi, as the title says, I am having a hard time changing the EPC ID of RFID tags...

So far, I have managed to write in the USER memory bank. But when I try to modify the contenct of the TID memory bank, I get a memory locked warning. So I assumed that this field cannot be changed and that the manufacturer of the tags locks the TID part of a tag. Moreover, whenever I try to write in the EPC memory bank, I get the following error:

C1G2WriteOpSpecResult failed: Specified Memory does not exist or is not supported by the Tag.

Thanks in advance,


Xiao Zhao
can you provide some lines of

can you provide some lines of your source code? are you using Scanner SDK?

Vote up!
Vote down!

Points: 0

You voted ‘up’

Lucas Rancez
Hi there,I know that this is

Hi there,

I know that this is an old question but I had the same issue and I couldn't find any information. So I hope this helps some one.

First, ensure that the class of your tags allows encoding (or writing at the epc). Not all tags allows this, although the most common ones do.

Second, ensure that the tags are not locked nor password protected by the factory or the retailer. It is very common that the retailer don't know much technical details of the tags... validate you retailer response with the response of the tags factory.

Third, attempt to read from the epc of the tag. Validate the reading with an epc decoder like Ken Traub Consulting LLC -- EPC Encoder/Decoder . Be aware that there are standards on how the epc should be encoded, you should follow a standard to write at the epc.

In my case, I notice that the data obtained by my mc3190z was not valid. But after some trial and error I realize that skipping the first 2 bytes would make the data valid. For example e6163000e28011606000020bc1c87c18 is the read from the handheld and is not a epc valid data, but this, on the other hand 3000e28011606000020bc1c87c18 , is valid.

So, I attempted to write the epc using a offset of 2 bytes and a valid code; and it worked!!

The explanation is that, although the epc is writable, is not fuuuuully writable. The standard states that some portions of the epc are reserved for CRC (A 16-bit Cyclic Redundancy Check computed over the contents of the EPC bank) and the PC Bit (Protocol Control bits) and there is also complementary control data at the end of the epc memory. The full process is covered at the GS1 standard:  It is a long document but reading it will save you a lot of time if you are just starting like me.

Happy tagging!

Vote up!
Vote down!

Points: 1

You voted ‘up’

Log in to post comments