This guide walks through setting up an Identiv Smartfold SCR3500-C CAC reader (or similar smart card readers) on Linux systems, specifically Arch Linux and Ubuntu/Debian derivatives.
Please Note: This script is abit of a messy first draft -- enough for functionality, but I still need to give it a solid prune and some TLC. It was made entirely to fill the gap in my own workflow, although I am sharing it here as it may be useful to others.
- Prerequisites
- Verifying Hardware Detection
- Installing Required Packages
- Configuring the PC/SC Daemon
- Verifying Reader Detection
- Browser Configuration
- Service Management Options
- Troubleshooting
- A CAC/smart card reader plugged into your system
- Admin/sudo access
- Internet connection for package installation
Before installing software, verify your CAC reader is detected by the system:
lsusbYou should see an entry for your reader. For the Identiv SCR3500-C, it appears as:
Bus 001 Device 013: ID 04e6:581d SCM Microsystems, Inc. SCR3500 C Contact Reader
The specific bus and device numbers will vary, but the vendor ID (04e6) and product ID (581d) identify the device.
sudo pacman -S pcsclite ccid opensc pcsc-toolsPackage descriptions:
- pcsclite: PC/SC middleware that provides smart card support
- ccid: Driver for CCID-compliant smart card readers (your SCR3500 is CCID-compliant)
- opensc: Smart card utilities and PKCS#11 module for cryptographic operations
- pcsc-tools: Diagnostic and testing tools for smart card readers
sudo apt update
sudo apt install pcscd libccid opensc pcsc-toolsThe PC/SC daemon (pcscd) handles communication between your system and the smart card reader.
sudo systemctl start pcscd.service
sudo systemctl enable pcscd.serviceWhat this does:
start: Immediately starts the serviceenable: Configures the service to start automatically on boot
systemctl status pcscdYou should see output indicating the service is "active (running)".
After installing packages and starting the daemon, verify your reader is properly detected.
pcsc_scanExpected output:
- Reader name and manufacturer
- ATR (Answer To Reset) data if a card is inserted
- Real-time monitoring of card insertion/removal
Press Ctrl+C to exit when done.
If you get "command not found": Install pcsc-tools (see Installing Required Packages)
opensc-tool --list-readersThis provides a simple list of detected readers without continuous monitoring.
To use your CAC with web browsers, you need to configure the PKCS#11 security module.
- Open Firefox
- Navigate to
about:preferences#privacy - Scroll down to the "Certificates" section
- Click "Security Devices"
- Click "Load"
- Enter the following information:
- Module Name:
OpenSC PKCS#11 - Module filename:
/usr/lib/opensc-pkcs11.so
- Module Name:
- Click OK
Verification:
- Insert your CAC
- Navigate to your organization's portal
- You should be prompted to select a certificate and enter your PIN
Chrome uses the NSS database for certificate management. Configure it via command line:
modutil -dbdir sql:$HOME/.pki/nssdb -add "OpenSC" -libfile /usr/lib/opensc-pkcs11.soTo verify:
modutil -dbdir sql:$HOME/.pki/nssdb -listYou should see "OpenSC" listed under security modules.
To remove (if needed):
modutil -dbdir sql:$HOME/.pki/nssdb -delete "OpenSC"By default, pcscd runs continuously. For personal machines with occasional CAC use, you may prefer on-demand activation.
Service runs continuously in the background.
sudo systemctl enable pcscd.service
sudo systemctl start pcscd.servicePros:
- Instant response when inserting CAC
- Simple configuration
Cons:
- Uses system resources even when not needed
- Slightly larger attack surface
Service only starts when your CAC reader is accessed, then stops when idle.
# Stop and disable the always-running service
sudo systemctl stop pcscd.service
sudo systemctl disable pcscd.service
# Enable socket activation
sudo systemctl enable pcscd.socket
sudo systemctl start pcscd.socketPros:
- Saves resources when not in use
- Reduced attack surface
- Automatic start when needed
Cons:
- Slight delay (1-2 seconds) on first access
Check socket status:
systemctl status pcscd.socketCheck USB connection:
lsusbVerify your reader appears in the output.
Restart the PC/SC daemon:
sudo systemctl restart pcscdCheck for permission issues:
Some systems require users to be in the pcscd group:
# Check if group exists and if you're a member
groups $USER
# Add yourself to the group if needed
sudo usermod -aG pcscd $USERImportant: Log out and back in for group changes to take effect.
Verify PKCS#11 module is loaded:
In Firefox, go to about:preferences#privacy → Security Devices and confirm "OpenSC PKCS#11" is listed.
Check card is detected:
pkcs11-tool --list-slotsYou should see your reader listed with a token present.
View certificates on card:
pkcs11-tool --list-objectsVerify the card is detected:
pcsc_scanWith your CAC inserted, you should see card details.
Check browser console:
- Firefox:
Ctrl+Shift+K→ Look for security/certificate errors - Chrome:
Ctrl+Shift+J→ Check for PKCS#11 related errors
Check logs:
journalctl -u pcscd -n 50Common issues:
- Conflicting drivers (check for other smart card software)
- Permissions on
/var/run/pcscd/directory - Reader firmware issues (try unplugging and replugging)
OpenSC Documentation: https://github.com/OpenSC/OpenSC/wiki
PC/SC Lite: https://pcsclite.apdu.fr/
Arch Wiki - Smart Cards: https://wiki.archlinux.org/title/Smartcards
- Never share your CAC PIN with anyone
- Keep your CAC reader drivers updated
- Use socket activation on personal devices to minimize exposure
- Remove the PKCS#11 module from browsers when not needed for extended periods
If you need to remove CAC reader support:
sudo systemctl stop pcscd.socket
sudo systemctl disable pcscd.socket
sudo systemctl stop pcscd.service
sudo systemctl disable pcscd.serviceArch Linux:
sudo pacman -Rns pcsclite ccid opensc pcsc-toolsUbuntu/Debian:
sudo apt remove --purge pcscd libccid opensc pcsc-tools
sudo apt autoremovesudo gpasswd -d $USER pcscdFirefox: Go to Security Devices and unload the OpenSC module
Chrome:
modutil -dbdir sql:$HOME/.pki/nssdb -delete "OpenSC"Document Version: 1.0
Last Updated: November 2025
Tested On: Arch Linux