让我的智能卡读卡器在 Linux 上工作

pol*_*mon 9 drivers usb

我有一个智能卡读卡器,我前几天从笔记本电脑上撕下来的。它是一个内置的智能卡读卡器,虽然它使用 USB,因此为它制作电缆是没有问题的。

USB驱动程序似乎正确识别了它:

[1370965.148035] usb 1-3.2: new low-speed USB device number 25 using ehci-pci
[1370965.229948] usb 1-3.2: New USB device found, idVendor=08d4, idProduct=0009
[1370965.229962] usb 1-3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[1370965.229969] usb 1-3.2: Product: Fujitsu Siemens USB Smartcard Reader
[1370965.229976] usb 1-3.2: Manufacturer: OMNIKEY AG
Run Code Online (Sandbox Code Playgroud)

因为它是一个非常标准的富士通西门子 USB 智能卡读卡器,它应该与“富士通西门子智能卡 USB 2A”和“富士通西门子智能卡键盘 USB 2A”的驱动程序一起使用。两者是完全相同的,除了“键盘”变体永久连接到 USB 键盘(如在同一情况下)。

PC/SC 驱动程序无法识别阅读器。我上面提到的阅读器受libccid支持,但pcscd无法通过其供应商和产品 ID 识别阅读器:

00000286 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x08D4, PID: 0x0009, path: /dev/bus/usb/001/026
Run Code Online (Sandbox Code Playgroud)

(它只是转移到下一个 USB 设备。最终,它会尝试所有 USB 设备,然后什么也不做。)

我想得到一些建议,我现在应该做什么?我唯一能做的就是下载 CCID 驱动程序源并尝试在那里破解它,或者至少这是我现在唯一能想到的。还有什么我可以尝试的吗?


我用OpenCT 更进一步

我不得不取消注释一行/etc/openct.conf

driver  cardman {
    ids = {
#       usb:076b/0596, # OMNIKEY CardMan 2020
#       usb:076b/1784, # OMNIKEY CardMan 6020
        usb:08d4/0009, # Fujitsu Siemens SCR USB Reader
    };
};
Run Code Online (Sandbox Code Playgroud)

我不知道为什么那些cardman驱动程序的ID被注释掉了,也许驱动程序还没有真正工作?

无论如何,有了这个,我可以得到一些东西openct-tool

$ openct-tool list
  0 OMNIKEY CardMan 2020/6020/6120
Run Code Online (Sandbox Code Playgroud)

我放入了一个简单的 EEPROM 卡,它可以感应到这张卡,但我无法从中读取:

$ openct-tool read
Detected OMNIKEY CardMan 2020/6020/6120
Card present, status changed
failed to reset card
Run Code Online (Sandbox Code Playgroud)

所以,它仍然无法正常工作,真的......


曾经有一个支持这个读卡器的PC/SC驱动:pcsc-lite-cm2020,但是现在好像没有了。

我已经从制造商那里下载了源包。它很旧了。我已将内容复制到/usr/lib64/pcsc/drivers,但它显然不起作用,因为它是为错误的体系结构编译的。

那里唯一的来源是编译内核模块,但不是libcm2020.so我需要的pcscd.

我找不到 的来源libcm2020.so,如果我遗漏了某些东西,并且确实可以编译库,那么在何处找到来源的提示会很棒。

elb*_*rna 2

openct-tool read
Run Code Online (Sandbox Code Playgroud)

以 root 身份尝试此操作,或者更好的是,检查 USB 读卡器的权限(我使用另一个名为 smargo 的读卡器,它已连接到ttyUSB0,所以我检查/dev/ttyUSB0),然后重做openct-tool read