[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


Please sign in to leave a comment.