![让我的智能卡读卡器在 Linux 上运行](https://linux22.com/image/45901/%E8%AE%A9%E6%88%91%E7%9A%84%E6%99%BA%E8%83%BD%E5%8D%A1%E8%AF%BB%E5%8D%A1%E5%99%A8%E5%9C%A8%20Linux%20%E4%B8%8A%E8%BF%90%E8%A1%8C.png)
我有一个智能卡读卡器,是我前几天从笔记本电脑上拆下来的。它是一个内置智能卡读卡器,尽管它使用 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
由于它是一款几乎标准的富士通西门子 USB 智能卡读卡器,因此它应该与“富士通西门子智能卡 USB 2A”和“富士通西门子智能卡键盘 USB 2A”的驱动程序配合使用。两者是完全相同的,除了“键盘”变体永久连接到 USB 键盘(如在同一情况下)。
PC/SC 驱动程序无法识别读卡器。我上面提到的读者得到了支持库西德,但pcscd
无法通过其供应商和产品 ID 识别阅读器:
00000286 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x08D4, PID: 0x0009, path: /dev/bus/usb/001/026
(它只是跳到下一个 USB 设备。最终,它会尝试所有 USB 设备,然后什么都不做。)
我想得到一些建议我现在应该做什么?我唯一能做的就是下载 CCID 驱动程序源代码并尝试将其破解,或者至少这是我现在能想到的唯一方法。还有什么我可以尝试的吗?
我得到了一点进一步开放CT:
我不得不取消注释一行/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
};
};
我不知道为什么这些驱动程序的IDcardman
被注释掉了,也许驱动程序还没有真正工作?
不管怎样,有了这个,我可以得到一些东西openct-tool
:
$ openct-tool list
0 OMNIKEY CardMan 2020/6020/6120
我放入了一个简单的 EEPROM 卡,它可以感应到该卡,但我无法从中读取:
$ openct-tool read
Detected OMNIKEY CardMan 2020/6020/6120
Card present, status changed
failed to reset card
所以,它仍然不起作用,真的......
曾经有一个PC/SC驱动程序支持该读卡器:pcsc-lite-cm2020不过,现在好像已经没有了。
我已经下载了源码包来自制造商。它很旧了。我已将内容复制到/usr/lib64/pcsc/drivers
,但它显然不起作用,因为它是针对错误的体系结构进行编译的。
那里唯一的来源是编译内核模块,但不是libcm2020.so
我需要的pcscd
。
如果我遗漏了一些东西,我找不到 的源代码libcm2020.so
,而且确实可以编译该库,如果提示在哪里可以找到源代码,那就太棒了。
答案1
openct-tool read
以 root 身份尝试此操作,或者更好的是,检查 USB 读卡器的权限(我使用另一个名为 smargo 的读卡器,它已连接到ttyUSB0
,所以我检查/dev/ttyUSB0
),然后重做openct-tool read
。