VivoKey Apex Flex + iOS NDEF Read?

Heya folks,

This is likely way too early considering the Apex Flex’s private beta status, but here goes.

I received mine as part of the Flex One replacement program, and have been attempting to get an applet working before installing it :^)

In particular, I’ve been tinkering with OpenJavaCard-NDEF with the initial goal of getting the Apex to emulate a standard read/write NDEF NFC tag (see the “full” example in the repo), and later serve dynamically-generated content (“stub” example in the repo).

I’ve got the basic read/write full applet compiled and installed, and I can successfully write to it using this NFC app.

The issue is on reading. My iPhone doesn’t automatically pick up the tag in the background, as it does for “dumb” tags. When manually scanning with the NFC app, it reports:

The NFC tag was detected. Unfortunately, no usable data could be found on it. Compatibility mode can help read data from your NFC tag.

Upon enabling Compatibility Mode, the tag reads perfectly. Very weird.

I’ve tried the officially spec’d Command Sequence Description with pyscard, and everything looks right, but I’ve got a very untrained eye here.

So, I’m wondering if this is some inherent limitation in iOS - what the heck is compatibility mode? Or could this be some bug in OpenJavaCard-NDEF? Or is this an issue common to all Type 4 cards? Does anyone have an NDEF applet implementation that works with non-compatibility-mode’d iOS? Any other tests I can run?

Thanks so much and so excited to get this thing running!

I believe you can just install the vivokey ndef applet through fidesmo, i just tested with mine and was able to write a url to it and then read it back successfully


Thank you for testing so quickly! Can you read it from an iOS device, or is your testing with Android?

The Fidesmo app on iOS doesn’t offer any applets to install, so until I get my hands on an Android device, I’m compiling and uploading with my ACR122U.

ah bummer, yeah I am using an android phone

Never mind apparently I can’t read. I’ll grab my iPhone and do some testing.

1 Like

My dad has an iphone I can do some tests with this weekend (he’s a nerd he’ll have fun with it too).

I just tested with a friend’s Android phone and it can successfully read the Apex flashed with OpenJavaCard-NDEF. But perhaps the applet code is flawed in some way that makes it incompatible with iOS? According to Apple’s Core NFC docs:

Using Core NFC, you can read Near Field Communication (NFC) tags of types 1 through 5 that contain data in the NFC Data Exchange Format (NDEF).

So at least in theory the Type-4 Apex should be compatible. I’d be curious to hear if the official VivoKey NDEF applet fares any better.

Just to be clear, type 4 refers to the NFC specification type for a tag. It’s simply means that type 4 tags are accessed via a standardized AID using APDU commands. The apex is not a type 4 nfc chip until the application is loaded… if that makes any sense.


For the kind folks who planned to test with their own iPhones, any luck? Been trying various modifications to the NDEF applet and still no dice, only compatibility mode works.

Heya Amal, sorry to pester - did you ever manage to get a successful NDEF read on the iPhone?

Damn. Forgot. Will steal the iPhone from my wife tonight and test.

Also… I updated the NDEF record cap file on the Fidesmo service the other day. A couple bug fixes merged from the master branch. Might have an effect…maybe.

Try removing the NDEF applet and reinstalling the updated one. Write with tagwriter.

1 Like

Awesome! I’m seeing the same issue from this other thread, can’t connect a service on iOS. But it looks like you can enter an ID manually:

If I understand correctly, that’s for the NAK applet. What should I use for the NDEF applet? Thanks again!

Yes manual service delivery will work with any app.

Sorry I should have been more specific - what app ID should I enter for the official NDEF applet?


The service ID is ndef1k for 1k, ndef2k, ndef4k, ndef8k, and ndef16k

1 Like

eh, excuse me. what the hell is this? hmm?

Screenshot 2022-08-13 at 10.48.58


We’ve know about them for ages lol. Apex spectrum I think was the running name.

1 Like

ah, on the DT club side is it?