It should be easier to use with less manual work for you (to resynch the ATR list) and also less work for me (to update the ATR list) since the information should be complete and in the expected format.

The bNumEndpoints field is a number value from the CCID USB descriptor: Number of endpoints used by this interface (excluding endpoint zero).

bNumEndpoints

#

%

3

228

89.76 %

2

16

6.30 %

0

6

2.36 %

1

4

1.57 %

According to the CCID specification: For Integrated Circuit(s) Cards Interface Devices (CCID)

02h uses bulk-IN and bulk-OUT

03h uses bulk-IN, bulk-OUT and interrupt –IN

So the possible values are 2 or 3 for a CCID device.

According to the ICCD specification:

00h does not use further endpoint

01h uses interrupt-IN

02h uses bulk-IN and bulk-OUT

03h uses bulk-IN, bulk-OUT and interrupt –IN

NOTE 01h indicates that the control endpoints are used for data transmission and interrupt-IN for notification of card specific events sent from the USB-ICC to the host.

Devices with bNumEndpoints = 0

Aktiv Co., ProgramPark Rutoken Magistra

BIFIT iBank2Key

Gemalto PDT

OCS ID-One Cosmo Card USB Smart Chip Device

Philips Semiconductors JCOP41V221

SchlumbergerSema SchlumbergerSema Cyberflex Access

Devices with bNumEndpoints = 1

Giesecke & Devrient GmbH Star Sign Card Token 350 (ICCD)

Giesecke & Devrient GmbH Star Sign Card Token 550 (ICCD)

KEBTechnology KONA USB SmartCard

Philips Semiconductors SmartMX Sample

To know if a device is a CCID or ICCD device use the bInterfaceProtocol field. We find again the 10 ICCD devices as found in bInterfaceProtocol. But we note that there is no matching between bNumEndpoints = 0 or 1 and Version A or B of ICCD protocol.