Software Development Kit

Can be downloaded from here.

Purpose and Features

*** New in version 2 *** : added example code for NTAG203 emulation

The main purpose of the SDK is to open the high-level part of message processing to the user. Now instead of simply being a functional clone of MIFARE Ultralight, the user can convert it to a custom ISO 14443-A message processor based on NFC Forum Generic Type 2 Tag protocol. The user is provided with access to receive and transmit buffers, where the message processing code can be created from scratch or modified from the provided example of already implemented MIFARE Ultralight processing routine. The user can also program own functionality into the hardware lock switch.


The SDK has been created following requests of multiple EMUTAG Emulator users and candidates for purchasing. Users wish to make the Emulator more multi-purpose, add data auto-reload capabilities (e.g. to make the Emulator always read the same content as long as the lock switch is in the locked position, while still emulating security features of Ultralight), add custom backdoor commands, and even change the UID length to either 4 or 10 bytes... If you are one of such users, then the SDK is definitely for you!


As with any commercial product, there exists a part of code closely related to hardware and which requires careful tuning, as opposed to simple logical routines. This part, a.k.a. the "main" code, has been isolated from MIFARE Ultralight Emulator source, compiled separately, and provided in form of object file "main.o". That way the user does not need to worry if the code compiles correctly and respects critical timing sequences, as all the RF frontend and synchronization firmware is already compiled. The only constraint left to verify is to make sure the overall execution time of the user code fits within the time slot between the request and the response.

Another limitation introduced in the SDK is the removal of the part of the main code implementing the power-saving feature. It has been done in order to prevent anyone from making a commercially sellable clone of MIFARE Ultralight Emulator. This modification makes the device always consume the same current as if the reader field was always present (5.6 - 7.1 mA). This still allows using the Emulator for testing purposes, and connecting external power as described in the FAQ section. Or if you are an advanced user, you can implement a power switch ;)

Programming Hardware

Whether it's easy or not for electronics gurus to figure out the programming slot pinout, it is provided in the FAQ section.