[API][TAG] How to find parameters for commands to change and lock password ?


Our APIs for writing on RFID tags are based on official GS1 documentation : "UHF RFID Protocol for Communications at 860 MHz – 960 MHz" which can be found in Please refer to this documentation for better undestanding on RFID communication protocol.

Version 1.0.9 can be found here :


Change RFIG tag password

It is advised to verify if the current tag password you are using is still the default 00000000, with the read command for any memory bank : gen2UnitaryReadOperation(String accessPassword,int bank,String wordAddress,int numberReadWords)

To change password, the command to use is correct : gen2UnitaryWriteOperation( String accessPassword, int bank, String wordAddress, String dataToWrite)

This method follows the standard RFID tag memory management, that you can find in this official GS1 document :
Refer to Chapter: Tag memory. Please read this carefully before you start managing RFID memory.

The parameters are as follows :
accessPassword : current tag password
bank : memory bank to write to (0 for reserved memory bank)
wordAddress : the word address to access for given bank
dataToWrite : data to write in given bank (your new password in your scenario)

The parameters wordAddress and dataToWrite change according to your need :

To write both kill and access password:
wordAddress = 00000000
dataToWrite = 0000000000001234 : where 00000000 is killPassword and 00001234 is new accessPassword

To only write access password :
wordAddress = 00000002
dataToWrite = 00001234 : is new accessPassword

For your information, there are several tools available on the net, that can help you understand and manage RFID memory :


Lock password

Our command follow the standard specified in the official international document :
Refer to chapter : Lock, and Figure 6.24 – Lock payload and usage

Please read this carefully in order to manage the right parameters.

There are 20 bits (10 for mask and 10 for action). The Embidevice command requires a 2 bytes (16 bits) in hexadecimal value for mask and action. So there are six bits at the beginning set to 0 by default, to fill in the first byte.
Exemple for kill password lock :
Mask kill password is: 0000 0011 0000 0000 => in hexa 0300 for command parameter
Action permalock is : 0000 0001 0000 0000 => in hexa 0100 for command parameter

The mask is unique for every bank. Action can be set to 4 different values, for each mask. See previous doc for more details.

Find the screenshots below for bit convertion exemple

Was this article helpful?
0 out of 0 found this helpful
Have more questions? Submit a request


  • 0

    Sir/Madam, Thanks alot for your post which saved my day literally. I have been searching for locking the rfid tag since morning but none of the articles or companies manuals have written with such clarity. Although am not using your software or hardware but your post worked on my android app.

    Thank you and your team :)

Please sign in to leave a comment.