CCID descriptor statistics: bNumEndpoints

Article from the serie "CCID descriptor statistics"

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.