Smart Cards and Smart Card Programmer

Smart Cards are a bit of a misunderstood subject and no-one is quite sure what they are. Smart Cards are defined in a standard called ISO 7816. This has different sections that cover physical size and characteristics, where the contacts should be (for contact cards) and how to communicate with them.

ISO 7816 does not define the electronics and a smart card can have just a memory chip, or more likely nowadays, a microcontroller and a memory chip. The standard does define how data should be read/written to the memory, using serial communications. This is often called “Phoenix” mode in discussions about smart cards. A second communication protocol uses a clock and is known as Smart Mouse.

The Smart Card Programmer we sell supports both these modes, so can be described as supporting ISO 7816 smart cards. These cards are used for telephone cards, bus passes, door entry and all sorts of applications, but for obvious reasons such cards are often encrypted and do not allow writes.

Simple smart cards that just contain memory are available, for example Infineon SLE5528 with 1024 bytes of memory and a 32 bit protection memory, to prevent unauthorised writes. The DLLs that come with the smart card programmer support these cards, and the developers SDK gives lots of examples in C++. Even simpler cards that just contain a 24C64 EEPROM can be supported by the DLL in the smart card programmer.

As well as these generic ISO 7816 smart cards, there are cards based on AVR and PIC microcontrollers, known as Gold card, Silver card, Yellow card, Fun card etc. The smart card programmer reads and writes the EEPROM chip on these cards by programming code into the PIC or AVR microcontroller that will read or write to the EEPROM chip on the card i.e. access to EEPROM memory is not direct but is done by the microcontroller.


PIC Gold Card Schematic

The PIC microcontroller (or AVR) is loaded with firmware by the smart card programmer. This firmware reads and writes data from the EEPROM chip using I2C bus, and returns it to programmer as serial (phoenix) data (ISO 7816 compliant).

This firmware is available as source code for your own projects when you purchase the programmer, with another version that uses AES encryption. A full developers starter kit is also available free of charge. A command line interface is also included, which you could call from your own high level application to read and write to the cards using ISO 7816 communication.

This means that you can develop your own PIC or AVR code and use this smart card programmer to program the smart card. You could use a generic PIC programmer but would need to solder it to the contacts on the card.

As well as being a smart card programmer USB Infinity programmer can also be used to edit, copy, restore and back up SIM cards using a separate slot on the programmer.

It is a USB programmer, but it enables a virtual COM port so most 3rd party software developed to read specific cards using a serial port, like Fedex Jungo, can be used with this programmer hardware.

Smart Card Programmer

Useful Links for Smart Cards

Detail about Smart Cards and ISO 7816 (PDF)

Using a PIC to read and write ISO 7816 smart cards (PDF)

Open Platform Simple OS for AVR Smart Cards

Buy PIC and AVR Smart Cards

Leave a Reply