Skip to content

PicoForge loses CCID/Storage access (drops to "Online - FIDO") when multiple smart card readers are connected #121

Description

@LifeIsGoodd

Description

The PicoForge GUI fails to establish a proper PC/SC (CCID) connection with the RS-Key token if there is more than one smart card reader or crypto token connected to the system.

The application logic seems to communicate only with the first enumerated reader index in the system context, instead of filtering readers by device name ("RS-Key").

Environment

  • Device: Raspberry Pi Pico / RP2350 (RS-Key Security Key)
  • Firmware: RS-Key build 0x0959 (VID:PID 1209:0001)
  • OS: Windows

Steps to Reproduce

  1. Connect the RS-Key to the PC. Open PicoForge. (Device status is green Online, Storage is correctly read as 3 / 1536 KB).
  2. Connect any secondary PCSC-compatible smart card reader or token to the system.
  3. Press Refresh button.
  4. Observe the PicoForge Home screen or try to program slots.

Actual Behavior

As soon as a secondary reader is present, PicoForge drops the CCID connection:

  • Device Status changes from green Online to orange Online - FIDO.
  • Storage (credentials & config) changes to Not Available.
  • Attempting to program slots in the "Slots" menu results in a PCSC Error: The smart card has been removed crash.

(See attached screenshots for Side-by-Side comparison)

Expected Behavior

PicoForge should filter connected PCSC readers by name (readers.iter().filter(...) looking for "RS-Key") to maintain an exclusive CCID session with the correct device, regardless of how many other smart card readers are currently enumerated by Windows.

Workaround

Temporarily off the conflicting secondary reader.

Image Image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions