ZC300 unable to talk to the SmartCard encode from Elatec TWN4


Audience
Tags

Hello, I had some code written in JAVA for the ZXP Series 3 which worked fine, now we got a ZC 300 but after installing Zebra drivers from:
https://www.zebra.com/es/es/support-downloads/printers/card/zc300.html#…

The first thing I do is discover USB connected ZEBRA printers and list Terminals, as I did with the previous printer, and the output was the following:
"[PC/SC terminal OEM TWN4/B1.08/NPF3.13/Z2SC1.56 0]"

But it never detected any MIFARE Classic card in it since "isCardPresent" method always returned "false"

Then I installed latest drivers from Elatec (TWN4DevPack450) and then the same exact code output was different:
Elatec SmartCard Reader 0 Slot 0 "isCardPresent" "false"
Elatec SmartCard Reader 0 Slot 1 "isCardPresent" "true"

It only detects a card in Slot 1 but I am unable to get the UUID, all APDU commands returns 6900 ERROR
But previously same code worked fine with ZXP 3 with Slot protocol 1 (I should be using that for MIFARE Classic right?)

Since the SmartCard encoder tells that it has "contact" and "hf" settings, I am going with "hf", so the JOB settings I am using are:
zebraCardPrinter.setJobSetting(ZebraCardJobSettingNames.SMART_CARD_CONTACTLESS, "hf");

In this thread, someone pointed out that "you have to tell which card will be detecting", how do I do that in JAVA?
Why I can't even get the UUID if the APDU command and procedure is the same as we did with ZXP 3?
https://developer.zebra.com/content/zc350-mifare-nfc-encoding-reading

Thanks

EDIT:

I have just used the Zebra Smart Card Utility V1.02.00 and it works well, the weird things is, that after using Zebra Smart Card Utility, my code started working as expected until I shut down the printer, any idea?

28/06/2022 13:20:11 Connecting USB Printer..
28/06/2022 13:20:11 Printer Connected Successfully.
28/06/2022 13:20:12 Mifare Reader Search Start...
28/06/2022 13:20:13 Reader Connected : Elatec SmartCard Reader 0 Slot 0
28/06/2022 13:20:33 MIFARE 1K READ SUCCESS - DATA:

Submitted by josep.albert@b… on July 06, 2022 Permalink

Hello, still no response, I have just opened a case with Zebra...
It is possible to get the source code of Zebra Smart Card Utility V1.02.00 as a part of the Github repo?

Thanks

Submitted by stephen.troup@… on July 26, 2022 Permalink

With Elatec they have different classes of slot, depending on the firmware used 2 slot or 6 slot. In either case the highest slot if the command slot this has a fixed ATR and only responds to commands to control the Elatec reader.

To get an elatec reader to see mifare classic you have to send a PCSC command to the command slot as you appear to have the 2 slot firmware I would say this is slot 1 but it should have an ATR of

0x3B, 0x86, 0x81, 0x11, 0xFE, 0x81, 0x43, 0x69, 0x6E, 0x64, 0x79, 0x30

To get the reader to check for HF / mifare / 14443a cards send the PCSC command of

0xFF, 0x9B, 0x00, 0x00, 0x0A, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00

to the command slot. This will tell the Elatec reader to search for all HF cards. Newer Elatec firmware seem to have this turned on by default but not with the one used in the Zebra printers.

Also the command set for accessing mifare cards is slightly different for the Elatec reader compared to the SDI010 installed in the ZXP range. This is documented in the Elatec manuals included in the twn4 devpack which can be found on https://www.elatec-rfid.com/int/twn4-dev-pack