Open-source project
RfidResearchGroup/RFIDtools avatar
RfidResearchGroup/RFIDtools

RFIDtools: an Android app for Proxmark3 and other NFC hardware

RRG Android App for use with Proxmark3 RDV4 and the blueshark addon

628 stars114 forksCGPL-3.0

At a glance

What is it?
RFIDtools is an Android client for RFID research hardware, covering the Proxmark3 RDV4, the ACR-122u, the Chameleon Mini, the PN532 and several PN53X derived readers. It runs on an unrooted phone, keeps its native layer in JNI and CMake, and its last release was in 2020 even though the repository is still receiving pushes.
Who is it for?
Adopt RFIDtools if you already own one of the listed readers and want to drive it from an Android phone without a laptop, particularly if you work with the Proxmark3 and are comfortable with the app's own reconstruction caveats.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 121 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Putting research RFID hardware in your hand

RFIDtools is an Android application for use with the Proxmark3 RDV4 and the blueshark addon, and the repository description calls it the RRG Android app for use with Proxmark3 RDV4 and the blueshark addon. The list of supported devices is what defines the scope. The Proxmark3 sits alongside a generic NFC reader, the ACS ACR-122u, the Chameleon Mini and the PN532, and a second table lists PN53X derived devices that are marked as still being tested, namely the NXP PN533, the NXP PN531, the Sony PN531, the SCM SCL3711, the SCM SCL3712 and the Sony RCS360. The point of the project is portability of the interface rather than new radio work. A Proxmark3 is a device that normally wants a laptop and a terminal, and this app puts the tag operations on a phone you already carry, with an abstracted user interface for read and write actions. The audience is an RFID researcher or a security tester who wants field capability, and the app is distributed on the Google Play Store under the package com.rfidresearchgroup.rfidtools as well as through GitHub releases.

The native layer: JNI, CMake and a local socket

The core implementation section of the README is where the engineering is described, and it is unusually blunt about the shape of the system. Communication is done with LocalSocket and LocalServerSocket on Android, which map onto the Linux socket API and the abstract namespace. The build is Gradle and CMake together, and the architectural pattern is MVP, a model, view and presenter arrangement. All of the libraries are compiled into shared objects named libxxx.so, with JNI and the NDK as the bridge from Java down to C, and the README is explicit that this is not a Linux executable, while the Proxmark3 client is a Linux executable. The repository layout matches that description, with separate directories for the pieces: libpm3 for the Proxmark3 client, libnfc for the PN532 family, libcml for the Chameleon Mini, libcrapto1 for the ACR-122u, plus libflasher, libmfkey for MIFARE key handling, libtag, libcom and libutils. There is also an apprts directory for the application itself, and terminal-emulator, terminal-view and termux-app directories, which is the embedded terminal that the external executables are run inside.

The reconstruction: dropping the bundled toolchains

The README describes the current work as a second crazy reconstruction, a phrase that is easy to read past and is in fact the most important operational fact about the project. Five items are listed. The user interface is redesigned, with a simplified page hierarchy and simplified operation logic. The strong dependency on the Proxmark3 repository is discarded in favour of the external Proxmark3 executable and its resources, and the strong dependency on the PN53X tools, mfcuk and mfoc among them, is likewise discarded in favour of external executables. Communication is to be optimised to reduce delay, and support for some Bluetooth low energy devices is to be added. The reason this matters is the warning attached to the list, that before the reconstruction is completed the whole project may have big problems such as build failure or crashes at runtime, and that it should take some time because one person is doing the fighting alone. That is a candid statement of the state of the code, and it changes how the release history should be read. Moving from bundled libraries to external executables is a sound direction, because it stops the app shipping and patching copies of third party tools, but it also means the app now depends on the user having those executables available on the device, which is a distribution problem the old arrangement did not have.

Building it: Android Studio, CMake and the NDK

The build documentation is brief, which is consistent with a project aimed at people who already work with Android native code. The development tools are listed as the IDE Android Studio, CMake at 3.10 or newer and the NDK at 20.0.5594570 or newer, and the build steps are to fetch the source from GitHub and then open the project in Android Studio.

bash
git clone https://github.com/xianglin1998/RFIDtools RFIDtools

After the clone, the README says to open the RFIDtools directory with Android Studio, which tells you the Gradle and CMake files at the root are what the IDE drives, consistent with the note that the build is Gradle and CMake together. The repository also carries gradlew and gradlew.bat wrappers, a gradle.properties file, a settings.gradle file and an import-summary.txt, which is the kind of artefact left behind when a project was imported into a different build system. For anyone with an existing Android native background this is a familiar setup, and the older version of the source, the xianglin1998 repository named in the clone command, is presumably the origin of the current tree under the RFID Research Group organisation. The binaries in the Play Store and the GitHub releases are the practical route for most people, since compiling the native layer is only worth it if you intend to change it.

Compatibility is a short list of phones, and the README says so

The compatibility section is a list of three devices, and the README invites people to contribute their own findings. The tested phones are the Redmi K20 Pro on MIUI 10 and Android 9, the Redmi K20 on MIUI 10 and Android 9, and the OnePlus 5T on H2OS 5.1.2 and Android 8.1.0. A vendor link points to a site for buying the devices, which tells you the audience these were sourced for, which is Android OnePlus and Xiaomi hardware in the Chinese market rather than the latest flagships. The app is stated to run on a non-rooted phone, and the features section lists that first, which is the practical constraint that matters for an RFID tool, because a rooted phone would simplify the USB and serial handling considerably. The two external dependencies named in the acknowledgements are the Termux terminal and the UsbSerial project, and both appear as directories in the repository, so the serial path is the project's own rather than a stock Android API. That combination, a USB serial library and an embedded terminal, is what allows a Proxmark3 client that is a Linux executable to be run on the device at all, and it is also where the fragility lives, since it depends on the phone's USB host behaviour and on shipping a working shell environment.

Support channels, licensing and a release history that stopped in 2020

The administrative details are straightforward and worth knowing before you install anything. The licence is GPL, and the copyright line reads Copyright DXL 2019, with DXL named as the maintainer and an invitation to contribute. Support is split in a way that is common for small open source projects: issues in the repository are for source code problems, and anything else goes to the email address [email protected]. The update note is a separate document in another repository, and it is linked from the README under the heading for updated notes, which tells you that release and device support information is maintained outside the main tree. The release history is the part that needs interpreting. The listed versions are v1.4.9 from 2020-10-26 with the note that the PM3 resource was updated, v1.4.8 from 2020-08-13 with minimum support for Android 5.1 and direct Proxmark3 working directory support, and v1.4.7 from 2020-07-03 adding Termux and the old console view. So the published builds are five years old while the repository itself is not, since the last push was on 2026-06-25. The honest reading is that the code is being worked on but the tagged artefacts are not, which is exactly the situation the Play Store build, if it is still updated, would resolve.

Editorial conclusion

Adopt RFIDtools if you already own one of the listed readers and want to drive it from an Android phone without a laptop, particularly if you work with the Proxmark3 and are comfortable with the app's own reconstruction caveats. It does not fit a team that needs a maintained release with recent device support, because the newest tagged build is v1.4.9 from 2020-10-26 while the last push was on 2026-06-25, and it does not fit anyone who needs card operations on credentials they are not authorised to read. Before you build it, read the update note linked from the README and try the Google Play build, because the project itself warns of build failures and runtime crashes before the reconstruction is finished.

Frequently asked questions

Which devices does the RFIDtools app support?

The README lists the Proxmark3, a generic NFC reader, the ACS ACR-122u, the Chameleon Mini and the PN532, and a second table of PN53X derived readers that are marked as still being tested, including the PN533, the NXP and Sony PN531, the SCM SCL3711 and SCL3712, and the Sony RCS360.

Does the RFIDtools app need a rooted phone?

No. The features section states that the app runs on a non-rooted phone, which is a deliberate design point for an RFID tool, and the app uses an embedded terminal with a USB serial library to run the Proxmark3 client.

How do I build RFIDtools from source?

You need Android Studio, CMake 3.10 or newer and the NDK 20.0.5594570 or newer, then clone the repository with git clone https://github.com/xianglin1998/RFIDtools RFIDtools and open the RFIDtools directory in Android Studio. The native libraries are built with Gradle and CMake together through JNI.

What is the reconstruction work in RFIDtools about?

The README lists five items for a second reconstruction: a redesigned and simplified user interface, dropping the strong dependency on the Proxmark3 repository in favour of the external executable, dropping the strong dependency on the PN53X tools such as mfcuk and mfoc in favour of external executables, optimising communication to reduce delay, and adding support for some Bluetooth low energy devices.

How current are the RFIDtools releases?

The latest listed release is v1.4.9 from 2020-10-26, with v1.4.8 from 2020-08-13 and v1.4.7 from 2020-07-03 before it, while the last push to the repository was on 2026-06-25. The app is also distributed through the Google Play Store, and the README links a separate update note for the current device support information.

Official sources

  1. Issues
  2. License: GPL-3.0
  3. README
  4. Releases
  5. RfidResearchGroup/RFIDtools on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/rfidresearchgroup-rfidtools.svg)](https://hysenlabs.com/projects/rfidresearchgroup-rfidtools)

Was this useful?