Search code examples
javacardglobalplatform

What is the reason to get '64 38' error while downloading cap file?


I have a sample applet that manages NFC commands. I have no problem compiling and getting the cap file for that application. The problem arises when I try to load this cap file on my card: Download Cap error: Download cap file failed. and it returns me status word 64 38 in response to load command 80 E8 00 00 FA....

What does that SW code mean? and what is the solution for that?


Solution

  • 0x6400 means "No specific diagnosis (NV-RAM not changed).", i.e. the content was tried to be loaded, but this failed and the card was not modified. The error you have seems to be a vendor specific error code of this class. When you mention "loading" I take this literally, i.e. this is just the phase when the CAP file is loaded and not yet installed. When getting errors in the phase this usually means that the CAP file has an issue. The card is checking the byte code if it is supported by the card. Some inspirations what could cause this error:

    • Are you using any features not supported by the card? E.g. an int?
    • Are you using any package which is not available on the card?
    • Some older cards were also picky about a combinations of final/static/private modifiers.