I recently started with the implementation of a desktop Java program to read and write mifare ultralight cards.
At some point, I got everything working on a ACS ACR122U devices. But at some point, I am keep getting write errors. e.g.:
org.nfctools.NfcException: org.nfctools.mf.MfException: Writing block failed. Page: 34, Response: SW1: 99 SW2: 0
Strangely, when I read the card, I can see the content, and also after changing the record content, it is again (after writing errors) changed...
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD60004040103A010
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD6000504440326D1
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600060401225405
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD6000704656E2D55
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600080453506574
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600090465722069
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD6000A0473206465
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD6000B04206F706E
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD6000C0469657577
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD6000D0420646520
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD6000E044D415820
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD6000F0421FE0000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600100400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600110400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600120400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600130400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600140400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600150400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600160400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600170400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600180400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600190400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD6001A0400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD6001B0400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD6001C0400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD6001D0400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD6001E0400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD6001F0400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600200400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600210400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 9000
DEBUG: org.nfctools.spi.acs.AcsTag - command: FFD600220400000000
DEBUG: org.nfctools.spi.acs.AcsTag - response: 6300
Is this something normal or is it an issue ? Because of this error, the code does not complete normally...
I used the recent version from nfc-tools, with some adjustments.
in the class UltralightHandler.java --> isCapabilityContainerValid(...) method --> I had to change to return block[0] == (byte)0xE1 && (block[1] == (byte)0x10 || block[1] == (byte)0x11) && block[2] >= (byte)0x06;
I am using Mifare Ultralight and Ultralight C cards. Both have that problem....
I hope someone can help me with this issue. Help is appriciated and I will be ever gratefull ;-)