Open Desktop NFC Reader: firmware and Linux host CLI tools for turning a supported MCU board with an ST25R3916B RF reader frontend into an NFC reader/writer / USB CCID smart-card reader.
Development is supported on Linux hosts only (build, flash, host CLIs, and tests).
This is source-build only: no supported release bundles or prebuilt firmware images.
It is reader firmware, not a FIDO authenticator. The tapped security key/card keeps the credentials and private keys.
- Reads NFC Forum Type 2, Type 4, and Type 5 tags (Type 5 when RF hardware supports ISO15693).
- Writes NDEF records.
- Plain NDEF storage tags only—no Secure Messaging or password-protected writes.
- Two USB firmware modes: CDC serial shell or USB CCID; PC/SC uses USB CCID.
- Optionally lets PC/SC hosts use a tapped NFC FIDO security key/card for WebAuthn passwordless sign-in by relaying CTAP APDUs over Type 4 ISO-DEP.
You need a supported board, X-NUCLEO-NFC08A1 shield, USB data cable, and NFC tags — see Supported hardware.
1. Build and flash firmware (firmware) — serial shell (simplest quick start):
Default TARGET=arduino_uno_r4wifi. Alternate: # TARGET=nucleo_wba65ri ….
make deps
make flash-cdcUSB CCID reader (PC/SC): make flash instead — CCID host setup.
2. Install host userspace CLIs (host):
make userspace
make install-userspace
export PATH="${HOME}/.local/bin:${PATH}"3. One-time Linux setup (host) — after serial flash:
sudo make install-udevReplug the board. After make flash (PC/SC), use CCID.md § Linux setup instead.
4. Read or write tags — tap a tag when prompted (TUTORIAL_TAGS.md):
reader --no-open-url
writer --uri=https://example.test/ --uri=https://example2.test/Optional — WebAuthn with an NFC FIDO security key: follow TUTORIAL_WEBAUTHN_CCID.md. Not required for tag read/write.
Developers: make help.
See docs/ for tutorials, CCID host setup, and spec traceability (compliance, coverage, and drift checks).
| Layer | Hardware | Notes |
|---|---|---|
| MCU board | Option 1: Arduino UNO R4 WiFi |
|
| MCU board | Option 2: NUCLEO-WBA65RI |
|
| RF reader shield | X-NUCLEO-NFC08A1 | ST25R3916B NFC reader shield (UM3007). |
| NFC Forum tag | Type 2 tags | NTAG213/215/216, ST25TN01K/ST25TN512. |
| NFC Forum tag | (Optional) Type 4 tags | ST25TA02K, NTAG I2C Plus, NTAG424 DNA (plain NDEF only), NFC FIDO security keys/cards (e.g. YubiKey, Cryptnox). |
| NFC Forum tag | (Optional) Type 5 tags | ST25TV02KC, ST25DV04KC/16KC/64KC, X-NUCLEO-NFC07A1. |
| Part | Terms |
|---|---|
| This project source | Apache-2.0; see LICENSE and SPDX headers. |
Fetched ST libraries under third-party/ |
ST license terms from each upstream tree; this firmware targets ST25R-series reader hardware. |
