So I've dug into the ACR83 a little more trying to get it to work.
Haven't made much progress on the code, but I've made a lot of progress
on understanding what's actually going on.

Once I setup an exception to get libccid to accept the device as a CCID
reader in spite of the bad class code, it generally seems to respond to
CCID commands in a basically correct way.  I won't go as far as saying
that it's in any way compliant.

A single command was locking up the device and causing libusb to stop
responding.

The reader does not implement the feature CCID_CLASS_AUTO_IFSD.  Because
of this, we try to run the function t1_negotiate_ifsd to set things up.
 That sends the following exchange to the reader:

00000011 -> 000000 6F 05 00 00 00 00 0E 00 00 00 00 C1 01 F7 37
00007406 <- 000000 80 02 00 00 00 00 0E 00 00 00 6D 00

From what I'm seeing on the net, "6D 00" is a basic
error/not-implemented response code.  In any case, from the verification
code in t1_negotiate_ifsd, it's clearly not the response that we're
expecting.

We end up performing 3 retries, and then failing.  After this, the
reader becomes unresponsive and times out until we unplug and replug it.

If I just comment out the code that calls t1_negotiate_ifsd, the reader
continues to function, but in totally a broken state.  That is, it
continues to respond to commands without timing out somewhere in libusb,
but doesn't do anything useful.  In particular, it issues the following
error in the log:

00000014 openct/proto-t1.c:170:t1_transceive() T=1 state machine is
DEAD. Reset the card first.

Here are the questions I'm having now if anyone can advise:

Is there an alternate way for me to negotiate the IFSD rate?

Is the response "6D 00" above valid per the CCID spec?  If so, how
should it be handled?

Is the IFSD negotiation command powering up the card when it works
correctly?

Is it possible for me to reset the card manually, ignoring the IFSD
error?  And if so, is that a bad thing to do?

Any other advice or pointers would also be appreciated.

-- 
-Grant

"Look around! Can you construct some sort of rudimentary lathe?"

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Muscle mailing list
[email protected]
http://lists.drizzle.com/mailman/listinfo/muscle

Reply via email to