<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ludovic Rousseau's blog (Posts about pcsc-lite)</title><link>https://blog.apdu.fr/</link><description></description><atom:link href="https://blog.apdu.fr/categories/pcsc-lite.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 &lt;a href="mailto:ludovic.rousseau+blog@free.fr"&gt;Ludovic Rousseau&lt;/a&gt; - License &lt;a href="/posts/2010/08/my-blog-messages-license/"&gt;CC BY-NC-SA 4.0 Deed&lt;/a&gt; for the text &amp;amp; &lt;a href="/posts/2019/01/my-blog-source-code-license/"&gt;GNU GPLv3&lt;/a&gt; for the code</copyright><lastBuildDate>Wed, 10 Jun 2026 14:00:49 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>New version of pcsc-lite: 2.5.1</title><link>https://blog.apdu.fr/posts/2026/06/new-version-of-pcsc-lite-251/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;I have just released a new version of &lt;a class="reference external" href="https://pcsclite.apdu.fr/files/"&gt;pcsc-lite 2.5.1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://pcsclite.apdu.fr/"&gt;pcsc-lite&lt;/a&gt; is a Free Software
implementation of the &lt;a class="reference external" href="https://www.wikipedia.org/wiki/PC/SC"&gt;PC/SC&lt;/a&gt;
(also known as WinSCard) API for Unix systems. It provides an API for
using &lt;a class="reference external" href="https://www.wikipedia.org/wiki/Smart_card"&gt;smart cards&lt;/a&gt; and
smart card readers.&lt;/p&gt;
&lt;p&gt;This version contains a bug fix for multi-slots readers. The bug was
introduced in the previous version 2.5.0 released 2 weeks ago.&lt;/p&gt;
&lt;section id="changes"&gt;
&lt;h2&gt;Changes:&lt;/h2&gt;
&lt;dl class="simple"&gt;
&lt;dt&gt;2.5.1: Ludovic Rousseau&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;10 June 2026&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Fix a bug (introduced in 2.5.0) with multi-slots readers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add support of Haiku Operating System&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;</description><category>pcsc-lite</category><guid>https://blog.apdu.fr/posts/2026/06/new-version-of-pcsc-lite-251/</guid><pubDate>Wed, 10 Jun 2026 13:55:00 GMT</pubDate></item><item><title>No more limited to 16 readers</title><link>https://blog.apdu.fr/posts/2026/05/no-more-limited-to-16-readers/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;pcsc-lite and my CCID driver are no longer limited to 16 readers.
See &lt;a class="reference external" href="https://blog.apdu.fr/posts/2026/05/new-version-of-pcsc-lite-250/"&gt;New version of pcsc-lite: 2.5.0&lt;/a&gt; and &lt;a class="reference external" href="https://blog.apdu.fr/posts/2026/05/new-version-of-libccid-180/"&gt;New version of libccid: 1.8.0&lt;/a&gt;.&lt;/p&gt;
&lt;section id="history"&gt;
&lt;h2&gt;History&lt;/h2&gt;
&lt;p&gt;Since the first version of pcsc-lite (in 2002 according to &lt;a class="reference external" href="https://git-scm.com/"&gt;git&lt;/a&gt; history) the maximum number of readers has been set to
16. This number is defined by the &lt;code class="docutils literal"&gt;PCSCLITE_MAX_READERS_CONTEXTS&lt;/code&gt;
constant.&lt;/p&gt;
&lt;p&gt;Since &lt;a class="reference external" href="https://pcsclite.apdu.fr/"&gt;pcsc-lite&lt;/a&gt; was limited to 16
readers it was obvious to also limit the number of devices supported
by the &lt;a class="reference external" href="https://ccid.apdu.fr/"&gt;CCID&lt;/a&gt; driver to 16.&lt;/p&gt;
&lt;p&gt;This limitation is problematic for some use cases. While it is possible
to change the value of &lt;code class="docutils literal"&gt;PCSCLITE_MAX_READERS_CONTEXTS&lt;/code&gt; and rebuild
both pcsc-lite and the driver, this has side effects.  See
&lt;a class="reference external" href="https://blog.apdu.fr/posts/2022/02/fedora-flatpak-and-pcsc-lite/"&gt;Fedora, flatpak and pcsc-lite&lt;/a&gt; for more information.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="changes"&gt;
&lt;h2&gt;Changes&lt;/h2&gt;
&lt;p&gt;The request has been around since at least 2018. See
&lt;a class="reference external" href="https://salsa.debian.org/rousseau/CCID/-/work_items/4"&gt;https://salsa.debian.org/rousseau/CCID/-/work_items/4&lt;/a&gt; and
&lt;a class="reference external" href="https://salsa.debian.org/rousseau/PCSC/-/work_items/4"&gt;https://salsa.debian.org/rousseau/PCSC/-/work_items/4&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I had already calculated the amount of RAM that could be saved by using
a list instead of a fixed-size array:&lt;/p&gt;
&lt;aside class="admonition admonition-quote-from-the-pcsc-lite-bug-report-https-salsa-debian-org-rousseau-pcsc-work-items-4"&gt;
&lt;p class="admonition-title"&gt;Quote from the pcsc-lite &lt;a class="reference external" href="https://salsa.debian.org/rousseau/PCSC/-/work_items/4"&gt;bug report&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;A list should be used instead of the default limitation to 16 readers.
With few readers (1 or 2) the RAM consumption should be lower.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;sizeof(struct ReaderContext) = 440&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sizeof(sReadersContexts) = 440*16 = 7040&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sizeof(struct pubReaderStatesList) = 184&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sizeof(readerStates) = 184 * 16 = 2944&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gain when only 1 reader is in use = (7040 - 440) + (2944 - 184) = 9360
arround 9 KB of RAM would be saved.&lt;/p&gt;
&lt;/aside&gt;
&lt;p&gt;You can now use as many readers as you want.&lt;/p&gt;
&lt;p&gt;In fact, no. There is still a limit of 256 readers due to the naming
scheme used by pcsc-lite for readers. Readers will go from 00 to FF. See
&lt;a class="reference external" href="https://blog.apdu.fr/posts/2010/05/what-is-in-pcsc-reader-name/"&gt;What is in a PC/SC reader name?&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="backward-compatibility"&gt;
&lt;h2&gt;Backward compatibility&lt;/h2&gt;
&lt;p&gt;In version 2.4.1 of pcsc-lite I introduced the ability to mix different
versions of the internal communication protocol between the PC/SC daemon
(&lt;code class="docutils literal"&gt;pcscd&lt;/code&gt;) and the PC/SC library (&lt;code class="docutils literal"&gt;libpcsclite&lt;/code&gt;). See
&lt;a class="reference external" href="https://blog.apdu.fr/posts/2026/01/pcsc-lite-backward-forward-compatible-with-itself/"&gt;pcsc-lite backward &amp;amp; forward compatible with itself&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In order to remove the limitation of the reader number, I had to update
this internal communication protocol again. However, I tried to make it
smart so that an old &lt;code class="docutils literal"&gt;libpcsclite&lt;/code&gt; can communicate with a recent
&lt;code class="docutils literal"&gt;pcscd&lt;/code&gt; or vice versa. The application will still only recognise up to
16 readers, but at least it should work.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I hope you will benefit from this change:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Less RAM consumed when only 1 reader is used.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The possibility of using more than 16 readers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;</description><category>ccid</category><category>pcsc-lite</category><guid>https://blog.apdu.fr/posts/2026/05/no-more-limited-to-16-readers/</guid><pubDate>Wed, 27 May 2026 15:25:41 GMT</pubDate></item><item><title>New version of pcsc-lite: 2.5.0</title><link>https://blog.apdu.fr/posts/2026/05/new-version-of-pcsc-lite-250/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;I have just released a new version of &lt;a class="reference external" href="https://pcsclite.apdu.fr/files/"&gt;pcsc-lite 2.5.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://pcsclite.apdu.fr/"&gt;pcsc-lite&lt;/a&gt; is a Free Software
implementation of the &lt;a class="reference external" href="https://www.wikipedia.org/wiki/PC/SC"&gt;PC/SC&lt;/a&gt;
(also known as WinSCard) API for Unix systems. It provides an API for
using &lt;a class="reference external" href="https://www.wikipedia.org/wiki/Smart_card"&gt;smart cards&lt;/a&gt; and
smart card readers.&lt;/p&gt;
&lt;p&gt;The major change in this version is: no more limited to 16 smart card
readers.&lt;/p&gt;
&lt;section id="changes"&gt;
&lt;h2&gt;Changes:&lt;/h2&gt;
&lt;dl class="simple"&gt;
&lt;dt&gt;2.5.0: Ludovic Rousseau&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;27 May 2026&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Do not limit to 16 readers only&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remove support of autotools&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix a crash when rescanning serial configs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix a memory leak in Polkit&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;tokenparser: avoid a crash with corrupted &lt;code class="docutils literal"&gt;Info.plist&lt;/code&gt; files&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some other minor improvements&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;</description><category>pcsc-lite</category><guid>https://blog.apdu.fr/posts/2026/05/new-version-of-pcsc-lite-250/</guid><pubDate>Wed, 27 May 2026 13:01:49 GMT</pubDate></item><item><title>pcsc-lite backward &amp; forward compatible with itself</title><link>https://blog.apdu.fr/posts/2026/01/pcsc-lite-backward-forward-compatible-with-itself/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;pcsc-lite 2.4.1 now provides a backward &amp;amp; forward compatible mechanism
that supports both the current and previous &lt;cite&gt;internal&lt;/cite&gt; communication
protocols.&lt;/p&gt;
&lt;p&gt;The communication protocol we are talking about here is the one between
the client (libpcsclite) and the server (pcscd) sides. It is an
internal-only protocol that is specific to pcsc-lite.&lt;/p&gt;
&lt;section id="protocol-negotiation"&gt;
&lt;h2&gt;Protocol negotiation&lt;/h2&gt;
&lt;p&gt;To ensure that the client and server are using the same protocol, they
negotiate the procotol they know. If they are different, the server
will refuse the connection. In the application (client side), the
&lt;a class="reference external" href="https://pcsclite.apdu.fr/api/group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67"&gt;SCardEstablishContext()&lt;/a&gt;
function will return the error code &lt;code class="docutils literal"&gt;SCARD_E_SERVICE_STOPPED&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Up to version 2.4.0, both the server and the client only supported one
protocol version (version 4:5).&lt;/p&gt;
&lt;/section&gt;
&lt;section id="sandboxes"&gt;
&lt;h2&gt;Sandboxes&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://www.wikipedia.org/wiki/Flatpak"&gt;Flatpack&lt;/a&gt;, &lt;a class="reference external" href="https://www.wikipedia.org/wiki/Snap_(software)"&gt;Snap&lt;/a&gt;, &lt;a class="reference external" href="https://www.wikipedia.org/wiki/AppImage"&gt;AppImage&lt;/a&gt; and other sandbox
technologies are now used to distribute applications.&lt;/p&gt;
&lt;p&gt;In some/many cases, the server (pcscd daemon) running on the host comes
from a different version of pcsc-lite than the client used in the
sandbox. If the internal communication protocol differs, the
communication is not possible.&lt;/p&gt;
&lt;p&gt;I receive requests to solve this problem. See:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://github.com/LudovicRousseau/PCSC/issues/199"&gt;Backward protocol compatibility #199&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://github.com/LudovicRousseau/PCSC/issues/246"&gt;Runtime-configurable IPC dir #246&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://salsa.debian.org/rousseau/PCSC/-/issues/22"&gt;Support multiple versions of the internal protocol: fix Flatpak issues&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="protocol-history"&gt;
&lt;h2&gt;Protocol History&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th class="head"&gt;&lt;p&gt;pcsc-lite version&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;Release Date&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;Protocol version&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;Compatible with&lt;/p&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;2.4.1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1 Jan 2026&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4:5&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4:4 &amp;amp; 4:5&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;2.4.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;19 Oct 2025&lt;/p&gt;&lt;/td&gt;
&lt;td rowspan="5"&gt;&lt;p&gt;4:5&lt;/p&gt;&lt;/td&gt;
&lt;td rowspan="5"&gt;&lt;p&gt;4:5&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;2.3.3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2 Apr 2025&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;2.3.2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;26 Mar 2025&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;2.3.1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;24 Dec 2024&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;2.3.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3 Aug 2024&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;2.2.3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;26 May 2024&lt;/p&gt;&lt;/td&gt;
&lt;td rowspan="3"&gt;&lt;p&gt;4:4&lt;/p&gt;&lt;/td&gt;
&lt;td rowspan="3"&gt;&lt;p&gt;4:4&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;...&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;!--  --&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;1.8.24&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;12 Oct 2018&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;1.8.23&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;18 Dec 2017&lt;/p&gt;&lt;/td&gt;
&lt;td rowspan="3"&gt;&lt;p&gt;4:3&lt;/p&gt;&lt;/td&gt;
&lt;td rowspan="3"&gt;&lt;p&gt;4:3&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;...&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;!--  --&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;1.8.9&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;16 Oct 2013&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;1.8.8&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;16 Jan 2012&lt;/p&gt;&lt;/td&gt;
&lt;td rowspan="3"&gt;&lt;p&gt;4:2&lt;/p&gt;&lt;/td&gt;
&lt;td rowspan="3"&gt;&lt;p&gt;4:2&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;...&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;!--  --&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;1.6.5&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;12 Oct 2010&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/section&gt;
&lt;section id="new-protocol-negotiation"&gt;
&lt;h2&gt;New protocol negotiation&lt;/h2&gt;
&lt;p&gt;From pcsc-lite 2.4.1 onwards, the protocol negotiation is smarter.&lt;/p&gt;
&lt;p&gt;The daemon side will accept the current version and also the previous
one. Versions 4:5 and 4:4 are accepted. It is straightforward, as the
only change with version 4:5 is the addition of a new command
(command &lt;code class="docutils literal"&gt;CMD_GET_READER_EVENTS&lt;/code&gt; introduced in commit
&lt;a class="reference external" href="https://salsa.debian.org/rousseau/PCSC/-/commit/53f57ed700bcd0bc47d970dc674ba3fd5ee5b387"&gt;53f57ed700bcd0bc47d970dc674ba3fd5ee5b387&lt;/a&gt;).
Old clients will simply not use the new command.&lt;/p&gt;
&lt;p&gt;The client side will also accept the current version and the previous
one. These are versions 4:5 and 4:4. Using a recent client (protocol 4:5)
with an old server (protocol 4:4) will have a small side effect. The
&lt;code class="docutils literal"&gt;SCardGetStatusChange()&lt;/code&gt; function will not include the number of
reader events (see
&lt;a class="reference external" href="https://blog.apdu.fr/posts/2024/08/improved-scardgetstatuschange-for-pnpnotification-special-reader/"&gt;Improved SCardGetStatusChange() for "\\?PnP?\Notification" special reader&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Applications using pcsc-lite 2.4.1 can use a daemon as old as
pcsc-lite version 1.8.24, released in October 2018.&lt;/p&gt;
&lt;p&gt;A pcscd daemon from pcsc-lite 2.4.1 can handle clients as old as the
same pcsc-lite version 1.8.24 from October 2018.&lt;/p&gt;
&lt;p&gt;Supporting the (older) protocol version 4:3 may be possible but would
require more efforts and be more complex. Contact me if you require
this.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This change should help mix PC/SC servers and clients from more
different versions.&lt;/p&gt;
&lt;p&gt;This should prevent people from using ugly hacks.&lt;/p&gt;
&lt;/section&gt;</description><category>pcsc-lite</category><guid>https://blog.apdu.fr/posts/2026/01/pcsc-lite-backward-forward-compatible-with-itself/</guid><pubDate>Wed, 07 Jan 2026 15:55:10 GMT</pubDate></item><item><title>New version of pcsc-lite: 2.4.1</title><link>https://blog.apdu.fr/posts/2026/01/new-version-of-pcsc-lite-241/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;I have just released a new version of &lt;a class="reference external" href="https://pcsclite.apdu.fr/files/"&gt;pcsc-lite 2.4.1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://pcsclite.apdu.fr/"&gt;pcsc-lite&lt;/a&gt; is a Free Software
implementation of the &lt;a class="reference external" href="https://www.wikipedia.org/wiki/PC/SC"&gt;PC/SC&lt;/a&gt;
(also known as WinSCard) API for Unix systems. It provides an API for
using &lt;a class="reference external" href="https://www.wikipedia.org/wiki/Smart_card"&gt;smart cards&lt;/a&gt; and
smart card readers.&lt;/p&gt;
&lt;p&gt;This version offers backwards compatibility for both the client and
server components. It should now be easier to mix and match different
versions of pcscd and libpcsclite (and using different internal protocol
versions).&lt;/p&gt;
&lt;section id="changes"&gt;
&lt;h2&gt;Changes:&lt;/h2&gt;
&lt;dl class="simple"&gt;
&lt;dt&gt;2.4.1: Ludovic Rousseau&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;1 January 2026&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Add backward version support on the client side&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add backward version support on the server side&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;hotplug libudev: rescan the USB bus with &lt;code class="docutils literal"&gt;pcscd &lt;span class="pre"&gt;--hotplug&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;fix a value in &lt;code class="docutils literal"&gt;pcscd.service&lt;/code&gt; systemd file&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;meson: install systemd files even if libsystemd is not used&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some other minor improvements&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;</description><category>pcsc-lite</category><guid>https://blog.apdu.fr/posts/2026/01/new-version-of-pcsc-lite-241/</guid><pubDate>Wed, 07 Jan 2026 14:33:25 GMT</pubDate></item><item><title>Outdated and broken PC/SC drivers with pcsc-lite 2.4.0</title><link>https://blog.apdu.fr/posts/2025/10/outdated-and-broken-pcsc-drivers-with-pcsc-lite-240/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;Since pcsc-lite 2.4.0 and the fact that pcscd can now run as a normal
user (see &lt;a class="reference external" href="https://blog.apdu.fr/posts/2025/10/pcscd-runs-as-pcscd-user/"&gt;pcscd runs as pcscd user&lt;/a&gt;), the driver must configure the
reader's device access rights. Otherwise, the pcscd process will
not be able to use the device.&lt;/p&gt;
&lt;section id="unmaintained-drivers"&gt;
&lt;h2&gt;Unmaintained drivers&lt;/h2&gt;
&lt;p&gt;Some older, unmaintained drivers will no longer work with pcscd. I have
requested their removal from Debian unstable.&lt;/p&gt;
&lt;p&gt;They are:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;libasedrive-serial &amp;amp; libasedrive-usb from &lt;a class="reference external" href="https://tracker.debian.org/pkg/asedriveiiie"&gt;asedriveiiie&lt;/a&gt; (see bug &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1119077"&gt;#1119077&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;libgempc410 &amp;amp; libgempc430 from &lt;a class="reference external" href="https://tracker.debian.org/pkg/ifd-gempc"&gt;ifd-gempc&lt;/a&gt; (see bug &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1119078"&gt;#1119078&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am the Debian maintainer of these packages, so it is my responsibility
to open tickets to &lt;a class="reference external" href="https://wiki.debian.org/ftpmaster_Removals"&gt;remove the packages&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I also filed a &lt;em&gt;release critical&lt;/em&gt; bug &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1119081"&gt;#1119081&lt;/a&gt; on
&lt;a class="reference external" href="https://tracker.debian.org/pkg/libgcr410"&gt;libgcr410&lt;/a&gt; so that this
driver will not be included in the next version of Debian (unless the
issue is fixed).&lt;/p&gt;
&lt;section id="old-hardware"&gt;
&lt;h3&gt;Old hardware&lt;/h3&gt;
&lt;p&gt;These drivers are intended for very old serial smart card readers (who
still has a serial port on their computer?) or USB readers from the
last century.&lt;/p&gt;
&lt;p&gt;The advantage of Free Software is that if someone still has such a
device, they can obtain the source code of the driver (still available
online), adapt it and use it.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="old-software"&gt;
&lt;h3&gt;Old software&lt;/h3&gt;
&lt;p&gt;There has been no new version of the asedriveiiie software since September 2010.
The source code is no longer available from the publisher (a commecial company).&lt;/p&gt;
&lt;p&gt;The ifd-gempc software is maintained upstream by me. The latest &lt;em&gt;major&lt;/em&gt;
version dates from April 2012 and was mostly compiler warnings fixes. The
source code is still available at &lt;a class="reference external" href="https://ifd-gempc.apdu.fr/"&gt;https://ifd-gempc.apdu.fr/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The libgcr410 software was also written by me. I wrote it before
ifd-gempc and I am surprised to see it packaged in Debian, as it should
be replaced by ifd-gempc. The Debian package has been abandonned by its
Debian maintainer since March 2008. More recent Debian versions have
been produced by the Debian Quality Assurance (QA) team.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="popularity"&gt;
&lt;h3&gt;Popularity&lt;/h3&gt;
&lt;p&gt;I have already published an article on the popularity of Debian packages
for smart cards in 2020 in &lt;a class="reference external" href="https://blog.apdu.fr/posts/2020/04/smart-card-usage-in-debian-popcon/"&gt;Smart card Usage in Debian: pcscd and drivers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With updated graphics, we now have:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;asedriveiiie&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;a class="reference external image-reference" href="https://qa.debian.org/popcon.php?package=asedriveiiie"&gt;
&lt;img alt="Popularity contest statistics for asedriveiiie" src="https://blog.apdu.fr/images/2025/10/asedriveiiie.png"&gt;
&lt;/a&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;ifd-gempc&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;a class="reference external image-reference" href="https://qa.debian.org/popcon.php?package=ifd-gempc"&gt;
&lt;img alt="Popularity contest statistics for ifd-gempc" src="https://blog.apdu.fr/images/2025/10/ifdgempc.png"&gt;
&lt;/a&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;libgcr410&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;a class="reference external image-reference" href="https://qa.debian.org/popcon.php?package=libgcr410"&gt;
&lt;img alt="Popularity contest statistics for libgcr410" src="https://blog.apdu.fr/images/2025/10/libgcr410.png"&gt;
&lt;/a&gt;
&lt;p&gt;Very few people still have these packages installed. And even fewer
use them.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="changes-required"&gt;
&lt;h2&gt;Changes required&lt;/h2&gt;
&lt;p&gt;I also filed the bug &lt;a class="reference external" href="https://github.com/acshk/acsccid/issues/39"&gt;#39&lt;/a&gt;
"Set group to pcscd in the udev rules file" on the upstream &lt;a class="reference external" href="https://github.com/acshk/acsccid"&gt;acsccid&lt;/a&gt; driver.&lt;/p&gt;
&lt;p&gt;This driver is a fork of &lt;a class="reference external" href="https://ccid.apdu.fr/"&gt;my CCID driver&lt;/a&gt; and
is still actively maintained. The problem should therefore be resolved
in a new version.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I don't have enough free time to maintain software that is no longer in
use.&lt;/p&gt;
&lt;p&gt;I haven't used these drivers for at least 10 years. And I don't plan on
using them in the future, because I discovered that I no longer have the
smart card readers.&lt;/p&gt;
&lt;/section&gt;</description><category>pcsc-lite</category><guid>https://blog.apdu.fr/posts/2025/10/outdated-and-broken-pcsc-drivers-with-pcsc-lite-240/</guid><pubDate>Fri, 31 Oct 2025 16:59:51 GMT</pubDate></item><item><title>New version of pcsc-lite: 2.4.0</title><link>https://blog.apdu.fr/posts/2025/10/new-version-of-pcsc-lite-240/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;I just released a new version of &lt;a class="reference external" href="https://pcsclite.apdu.fr/files/"&gt;pcsc-lite 2.4.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://pcsclite.apdu.fr/"&gt;pcsc-lite&lt;/a&gt; is a Free Software
implementation of the PC/SC (or WinSCard) API for Unix systems.&lt;/p&gt;
&lt;p&gt;The major change in this release is that the &lt;code class="docutils literal"&gt;pcscd&lt;/code&gt; daemon process now
runs as a normal user instead of root (when systemd is used).&lt;/p&gt;
&lt;p&gt;You must use drivers that configure the reader device access rights so
that a user in the pcscd group can access it for reading and writing.
That is the case for libccid 1.7.0.  See
&lt;a class="reference external" href="https://blog.apdu.fr/posts/2025/10/new-version-of-libccid-170/"&gt;New version of libccid: 1.7.0&lt;/a&gt;.&lt;/p&gt;
&lt;section id="changes"&gt;
&lt;h2&gt;Changes:&lt;/h2&gt;
&lt;dl class="simple"&gt;
&lt;dt&gt;2.4.0: Ludovic Rousseau&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;19 October 2025&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Run pcscd under a pcscd user instead of root when using systemd&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set PIDFile in systemd service file&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Protect contextMapList modifications using a mutex&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;meson:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Fix &lt;code class="docutils literal"&gt;libpcsclite.pc&lt;/code&gt; file&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;respect builtin meson default_library option&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;build and install spy lib &amp;amp; tool only when needed&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;UnitaryTests/*.py&lt;/span&gt;&lt;/code&gt;: fix pylint warnings&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improve Doxygen documentation&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;</description><category>pcsc-lite</category><guid>https://blog.apdu.fr/posts/2025/10/new-version-of-pcsc-lite-240/</guid><pubDate>Sun, 19 Oct 2025 13:25:09 GMT</pubDate></item><item><title>New version of pcsc-lite: 2.3.3</title><link>https://blog.apdu.fr/posts/2025/04/new-version-of-pcsc-lite-233/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;I just released a new version of &lt;a class="reference external" href="https://pcsclite.apdu.fr/files/"&gt;pcsc-lite 2.3.3&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://pcsclite.apdu.fr/"&gt;pcsc-lite&lt;/a&gt; is a Free Software
implementation of the PC/SC (or WinSCard) API for Unix systems.&lt;/p&gt;
&lt;p&gt;Polkit rules was broken. So it was no more possible to give access to
remote users for example. See &lt;a class="reference external" href="https://blog.apdu.fr/posts/2023/11/pcsc-lite-and-polkit/"&gt;pcsc-lite and polkit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a class="reference external" href="https://github.com/mk-fg"&gt;Mike Kazantsev&lt;/a&gt; for the very nice
bug report in &lt;a class="reference external" href="https://github.com/LudovicRousseau/PCSC/issues/231"&gt;PrivateUsers=yes in systemd sandboxing options prevents
polkit rules from getting user/group info&lt;/a&gt;.&lt;/p&gt;
&lt;section id="changes"&gt;
&lt;h2&gt;Changes:&lt;/h2&gt;
&lt;dl class="simple"&gt;
&lt;dt&gt;2.3.3: Ludovic Rousseau&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;2 April 2025&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Make polkit rules work again (bug introduced in 2.3.2)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;</description><category>pcsc-lite</category><guid>https://blog.apdu.fr/posts/2025/04/new-version-of-pcsc-lite-233/</guid><pubDate>Wed, 02 Apr 2025 15:54:28 GMT</pubDate></item><item><title>Ignore readers using PCSCLITE_IGNORE udev property</title><link>https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;Version 2.3.2 of pcsc-lite (&lt;a class="reference external" href="https://blog.apdu.fr/posts/2025/03/new-version-of-pcsc-lite-232/"&gt;New version of pcsc-lite: 2.3.2&lt;/a&gt;)
introduced a new way to ignore a smart card reader.&lt;/p&gt;
&lt;p&gt;The &lt;a class="reference external" href="https://github.com/LudovicRousseau/PCSC/commit/a4184a0a8336c0a06c6596131a9644c35b657a31"&gt;patch&lt;/a&gt;
included in pcsc-lite is from Valtteri Vuorikoski and I will quote his
git commit message in this article.&lt;/p&gt;
&lt;section id="use-case"&gt;
&lt;h2&gt;Use case&lt;/h2&gt;
&lt;p&gt;"This is similar to the existing filtering support provided by
&lt;code class="docutils literal"&gt;PCSCLITE_FILTER_IGNORE_READER_NAMES&lt;/code&gt;
(&lt;a class="reference external" href="https://blog.apdu.fr/posts/2015/12/remove-andor-customize-pcsc-reader-names/"&gt;Remove  and/or customize PC/SC reader names&lt;/a&gt;), but allows using the
full range of udev rules to match specific devices. For example, if you
have several Yubikeys and one is attached to a specific USB port that is
being forwarded to a virtual machine (viz. it should not be touched by
programs on the host machine), this facility allows setting a rule to
keep pcscd away from that Yubikey. Yubikeys attached to other ports keep
working normally."&lt;/p&gt;
&lt;/section&gt;
&lt;section id="udev"&gt;
&lt;h2&gt;udev&lt;/h2&gt;
&lt;p&gt;By default pcsc-lite uses libudev to detect readers events (plug or unplug
of a USB reader). The idea is to use a flag set by udev to tell
pcsc-lite to ignore a reader.&lt;/p&gt;
&lt;p&gt;Example rule that targets a Yubikey attached to a specific USB port and causes
pcscd to ignore that device:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code text"&gt;&lt;a id="rest_code_fa2903a3426a4bfe9d5c8a0af231776b-1" name="rest_code_fa2903a3426a4bfe9d5c8a0af231776b-1" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_fa2903a3426a4bfe9d5c8a0af231776b-1"&gt;&lt;/a&gt;ACTION!="remove|unbind", SUBSYSTEM=="usb", ATTR{idVendor}=="1050",
&lt;a id="rest_code_fa2903a3426a4bfe9d5c8a0af231776b-2" name="rest_code_fa2903a3426a4bfe9d5c8a0af231776b-2" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_fa2903a3426a4bfe9d5c8a0af231776b-2"&gt;&lt;/a&gt;ATTR{idProduct}=="0406", KERNEL=="1-2.3", ENV{PCSCLITE_IGNORE}="1"
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code class="docutils literal"&gt;KERNEL&lt;/code&gt; match targets a USB device attached to port 3 of a hub on
port 2 of USB bus 1, and rule sets property &lt;code class="docutils literal"&gt;PCSCLITE_IGNORE&lt;/code&gt; to cause
the device to be ignored.&lt;/p&gt;
&lt;p&gt;The reader with &lt;a class="reference external" href="https://ccid.apdu.fr/select_readers/?idProduct=1030&amp;amp;idVendor=4176"&gt;idVendor=0x1050 and idProduct=0x0406&lt;/a&gt; is
the &lt;a class="reference external" href="https://ccid.apdu.fr/ccid/shouldwork.html#0x10500x0406"&gt;YubiKey FIDO+CCID&lt;/a&gt; from Yubico.&lt;/p&gt;
&lt;p&gt;Or if you want to ignore &lt;strong&gt;any&lt;/strong&gt; reader connected to USB port 1-3:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code text"&gt;&lt;a id="rest_code_9bb6230287e74dfeaa90b001facf7940-1" name="rest_code_9bb6230287e74dfeaa90b001facf7940-1" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_9bb6230287e74dfeaa90b001facf7940-1"&gt;&lt;/a&gt;ACTION!="remove|unbind", SUBSYSTEM=="usb", KERNEL=="1-3", ENV{PCSCLITE_IGNORE}="1"
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You put the above rule is a file &lt;code class="docutils literal"&gt;/etc/udev/rules.d/foobar.rules&lt;/code&gt; and
voila.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="config"&gt;
&lt;h2&gt;Config&lt;/h2&gt;
&lt;p&gt;To know what value for &lt;code class="docutils literal"&gt;KERNEL=&lt;/code&gt; to use you can run &lt;code class="docutils literal"&gt;udevadm monitor&lt;/code&gt;
and connect a USB reader. You will get something like:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_d44fc71c16a045e18894e8ac5a0057ff-1" name="rest_code_d44fc71c16a045e18894e8ac5a0057ff-1" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_d44fc71c16a045e18894e8ac5a0057ff-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;udevadm&lt;span class="w"&gt; &lt;/span&gt;monitor
&lt;a id="rest_code_d44fc71c16a045e18894e8ac5a0057ff-2" name="rest_code_d44fc71c16a045e18894e8ac5a0057ff-2" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_d44fc71c16a045e18894e8ac5a0057ff-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;monitor will print the received events for:&lt;/span&gt;
&lt;a id="rest_code_d44fc71c16a045e18894e8ac5a0057ff-3" name="rest_code_d44fc71c16a045e18894e8ac5a0057ff-3" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_d44fc71c16a045e18894e8ac5a0057ff-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;UDEV - the event which udev sends out after rule processing&lt;/span&gt;
&lt;a id="rest_code_d44fc71c16a045e18894e8ac5a0057ff-4" name="rest_code_d44fc71c16a045e18894e8ac5a0057ff-4" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_d44fc71c16a045e18894e8ac5a0057ff-4"&gt;&lt;/a&gt;&lt;span class="go"&gt;KERNEL - the kernel uevent&lt;/span&gt;
&lt;a id="rest_code_d44fc71c16a045e18894e8ac5a0057ff-5" name="rest_code_d44fc71c16a045e18894e8ac5a0057ff-5" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_d44fc71c16a045e18894e8ac5a0057ff-5"&gt;&lt;/a&gt;
&lt;a id="rest_code_d44fc71c16a045e18894e8ac5a0057ff-6" name="rest_code_d44fc71c16a045e18894e8ac5a0057ff-6" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_d44fc71c16a045e18894e8ac5a0057ff-6"&gt;&lt;/a&gt;&lt;span class="go"&gt;KERNEL[2022.067560] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3 (usb)&lt;/span&gt;
&lt;a id="rest_code_d44fc71c16a045e18894e8ac5a0057ff-7" name="rest_code_d44fc71c16a045e18894e8ac5a0057ff-7" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_d44fc71c16a045e18894e8ac5a0057ff-7"&gt;&lt;/a&gt;&lt;span class="go"&gt;KERNEL[2022.069016] change   /devices/pci0000:00/0000:00:14.0/usb1/1-3 (usb)&lt;/span&gt;
&lt;a id="rest_code_d44fc71c16a045e18894e8ac5a0057ff-8" name="rest_code_d44fc71c16a045e18894e8ac5a0057ff-8" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_d44fc71c16a045e18894e8ac5a0057ff-8"&gt;&lt;/a&gt;&lt;span class="go"&gt;KERNEL[2022.069332] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0 (usb)&lt;/span&gt;
&lt;a id="rest_code_d44fc71c16a045e18894e8ac5a0057ff-9" name="rest_code_d44fc71c16a045e18894e8ac5a0057ff-9" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_d44fc71c16a045e18894e8ac5a0057ff-9"&gt;&lt;/a&gt;&lt;span class="go"&gt;KERNEL[2022.069416] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-3 (usb)&lt;/span&gt;
&lt;a id="rest_code_d44fc71c16a045e18894e8ac5a0057ff-10" name="rest_code_d44fc71c16a045e18894e8ac5a0057ff-10" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_d44fc71c16a045e18894e8ac5a0057ff-10"&gt;&lt;/a&gt;&lt;span class="go"&gt;UDEV  [2022.690370] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3 (usb)&lt;/span&gt;
&lt;a id="rest_code_d44fc71c16a045e18894e8ac5a0057ff-11" name="rest_code_d44fc71c16a045e18894e8ac5a0057ff-11" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_d44fc71c16a045e18894e8ac5a0057ff-11"&gt;&lt;/a&gt;&lt;span class="go"&gt;UDEV  [2022.695881] change   /devices/pci0000:00/0000:00:14.0/usb1/1-3 (usb)&lt;/span&gt;
&lt;a id="rest_code_d44fc71c16a045e18894e8ac5a0057ff-12" name="rest_code_d44fc71c16a045e18894e8ac5a0057ff-12" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_d44fc71c16a045e18894e8ac5a0057ff-12"&gt;&lt;/a&gt;&lt;span class="go"&gt;UDEV  [2022.700310] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0 (usb)&lt;/span&gt;
&lt;a id="rest_code_d44fc71c16a045e18894e8ac5a0057ff-13" name="rest_code_d44fc71c16a045e18894e8ac5a0057ff-13" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_d44fc71c16a045e18894e8ac5a0057ff-13"&gt;&lt;/a&gt;&lt;span class="go"&gt;UDEV  [2022.728691] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-3 (usb)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can see the "1-3" information to use in the &lt;code class="docutils literal"&gt;.rules&lt;/code&gt; file.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="debug"&gt;
&lt;h2&gt;Debug&lt;/h2&gt;
&lt;p&gt;To debug your configuration and check the new field &lt;code class="docutils literal"&gt;PCSCLITE_IGNORE&lt;/code&gt; is
correctly set you can use &lt;code class="docutils literal"&gt;udevadm monitor &lt;span class="pre"&gt;--property&lt;/span&gt;&lt;/code&gt; and you get
something like:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-1" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-1" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;udevadm&lt;span class="w"&gt; &lt;/span&gt;monitor&lt;span class="w"&gt; &lt;/span&gt;--property
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-2" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-2" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;monitor will print the received events for:&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-3" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-3" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;UDEV - the event which udev sends out after rule processing&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-4" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-4" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-4"&gt;&lt;/a&gt;&lt;span class="go"&gt;KERNEL - the kernel uevent&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-5" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-5" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-5"&gt;&lt;/a&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-6" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-6" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-6"&gt;&lt;/a&gt;&lt;span class="go"&gt;KERNEL[2265.405075] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3 (usb)&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-7" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-7" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-7"&gt;&lt;/a&gt;&lt;span class="go"&gt;ACTION=add&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-8" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-8" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-8"&gt;&lt;/a&gt;&lt;span class="go"&gt;DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-3&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-9" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-9" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-9"&gt;&lt;/a&gt;&lt;span class="go"&gt;SUBSYSTEM=usb&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-10" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-10" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-10"&gt;&lt;/a&gt;&lt;span class="go"&gt;DEVNAME=/dev/bus/usb/001/015&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-11" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-11" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-11"&gt;&lt;/a&gt;&lt;span class="go"&gt;DEVTYPE=usb_device&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-12" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-12" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-12"&gt;&lt;/a&gt;&lt;span class="go"&gt;PRODUCT=8e6/3437/100&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-13" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-13" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-13"&gt;&lt;/a&gt;&lt;span class="go"&gt;TYPE=0/0/0&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-14" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-14" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-14"&gt;&lt;/a&gt;&lt;span class="go"&gt;BUSNUM=001&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-15" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-15" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-15"&gt;&lt;/a&gt;&lt;span class="go"&gt;DEVNUM=015&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-16" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-16" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-16"&gt;&lt;/a&gt;&lt;span class="go"&gt;SEQNUM=4692&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-17" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-17" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-17"&gt;&lt;/a&gt;&lt;span class="go"&gt;MAJOR=189&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-18" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-18" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-18"&gt;&lt;/a&gt;&lt;span class="go"&gt;MINOR=14&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-19" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-19" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-19"&gt;&lt;/a&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-20" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-20" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-20"&gt;&lt;/a&gt;&lt;span class="go"&gt;[...]&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-21" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-21" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-21"&gt;&lt;/a&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-22" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-22" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-22"&gt;&lt;/a&gt;&lt;span class="go"&gt;UDEV  [2266.066186] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-3 (usb)&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-23" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-23" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-23"&gt;&lt;/a&gt;&lt;span class="go"&gt;ACTION=bind&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-24" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-24" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-24"&gt;&lt;/a&gt;&lt;span class="go"&gt;DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-3&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-25" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-25" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-25"&gt;&lt;/a&gt;&lt;span class="go"&gt;SUBSYSTEM=usb&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-26" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-26" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-26"&gt;&lt;/a&gt;&lt;span class="go"&gt;DEVNAME=/dev/bus/usb/001/015&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-27" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-27" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-27"&gt;&lt;/a&gt;&lt;span class="go"&gt;DEVTYPE=usb_device&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-28" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-28" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-28"&gt;&lt;/a&gt;&lt;span class="go"&gt;DRIVER=usb&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-29" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-29" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-29"&gt;&lt;/a&gt;&lt;span class="go"&gt;PRODUCT=8e6/3437/100&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-30" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-30" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-30"&gt;&lt;/a&gt;&lt;span class="go"&gt;TYPE=0/0/0&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-31" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-31" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-31"&gt;&lt;/a&gt;&lt;span class="go"&gt;BUSNUM=001&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-32" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-32" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-32"&gt;&lt;/a&gt;&lt;span class="go"&gt;DEVNUM=015&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-33" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-33" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-33"&gt;&lt;/a&gt;&lt;span class="go"&gt;SEQNUM=4695&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-34" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-34" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-34"&gt;&lt;/a&gt;&lt;span class="go"&gt;USEC_INITIALIZED=2265405122&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-35" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-35" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-35"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_BUS=usb&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-36" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-36" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-36"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_MODEL=USB_SmartCard_Reader&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-37" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-37" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-37"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_MODEL_ENC=USB\x20SmartCard\x20Reader&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-38" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-38" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-38"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_MODEL_ID=3437&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-39" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-39" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-39"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_SERIAL=Gemplus_USB_SmartCard_Reader&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-40" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-40" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-40"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_VENDOR=Gemplus&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-41" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-41" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-41"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_VENDOR_ENC=Gemplus&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-42" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-42" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-42"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_VENDOR_ID=08e6&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-43" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-43" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-43"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_REVISION=0100&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-44" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-44" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-44"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_USB_MODEL=USB_SmartCard_Reader&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-45" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-45" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-45"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_USB_MODEL_ENC=USB\x20SmartCard\x20Reader&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-46" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-46" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-46"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_USB_MODEL_ID=3437&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-47" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-47" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-47"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_USB_SERIAL=Gemplus_USB_SmartCard_Reader&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-48" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-48" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-48"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_USB_VENDOR=Gemplus&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-49" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-49" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-49"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_USB_VENDOR_ENC=Gemplus&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-50" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-50" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-50"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_USB_VENDOR_ID=08e6&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-51" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-51" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-51"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_USB_REVISION=0100&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-52" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-52" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-52"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_USB_INTERFACES=:0b0000:&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-53" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-53" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-53"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_VENDOR_FROM_DATABASE=Gemalto (was Gemplus)&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-54" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-54" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-54"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_MODEL_FROM_DATABASE=GemPC Twin SmartCard Reader&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-55" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-55" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-55"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_PATH_WITH_USB_REVISION=pci-0000:00:14.0-usbv2-0:3&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-56" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-56" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-56"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_PATH=pci-0000:00:14.0-usb-0:3&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-57" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-57" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-57"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_PATH_TAG=pci-0000_00_14_0-usb-0_3&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-58" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-58" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-58"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_SMARTCARD_READER=1&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-59" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-59" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-59"&gt;&lt;/a&gt;&lt;span class="go"&gt;ID_FOR_SEAT=usb-pci-0000_00_14_0-usb-0_3&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-60" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-60" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-60"&gt;&lt;/a&gt;&lt;span class="go"&gt;SYSTEMD_WANTS=smartcard.target&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-61" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-61" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-61"&gt;&lt;/a&gt;&lt;span class="go"&gt;SYSTEMD_USER_WANTS=smartcard.target&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-62" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-62" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-62"&gt;&lt;/a&gt;&lt;span class="hll"&gt;&lt;span class="go"&gt;PCSCLITE_IGNORE=1&lt;/span&gt;
&lt;/span&gt;&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-63" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-63" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-63"&gt;&lt;/a&gt;&lt;span class="go"&gt;MAJOR=189&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-64" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-64" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-64"&gt;&lt;/a&gt;&lt;span class="go"&gt;MINOR=14&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-65" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-65" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-65"&gt;&lt;/a&gt;&lt;span class="go"&gt;TAGS=:uaccess:security-device:seat:systemd:&lt;/span&gt;
&lt;a id="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-66" name="rest_code_316aab1c0f0b4479a76877e5f9dfcfce-66" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_316aab1c0f0b4479a76877e5f9dfcfce-66"&gt;&lt;/a&gt;&lt;span class="go"&gt;CURRENT_TAGS=:uaccess:security-device:seat:systemd:&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In pcscd logs I get:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code text"&gt;&lt;a id="rest_code_b25d7d23de5147a0852e2834b3045b6f-1" name="rest_code_b25d7d23de5147a0852e2834b3045b6f-1" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_b25d7d23de5147a0852e2834b3045b6f-1"&gt;&lt;/a&gt;04337722 [140613033731776] ../src/hotplug_libudev.c:656:HPEstablishUSBNotifications() USB Device add
&lt;a id="rest_code_b25d7d23de5147a0852e2834b3045b6f-2" name="rest_code_b25d7d23de5147a0852e2834b3045b6f-2" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_b25d7d23de5147a0852e2834b3045b6f-2"&gt;&lt;/a&gt;00000411 [140613033731776] ../src/hotplug_libudev.c:299:get_driver() Looking for a driver for VID: 0x08E6, PID: 0x3437, path: /dev/bus/usb/001/016
&lt;a id="rest_code_b25d7d23de5147a0852e2834b3045b6f-3" name="rest_code_b25d7d23de5147a0852e2834b3045b6f-3" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_b25d7d23de5147a0852e2834b3045b6f-3"&gt;&lt;/a&gt;&lt;span class="hll"&gt;00000303 [140613033731776] ../src/hotplug_libudev.c:417:HPAddDevice() Device Gemalto PC Twin Reader at /dev/bus/usb/001/016 (1-3:1.0) has PCSCLITE_IGNORE set: ignored
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And I do not see the PC/SC reader with &lt;code class="docutils literal"&gt;pcsc_scan&lt;/code&gt; command:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_12e08539a35c49f6aa0355c7b6ca416f-1" name="rest_code_12e08539a35c49f6aa0355c7b6ca416f-1" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_12e08539a35c49f6aa0355c7b6ca416f-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;pcsc_scan&lt;span class="w"&gt; &lt;/span&gt;-r
&lt;a id="rest_code_12e08539a35c49f6aa0355c7b6ca416f-2" name="rest_code_12e08539a35c49f6aa0355c7b6ca416f-2" href="https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/#rest_code_12e08539a35c49f6aa0355c7b6ca416f-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;No reader found.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am sure you will find other use cases for this new feature.&lt;/p&gt;
&lt;p&gt;Thanks to Valtteri Vuorikoski for the patch. If you have ideas of
changes or improvements for pcsc-lite do not hesitate to submit them.&lt;/p&gt;
&lt;/section&gt;</description><category>pcsc-lite</category><guid>https://blog.apdu.fr/posts/2025/04/ignore-readers-using-pcsclite_ignore-udev-property/</guid><pubDate>Wed, 02 Apr 2025 12:00:29 GMT</pubDate></item><item><title>New version of pcsc-lite: 2.3.2</title><link>https://blog.apdu.fr/posts/2025/03/new-version-of-pcsc-lite-232/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;I just released a new version of &lt;a class="reference external" href="https://pcsclite.apdu.fr/files/"&gt;pcsc-lite 2.3.2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://pcsclite.apdu.fr/"&gt;pcsc-lite&lt;/a&gt; is a Free Software
implementation of the PC/SC (or WinSCard) API for Unix systems.&lt;/p&gt;
&lt;section id="changes"&gt;
&lt;h2&gt;Changes:&lt;/h2&gt;
&lt;dl class="simple"&gt;
&lt;dt&gt;2.3.2: Ludovic Rousseau&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;26 March 2025&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Hardening systemd &lt;code class="docutils literal"&gt;pcscd.service&lt;/code&gt; file&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;pcscd.service: add missing &lt;code class="docutils literal"&gt;Requires=polkit.service&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;pcsc-spy: add missing &lt;code class="docutils literal"&gt;PCSCv2_PART10_PROPERTY_*&lt;/code&gt; definitions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support udev &lt;code class="docutils literal"&gt;PCSCLITE_IGNORE&lt;/code&gt; property to filter readers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;debuglog: force use of colors when &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;--color&lt;/span&gt;&lt;/code&gt; is used&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some other minor improvements&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;</description><category>pcsc-lite</category><guid>https://blog.apdu.fr/posts/2025/03/new-version-of-pcsc-lite-232/</guid><pubDate>Wed, 26 Mar 2025 15:26:20 GMT</pubDate></item></channel></rss>