Gemalto PC Twin Reader
BankingThales·USB
Overview
The Gemalto PC Twin Reader (now marketed under the Thales brand following the Gemalto acquisition) is a dual-slot contact smart card reader that has become the standard terminal reader in West African banking. It supports two independent card slots, ISO 7816 T=0/T=1 protocols, and communicates via USB CCID. Its EMV Level 1 certification and long track record in regulated financial environments make it a trusted choice for deployments that also need to handle banking or SIM cards alongside DREWQ identity verification.
Requirements
- USB-A port (USB 2.0 or higher)
- PC/SC daemon (pcscd on Linux/macOS, built-in on Windows 10+)
- Python 3.9+ with pyscard
- Card inserted into Slot 0 (the bottom slot) for DREWQ reading
Setup Guide
Connect the Reader
Plug the PC Twin Reader into a USB-A port using the supplied cable.
The reader has two slots: Slot 0 (bottom) and Slot 1 (top). Use Slot 0 for DREWQ.
The OS loads the CCID driver automatically; no Thales/Gemalto software is required.
The LED on the active slot illuminates when a card is inserted.
Configure PC/SC
macOS: `brew install pcsc-lite && brew services start pcsc-lite`
Ubuntu/Debian: `sudo apt-get install -y pcscd pcsc-tools && sudo systemctl enable --now pcscd`
Install pyscard: `pip install pyscard`
Note: the PC Twin Reader registers as TWO reader names in pcsc_scan — one per slot.
Verify Detection
Run `pcsc_scan` — you will see two entries: `Gemalto PC Twin Reader [CCID] 0 0` and `...0 1`.
The DREWQ API auto-selects the first reader with a card present.
Insert a card into Slot 0 and confirm `GET /card/status` returns `card_present: true`.
Python: `from smartcard.System import readers; print(readers())` should show both slots.
Test with the API
Start the server: `uvicorn main:app --reload`
POST to `/card/scan` with BAC fields — the API selects Slot 0 automatically.
If the API picks the wrong slot, ensure the card is in Slot 0 (bottom).
Confirm the scan log via `GET /scans?limit=1`.
Troubleshooting
API reports two readers and scans the wrong slot
The PC Twin Reader registers as two separate PCSC reader names. The API defaults to the first reader with a card present. Insert the DREWQ into Slot 0 (bottom). If needed, set `READER_INDEX=0` in the API's environment variables.
Old Gemalto driver installed, causing conflicts
Legacy Gemalto GemPC drivers conflict with the built-in CCID driver on Windows. Uninstall them via Programs and Features, then rely on Windows' built-in CCID support.
Second slot not detected by pcscd
Some older libccid versions enumerate only the first slot. Update libccid to 1.5.0+: `sudo apt-get install --upgrade libccid` on Ubuntu.
Need more help?
Check the full documentation or the reader compatibility guide for additional context.