As David pointed out, WWT is work waiting time. See 7816-3/8.2. It's the amount of time the terminal should wait before deciding the card isn't going to respond. It is normally 1 second for cards with default timing, such as Cyberflex. Every time you call apdu.waitExtension() it resets the timer, so you can sprinkle these through the code, but Cyberflex is so slow you have to put them in every few lines. Or you can increase WWT by specifying non-default timing in your atr. Problem with this is that most terminals seem to ignore WWT. Here is an atr for Cyberflex that specifies a four second WWT: 3b 97 94 40 28 57 65 62 63 61 72 64 T=0 TA1=94 TD1=40 TC2=28 7 historical bytes: W e b c a r d 103 etu = 372 F / 1 D * 3.58 f 3990 cwt = (960 * 40 WI * 372 F) / 3.58 f / 1000 You can change the number of historical bytes, which is given in the bottom nibble of the second byte. Remember that all but the last two historical bytes are specified in the "set java atr" apdu, whereas the last two are specified in the exception thrown by your applet's main() method. *************************************************************** Linux Smart Card Developers - M.U.S.C.L.E. (Movement for the Use of Smart Cards in a Linux Environment) http://www.linuxnet.com/smartcard/index.html ***************************************************************