Level 1 smart card support on Mac OS X
It may not be easy to check if a smart card stack works or not. I will explain what you can do as a first step to check your smart card stack on Mac OS X.
pcsctest
Apple provides a command line toolpcsctest
. It is an evolution of testpcsc provided by the "official" pcsc-lite.The Apple pcsctest source code is available at http://opensource.apple.com/source/SmartCardServices/SmartCardServices-55111/src/PCSC/testpcsc.c
The good news is that this command line tool is installed by default. So every Mac OS X install should have it out of the box.
Command line tool
To run a command line tool you need to start the Terminal application from the /Applications/Utilities/ directory.Terminal icon |
You will then get a Terminal window with a prompt
$
Normal execution
In green the commands entered by the user.In yellow the important information.
If your reader is connected and a smart card is inserted you should get something like:
$ pcsctest MUSCLE PC/SC Lite Test Program Testing SCardEstablishContext : Command successful. Testing SCardGetStatusChange Please insert a working reader : Command successful. Testing SCardListReaders : Command successful. Reader 01: Gemplus GemPC Twin 00 00 Enter the reader number : 1 Waiting for card insertion : Command successful. Testing SCardConnect : Command successful. Testing SCardStatus : Command successful. Current Reader Name : Gemplus GemPC Twin 00 00 Current Reader State : 0x34 Current Reader Protocol : 0x0 Current Reader ATR Size : 9 (0x9) Current Reader ATR Value : 3B 65 00 00 20 63 CB A6 A0 Testing SCardDisconnect : Command successful. Testing SCardReleaseContext : Command successful. Testing SCardEstablishContext : Command successful. Testing SCardGetStatusChange Please insert a working reader : Command successful. Testing SCardListReaders : Command successful. Reader 01: Gemplus GemPC Twin 00 00 Enter the reader number : 1 Waiting for card insertion : Command successful. Testing SCardConnect : Command successful. Testing SCardStatus : Command successful. Current Reader Name : Gemplus GemPC Twin 00 00 Current Reader State : 0x34 Current Reader Protocol : 0x0 Current Reader ATR Size : 9 (0x9) Current Reader ATR Value : 3B 65 00 00 20 63 CB A6 A0 Testing SCardDisconnect : Command successful. Testing SCardReleaseContext : Command successful. PC/SC Test Completed Successfully !
You should note:
- the reader name Gemplus GemPC Twin 00 00
- the card ATR 3B 65 00 00 20 63 CB A6 A0
You can then use the online Smart card ATR parsing tool to check the ATR corresponds to the card you inserted. In the present case it is a French banking card.
No reader connected
$ pcsctest MUSCLE PC/SC Lite Test Program Testing SCardEstablishContext : Service not available.
On Mac OS X the PC/SC service (in fact the
pcscd
daemon) is started by the securityd process at boot and when a USB smart card reader is connected.So if no reader is connected you get the error: "Service not available" because pcscd is not yet running.
No smart card inserted
$ pcsctest MUSCLE PC/SC Lite Test Program Testing SCardEstablishContext : Command successful. Testing SCardGetStatusChange Please insert a working reader : Command successful. Testing SCardListReaders : Command successful. Reader 01: Gemplus GemPC Twin 00 00 Enter the reader number : 1 Waiting for card insertion
The program is then waiting for a card insertion.
If you have a card inserted and you do not get the ATR or an error then you have a problem.
If you insert a card and get the error "Card is unpowered" then you may have inserted the card the wrong way (or your card is dead).
System information
If your reader is connected but you can't see it withpcsctest
then maybe the USB device is not seen by Mac OS X.You can use the System Information application from the /Applications/Utilities/ directory.
System Information icon |
In the application you select the USB subsection in the Hardware section and can see all the USB devices known by the system.
If you can't see your USB smart card reader then you have a USB issue, not a PC/SC issue.
Command line
You can also use the equivalent command in the Terminal:$ system_profiler SPUSBDataType
Conclusion
These first steps are easy to execute on Mac OS X. If thepcsctest
test succeeds then you can be confident that the smart card reader and the PC/SC layer are working correctly.If the
pcsctest
test fails then you need to go to a level 2 smart card support on Mac OS X.