<?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 ccid)</title><link>https://blog.apdu.fr/</link><description></description><atom:link href="https://blog.apdu.fr/categories/ccid.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>Sat, 29 Aug 2026 14:42:00 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Security issues reported by an AI tool in CCID driver</title><link>https://blog.apdu.fr/posts/2026/08/security-issues-reported-by-an-ai-tool-in-ccid-driver/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;version 1.8.3 of the CCID driver (&lt;a class="reference external" href="https://blog.apdu.fr/posts/2026/08/new-version-of-libccid-183/"&gt;New version of libccid: 1.8.3&lt;/a&gt;)
addresses 6 security issues identified by an AI tool.&lt;/p&gt;
&lt;section id="very-low-impact"&gt;
&lt;h2&gt;Very low impact&lt;/h2&gt;
&lt;p&gt;The reported issues are either not exploitable because the input and
output buffers used by PC/SC Lite to call the CCID driver are large
enough, or the exploitation requires rogue smart card or smart card
reader (i.e. sending non-compliant data).&lt;/p&gt;
&lt;p&gt;If you would like to read the details, the issues have been fixed in the
following &lt;a class="reference external" href="https://git-scm.com/"&gt;git&lt;/a&gt; commits:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://salsa.debian.org/rousseau/CCID/-/commit/708ba3f6b087711608bc969f94cd024330a2800d"&gt;Fix potential buffer overflow&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/CCID/-/commit/400794b8ae07042e0d675f0a373032883f05b9cd"&gt;Fix possible out-of-bounds access&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/CCID/-/commit/a8701f9a2665bb38059994e97d226cdce66032ba"&gt;Check for underflow in SecurePINModify&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/CCID/-/commit/eb14343d2d25f54a3c3a06a009ae7dbdc8ba68f4"&gt;Check for short CCID payload&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/CCID/-/commit/dd0066a826e6ea504e5cc6919b1c0a84a15ee24a"&gt;Fix potential issues in serial driver&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/CCID/-/commit/7929e640f30f53690a836f4cfdbd2dba4d31eb1d"&gt;Fix potential buffer overflows&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="comments"&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;p&gt;The AI tool identified real issues.&lt;/p&gt;
&lt;p&gt;However, it would be difficult to exploit these issues unless the
attacker used a custom-built reader or smart card. This is something I
started doing with the &lt;a class="reference external" href="https://github.com/polhenarejos/pico-hsm"&gt;Pico HSM&lt;/a&gt; project, which is a CCID
reader in a Raspberry Pi Pico. This allows you to modify the CCID frames
sent by the reader as required.&lt;/p&gt;
&lt;p&gt;The bug reports from the AI tool are very verbose. This is useful for
impressing a manager with a long, complex-looking text. However, reading
the entire report is often a waste of my time. It is often much faster
to read the proposed patch to understand the problem it is trying to
fix.&lt;/p&gt;
&lt;p&gt;The proposed fixes are, sometimes, incorrect. They are a good starting
point, though. However, never apply an AI-generated patch without fully
understanding it.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Thanks to &lt;a class="reference external" href="https://www.redhat.com/"&gt;Red Hat&lt;/a&gt; and Jakub Jelen for
the bug reports.&lt;/p&gt;
&lt;p&gt;I am very happy that the AI tool only identified issues with no or low
impact.&lt;/p&gt;
&lt;/section&gt;</description><category>ccid</category><guid>https://blog.apdu.fr/posts/2026/08/security-issues-reported-by-an-ai-tool-in-ccid-driver/</guid><pubDate>Sat, 29 Aug 2026 13:39:21 GMT</pubDate></item><item><title>New version of libccid: 1.8.3</title><link>https://blog.apdu.fr/posts/2026/08/new-version-of-libccid-183/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;I have just released &lt;a class="reference external" href="https://ccid.apdu.fr/files/"&gt;version 1.8.3&lt;/a&gt; of
&lt;a class="reference external" href="https://ccid.apdu.fr/"&gt;libccid&lt;/a&gt; the Free Software CCID class smart
card reader driver.&lt;/p&gt;
&lt;p&gt;Red Hat reported 6 security issues found by an AI tool. See
&lt;a class="reference external" href="https://blog.apdu.fr/posts/2026/08/security-issues-reported-by-an-ai-tool-in-ccid-driver/"&gt;Security issues reported by an AI tool in CCID driver&lt;/a&gt;.&lt;/p&gt;
&lt;section id="changes"&gt;
&lt;h2&gt;Changes:&lt;/h2&gt;
&lt;p&gt;1.8.3 - 29 August 2026, Ludovic Rousseau&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Add support of&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Broadcom Corp 58200 0x5884&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Broadcom Corp 58200 0x5885&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Broadcom Corp 58200 0x5886&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Broadcom Corp 58200 0x5887&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Circle CIR135 ICC&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DigiFlow LLP. KAZTOKEN&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HID Global Crescendo NFC Reader&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HID Global OMNIKEY Plug&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HID Global OMNIKEY SE Plug&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Neowave LinkeoC-PRO&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Swissbit iShield Key 2 Pro&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: provide a sample script to build the driver with meson&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;fix some minor issues found by an AI tool&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>ccid</category><guid>https://blog.apdu.fr/posts/2026/08/new-version-of-libccid-183/</guid><pubDate>Sat, 29 Aug 2026 13:32:34 GMT</pubDate></item><item><title>Some web statistics about ccid.apdu.fr</title><link>https://blog.apdu.fr/posts/2026/08/some-web-statistics-about-ccidapdufr/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;Now that I have moved my blog from Blogspot to my own server (see
&lt;a class="reference external" href="https://blog.apdu.fr/posts/2023/05/blog-moved-to-httpsblogapdufr/"&gt;Blog moved to https://blog.apdu.fr/&lt;/a&gt;) I am now able to analyse the web
server logs for &lt;a class="reference external" href="https://ccid.apdu.fr/"&gt;https://ccid.apdu.fr/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I used the logs from June 2026.&lt;/p&gt;
&lt;p&gt;The server received a total of 269,860 requests. This equates to 8,995
requests per day, or 6.2 requests per minute. This is a very small website.&lt;/p&gt;
&lt;section id="all-requests"&gt;
&lt;h2&gt;All requests&lt;/h2&gt;
&lt;p&gt;I used the &lt;a class="reference external" href="https://pypi.org/project/user-agents/"&gt;user_agents&lt;/a&gt; Python
module to extract the system family.&lt;/p&gt;
&lt;p&gt;Surprisingly Windows comes first with 28%, even though the website is for a
Unix smart card reader driver. There is nothing for Windows users on
&lt;a class="reference external" href="https://ccid.apdu.fr/"&gt;https://ccid.apdu.fr/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Second is 'Other' (22%). They are bots. More on that later.&lt;/p&gt;
&lt;p&gt;Third is the expected Linux (with only 21%), which is the core target
audience.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th class="head"&gt;&lt;p&gt;OS&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;#&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;%&lt;/p&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Windows&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;76444&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;28.33%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Other&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;60525&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;22.43%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Linux&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;57642&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;21.36%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mac OS X&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;28497&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;10.56%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Android&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;27549&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;10.21%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Chrome OS&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;6973&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2.58%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Ubuntu&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;6092&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2.26%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;iOS&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3852&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1.43%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Unknown&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2143&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.79%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Debian&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;42&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.02%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;OpenBSD&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;30&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;NetBSD&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;26&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;FreeBSD&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;8&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Symbian OS&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;7&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;CentOS&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;7&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Windows Phone&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Fedora&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Solaris&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Slackware&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Kubuntu&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Kindle&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;BlackBerry OS&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;webOS&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;openSUSE&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Symbian^3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Roku&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Maemo&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;BSD&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;BREW&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/section&gt;
&lt;section id="bots"&gt;
&lt;h2&gt;Bots&lt;/h2&gt;
&lt;p&gt;22% of the requests fall into the 'Other' category. These are bots, and
not human users.&lt;/p&gt;
&lt;p&gt;The first bot is related to Rivian. If I am correct, Rivian is an
electric car manufacturer. I don't know why they need to contact my
website 15 times an hour.&lt;/p&gt;
&lt;p&gt;Wget, cURL, Amazonebot, Meta and ChatGPT are more expected.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th class="head"&gt;&lt;p&gt;OS&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;#&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;%&lt;/p&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;rivian-firmware-build/1.0 (&lt;a class="reference external" href="https://gitlab.rivianvw.io/core/firmware"&gt;https://gitlab.rivianvw.io/core/firmware&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;10984&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;18.15%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Wget/1.25.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;8555&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;14.13%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;curl/8.18.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4704&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;7.77%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot) Chrome/119.0.6045.214 Safari/537.36&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4610&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;7.62%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;meta-externalagent/1.1 (+https://developers.facebook.com/docs/sharing/webmasters/crawler)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3967&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;6.55%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2394&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3.96%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (Linux; Android 7.0;) AppleWebKit/537.36 (HTML, like Gecko) Mobile Safari/537.36 (compatible; PetalBot;+https://webmaster.petalsearch.com/site/petalbot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1957&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3.23%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;TLM-Audit-Scanner/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1908&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3.15%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; MJ12bot/v1.4.8; &lt;a class="reference external" href="http://mj12bot.com/"&gt;http://mj12bot.com/&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1416&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2.34%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Baiduspider-image+(+http://www.baidu.com/search/spider.htm)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1298&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2.14%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Go-http-client/1.1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1068&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1.76%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; Barkrowler/0.9; +https://babbar.tech/crawler)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1028&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1.70%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;amazon-Quick-on-behalf-of-03b1f1a7&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;831&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1.37%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; &lt;a class="reference external" href="mailto:+claudebot@anthropic.com"&gt;+claudebot@anthropic.com&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;821&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1.36%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; AwarioBot/1.0; +https://awario.com/bots.html)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;761&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1.26%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (X11; compatible; semantic-visions.com crawler; HTTPClient 4.5)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;754&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1.25%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; SleepBot/1.0; +http://sleepbot.com/) Chrome/131.0.0.0 Safari/537.36&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;752&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1.24%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;amazon-Quick-on-behalf-of-24c5991b&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;699&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1.15%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; IbouBot/1.0; &lt;a class="reference external" href="mailto:+bot@ibou.io"&gt;+bot@ibou.io&lt;/a&gt;; +https://ibou.io/iboubot.html)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;591&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.98%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/116.0.1938.76 Safari/537.36&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;563&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.93%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; crawler)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;553&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.91%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;551&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.91%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;533&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.88%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Googlebot-Image/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;532&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.88%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GoogleOther) Chrome/148.0.7778.96 Safari/537.36&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;522&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.86%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Python-urllib/3.10&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;510&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.84%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;454&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.75%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;444&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.73%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; SeekportBot; +https://bot.seekport.com)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;428&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.71%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/605.1.15 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/605.1.15&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;376&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.62%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0...&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;339&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.56%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; Qwantbot/1.0; +https://help.qwant.com/bot/)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;317&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.52%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Anitya 2.2.2 at release-monitoring.org&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;305&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.50%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Chrome Privacy Preserving Prefetch Proxy&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;292&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.48%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; coccocbot-image/1.0; +http://help.coccoc.com/searchengine)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;206&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.34%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;DuckDuckBot/1.1; (+http://duckduckgo.com/duckduckbot.html)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;206&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.34%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ReyilBot/0.1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;198&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.33%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;178&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.29%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; pathscan/1.0)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;177&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.29%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;DominicBot/1.0 (+https://vanylla.org/bot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;164&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.27%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Turnitin (&lt;a class="reference external" href="https://bit.ly/2UvnfoQ"&gt;https://bit.ly/2UvnfoQ&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;151&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.25%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;DuckAssistBot/1.2; (+http://duckduckgo.com/duckassistbot.html)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;146&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.24%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Version-Tracker&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;144&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.24%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Claude-User (claude-code/2.1.197; +https://support.anthropic.com/)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;136&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.22%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; YandexRenderResourcesBot/1.0; +http://yandex.com/bots) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;131&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.22%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;128&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.21%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.86 Safari/537.36&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;124&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.20%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (l9scan/2.0.3313e27393e21393e21353; +https://leakix.net)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;120&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.20%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;com.apple.WebKit.Networking/21623.2.7.11.7 Network/5569.81.5 macOS/26.3.1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;114&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.19%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;portroach/&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;113&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.19%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;98&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.16%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;fetch libfetch/2.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;83&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.14%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Scrapy/2.16.0 (+https://scrapy.org)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;76&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.13%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Python/3.12 aiohttp/3.13.3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;76&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.13%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;portscout/0.8.1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;70&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.12%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; bitbake)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;70&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.12%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; SeznamBot/4.0; +https://o-seznam.cz/napoveda/vyhledavani/en/seznambot-crawler/)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;70&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.12%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; WebGameGameExternalAudit/1.0; +https://webgamegame.win/)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;68&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.11%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;s4-updater/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;66&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.11%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;python-requests/2.25.1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;66&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.11%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;xbps-src-update-check/113&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;64&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.11%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;cbuild-update-check/4.20.69&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;64&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.11%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;wl-checknewreleases/1.0.21&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;63&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.10%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;CCBot/2.0 (&lt;a class="reference external" href="https://commoncrawl.org/faq/"&gt;https://commoncrawl.org/faq/&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;63&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.10%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Desoutter/1.0 (&lt;a class="reference external" href="mailto:benoit.marembert@cp.com"&gt;benoit.marembert@cp.com&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;57&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.09%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;PTXdist 2024.12.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;53&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.09%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;flatpak-builder 1.2.2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;50&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.08%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; DotBot/1.2; +https://opensiteexplorer.org/dotbot; &lt;a class="reference external" href="mailto:help@moz.com"&gt;help@moz.com&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;48&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.08%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;ClueWeb-Crawler/1.0 (+https://boston.lti.cs.cmu.edu/CMU-ClueWeb-Crawler/; &lt;a class="reference external" href="mailto:cmu-clueweb-crawler@andrew.cmu.edu"&gt;mailto:cmu-clueweb-crawler@andrew.cmu.edu&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;48&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.08%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;44&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.07%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ShapBot/0.1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;42&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.07%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; DataForSeoBot/1.0; +https://dataforseo.com/dataforseo-bot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;40&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.07%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;OWLer&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;39&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.06%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;python-httpx/0.28.1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;38&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.06%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;SEBot-WA&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;36&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.06%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; YandexImages/3.0; +http://yandex.com/bots)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;36&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.06%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;YoctoProject/Bitbake/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;35&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.06%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; Hister/v0.15.0 (6c51924); +https://hister.org/)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;32&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.05%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; CT-WP-Scanner/1.0; +https://example.com/bot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;27&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.04%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;cargo&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;25&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.04%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Lynx/2.9.3 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/3.6.2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;23&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.04%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;pc&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;19&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.03%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; HostQuality/1.0)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;19&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.03%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; Applebot/0.1; +http://www.apple.com/go/applebot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;18&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.03%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; AzureAI-SearchBot/1.0;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;17&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.03%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Tricorder-Copyright-Collector/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;15&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.02%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;7Siters/1.2 ( &lt;a class="reference external" href="https://7ooo.ru/siters/"&gt;https://7ooo.ru/siters/&lt;/a&gt; )&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;15&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.02%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;14&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.02%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;meta-webindexer/1.1 (+https://developers.facebook.com/docs/sharing/webmasters/crawler)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;13&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.02%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; cohere-ai/1.0; +https://cohere.com)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;13&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.02%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Exabot&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;12&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.02%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;node&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;11&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.02%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;anthropic-ai&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;11&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.02%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; VelenPublicWebCrawler/1.0; +https://velen.io)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;11&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.02%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; Claude-Web/1.0; +https://www.anthropic.com)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;11&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.02%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;DomainStatsBot/1.0 (&lt;a class="reference external" href="https://domainstats.com/pages/our-bot"&gt;https://domainstats.com/pages/our-bot&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;10&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.02%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;okhttp/5.3.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;9&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Hello from Palo Alto Networks, find out more about our scans in &lt;a class="reference external" href="https://docs-cortex.paloaltonetworks.com/r/1/Cortex-Xpanse/Scanning-activity"&gt;https://docs-cortex.paloaltonetworks.com/r/1/Cortex-Xpanse/Scanning-activity&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;9&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;FireFox&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;9&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (keys-so-bot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;8&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; Google-Extended/1.0; +http://www.google.com/bot.html)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;8&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;gwf-carbon-txt-crawler/1.0 (Web Crawler for the GreenSoftwareFoundation to measure the adoption of the carbon.txt initiative; &lt;a class="reference external" href="https://carbontxt.org/"&gt;https://carbontxt.org/&lt;/a&gt;; &lt;a class="reference external" href="mailto:crawler@carbontxt.org"&gt;crawler@carbontxt.org&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;7&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; OAI-SearchBot/1.0; +https://openai.com/searchbot&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;7&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;7&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; CMS-Checker/1.0; +https://example.com)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;7&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; Bytespider; &lt;a class="reference external" href="mailto:spider-feedback@bytedance.com"&gt;spider-feedback@bytedance.com&lt;/a&gt;) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.0.0 Safari/537.36&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;7&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; Bytespider; &lt;a class="reference external" href="mailto:spider-feedback@bytedance.com"&gt;spider-feedback@bytedance.com&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;7&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;CyberSitemapRepositoryBot/0.1 (research crawler; replace contact in scripts/crawl_validate.py)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;7&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;AteveSearchSourceUrlDiscovery/0.1 (+mailto:&lt;a class="reference external" href="mailto:crawler@example.com"&gt;crawler@example.com&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;7&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;SummalyBot/5.2.2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;6&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Bravebot/1.0; +https://search.brave.com/help/brave-search-crawler) Chrome/W.X.Y.Z Safari/537.36&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;6&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.86 Safari/537.36 BitSightBot/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;6&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; intelx.io_bot +https://intelx.io)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;6&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; MojeekBot/0.11; +https://www.mojeek.com/bot.html)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;6&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; HubSeedsBot/1.0)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;6&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; DomainExtractor/1.0)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;6&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;rpmdev-spectool&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;5&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;imgproxy/3.30.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;5&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Amzn-SearchBot/0.1) Chrome/119.0.6045.214 Safari/537.36&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;5&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; YaK/1.0; &lt;a class="reference external" href="http://linkfluence.com/"&gt;http://linkfluence.com/&lt;/a&gt;; &lt;a class="reference external" href="mailto:bot@linkfluence.com"&gt;bot@linkfluence.com&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;5&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;BrightEdge Crawler/1.0 (&lt;a class="reference external" href="mailto:crawler@brightedge.com"&gt;crawler@brightedge.com&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;5&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;AIWebIndex/2.0 (+https://lyrenth.com/bot; AI-readable web index)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;5&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;lftp/4.9.3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;gwf-carbon-txt-crawler/1.0 (Web Crawler for the Green Software Foundation to measure the adoption of the carbon.txt initiative; &lt;a class="reference external" href="https://carbontxt.org/"&gt;https://carbontxt.org/&lt;/a&gt;; &lt;a class="reference external" href="mailto:support@greenweb.org"&gt;support@greenweb.org&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;blh-scanner/1.0 (+authorized security research)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;WhatsApp/2.23.20.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;SecurityAudit/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;NVBot&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; YouBot/1.0; +https://docs.you.com/youbot; env:prod) Chrome/142.0.0.0 Safari/537.36&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; wpbot/1.4; +https://forms.gle/ajBaxygz9jSR8p8G9)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; SecurityResearch/1.0; )&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; SERankingBacklinksBot/1.0; +https://seranking.com/backlinks-crawler)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Java/1.8.0_171&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.01%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;win10chrome117&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;ttcontrol-yocto-build/1.0 (&lt;a class="reference external" href="mailto:builder-fusion@ttcontrol.com"&gt;builder-fusion@ttcontrol.com&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;amilabs-interleaved-research/0.1 (&lt;a class="reference external" href="mailto:sanghyun@amilabs.xyz"&gt;sanghyun@amilabs.xyz&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;SonyEricssonK310iv/R4DA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.1.13.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Aranet-SearchBot/1.0; +https://aranet.ai/bot) Chrome/131.0.0.0 Safari/537.36&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; special_archiver/3.11.1; +https://archive.org/details/archive.org_bot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; SBIntuitionsBot/0.1; +https://www.sbintuitions.co.jp/bot/)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible) SemanticScholarBot (+https://www.semanticscholar.org/crawler)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Misskey/2025.4.7 (&lt;a class="reference external" href="https://social.louis-vallat.dev/"&gt;https://social.louis-vallat.dev/&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Misskey/2025.4.7 (&lt;a class="reference external" href="https://shork.social/"&gt;https://shork.social/&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Iframely/1.3.1 (+https://iframely.com/docs/about) Atlassian&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;INETDEX-BOT/2.0 (&lt;a class="reference external" href="https://inetdex.com/bot.php"&gt;https://inetdex.com/bot.php&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;GoogleOther&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Google-Lens&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;yocto-imx8mp-build (&lt;a class="reference external" href="mailto:rc@example.com"&gt;rc@example.com&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;kagi-fetcher/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;imx-yocto-build/1.0 (contact: local-build)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;fyndbot (robots; &lt;a class="reference external" href="https://fynd.bot"&gt;https://fynd.bot&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;forager/1.0 (+https://codeberg.org/atomdrift/forager)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;efx-yocto-build&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;amazon-kendra&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;XenForo/2.x (&lt;a class="reference external" href="https://www.bsdforen.de"&gt;https://www.bsdforen.de&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Timpibot/1.0 (+http://timpi.io/crawler)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;TelegramBot (like TwitterBot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;SnipeSearchBot/Nutch-1.22&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;ShorkBot/0.1 (small search engine crawler)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Screaming Frog SEO Spider/24.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;RootEvidence/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Observer/1.0 (+https://obsrvr.net/about; &lt;a class="reference external" href="mailto:crawler@obsrvr.net"&gt;crawler@obsrvr.net&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 crawler&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (curator-mass-export)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; myjob/1.0)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; YandexFavicons/1.0; +http://yandex.com/bots)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; Timpibot/0.8; +http://www.timpi.io)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; NetcraftSurveyAgent/1.0; &lt;a class="reference external" href="mailto:+info@netcraft.com"&gt;+info@netcraft.com&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; InternetMeasurement/1.0; +https://internet-measurement.com/)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; HaloBot/1.0)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; Google-Site-Verification/1.0)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; AffsignalCrawler/1.0; +https://affsignal.com/bot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/4.0 (compatible; MSIE 5.0; Series80/2.0 Nokia9500/4.51 Profile/MIDP-2.0 Configuration/CLDC-1.1)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Deno/2.3.1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;BanglaBot/1.0 (+https://xn--54b7fta0cc.com/bot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;ArenaUnfurlBot/1.0 (Link preview bot for AI model comparison platform; +https://arena.ai) Mozilla/5.0 (compatible)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;yocto-build&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;wl-download/1.0.24&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;webtech/1.3.4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;vercel-image-optimization/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;undici&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;ucve-finder/1.0 (&lt;a class="reference external" href="mailto:research@vyprsec.ai"&gt;research@vyprsec.ai&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;senthor-robots-research/1.0 (+https://senthor.io; audits public robots.txt for AI-access analytics)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;sbom-source-hash-verifier/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;rag/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;qi ye wei xin/5.0.8 (Mac OS X ban ben26.5(ban hao25F71))&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;python-urllib3/1.26.9&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;programbench-miner/0.1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;portalmmm/2.0 N410i(c20;TB)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;pimeyes-downloader-api/0.1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;msnbot-media/1.1 ( &lt;a class="reference external" href="http://search.msn.com/msnbot.htm"&gt;http://search.msn.com/msnbot.htm&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;meta-externalads/1.1 (+https://developers.facebook.com/docs/sharing/webmasters/crawler)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;iwg50m-imx91-yocto-build (&lt;a class="reference external" href="mailto:jslemaire@esmartcontrol.net"&gt;jslemaire@esmartcontrol.net&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;imx8mp-yocto-build/1.0 (contact: &lt;a class="reference external" href="mailto:ban@example.com"&gt;ban@example.com&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;hrepo-bfd/0.2 source-cache&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;firefox&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;facebookscraper/1.0( &lt;a class="reference external" href="http://www.facebook.com/sharescraper_help.php"&gt;http://www.facebook.com/sharescraper_help.php&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;autospec/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;apt-qa&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;WhatsApp/2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Web Downloader/6.9&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;WP-Safe-Scanner/2.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Vodafone/1.0/V802SE/SEJ001 Browser/SEMC-Browser/4.1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;SonyEricssonZ800/R1Y Browser/SEMC-Browser/4.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.0.0.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;SonyEricssonT68/R201A&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;SonyEricssonS500i/R6BC Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;ServiceNow/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;SEMrushBot&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;SEC-SGHE900/1.0 NetFront/3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1378; nl; U; ssr)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;S33DBot/4.0 (+https://s33d.fr/bot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;RecordedFuture Global Inventory Crawler&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;PLD/distfiles&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;PLD/Builder(v0.35)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14320/554; U; cs) Presto/2.2.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Nokia6100/1.0 (04.01) Profile/MIDP-1.0 Configuration/CLDC-1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Nextcloud-Server-Crawler/33.0.3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;NetAPI v1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (en-us) AppleWebKit/525.13 (KHTML, like Gecko; Google Web Preview) Version/3.1 Safari/525.13&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; archive.org_bot; Wayback Machine Live Record; +http://archive.org/details/archive.org_bot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; Yahoo! Slurp; &lt;a class="reference external" href="http://help.yahoo.com/help/us/ysearch/slurp"&gt;http://help.yahoo.com/help/us/ysearch/slurp&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; WP-Safe-Scanner/1.0)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; SurdotlyBot/1.0; +http://sur.ly/bot.html)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; SiteProber/1.0; +https://example.com/bot)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; PD12M-downloader/1.0)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; Konqueror/4.1; DragonFly) KHTML/4.1.4 (like Gecko)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; GitFinder/1.0)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; EngagemiiAcquisitionBot/1.0; +https://engagemii.com)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (compatible; Discordbot/2.0; +https://discordapp.com)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (OS/2; Warp 4.5; rv:24.0) Gecko/20100101 Firefox/24.0 SeaMonkey/2.21&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/5.0 (OS/2; U; OS/2; en-US) AppleWebKit/533.3 (KHTML, like Gecko) QupZilla/1.3.1 Safari/533.3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/4.77 [en] (X11; I; IRIX;64 6.5 IP30)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/4.0 (PSP (PlayStation Portable); 2.00)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Mozilla/3.0 (compatible; NetPositive/2.1.1; BeOS)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;LinkupBot/1.0 (LinkupBot for web indexing; &lt;a class="reference external" href="https://linkup.so/bot"&gt;https://linkup.so/bot&lt;/a&gt;; &lt;a class="reference external" href="mailto:bot@linkup.so"&gt;bot@linkup.so&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Java/1.6.0_13&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Iframely/1.3.1 (+https://iframely.com/docs/about)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Hatena::Scissors/0.01&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Google-Jetski-AIStudio/1.0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Google&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;GitHubCopilotRuntime-WebFetch&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;DefaultLangchainUserAgent&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Bun/1.3.14&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;BuildStream/2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;BitBake&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Avant Browser/1.2.789rel1 (&lt;a class="reference external" href="http://www.avantbrowser.com"&gt;http://www.avantbrowser.com&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Aidentify latest-version verifier&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;AdsBot-Google ( &lt;a class="reference external" href="http://www.google.com/adsbot.html"&gt;http://www.google.com/adsbot.html&lt;/a&gt;)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;"Mozilla/5.0"&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.00%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/section&gt;
&lt;section id="not-found"&gt;
&lt;h2&gt;404 Not Found&lt;/h2&gt;
&lt;p&gt;I also get a lot of &lt;a class="reference external" href="https://developer.mozilla.org/fr/docs/Web/HTTP/Reference/Status/404"&gt;404 Not Found&lt;/a&gt;
errors.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th class="head"&gt;&lt;p&gt;#&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;File&lt;/p&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;1492&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/files/ccid-1.4.33.tar.bz2&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;775&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/files/ccid-1.5.5.tar.bz2&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;292&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/.well-known/traffic-advice&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;156&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/sitemap.xml&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;107&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/apple-touch-icon.png&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;104&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/apple-touch-icon-precomposed.png&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;78&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/.env&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;59&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/ip&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;46&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/.git/config&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;45&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/ads.txt&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;43&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/files/ccid-1.5.2.tar.bz2&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;30&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/files/ccid-1.6.2.tar.xz&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;30&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/files/ccid-1.5.0.pkg&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;28&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/files/$%7Bpkgname&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;27&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/config.json&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;26&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/info/refs?service=git-upload-pack&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;26&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/.env.local&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;24&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/info.php&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;24&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/files/ccid-1.7.0.tar.xz&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;24&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;/.aws/credentials&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;p&gt;...&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;section id="ccid-1-4-33"&gt;
&lt;h3&gt;ccid-1.4.33&lt;/h3&gt;
&lt;p&gt;The file &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;/files/ccid-1.4.33.tar.bz2&lt;/span&gt;&lt;/code&gt; was fetched by
"rivian-firmware-build/1.0 (&lt;a class="reference external" href="https://gitlab.rivianvw.io/core/firmware"&gt;https://gitlab.rivianvw.io/core/firmware&lt;/a&gt;)"
at 90%, and then by Wget at 9%.&lt;/p&gt;
&lt;p&gt;At the end of June 2026, I decided to remove the old versions of the
source code archives. I don't think it is a good idea to provide
artificial intelligence companies with old versions of my software (that
may contain bugs).&lt;/p&gt;
&lt;p&gt;It appears that Rivian is using my driver, in version 1.4.33, which was
released in June 2020, and tries to fetch it repeatedly. They now
receive a 404 error instead of the file contents.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="ccid-1-5-5"&gt;
&lt;h3&gt;ccid-1.5.5&lt;/h3&gt;
&lt;p&gt;I don't know why the version 1.5.5 (released in January 2024) is so
popular.&lt;/p&gt;
&lt;p&gt;According to the logs, this version is fetched by Wget for 89% of the
time, curl 8% of the time and bitbake 1% of the time.&lt;/p&gt;
&lt;p&gt;I don't know who is using this 'old' version of the CCID driver. In fact I
could find out, as I have the IP addresses of the clients in the logs.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="parse-tool"&gt;
&lt;h2&gt;parse tool&lt;/h2&gt;
&lt;p&gt;The CCID driver contains a tool that can parse the USB CCID descriptor.
This is mandatory &lt;a class="reference external" href="https://ccid.apdu.fr/#CCID_compliant"&gt;if you want to add a new reader&lt;/a&gt; to the lists.&lt;/p&gt;
&lt;p&gt;Instead of building the driver from the source code I also provide
pre-compiled binaries of the parse tool.&lt;/p&gt;
&lt;p&gt;The command to use is:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_ba74cdb8e42e481390e7955184f97f76-1" name="rest_code_ba74cdb8e42e481390e7955184f97f76-1" href="https://blog.apdu.fr/posts/2026/08/some-web-statistics-about-ccidapdufr/#rest_code_ba74cdb8e42e481390e7955184f97f76-1"&gt;&lt;/a&gt;&lt;span class="go"&gt;curl https://ccid.apdu.fr/files/parse.sh | bash -&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;From the log I can see that there were 50 accesses to the &lt;code class="docutils literal"&gt;parse.sh&lt;/code&gt;
shell script and 23 accesses to the Linux-x86_64 binary, but none to any
of the other architectures I provide.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th class="head"&gt;&lt;p&gt;file/arch&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;#&lt;/p&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;parse.sh&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;50&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Linux-x86_64&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;23&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Linux-aarch64&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Linux-armv7l&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Darwin-arm64&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Darwin-x86_64&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The requests came from 8 different IP addresses. Therefore, only 8 users
have used this service in June 2026.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="ipv6"&gt;
&lt;h2&gt;IPv6&lt;/h2&gt;
&lt;p&gt;The old Internet Protocol is still widely used. However, only 19% of the
requests use the current, modern version: IPv6.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th class="head"&gt;&lt;p&gt;Version&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;#&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;%&lt;/p&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;IPv4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;217489&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;80.59%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;IPv6&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;52371&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;19.41%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;According to &lt;a class="reference external" href="https://www.google.com/intl/en/ipv6/statistics.html"&gt;Google's IPv6 statistics&lt;/a&gt; the figure
should be around 50% for each protocol.&lt;/p&gt;
&lt;p&gt;I have no explanation for that discrepancy.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I was expecting to receive more requests from GNU/Linux systems.&lt;/p&gt;
&lt;p&gt;I was also expecting more requests from bots, such as AI and search
engines. According to &lt;a class="reference external" href="https://cpl.thalesgroup.com/resources/application-security/2026-bad-bot-report"&gt;2026 Edition Thales Bad Bot Report&lt;/a&gt; "53% The percentage of internet traffic made up of bots.".&lt;/p&gt;
&lt;p&gt;I am surprised to see requests for outdated versions of the CCID driver.&lt;/p&gt;
&lt;/section&gt;</description><category>ccid</category><guid>https://blog.apdu.fr/posts/2026/08/some-web-statistics-about-ccidapdufr/</guid><pubDate>Mon, 17 Aug 2026 12:16:21 GMT</pubDate></item><item><title>Enabling contactless Broadcom readers</title><link>https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;section id="current-status"&gt;
&lt;h2&gt;Current status&lt;/h2&gt;
&lt;p&gt;Some Dell laptops have a Broadcom smart card reader. Some readers are
for contact cards and some are for contactless cards.  Contact readers
should work fine with my CCID driver and are listed in the &lt;a class="reference external" href="https://ccid.apdu.fr/ccid/shouldwork.html#0x0A5C0x5842"&gt;Should work
but untested by me&lt;/a&gt; list.&lt;/p&gt;
&lt;p&gt;However, none of the contactless readers are supported by my driver and
are in the &lt;a class="reference external" href="https://ccid.apdu.fr/ccid/unsupported.html#0x0A5C0x5844"&gt;Unsupported or partly supported CCID readers&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="example-with-a-dell-latitude-7350"&gt;
&lt;h2&gt;Example with a Dell Latitude 7350&lt;/h2&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_1e77ab26424b44ec81324152be4e23b6-1" name="rest_code_1e77ab26424b44ec81324152be4e23b6-1" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_1e77ab26424b44ec81324152be4e23b6-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;lsusb
&lt;a id="rest_code_1e77ab26424b44ec81324152be4e23b6-2" name="rest_code_1e77ab26424b44ec81324152be4e23b6-2" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_1e77ab26424b44ec81324152be4e23b6-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;/span&gt;
&lt;a id="rest_code_1e77ab26424b44ec81324152be4e23b6-3" name="rest_code_1e77ab26424b44ec81324152be4e23b6-3" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_1e77ab26424b44ec81324152be4e23b6-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub&lt;/span&gt;
&lt;a id="rest_code_1e77ab26424b44ec81324152be4e23b6-4" name="rest_code_1e77ab26424b44ec81324152be4e23b6-4" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_1e77ab26424b44ec81324152be4e23b6-4"&gt;&lt;/a&gt;&lt;span class="go"&gt;Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;/span&gt;
&lt;a id="rest_code_1e77ab26424b44ec81324152be4e23b6-5" name="rest_code_1e77ab26424b44ec81324152be4e23b6-5" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_1e77ab26424b44ec81324152be4e23b6-5"&gt;&lt;/a&gt;&lt;span class="go"&gt;Bus 003 Device 002: ID 0bda:557e Realtek Semiconductor Corp. Integrated_Webcam_FHD&lt;/span&gt;
&lt;a id="rest_code_1e77ab26424b44ec81324152be4e23b6-6" name="rest_code_1e77ab26424b44ec81324152be4e23b6-6" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_1e77ab26424b44ec81324152be4e23b6-6"&gt;&lt;/a&gt;&lt;span class="hll"&gt;&lt;span class="go"&gt;Bus 003 Device 003: ID 0a5c:5865 Broadcom Corp. 58200&lt;/span&gt;
&lt;/span&gt;&lt;a id="rest_code_1e77ab26424b44ec81324152be4e23b6-7" name="rest_code_1e77ab26424b44ec81324152be4e23b6-7" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_1e77ab26424b44ec81324152be4e23b6-7"&gt;&lt;/a&gt;&lt;span class="go"&gt;Bus 003 Device 004: ID 8087:0036 Intel Corp. BE200 Bluetooth&lt;/span&gt;
&lt;a id="rest_code_1e77ab26424b44ec81324152be4e23b6-8" name="rest_code_1e77ab26424b44ec81324152be4e23b6-8" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_1e77ab26424b44ec81324152be4e23b6-8"&gt;&lt;/a&gt;&lt;span class="go"&gt;Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The reader found is this &lt;a class="reference external" href="https://ccid.apdu.fr/ccid/shouldwork.html#0x0A5C0x5865"&gt;Broadcom Corp. 58200&lt;/a&gt; (USB idProduct =
0x5865).&lt;/p&gt;
&lt;p&gt;My CCID driver web page indicates for this reader: &lt;em&gt;The contactless
interface is not supported&lt;/em&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-1" name="rest_code_991b7891974c4d079ca4a44893c837bd-1" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;pcsc_scan
&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-2" name="rest_code_991b7891974c4d079ca4a44893c837bd-2" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;PC/SC device scanner&lt;/span&gt;
&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-3" name="rest_code_991b7891974c4d079ca4a44893c837bd-3" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;V 1.7.5 (c) 2001-2026, Ludovic Rousseau &amp;lt;ludovic.rousseau@free.fr&amp;gt;&lt;/span&gt;
&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-4" name="rest_code_991b7891974c4d079ca4a44893c837bd-4" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-4"&gt;&lt;/a&gt;&lt;span class="go"&gt;Using reader plug'n play mechanism&lt;/span&gt;
&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-5" name="rest_code_991b7891974c4d079ca4a44893c837bd-5" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-5"&gt;&lt;/a&gt;&lt;span class="go"&gt;Scanning present readers...&lt;/span&gt;
&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-6" name="rest_code_991b7891974c4d079ca4a44893c837bd-6" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-6"&gt;&lt;/a&gt;&lt;span class="go"&gt;0: Broadcom Corp 58200 [Contacted SmartCard] (0123456789ABCD) 00 00&lt;/span&gt;
&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-7" name="rest_code_991b7891974c4d079ca4a44893c837bd-7" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-7"&gt;&lt;/a&gt;&lt;span class="hll"&gt;&lt;span class="go"&gt;1: Broadcom Corp 58200 [Contactless SmartCard] (0123456789ABCD) 01 00&lt;/span&gt;
&lt;/span&gt;&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-8" name="rest_code_991b7891974c4d079ca4a44893c837bd-8" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-8"&gt;&lt;/a&gt;
&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-9" name="rest_code_991b7891974c4d079ca4a44893c837bd-9" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-9"&gt;&lt;/a&gt;&lt;span class="go"&gt;Sat Jul  4 17:40:42 2026&lt;/span&gt;
&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-10" name="rest_code_991b7891974c4d079ca4a44893c837bd-10" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-10"&gt;&lt;/a&gt;&lt;span class="go"&gt; Reader 0: Broadcom Corp 58200 [Contacted SmartCard] (0123456789ABCD) 00 00&lt;/span&gt;
&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-11" name="rest_code_991b7891974c4d079ca4a44893c837bd-11" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-11"&gt;&lt;/a&gt;&lt;span class="go"&gt;  Event number: 0&lt;/span&gt;
&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-12" name="rest_code_991b7891974c4d079ca4a44893c837bd-12" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-12"&gt;&lt;/a&gt;&lt;span class="go"&gt;  Card state: Card removed,&lt;/span&gt;
&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-13" name="rest_code_991b7891974c4d079ca4a44893c837bd-13" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-13"&gt;&lt;/a&gt;&lt;span class="hll"&gt;&lt;span class="go"&gt; Reader 1: Broadcom Corp 58200 [Contactless SmartCard] (0123456789ABCD) 01 00&lt;/span&gt;
&lt;/span&gt;&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-14" name="rest_code_991b7891974c4d079ca4a44893c837bd-14" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-14"&gt;&lt;/a&gt;&lt;span class="hll"&gt;&lt;span class="go"&gt;  Event number: 0&lt;/span&gt;
&lt;/span&gt;&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-15" name="rest_code_991b7891974c4d079ca4a44893c837bd-15" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-15"&gt;&lt;/a&gt;&lt;span class="hll"&gt;&lt;span class="go"&gt;  Card state: Card removed,&lt;/span&gt;
&lt;/span&gt;&lt;a id="rest_code_991b7891974c4d079ca4a44893c837bd-16" name="rest_code_991b7891974c4d079ca4a44893c837bd-16" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_991b7891974c4d079ca4a44893c837bd-16"&gt;&lt;/a&gt;&lt;span class="go"&gt;Insert or remove a card or a reader...&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;My CCID driver finds and reports both readers/interfaces. However, only
the contact reader reports card insertion and removal and can use a
card.&lt;/p&gt;
&lt;p&gt;The readers are a composite device with two CCID interfaces: "Contacted
SmartCard" and "Contactless SmartCard".  The device also has an
interface labelled "Broadcom ControlVault 3+ w/FingerPrint" and another
labelled "Broadcom NFP" (NFP stands for "Near Field Proximity").&lt;/p&gt;
&lt;/section&gt;
&lt;section id="electromagnetic-field"&gt;
&lt;h2&gt;Electromagnetic field&lt;/h2&gt;
&lt;p&gt;The contactless reader does not detect the presence of a card because
its electromagnetic field is inactive.&lt;/p&gt;
&lt;p&gt;I have a special detector that tells me when a contactless reader is, or
isn't, emitting an electromagnetic field. And I see no activity at all.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="broadcom-nfc-service"&gt;
&lt;h2&gt;Broadcom NFC service&lt;/h2&gt;
&lt;p&gt;Broadcom provides a (proprietary) program at &lt;a class="reference external" href="https://packages.broadcom.com/artifactory/dell-controlvault-drivers/"&gt;https://packages.broadcom.com/artifactory/dell-controlvault-drivers/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The current version is &lt;code class="docutils literal"&gt;brcm_linux_nfc_6.4.23.tgz&lt;/code&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-1" name="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-1" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_40725893bcdd4f5ba6153b94ea9c31cc-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;tar&lt;span class="w"&gt; &lt;/span&gt;tzvf&lt;span class="w"&gt; &lt;/span&gt;brcm_linux_nfc_6.4.23.tgz
&lt;a id="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-2" name="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-2" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_40725893bcdd4f5ba6153b94ea9c31cc-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;-rwxrwxr-x adminuser/adminuser 1427144 2026-05-01 00:48 usr/lib/broadcom-nfc/bcmnfcd.bin&lt;/span&gt;
&lt;a id="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-3" name="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-3" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_40725893bcdd4f5ba6153b94ea9c31cc-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;-rw-rw-r-- adminuser/adminuser   26117 2026-05-01 00:48 usr/lib/broadcom-nfc/bcmnfcd.conf&lt;/span&gt;
&lt;a id="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-4" name="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-4" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_40725893bcdd4f5ba6153b94ea9c31cc-4"&gt;&lt;/a&gt;&lt;span class="go"&gt;-r-xr-xr-x adminuser/adminuser     155 2026-05-01 00:48 filelist&lt;/span&gt;
&lt;a id="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-5" name="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-5" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_40725893bcdd4f5ba6153b94ea9c31cc-5"&gt;&lt;/a&gt;&lt;span class="go"&gt;-r-xr-xr-x adminuser/adminuser     961 2026-05-01 00:48 install.sh&lt;/span&gt;
&lt;a id="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-6" name="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-6" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_40725893bcdd4f5ba6153b94ea9c31cc-6"&gt;&lt;/a&gt;&lt;span class="go"&gt;-r-xr-xr-x adminuser/adminuser      83 2026-05-01 00:48 rm.sh&lt;/span&gt;
&lt;a id="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-7" name="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-7" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_40725893bcdd4f5ba6153b94ea9c31cc-7"&gt;&lt;/a&gt;&lt;span class="go"&gt;-r-xr-xr-x adminuser/adminuser     249 2026-05-01 00:48 etc/systemd/system/broadcom-nfc.service&lt;/span&gt;
&lt;a id="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-8" name="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-8" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_40725893bcdd4f5ba6153b94ea9c31cc-8"&gt;&lt;/a&gt;&lt;span class="go"&gt;-r-xr-xr-x adminuser/adminuser     157 2026-05-01 00:48 lib/systemd/system-sleep/bcmnfcd-control.sh&lt;/span&gt;
&lt;a id="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-9" name="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-9" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_40725893bcdd4f5ba6153b94ea9c31cc-9"&gt;&lt;/a&gt;&lt;span class="go"&gt;-r-xr-xr-x adminuser/adminuser    2098 2026-05-01 00:48 readme.txt&lt;/span&gt;
&lt;a id="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-10" name="rest_code_40725893bcdd4f5ba6153b94ea9c31cc-10" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_40725893bcdd4f5ba6153b94ea9c31cc-10"&gt;&lt;/a&gt;&lt;span class="go"&gt;-r-xr-xr-x adminuser/adminuser    4325 2026-05-01 00:48 LICENSE.broadcom&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;section id="supported-readers"&gt;
&lt;h3&gt;Supported readers&lt;/h3&gt;
&lt;p&gt;Only Broadcom readers using a CV3+ chip (or later) are supported by the
Broadcom NFC service to enable the contactless interface.&lt;/p&gt;
&lt;p&gt;Older readers using a CV3 chip will not work.&lt;/p&gt;
&lt;p&gt;Remember the interface name of the non-CCID interface: "Broadcom
&lt;strong&gt;ControlVault 3+&lt;/strong&gt; w/FingerPrint"? "ControlVault 3+" refers to the CV3+
chip, so this reader is compatible.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="readme"&gt;
&lt;h3&gt;Readme&lt;/h3&gt;
&lt;p&gt;Extract from the &lt;code class="docutils literal"&gt;readme.txt&lt;/code&gt; file:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code text"&gt;&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-1" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-1" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-1"&gt;&lt;/a&gt;===========================================================
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-2" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-2" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-2"&gt;&lt;/a&gt;                         Broadcom NFC Daemon for Linux
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-3" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-3" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-3"&gt;&lt;/a&gt;===========================================================
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-4" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-4" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-4"&gt;&lt;/a&gt;
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-5" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-5" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-5"&gt;&lt;/a&gt;
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-6" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-6" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-6"&gt;&lt;/a&gt;================
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-7" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-7" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-7"&gt;&lt;/a&gt;DESCRIPTION
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-8" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-8" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-8"&gt;&lt;/a&gt;================
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-9" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-9" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-9"&gt;&lt;/a&gt;
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-10" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-10" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-10"&gt;&lt;/a&gt;This package is a Linux based package to install Broadcom NFC daemon.  The NFC
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-11" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-11" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-11"&gt;&lt;/a&gt;daemon runs and NFC stack needed to initialize and keep the state of the NFC
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-12" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-12" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-12"&gt;&lt;/a&gt;controller of the CV device.  The sole purpose of this NFC stack is to enable
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-13" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-13" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-13"&gt;&lt;/a&gt;the Contactless CCID interface.
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-14" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-14" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-14"&gt;&lt;/a&gt;
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-15" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-15" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-15"&gt;&lt;/a&gt;It is assumed higher level software such as PCSC Lite will be used in
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-16" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-16" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-16"&gt;&lt;/a&gt;conjunction with the NFC daemon.
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-17" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-17" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-17"&gt;&lt;/a&gt;
&lt;a id="rest_code_27b25538f8054c608c18dc7cb6ce4712-18" name="rest_code_27b25538f8054c608c18dc7cb6ce4712-18" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_27b25538f8054c608c18dc7cb6ce4712-18"&gt;&lt;/a&gt;[...]
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="installation"&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;After installation, the process &lt;code class="docutils literal"&gt;bcmnfcd.bin&lt;/code&gt; is running:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_de6e79c427b84c1892ca5439cb83bf63-1" name="rest_code_de6e79c427b84c1892ca5439cb83bf63-1" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_de6e79c427b84c1892ca5439cb83bf63-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;status&lt;span class="w"&gt; &lt;/span&gt;broadcom-nfc.service
&lt;a id="rest_code_de6e79c427b84c1892ca5439cb83bf63-2" name="rest_code_de6e79c427b84c1892ca5439cb83bf63-2" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_de6e79c427b84c1892ca5439cb83bf63-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;● broadcom-nfc.service - Broadcom NFC service&lt;/span&gt;
&lt;a id="rest_code_de6e79c427b84c1892ca5439cb83bf63-3" name="rest_code_de6e79c427b84c1892ca5439cb83bf63-3" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_de6e79c427b84c1892ca5439cb83bf63-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;         Loaded: loaded (/etc/systemd/system/broadcom-nfc.service; enabled; preset: enabled)&lt;/span&gt;
&lt;a id="rest_code_de6e79c427b84c1892ca5439cb83bf63-4" name="rest_code_de6e79c427b84c1892ca5439cb83bf63-4" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_de6e79c427b84c1892ca5439cb83bf63-4"&gt;&lt;/a&gt;&lt;span class="go"&gt;         Active: active (running) since Sat 2026-07-04 13:19:07 CEST; 1min 19s ago&lt;/span&gt;
&lt;a id="rest_code_de6e79c427b84c1892ca5439cb83bf63-5" name="rest_code_de6e79c427b84c1892ca5439cb83bf63-5" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_de6e79c427b84c1892ca5439cb83bf63-5"&gt;&lt;/a&gt;&lt;span class="go"&gt; Invocation: 45b58a953ed54891a3b7d3c167502c39&lt;/span&gt;
&lt;a id="rest_code_de6e79c427b84c1892ca5439cb83bf63-6" name="rest_code_de6e79c427b84c1892ca5439cb83bf63-6" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_de6e79c427b84c1892ca5439cb83bf63-6"&gt;&lt;/a&gt;&lt;span class="go"&gt;   Main PID: 9271 (bcmnfcd.bin)&lt;/span&gt;
&lt;a id="rest_code_de6e79c427b84c1892ca5439cb83bf63-7" name="rest_code_de6e79c427b84c1892ca5439cb83bf63-7" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_de6e79c427b84c1892ca5439cb83bf63-7"&gt;&lt;/a&gt;&lt;span class="go"&gt;          Tasks: 6 (limit: 18475)&lt;/span&gt;
&lt;a id="rest_code_de6e79c427b84c1892ca5439cb83bf63-8" name="rest_code_de6e79c427b84c1892ca5439cb83bf63-8" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_de6e79c427b84c1892ca5439cb83bf63-8"&gt;&lt;/a&gt;&lt;span class="go"&gt;         Memory: 2.5M (peak: 3.5M)&lt;/span&gt;
&lt;a id="rest_code_de6e79c427b84c1892ca5439cb83bf63-9" name="rest_code_de6e79c427b84c1892ca5439cb83bf63-9" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_de6e79c427b84c1892ca5439cb83bf63-9"&gt;&lt;/a&gt;&lt;span class="go"&gt;                CPU: 48ms&lt;/span&gt;
&lt;a id="rest_code_de6e79c427b84c1892ca5439cb83bf63-10" name="rest_code_de6e79c427b84c1892ca5439cb83bf63-10" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_de6e79c427b84c1892ca5439cb83bf63-10"&gt;&lt;/a&gt;&lt;span class="go"&gt;         CGroup: /system.slice/broadcom-nfc.service&lt;/span&gt;
&lt;a id="rest_code_de6e79c427b84c1892ca5439cb83bf63-11" name="rest_code_de6e79c427b84c1892ca5439cb83bf63-11" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_de6e79c427b84c1892ca5439cb83bf63-11"&gt;&lt;/a&gt;&lt;span class="go"&gt;                         └─9271 /usr/lib/broadcom-nfc/bcmnfcd.bin -d -f -c /usr/lib/broadcom-nfc/&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="use"&gt;
&lt;h3&gt;Use&lt;/h3&gt;
&lt;p&gt;And it is now possible to detect and use contactless smart cards.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-1" name="rest_code_7f2388ede14741afab34ba9bad39ad73-1" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;pcsc_scan
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-2" name="rest_code_7f2388ede14741afab34ba9bad39ad73-2" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;PC/SC device scanner&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-3" name="rest_code_7f2388ede14741afab34ba9bad39ad73-3" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;V 1.7.3 (c) 2001-2024, Ludovic Rousseau &amp;lt;ludovic.rousseau@free.fr&amp;gt;&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-4" name="rest_code_7f2388ede14741afab34ba9bad39ad73-4" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-4"&gt;&lt;/a&gt;&lt;span class="go"&gt;Using reader plug'n play mechanism&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-5" name="rest_code_7f2388ede14741afab34ba9bad39ad73-5" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-5"&gt;&lt;/a&gt;&lt;span class="go"&gt;Scanning present readers...&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-6" name="rest_code_7f2388ede14741afab34ba9bad39ad73-6" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-6"&gt;&lt;/a&gt;&lt;span class="go"&gt;0: Broadcom Corp 58200 [Contacted SmartCard] (0123456789ABCD) 00 00&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-7" name="rest_code_7f2388ede14741afab34ba9bad39ad73-7" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-7"&gt;&lt;/a&gt;&lt;span class="go"&gt;1: Broadcom Corp 58200 [Contactless SmartCard] (0123456789ABCD) 01 00&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-8" name="rest_code_7f2388ede14741afab34ba9bad39ad73-8" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-8"&gt;&lt;/a&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-9" name="rest_code_7f2388ede14741afab34ba9bad39ad73-9" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-9"&gt;&lt;/a&gt;&lt;span class="go"&gt;Sat Jul  4 13:21:48 2026&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-10" name="rest_code_7f2388ede14741afab34ba9bad39ad73-10" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-10"&gt;&lt;/a&gt;&lt;span class="go"&gt; Reader 0: Broadcom Corp 58200 [Contacted SmartCard] (0123456789ABCD) 00 00&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-11" name="rest_code_7f2388ede14741afab34ba9bad39ad73-11" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-11"&gt;&lt;/a&gt;&lt;span class="go"&gt;  Event number: 0&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-12" name="rest_code_7f2388ede14741afab34ba9bad39ad73-12" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-12"&gt;&lt;/a&gt;&lt;span class="go"&gt;  Card state: Card removed,&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-13" name="rest_code_7f2388ede14741afab34ba9bad39ad73-13" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-13"&gt;&lt;/a&gt;&lt;span class="go"&gt; Reader 1: Broadcom Corp 58200 [Contactless SmartCard] (0123456789ABCD) 01 00&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-14" name="rest_code_7f2388ede14741afab34ba9bad39ad73-14" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-14"&gt;&lt;/a&gt;&lt;span class="go"&gt;  Event number: 4&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-15" name="rest_code_7f2388ede14741afab34ba9bad39ad73-15" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-15"&gt;&lt;/a&gt;&lt;span class="go"&gt;  Card state: Card removed,&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-16" name="rest_code_7f2388ede14741afab34ba9bad39ad73-16" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-16"&gt;&lt;/a&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-17" name="rest_code_7f2388ede14741afab34ba9bad39ad73-17" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-17"&gt;&lt;/a&gt;&lt;span class="hll"&gt;&lt;span class="go"&gt;Sat Jul  4 13:21:50 2026&lt;/span&gt;
&lt;/span&gt;&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-18" name="rest_code_7f2388ede14741afab34ba9bad39ad73-18" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-18"&gt;&lt;/a&gt;&lt;span class="hll"&gt;&lt;span class="go"&gt; Reader 1: Broadcom Corp 58200 [Contactless SmartCard] (0123456789ABCD) 01 00&lt;/span&gt;
&lt;/span&gt;&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-19" name="rest_code_7f2388ede14741afab34ba9bad39ad73-19" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-19"&gt;&lt;/a&gt;&lt;span class="hll"&gt;&lt;span class="go"&gt;  Event number: 5&lt;/span&gt;
&lt;/span&gt;&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-20" name="rest_code_7f2388ede14741afab34ba9bad39ad73-20" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-20"&gt;&lt;/a&gt;&lt;span class="hll"&gt;&lt;span class="go"&gt;  Card state: Card inserted,&lt;/span&gt;
&lt;/span&gt;&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-21" name="rest_code_7f2388ede14741afab34ba9bad39ad73-21" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-21"&gt;&lt;/a&gt;&lt;span class="hll"&gt;&lt;span class="go"&gt;  ATR: 3B 8F 80 01 80 91 00 31 80 65 B0 84 05 00 25 83 01 90 00 CD&lt;/span&gt;
&lt;/span&gt;&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-22" name="rest_code_7f2388ede14741afab34ba9bad39ad73-22" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-22"&gt;&lt;/a&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-23" name="rest_code_7f2388ede14741afab34ba9bad39ad73-23" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-23"&gt;&lt;/a&gt;&lt;span class="go"&gt;ATR: 3B 8F 80 01 80 91 00 31 80 65 B0 84 05 00 25 83 01 90 00 CD&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-24" name="rest_code_7f2388ede14741afab34ba9bad39ad73-24" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-24"&gt;&lt;/a&gt;&lt;span class="go"&gt;+ TS = 3B --&amp;gt; Direct Convention&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-25" name="rest_code_7f2388ede14741afab34ba9bad39ad73-25" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-25"&gt;&lt;/a&gt;&lt;span class="go"&gt;+ T0 = 8F, Y(1): 1000, K: 15 (historical bytes)&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-26" name="rest_code_7f2388ede14741afab34ba9bad39ad73-26" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-26"&gt;&lt;/a&gt;&lt;span class="go"&gt;  TD(1) = 80 --&amp;gt; Y(i+1) = 1000, Protocol T = 0&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-27" name="rest_code_7f2388ede14741afab34ba9bad39ad73-27" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-27"&gt;&lt;/a&gt;&lt;span class="go"&gt;-----&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-28" name="rest_code_7f2388ede14741afab34ba9bad39ad73-28" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-28"&gt;&lt;/a&gt;&lt;span class="go"&gt;  TD(2) = 01 --&amp;gt; Y(i+1) = 0000, Protocol T = 1&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-29" name="rest_code_7f2388ede14741afab34ba9bad39ad73-29" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-29"&gt;&lt;/a&gt;&lt;span class="go"&gt;-----&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-30" name="rest_code_7f2388ede14741afab34ba9bad39ad73-30" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-30"&gt;&lt;/a&gt;&lt;span class="go"&gt;+ Historical bytes: 80 91 00 31 80 65 B0 84 05 00 25 83 01 90 00&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-31" name="rest_code_7f2388ede14741afab34ba9bad39ad73-31" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-31"&gt;&lt;/a&gt;&lt;span class="go"&gt;  Category indicator byte: 80 (compact TLV data object)&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-32" name="rest_code_7f2388ede14741afab34ba9bad39ad73-32" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-32"&gt;&lt;/a&gt;&lt;span class="go"&gt;        Tag: 9, len: 1 (unknown)&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-33" name="rest_code_7f2388ede14741afab34ba9bad39ad73-33" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-33"&gt;&lt;/a&gt;&lt;span class="go"&gt;          Value: 00&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-34" name="rest_code_7f2388ede14741afab34ba9bad39ad73-34" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-34"&gt;&lt;/a&gt;&lt;span class="go"&gt;        Tag: 3, len: 1 (card service data byte)&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-35" name="rest_code_7f2388ede14741afab34ba9bad39ad73-35" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-35"&gt;&lt;/a&gt;&lt;span class="go"&gt;          Card service data byte: 80&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-36" name="rest_code_7f2388ede14741afab34ba9bad39ad73-36" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-36"&gt;&lt;/a&gt;&lt;span class="go"&gt;                - Application selection: by full DF name&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-37" name="rest_code_7f2388ede14741afab34ba9bad39ad73-37" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-37"&gt;&lt;/a&gt;&lt;span class="go"&gt;                - EF.DIR and EF.ATR access services: by GET RECORD(s) command&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-38" name="rest_code_7f2388ede14741afab34ba9bad39ad73-38" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-38"&gt;&lt;/a&gt;&lt;span class="go"&gt;                - Card with MF&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-39" name="rest_code_7f2388ede14741afab34ba9bad39ad73-39" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-39"&gt;&lt;/a&gt;&lt;span class="go"&gt;        Tag: 6, len: 5 (pre-issuing data)&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-40" name="rest_code_7f2388ede14741afab34ba9bad39ad73-40" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-40"&gt;&lt;/a&gt;&lt;span class="go"&gt;          Data: B0 84 05 00 25&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-41" name="rest_code_7f2388ede14741afab34ba9bad39ad73-41" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-41"&gt;&lt;/a&gt;&lt;span class="go"&gt;        Tag: 8, len: 3 (status indicator)&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-42" name="rest_code_7f2388ede14741afab34ba9bad39ad73-42" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-42"&gt;&lt;/a&gt;&lt;span class="go"&gt;          LCS (life card cycle): 01 (Creation state)&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-43" name="rest_code_7f2388ede14741afab34ba9bad39ad73-43" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-43"&gt;&lt;/a&gt;&lt;span class="go"&gt;          SW: 9000 (Normal processing.)&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-44" name="rest_code_7f2388ede14741afab34ba9bad39ad73-44" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-44"&gt;&lt;/a&gt;&lt;span class="go"&gt;+ TCK = CD (correct checksum)&lt;/span&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-45" name="rest_code_7f2388ede14741afab34ba9bad39ad73-45" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-45"&gt;&lt;/a&gt;
&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-46" name="rest_code_7f2388ede14741afab34ba9bad39ad73-46" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-46"&gt;&lt;/a&gt;&lt;span class="hll"&gt;&lt;span class="go"&gt;Possibly identified card (using /home/ludovic/.cache/smartcard_list.txt):&lt;/span&gt;
&lt;/span&gt;&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-47" name="rest_code_7f2388ede14741afab34ba9bad39ad73-47" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-47"&gt;&lt;/a&gt;&lt;span class="hll"&gt;&lt;span class="go"&gt;3B 8F 80 01 80 91 00 31 80 65 B0 84 05 00 25 83 01 90 00 CD&lt;/span&gt;
&lt;/span&gt;&lt;a id="rest_code_7f2388ede14741afab34ba9bad39ad73-48" name="rest_code_7f2388ede14741afab34ba9bad39ad73-48" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_7f2388ede14741afab34ba9bad39ad73-48"&gt;&lt;/a&gt;&lt;span class="hll"&gt;&lt;span class="go"&gt;        Contactless IDCore3230 build 6.8, test APDU applet (JavaCard)&lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you stop the &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;/usr/lib/broadcom-nfc/bcmnfcd.bin&lt;/span&gt;&lt;/code&gt; process then the
contactless reader is disabled again.&lt;/p&gt;
&lt;p&gt;The process does more than just initialise the contactless reader.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="license"&gt;
&lt;h2&gt;License&lt;/h2&gt;
&lt;p&gt;Extract from the &lt;code class="docutils literal"&gt;LICENSE.broadcom&lt;/code&gt; file:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_f0fef979ea0f43f2972ce1159a41c805-1" name="rest_code_f0fef979ea0f43f2972ce1159a41c805-1" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_f0fef979ea0f43f2972ce1159a41c805-1"&gt;&lt;/a&gt;&lt;span class="go"&gt;Copyright: Copyright © 2005-2023 Broadcom. All Rights Reserved.&lt;/span&gt;
&lt;a id="rest_code_f0fef979ea0f43f2972ce1159a41c805-2" name="rest_code_f0fef979ea0f43f2972ce1159a41c805-2" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_f0fef979ea0f43f2972ce1159a41c805-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.&lt;/span&gt;
&lt;a id="rest_code_f0fef979ea0f43f2972ce1159a41c805-3" name="rest_code_f0fef979ea0f43f2972ce1159a41c805-3" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_f0fef979ea0f43f2972ce1159a41c805-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;License: Proprietary&lt;/span&gt;
&lt;a id="rest_code_f0fef979ea0f43f2972ce1159a41c805-4" name="rest_code_f0fef979ea0f43f2972ce1159a41c805-4" href="https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/#rest_code_f0fef979ea0f43f2972ce1159a41c805-4"&gt;&lt;/a&gt;&lt;span class="go"&gt;[...]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The program is proprietary. The source code is not provided.&lt;/p&gt;
&lt;p&gt;I understand this can be problematic. A Free Software solution would be
preferable.&lt;/p&gt;
&lt;p&gt;If you want to use a contactless reader that works without a non-free
"driver" you can use one from the &lt;a class="reference external" href="https://ccid.apdu.fr/select_readers/index.html?features=contactless&amp;amp;section=supported"&gt;supported list&lt;/a&gt;
or check the contactless support if you use a reader from the &lt;a class="reference external" href="https://ccid.apdu.fr/select_readers/index.html?features=contactless&amp;amp;section=shouldwork"&gt;should work list&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I note that, in order to use the Wi-Fi card on this laptop, I need to
install the package
&lt;a class="reference external" href="https://packages.debian.org/search?keywords=firmware-iwlwifi"&gt;firmware-iwlwifi&lt;/a&gt; which
comes from the Debian &lt;a class="reference external" href="https://www.debian.org/doc/debian-policy/ch-archive.html#the-non-free-firmware-archive-area"&gt;non-free-firmware&lt;/a&gt;
repository.
This is a similar issue, except that for the non-free program for the
contactless reader runs on the main CPU rather than the Wi-Fi card CPU.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Broadcom provides a program that enables the use of the contactless
readers.&lt;/p&gt;
&lt;p&gt;It is not perfect, since the license is NOT Free Software. However, it
does allow you to use the contactless reader if you really need to.&lt;/p&gt;
&lt;/section&gt;</description><category>ccid</category><guid>https://blog.apdu.fr/posts/2026/07/enabling-contactless-broadcom-readers/</guid><pubDate>Wed, 08 Jul 2026 12:17:15 GMT</pubDate></item><item><title>New version of libccid: 1.8.2</title><link>https://blog.apdu.fr/posts/2026/06/new-version-of-libccid-182/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;I have just released &lt;a class="reference external" href="https://ccid.apdu.fr/files/"&gt;version 1.8.2&lt;/a&gt; of
&lt;a class="reference external" href="https://ccid.apdu.fr/"&gt;libccid&lt;/a&gt; the Free Software CCID class smart
card reader driver.&lt;/p&gt;
&lt;p&gt;This version resolves an issue that was introduced in version 1.8.1, which was
released three days ago. Composite devices (devices with both a CCID
interface and also another interface, such as HID) were not being handled
correctly. Yubico Yubikey tokens, for example, are often composite
devices.&lt;/p&gt;
&lt;section id="thank-you"&gt;
&lt;h2&gt;Thank you&lt;/h2&gt;
&lt;p&gt;Less than three days after the release of version 1.8.1, I received three bug
reports concerning an issue with Yubikey tokens.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Thanks to Anti Räis for the bug report: &lt;a class="reference external" href="https://github.com/LudovicRousseau/CCID/issues/193"&gt;CCID fails to initialize Yubico YubiKey FIDO+CCID reader&lt;/a&gt; (github)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Thanks to Jeff King for the bug report: &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1139694"&gt;libccid: yubikey no longer recognized after upgrade to 1.8.1&lt;/a&gt; (Debian bug)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Thanks to Robin Candau  for the bug report: &lt;a class="reference external" href="https://salsa.debian.org/rousseau/CCID/-/work_items/20#note_769657"&gt;Can't unlock multiple smartcards with 1.8.1 (bisected)&lt;/a&gt; (salsa)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The bug reports either contain the problematic Git commit or a proposed
patch to solve the problem. That was surprising.&lt;/p&gt;
&lt;p&gt;I realise that bug reports are the main way of finding out whether
people are using my software. Perhaps I should introduce more bugs to
prompt a reaction? 😏&lt;/p&gt;
&lt;p&gt;You can also email me to let me know that everything is working fine and
that you are happy. My contact details can be found on the
&lt;a class="reference external" href="https://blog.apdu.fr/articles/about_me/"&gt;About me&lt;/a&gt; page.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="changes"&gt;
&lt;h2&gt;Changes:&lt;/h2&gt;
&lt;p&gt;1.8.2 - 13 June 2026, Ludovic Rousseau&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Fix initialisation of composite devices (like Yubico tokens)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Correctly close the slots of a multi-slots reader (serial)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;</description><category>ccid</category><guid>https://blog.apdu.fr/posts/2026/06/new-version-of-libccid-182/</guid><pubDate>Sat, 13 Jun 2026 11:00:27 GMT</pubDate></item><item><title>New version of libccid: 1.8.1</title><link>https://blog.apdu.fr/posts/2026/06/new-version-of-libccid-181/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;I just released &lt;a class="reference external" href="https://ccid.apdu.fr/files/"&gt;version 1.8.1&lt;/a&gt; of
&lt;a class="reference external" href="https://ccid.apdu.fr/"&gt;libccid&lt;/a&gt; the Free Software CCID class smart
card reader driver.&lt;/p&gt;
&lt;p&gt;This version fixes an issue with multi-slots readers.&lt;/p&gt;
&lt;section id="changes"&gt;
&lt;h2&gt;Changes:&lt;/h2&gt;
&lt;p&gt;1.8.1 - 10 June 2026, Ludovic Rousseau&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Correctly close the slots of a multi-slots reader&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix 3 minor issues "Found by AISLE in partnership with Red Hat"&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>ccid</category><guid>https://blog.apdu.fr/posts/2026/06/new-version-of-libccid-181/</guid><pubDate>Wed, 10 Jun 2026 13:58:25 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 libccid: 1.8.0</title><link>https://blog.apdu.fr/posts/2026/05/new-version-of-libccid-180/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;I just released &lt;a class="reference external" href="https://ccid.apdu.fr/files/"&gt;version 1.8.0&lt;/a&gt; of
&lt;a class="reference external" href="https://ccid.apdu.fr/"&gt;libccid&lt;/a&gt; the Free Software CCID class smart
card reader driver.&lt;/p&gt;
&lt;p&gt;The major changes in this version are:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;no more limited to 16 smart card readers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;./configure&lt;/code&gt; script is no more provided. Only &lt;a class="reference external" href="https://mesonbuild.com/"&gt;meson&lt;/a&gt; configuration is provided.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;section id="changes"&gt;
&lt;h2&gt;Changes:&lt;/h2&gt;
&lt;p&gt;1.8.0 - 27 May 2026, Ludovic Rousseau&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Add support of&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;GLSolutions NM61 PC/SC&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Identiv uTrust FIDO2 Security Key&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Kensington VeriMark NFC+ USB-C Security Key&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MARX CryptoTech LP Tokey 3 FIDO&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;mCore Contact-Reader&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;mCore Contactless-Reader&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;mCore DualSlot-Reader&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pol Henarejos Pico Fido&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pol Henarejos Pico HSM&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pol Henarejos Pico OpenPGP&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Richmond Technologies CO. LLC AEGIS PRO4 Smart Card Reader&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SCR Prime&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remove the limitation to 16 readers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;udev: Update rules file to comply with systemd documentation (and fix permissions issue)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;meson: install serial config file in correct dir&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 crash in multi slots readers code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix some race conditions&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>ccid</category><guid>https://blog.apdu.fr/posts/2026/05/new-version-of-libccid-180/</guid><pubDate>Wed, 27 May 2026 11:09:40 GMT</pubDate></item><item><title>Laptops and smart card readers</title><link>https://blog.apdu.fr/posts/2026/03/laptops-and-smart-card-readers/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;Which smart card reader is present in a particular laptop model? It can
be difficult to find out the exact model of smart card reader included
in a laptop before buying it.&lt;/p&gt;
&lt;p&gt;However, thanks to the &lt;a class="reference external" href="https://linux-hardware.org/"&gt;Hardware for Linux&lt;/a&gt; project, you can submit your own hardware
configuration and also consult the configurations of many laptops and
desktops to find out what hardware is included.&lt;/p&gt;
&lt;p&gt;The website also provides &lt;a class="reference external" href="https://linux-hardware.org/?view=trends"&gt;aggregated results&lt;/a&gt; for a specific categories
such as &lt;a class="reference external" href="https://linux-hardware.org/?view=cpu_vendor"&gt;CPU Vendors&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One interesting result is the &lt;a class="reference external" href="https://linux-hardware.org/?view=chipcard_vendor"&gt;Chipcard Vendor&lt;/a&gt; aggregation.&lt;/p&gt;
&lt;section id="chipard-vendors-market-shares"&gt;
&lt;h2&gt;Chipard Vendors market shares&lt;/h2&gt;
&lt;p&gt;The results do not represent exact market shares. They only include
systems that:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;run GNU/Linux&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;and that have been submitted to &lt;a class="reference external" href="https://linux-hardware.org/"&gt;https://linux-hardware.org/&lt;/a&gt; by their
owners.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;However, they should reflect reality.&lt;/p&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="500" height="420" version="1.0" id="ezcGraph"&gt;
&lt;defs&gt;&lt;/defs&gt;
&lt;g id="ezcGraphChart" color-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility"&gt;
&lt;path d=" M 0.0000,420.0000 L 0.0000,0.0000 L 500.0000,0.0000 L 500.0000,420.0000 L 0.0000,420.0000 z " style="fill: #eeeeec; fill-opacity: 1.00; stroke: none;" id="ezcGraphPolygon_1"&gt;&lt;/path&gt;
&lt;path d=" M 0.0000,42.0000 L 0.0000,0.0000 L 500.0000,0.0000 L 500.0000,42.0000 L 0.0000,42.0000 z " style="fill: #000000; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_2"&gt;&lt;/path&gt;
&lt;path d="M 247.81,243.31 L 360.31,243.31 A 112.50,112.50 0 1,1 142.23,204.46 z" style="fill: #3465a4; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_4" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Broadcom&amp;amp;p=-2'"&gt;&lt;/path&gt;
&lt;path d="M 247.72,243.81 L 359.81,243.81 A 112.00,112.00 0 1,1 142.53,205.10 z" style="fill: none; stroke: #1a3352; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_5"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 144.42,192.15 A 112.50,112.50 0 0,1 296.52,128.57 z" style="fill: #4e9a06; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_6" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2'"&gt;&lt;/path&gt;
&lt;path d="M 249.74,230.37 L 145.06,191.85 A 112.00,112.00 0 0,1 295.86,128.82 z" style="fill: none; stroke: #274d03; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_7"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 296.52,128.57 A 112.50,112.50 0 0,1 333.52,155.63 z" style="fill: #cc0000; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_8" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=O2+Micro&amp;amp;p=-2'"&gt;&lt;/path&gt;
&lt;path d="M 251.45,229.02 L 296.77,129.23 A 112.00,112.00 0 0,1 332.82,155.60 z" style="fill: none; stroke: #660000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_9"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 333.52,155.63 A 112.50,112.50 0 0,1 351.82,183.15 z" style="fill: #edd400; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_10" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Upek&amp;amp;p=-2'"&gt;&lt;/path&gt;
&lt;path d="M 252.84,229.12 L 333.49,156.34 A 112.00,112.00 0 0,1 351.15,182.91 z" style="fill: none; stroke: #776a00; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_11"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 351.82,183.15 A 112.50,112.50 0 0,1 359.73,206.17 z" style="fill: #75505b; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_12" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Lenovo&amp;amp;p=-2'"&gt;&lt;/path&gt;
&lt;path d="M 254.37,229.50 L 351.58,183.82 A 112.00,112.00 0 0,1 359.13,205.79 z" style="fill: none; stroke: #3b282e; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_13"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 359.73,206.17 A 112.50,112.50 0 0,1 360.87,211.91 z" style="fill: #f57900; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_14" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Yubico.com&amp;amp;p=-2'"&gt;&lt;/path&gt;
&lt;path d="M 268.85,227.25 L 359.35,206.77 A 112.00,112.00 0 0,1 360.29,211.50 z" style="fill: none; stroke: #7b3d00; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_15"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 360.87,211.91 A 112.50,112.50 0 0,1 361.51,216.09 z" style="fill: #204a87; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_16" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Gemalto+%28was+Gemplus%29&amp;amp;p=-2'"&gt;&lt;/path&gt;
&lt;path d="M 276.31,226.98 L 360.46,212.49 A 112.00,112.00 0 0,1 360.95,215.66 z" style="fill: none; stroke: #102544; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_17"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 361.51,216.09 A 112.50,112.50 0 0,1 361.92,219.64 z" style="fill: #c17d11; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_18" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=SCM+Microsystems&amp;amp;p=-2'"&gt;&lt;/path&gt;
&lt;path d="M 281.24,227.33 L 361.08,216.65 A 112.00,112.00 0 0,1 361.38,219.19 z" style="fill: none; stroke: #613f09; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_19"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 361.92,219.64 A 112.50,112.50 0 0,1 362.16,222.23 z" style="fill: #3465a4; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_20" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Advanced+Card+Systems&amp;amp;p=-2'"&gt;&lt;/path&gt;
&lt;path d="M 293.08,227.13 L 361.48,220.19 A 112.00,112.00 0 0,1 361.62,221.77 z" style="fill: none; stroke: #1a3352; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_21"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 362.16,222.23 A 112.50,112.50 0 0,1 362.27,223.85 z" style="fill: #4e9a06; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_22" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Aktiv&amp;amp;p=-2'"&gt;&lt;/path&gt;
&lt;path d="M 319.03,226.10 L 361.70,222.77 A 112.00,112.00 0 0,1 361.74,223.38 z" style="fill: none; stroke: #274d03; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_23"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 362.27,223.85 A 112.50,112.50 0 0,1 362.50,231.00 z" style="fill: #cc0000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircleSector_24"&gt;&lt;/path&gt;
&lt;path d="M 265.72,230.50 L 361.81,224.38 A 112.00,112.00 0 0,1 362.00,230.50 z" style="fill: none; stroke: #660000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_25"&gt;&lt;/path&gt;
&lt;path d=" M 217.8596,154.1141 L 197.4275,115.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_26"&gt;&lt;/path&gt;
&lt;ellipse cx="217.8596" cy="154.1141" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_27"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="197.4275" cy="115.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_28"&gt;&lt;/ellipse&gt;
&lt;path d=" M 233.1921,325.3479 L 233.1921,366.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_30"&gt;&lt;/path&gt;
&lt;ellipse cx="233.1921" cy="325.3479" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_31"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="233.1921" cy="366.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_32"&gt;&lt;/ellipse&gt;
&lt;path d=" M 299.1962,163.7380 L 320.7139,124.0556" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_34"&gt;&lt;/path&gt;
&lt;ellipse cx="299.1962" cy="163.7380" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_35"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="320.7139" cy="124.0556" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_36"&gt;&lt;/ellipse&gt;
&lt;path d=" M 319.3977,184.8653 L 354.9431,154.6111" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_38"&gt;&lt;/path&gt;
&lt;ellipse cx="319.3977" cy="184.8653" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_39"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="354.9431" cy="154.6111" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_40"&gt;&lt;/ellipse&gt;
&lt;path d=" M 328.8119,203.9237 L 372.2940,185.1667" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_42"&gt;&lt;/path&gt;
&lt;ellipse cx="328.8119" cy="203.9237" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_43"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="372.2940" cy="185.1667" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_44"&gt;&lt;/ellipse&gt;
&lt;path d=" M 331.7292,214.7277 L 380.0628,215.7222" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_46"&gt;&lt;/path&gt;
&lt;ellipse cx="331.7292" cy="214.7277" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_47"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="380.0628" cy="215.7222" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_48"&gt;&lt;/ellipse&gt;
&lt;path d=" M 332.3759,218.4041 L 380.0628,246.2778" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_50"&gt;&lt;/path&gt;
&lt;ellipse cx="332.3759" cy="218.4041" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_51"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="380.0628" cy="246.2778" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_52"&gt;&lt;/ellipse&gt;
&lt;path d=" M 332.7631,221.2680 L 372.2940,276.8333" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_54"&gt;&lt;/path&gt;
&lt;ellipse cx="332.7631" cy="221.2680" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_55"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="372.2940" cy="276.8333" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_56"&gt;&lt;/ellipse&gt;
&lt;path d=" M 332.9991,223.5438 L 354.9431,307.3889" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_58"&gt;&lt;/path&gt;
&lt;ellipse cx="332.9991" cy="223.5438" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_59"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="354.9431" cy="307.3889" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_60"&gt;&lt;/ellipse&gt;
&lt;path d=" M 333.1245,225.1042 L 320.7139,337.9444" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_62"&gt;&lt;/path&gt;
&lt;ellipse cx="333.1245" cy="225.1042" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_63"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="320.7139" cy="337.9444" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_64"&gt;&lt;/ellipse&gt;
&lt;path d=" M 333.2912,228.3511 L 333.2912,368.5000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_66"&gt;&lt;/path&gt;
&lt;ellipse cx="333.2912" cy="228.3511" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_67"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="333.2912" cy="368.5000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_68"&gt;&lt;/ellipse&gt;
&lt;g id="ezcGraphTextBox_3"&gt;
&lt;path d=" M 90.5000,42.0000 L 90.5000,0.5000 L 410.0000,0.5000 L 410.0000,42.0000 L 90.5000,42.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_70"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_3_text" x="91.0000" text-length="318.0000px" y="35.0000" style="font-size: 40px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Chipcard Vendor
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_29" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2'"&gt;
&lt;path d=" M 54.4230,122.7778 L 54.4230,107.7222 L 192.4275,107.7222 L 192.4275,122.7778 L 54.4230,122.7778 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_71"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_29_text" x="54.9230" text-length="136.5044px" y="119.7444" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Alcor Micro (26.2%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_33" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Broadcom&amp;amp;p=-2'"&gt;
&lt;path d=" M 111.7409,373.7778 L 111.7409,358.7222 L 228.1921,358.7222 L 228.1921,373.7778 L 111.7409,373.7778 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_72"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_33_text" x="112.2409" text-length="114.9511px" y="370.7444" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Broadcom (55.6%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_37" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=O2+Micro&amp;amp;p=-2'"&gt;
&lt;path d=" M 326.2139,131.8333 L 326.2139,116.7778 L 435.4805,116.7778 L 435.4805,131.8333 L 326.2139,131.8333 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_73"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_37_text" x="326.7139" text-length="107.7667px" y="128.8000" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;O2 Micro (6.5%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_41" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Upek&amp;amp;p=-2'"&gt;
&lt;path d=" M 360.4431,162.3889 L 360.4431,147.3333 L 440.9720,147.3333 L 440.9720,162.3889 L 360.4431,162.3889 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_74"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_41_text" x="360.9431" text-length="79.0289px" y="159.3556" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Upek (4.7%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_45" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Lenovo&amp;amp;p=-2'"&gt;
&lt;path d=" M 377.7940,192.9444 L 377.7940,177.8889 L 472.6918,177.8889 L 472.6918,192.9444 L 377.7940,192.9444 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_75"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_45_text" x="378.2940" text-length="93.3978px" y="189.9111" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Lenovo (3.4%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_49" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Yubico.com&amp;amp;p=-2'"&gt;
&lt;path d=" M 385.5628,230.3278 L 385.5628,201.6167 L 458.9073,201.6167 L 458.9073,230.3278 L 385.5628,230.3278 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_76"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_49_text" x="386.0628" text-length="71.8444px" y="213.6389" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Yubico.com
&lt;/text&gt;
&lt;text id="ezcGraphTextBox_49_text" x="386.0628" text-length="43.1067px" y="228.5500" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;(0.8%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_53" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Gemalto+%28was+Gemplus%29&amp;amp;p=-2'"&gt;
&lt;path d=" M 385.5628,260.8833 L 385.5628,232.1722 L 473.2762,232.1722 L 473.2762,260.8833 L 385.5628,260.8833 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_77"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_53_text" x="386.0628" text-length="86.2133px" y="244.1944" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Gemalto (was
&lt;/text&gt;
&lt;text id="ezcGraphTextBox_53_text" x="386.0628" text-length="71.8444px" y="259.1056" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;... (0.6%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_57" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=SCM+Microsystems&amp;amp;p=-2'"&gt;
&lt;path d=" M 377.7940,291.4389 L 377.7940,262.7278 L 494.2452,262.7278 L 494.2452,291.4389 L 377.7940,291.4389 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_78"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_57_text" x="378.2940" text-length="114.9511px" y="274.7500" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;SCM Microsystems
&lt;/text&gt;
&lt;text id="ezcGraphTextBox_57_text" x="378.2940" text-length="43.1067px" y="289.6611" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;(0.5%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_61" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Advanced+Card+Systems&amp;amp;p=-2'"&gt;
&lt;path d=" M 360.4431,321.9944 L 360.4431,293.2833 L 476.8942,293.2833 L 476.8942,321.9944 L 360.4431,321.9944 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_79"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_61_text" x="360.9431" text-length="114.9511px" y="305.3056" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Advanced Card...
&lt;/text&gt;
&lt;text id="ezcGraphTextBox_61_text" x="360.9431" text-length="43.1067px" y="320.2167" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;(0.4%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_65" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Aktiv&amp;amp;p=-2'"&gt;
&lt;path d=" M 326.2139,345.7222 L 326.2139,330.6667 L 413.9272,330.6667 L 413.9272,345.7222 L 326.2139,345.7222 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_80"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_65_text" x="326.7139" text-length="86.2133px" y="342.6889" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Aktiv (0.2%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_69"&gt;
&lt;path d=" M 338.7912,376.2778 L 338.7912,361.2222 L 433.6890,361.2222 L 433.6890,376.2778 L 338.7912,376.2778 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_81"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_69_text" x="339.2912" text-length="93.3978px" y="373.2444" style="font-size: 13px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Others (1.0%)
&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;&lt;table&gt;
&lt;caption&gt;Chipcard Vendors&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th class="head"&gt;&lt;p&gt;#&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;Vendor&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;Percent&lt;/p&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Broadcom&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;55.61%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Alcor Micro&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;26.17%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;O2 Micro&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;6.53%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Upek&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;4.69%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;5&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Lenovo&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3.45%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;6&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Yubico.com&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.83%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;7&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Gemalto (was Gemplus)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.6%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;8&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;SCM Microsystems&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.51%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;9&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Advanced Card Systems&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.37%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;10&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Activ&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.23%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;An important point to note is that the first five on the list should be
correct, as they correspond to the manufacturers of embedded smart card
readers.  However, the next five in the list are often (if not always)
external smart card readers that are connected via a USB port and not
integrated into the laptop.  For instance, I am not aware of any Yubico
readers that are embedded in laptops.  These readers are listed on
&lt;a class="reference external" href="https://linux-hardware.org/"&gt;https://linux-hardware.org/&lt;/a&gt; because they were plugged in when the user
ran the &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;hw-probe&lt;/span&gt;&lt;/code&gt; program to scan and report the hardware
configuration.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="which-laptop-manufacturers-use-which-smart-card-reader"&gt;
&lt;h2&gt;Which laptop manufacturers use which smart card reader?&lt;/h2&gt;
&lt;p&gt;You can click on a specific slice of the Chipcard Vendor pie chart to
see which laptop manuifacturers uses this smart card reader brand.&lt;/p&gt;
&lt;section id="broadcom"&gt;
&lt;h3&gt;Broadcom&lt;/h3&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="500" height="420" version="1.0" id="ezcGraph"&gt;
&lt;defs&gt;&lt;/defs&gt;
&lt;g id="ezcGraphChart" color-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility"&gt;
&lt;path d=" M 0.0000,420.0000 L 0.0000,0.0000 L 500.0000,0.0000 L 500.0000,420.0000 L 0.0000,420.0000 z " style="fill: #eeeeec; fill-opacity: 1.00; stroke: none;" id="ezcGraphPolygon_1"&gt;&lt;/path&gt;
&lt;path d=" M 0.0000,42.0000 L 0.0000,0.0000 L 500.0000,0.0000 L 500.0000,42.0000 L 0.0000,42.0000 z " style="fill: #000000; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_2"&gt;&lt;/path&gt;
&lt;ellipse cx="237.5000" cy="231.0000" rx="112.5000" ry="112.5000" style="fill: #3465a4; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircle_4" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Broadcom&amp;amp;p=-2&amp;amp;vendor=Dell'"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="237.5000" cy="231.0000" rx="112.0000" ry="112.0000" style="fill: none; stroke: #1a3352; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircle_5"&gt;&lt;/ellipse&gt;
&lt;path d=" M 154.1667,231.0000 L 119.0000,231.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_6"&gt;&lt;/path&gt;
&lt;ellipse cx="154.1667" cy="231.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_7"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="119.0000" cy="231.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_8"&gt;&lt;/ellipse&gt;
&lt;g id="ezcGraphTextBox_3"&gt;
&lt;path d=" M 79.9000,42.0000 L 79.9000,0.5000 L 420.6000,0.5000 L 420.6000,42.0000 L 79.9000,42.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_10"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_3_text" x="80.4000" text-length="339.2000px" y="35.0000" style="font-size: 40px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Notebook Vendors
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_9" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Broadcom&amp;amp;p=-2&amp;amp;vendor=Dell'"&gt;
&lt;path d=" M 37.0280,249.8500 L 37.0280,212.6500 L 114.0000,212.6500 L 114.0000,249.8500 L 37.0280,249.8500 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_11"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_9_text" x="75.2640" text-length="37.7360px" y="228.2800" style="font-size: 17px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Dell
&lt;/text&gt;
&lt;text id="ezcGraphTextBox_9_text" x="37.5280" text-length="75.4720px" y="247.8600" style="font-size: 17px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;(100.0%)
&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;&lt;p&gt;All Broadcom readers are used by Dell.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="alcor-micro"&gt;
&lt;h3&gt;Alcor Micro&lt;/h3&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="500" height="420" version="1.0" id="ezcGraph"&gt;
&lt;defs&gt;&lt;/defs&gt;
&lt;g id="ezcGraphChart" color-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility"&gt;
&lt;path d=" M 0.0000,420.0000 L 0.0000,0.0000 L 500.0000,0.0000 L 500.0000,420.0000 L 0.0000,420.0000 z " style="fill: #eeeeec; fill-opacity: 1.00; stroke: none;" id="ezcGraphPolygon_1"&gt;&lt;/path&gt;
&lt;path d=" M 0.0000,42.0000 L 0.0000,0.0000 L 500.0000,0.0000 L 500.0000,42.0000 L 0.0000,42.0000 z " style="fill: #000000; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_2"&gt;&lt;/path&gt;
&lt;path d="M 239.36,237.56 L 351.86,237.56 A 112.50,112.50 0 1,1 289.96,137.08 z" style="fill: #3465a4; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_4" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Lenovo'"&gt;&lt;/path&gt;
&lt;path d="M 238.55,238.06 L 351.36,238.06 A 112.00,112.00 0 1,1 289.29,137.30 z" style="fill: none; stroke: #1a3352; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_5"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 300.60,130.52 A 112.50,112.50 0 0,1 345.13,170.94 z" style="fill: #4e9a06; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_6" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Hewlett-Packard'"&gt;&lt;/path&gt;
&lt;path d="M 251.26,229.61 L 300.82,131.19 A 112.00,112.00 0 0,1 344.44,170.78 z" style="fill: none; stroke: #274d03; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_7"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 345.13,170.94 A 112.50,112.50 0 0,1 361.16,213.68 z" style="fill: #cc0000; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_8" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Fujitsu'"&gt;&lt;/path&gt;
&lt;path d="M 252.31,230.13 L 344.97,171.63 A 112.00,112.00 0 0,1 360.59,213.26 z" style="fill: none; stroke: #660000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_9"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 361.16,213.68 A 112.50,112.50 0 0,1 361.81,218.60 z" style="fill: #edd400; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_10" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Acer'"&gt;&lt;/path&gt;
&lt;path d="M 272.44,228.01 L 360.74,214.25 A 112.00,112.00 0 0,1 361.26,218.16 z" style="fill: none; stroke: #776a00; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_11"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 361.81,218.60 A 112.50,112.50 0 0,1 362.06,221.07 z" style="fill: #75505b; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_12" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=ASUSTek+Computer'"&gt;&lt;/path&gt;
&lt;path d="M 295.06,226.51 L 361.37,219.15 A 112.00,112.00 0 0,1 361.52,220.62 z" style="fill: none; stroke: #3b282e; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_13"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 362.06,221.07 A 112.50,112.50 0 0,1 362.25,223.55 z" style="fill: #f57900; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_14" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Dell'"&gt;&lt;/path&gt;
&lt;path d="M 295.15,227.50 L 361.61,221.62 A 112.00,112.00 0 0,1 361.72,223.09 z" style="fill: none; stroke: #7b3d00; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_15"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 362.25,223.55 A 112.50,112.50 0 0,1 362.33,224.79 z" style="fill: #204a87; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_16" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Durabook'"&gt;&lt;/path&gt;
&lt;path d="M 340.39,225.50 L 361.79,224.08 A 112.00,112.00 0 0,1 361.80,224.32 z" style="fill: none; stroke: #102544; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_17"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 362.33,224.79 A 112.50,112.50 0 0,1 362.39,226.03 z" style="fill: #c17d11; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_18" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Getac'"&gt;&lt;/path&gt;
&lt;path d="M 340.45,226.50 L 361.86,225.32 A 112.00,112.00 0 0,1 361.87,225.56 z" style="fill: none; stroke: #613f09; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_19"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 362.39,226.03 A 112.50,112.50 0 0,1 362.44,227.27 z" style="fill: #3465a4; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_20" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Google'"&gt;&lt;/path&gt;
&lt;path d="M 340.49,227.50 L 361.91,226.55 A 112.00,112.00 0 0,1 361.92,226.79 z" style="fill: none; stroke: #1a3352; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_21"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 362.44,227.27 A 112.50,112.50 0 0,1 362.47,228.52 z" style="fill: #4e9a06; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_22" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Notebook'"&gt;&lt;/path&gt;
&lt;path d="M 340.53,228.50 L 361.96,227.79 A 112.00,112.00 0 0,1 361.96,228.03 z" style="fill: none; stroke: #274d03; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_23"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 362.47,228.52 A 112.50,112.50 0 0,1 362.50,231.00 z" style="fill: #cc0000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircleSector_24"&gt;&lt;/path&gt;
&lt;path d="M 295.28,230.50 L 361.98,229.03 A 112.00,112.00 0 0,1 362.00,230.50 z" style="fill: none; stroke: #660000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_25"&gt;&lt;/path&gt;
&lt;path d=" M 168.4064,281.2644 L 141.8188,303.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_26"&gt;&lt;/path&gt;
&lt;ellipse cx="168.4064" cy="281.2644" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_27"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="141.8188" cy="303.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_28"&gt;&lt;/ellipse&gt;
&lt;path d=" M 306.0112,169.2975 L 306.0112,96.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_30"&gt;&lt;/path&gt;
&lt;ellipse cx="306.0112" cy="169.2975" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_31"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="306.0112" cy="96.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_32"&gt;&lt;/ellipse&gt;
&lt;path d=" M 328.0242,201.7311 L 323.8233,126.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_34"&gt;&lt;/path&gt;
&lt;ellipse cx="328.0242" cy="201.7311" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_35"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="323.8233" cy="126.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_36"&gt;&lt;/ellipse&gt;
&lt;path d=" M 332.6028,219.9898 L 356.0000,156.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_38"&gt;&lt;/path&gt;
&lt;ellipse cx="332.6028" cy="219.9898" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_39"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="356.0000" cy="156.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_40"&gt;&lt;/ellipse&gt;
&lt;path d=" M 332.9221,222.7317 L 372.6190,186.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_42"&gt;&lt;/path&gt;
&lt;ellipse cx="332.9221" cy="222.7317" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_43"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="372.6190" cy="186.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_44"&gt;&lt;/ellipse&gt;
&lt;path d=" M 333.0845,224.5650 L 380.0967,216.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_46"&gt;&lt;/path&gt;
&lt;ellipse cx="333.0845" cy="224.5650" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_47"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="380.0967" cy="216.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_48"&gt;&lt;/ellipse&gt;
&lt;path d=" M 333.1797,225.9420 L 380.0967,246.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_50"&gt;&lt;/path&gt;
&lt;ellipse cx="333.1797" cy="225.9420" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_51"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="380.0967" cy="246.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_52"&gt;&lt;/ellipse&gt;
&lt;path d=" M 333.2305,226.8608 L 372.6190,276.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_54"&gt;&lt;/path&gt;
&lt;ellipse cx="333.2305" cy="226.8608" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_55"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="372.6190" cy="276.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_56"&gt;&lt;/ellipse&gt;
&lt;path d=" M 333.2711,227.7801 L 356.0000,306.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_58"&gt;&lt;/path&gt;
&lt;ellipse cx="333.2711" cy="227.7801" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_59"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="356.0000" cy="306.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_60"&gt;&lt;/ellipse&gt;
&lt;path d=" M 333.3016,228.6998 L 323.8233,336.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_62"&gt;&lt;/path&gt;
&lt;ellipse cx="333.3016" cy="228.6998" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_63"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="323.8233" cy="336.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_64"&gt;&lt;/ellipse&gt;
&lt;path d=" M 333.3283,230.0798 L 333.3283,366.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_66"&gt;&lt;/path&gt;
&lt;ellipse cx="333.3283" cy="230.0798" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_67"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="333.3283" cy="366.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_68"&gt;&lt;/ellipse&gt;
&lt;g id="ezcGraphTextBox_3"&gt;
&lt;path d=" M 79.9000,42.0000 L 79.9000,0.5000 L 420.6000,0.5000 L 420.6000,42.0000 L 79.9000,42.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_70"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_3_text" x="80.4000" text-length="339.2000px" y="35.0000" style="font-size: 40px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Notebook Vendors
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_29" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Lenovo'"&gt;
&lt;path d=" M 31.4388,311.0000 L 31.4388,295.5000 L 136.8188,295.5000 L 136.8188,311.0000 L 31.4388,311.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_71"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_29_text" x="31.9388" text-length="103.8800px" y="307.9000" style="font-size: 14px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Lenovo (82.4%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_33" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Hewlett-Packard'"&gt;
&lt;path d=" M 311.5112,104.0000 L 311.5112,88.5000 L 476.2512,88.5000 L 476.2512,104.0000 L 311.5112,104.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_72"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_33_text" x="312.0112" text-length="163.2400px" y="100.9000" style="font-size: 14px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Hewlett-Packard (8.6%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_37" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Fujitsu'"&gt;
&lt;path d=" M 329.3233,134.0000 L 329.3233,118.5000 L 434.7033,118.5000 L 434.7033,134.0000 L 329.3233,134.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_73"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_37_text" x="329.8233" text-length="103.8800px" y="130.9000" style="font-size: 14px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Fujitsu (6.5%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_41" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Acer'"&gt;
&lt;path d=" M 361.5000,164.0000 L 361.5000,148.5000 L 444.6200,148.5000 L 444.6200,164.0000 L 361.5000,164.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_74"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_41_text" x="362.0000" text-length="81.6200px" y="160.9000" style="font-size: 14px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Acer (0.7%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_45" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=ASUSTek+Computer'"&gt;
&lt;path d=" M 378.1190,194.0000 L 378.1190,178.5000 L 483.4990,178.5000 L 483.4990,194.0000 L 378.1190,194.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_75"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_45_text" x="378.6190" text-length="103.8800px" y="190.9000" style="font-size: 14px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;ASUSTek (0.4%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_49" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Dell'"&gt;
&lt;path d=" M 385.5967,224.0000 L 385.5967,208.5000 L 468.7167,208.5000 L 468.7167,224.0000 L 385.5967,224.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_76"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_49_text" x="386.0967" text-length="81.6200px" y="220.9000" style="font-size: 14px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Dell (0.4%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_53" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Durabook'"&gt;
&lt;path d=" M 385.5967,254.0000 L 385.5967,238.5000 L 498.3967,238.5000 L 498.3967,254.0000 L 385.5967,254.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_77"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_53_text" x="386.0967" text-length="111.3000px" y="250.9000" style="font-size: 14px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Durabook (0.2%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_57" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Getac'"&gt;
&lt;path d=" M 378.1190,284.0000 L 378.1190,268.5000 L 468.6590,268.5000 L 468.6590,284.0000 L 378.1190,284.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_78"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_57_text" x="378.6190" text-length="89.0400px" y="280.9000" style="font-size: 14px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Getac (0.2%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_61" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Google'"&gt;
&lt;path d=" M 361.5000,314.0000 L 361.5000,298.5000 L 459.4600,298.5000 L 459.4600,314.0000 L 361.5000,314.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_79"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_61_text" x="362.0000" text-length="96.4600px" y="310.9000" style="font-size: 14px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Google (0.2%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_65" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;f=chipcard_vendor&amp;amp;v=Alcor+Micro&amp;amp;p=-2&amp;amp;type=Notebook&amp;amp;vendor=Notebook'"&gt;
&lt;path d=" M 329.3233,344.0000 L 329.3233,328.5000 L 442.1233,328.5000 L 442.1233,344.0000 L 329.3233,344.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_80"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_65_text" x="329.8233" text-length="111.3000px" y="340.9000" style="font-size: 14px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Notebook (0.2%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_69"&gt;
&lt;path d=" M 338.8283,374.0000 L 338.8283,358.5000 L 436.7883,358.5000 L 436.7883,374.0000 L 338.8283,374.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_81"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_69_text" x="339.3283" text-length="96.4600px" y="370.9000" style="font-size: 14px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Others (0.4%)
&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th class="head"&gt;&lt;p&gt;#&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;Vendor&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;Percent&lt;/p&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Lenovo&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;82.4%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Hewlett-Packard&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;8.6%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Fujitsu&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;6.5%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Acer&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.7%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;5&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;ASUSTek Computer&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0.4%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/section&gt;
&lt;section id="o2-micro"&gt;
&lt;h3&gt;O2 Micro&lt;/h3&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="500" height="420" version="1.0" id="ezcGraph"&gt;
&lt;defs&gt;&lt;/defs&gt;
&lt;g id="ezcGraphChart" color-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility"&gt;
&lt;path d=" M 0.0000,420.0000 L 0.0000,0.0000 L 500.0000,0.0000 L 500.0000,420.0000 L 0.0000,420.0000 z " style="fill: #eeeeec; fill-opacity: 1.00; stroke: none;" id="ezcGraphPolygon_1"&gt;&lt;/path&gt;
&lt;path d=" M 0.0000,42.0000 L 0.0000,0.0000 L 500.0000,0.0000 L 500.0000,42.0000 L 0.0000,42.0000 z " style="fill: #000000; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_2"&gt;&lt;/path&gt;
&lt;path d="M 253.55,242.99 L 366.05,242.99 A 112.50,112.50 0 0,1 159.15,304.19 z" style="fill: #3465a4; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_4" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=O2+Micro&amp;amp;p=-2&amp;amp;vendor=Dell'"&gt;&lt;/path&gt;
&lt;path d="M 253.69,243.49 L 365.55,243.49 A 112.00,112.00 0 0,1 159.84,304.34 z" style="fill: none; stroke: #1a3352; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_5"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 155.60,292.20 A 112.50,112.50 0 0,1 272.25,120.72 z" style="fill: #4e9a06; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_6" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=O2+Micro&amp;amp;p=-2&amp;amp;vendor=Fujitsu'"&gt;&lt;/path&gt;
&lt;path d="M 249.55,230.69 L 155.75,291.51 A 112.00,112.00 0 0,1 271.66,121.11 z" style="fill: none; stroke: #274d03; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_7"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 272.25,120.72 A 112.50,112.50 0 0,1 361.51,216.11 z" style="fill: #cc0000; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_8" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=O2+Micro&amp;amp;p=-2&amp;amp;vendor=Toshiba'"&gt;&lt;/path&gt;
&lt;path d="M 250.63,230.41 L 272.64,121.31 A 112.00,112.00 0 0,1 360.95,215.68 z" style="fill: none; stroke: #660000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_9"&gt;&lt;/path&gt;
&lt;path d="M 250.00,231.00 L 361.51,216.11 A 112.50,112.50 0 0,1 362.50,231.00 z" style="fill: #edd400; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircleSector_10" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=O2+Micro&amp;amp;p=-2&amp;amp;vendor=Fujitsu+Siemens'"&gt;&lt;/path&gt;
&lt;path d="M 257.52,230.50 L 361.08,216.67 A 112.00,112.00 0 0,1 362.00,230.50 z" style="fill: none; stroke: #776a00; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircleSector_11"&gt;&lt;/path&gt;
&lt;path d=" M 181.0974,184.1292 L 141.1214,160.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_12"&gt;&lt;/path&gt;
&lt;ellipse cx="181.0974" cy="184.1292" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_13"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="141.1214" cy="160.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_14"&gt;&lt;/ellipse&gt;
&lt;path d=" M 310.8483,174.0620 L 346.7138,145.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_16"&gt;&lt;/path&gt;
&lt;ellipse cx="310.8483" cy="174.0620" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_17"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="346.7138" cy="145.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_18"&gt;&lt;/ellipse&gt;
&lt;path d=" M 333.1499,225.4731 L 380.6756,222.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_20"&gt;&lt;/path&gt;
&lt;ellipse cx="333.1499" cy="225.4731" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_21"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="380.6756" cy="222.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_22"&gt;&lt;/ellipse&gt;
&lt;path d=" M 277.1843,322.8969 L 277.1843,362.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_24"&gt;&lt;/path&gt;
&lt;ellipse cx="277.1843" cy="322.8969" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_25"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="277.1843" cy="362.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_26"&gt;&lt;/ellipse&gt;
&lt;g id="ezcGraphTextBox_3"&gt;
&lt;path d=" M 79.9000,42.0000 L 79.9000,0.5000 L 420.6000,0.5000 L 420.6000,42.0000 L 79.9000,42.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_28"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_3_text" x="80.4000" text-length="339.2000px" y="35.0000" style="font-size: 40px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Notebook Vendors
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_15" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=O2+Micro&amp;amp;p=-2&amp;amp;vendor=Fujitsu'"&gt;
&lt;path d=" M 78.9714,176.0500 L 78.9714,144.4500 L 136.1214,144.4500 L 136.1214,176.0500 L 78.9714,176.0500 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_29"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_15_text" x="79.4714" text-length="55.6500px" y="157.7000" style="font-size: 15px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Fujitsu
&lt;/text&gt;
&lt;text id="ezcGraphTextBox_15_text" x="79.4714" text-length="55.6500px" y="174.2000" style="font-size: 15px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;(37.3%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_19" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=O2+Micro&amp;amp;p=-2&amp;amp;vendor=Toshiba'"&gt;
&lt;path d=" M 352.2138,153.5000 L 352.2138,137.0000 L 472.9638,137.0000 L 472.9638,153.5000 L 352.2138,153.5000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_30"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_19_text" x="352.7138" text-length="119.2500px" y="150.2500" style="font-size: 15px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Toshiba (19.7%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_23" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=O2+Micro&amp;amp;p=-2&amp;amp;vendor=Fujitsu+Siemens'"&gt;
&lt;path d=" M 386.1756,238.0500 L 386.1756,206.4500 L 498.9756,206.4500 L 498.9756,238.0500 L 386.1756,238.0500 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_31"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_23_text" x="386.6756" text-length="55.6500px" y="219.7000" style="font-size: 15px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Fujitsu
&lt;/text&gt;
&lt;text id="ezcGraphTextBox_23_text" x="386.6756" text-length="111.3000px" y="236.2000" style="font-size: 15px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Siemens (2.1%)
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_27" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=O2+Micro&amp;amp;p=-2&amp;amp;vendor=Dell'"&gt;
&lt;path d=" M 282.6843,370.5000 L 282.6843,354.0000 L 379.5843,354.0000 L 379.5843,370.5000 L 282.6843,370.5000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_32"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_27_text" x="283.1843" text-length="95.4000px" y="367.2500" style="font-size: 15px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Dell (40.8%)
&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th class="head"&gt;&lt;p&gt;#&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;Vendor&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;Percent&lt;/p&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Dell&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;40.8%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Fujitsu&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;37.3%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Toshiba&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;19.7%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Fujitsu Siemens&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;2.1%&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/section&gt;
&lt;section id="upek"&gt;
&lt;h3&gt;Upek&lt;/h3&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="500" height="420" version="1.0" id="ezcGraph"&gt;
&lt;defs&gt;&lt;/defs&gt;
&lt;g id="ezcGraphChart" color-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility"&gt;
&lt;path d=" M 0.0000,420.0000 L 0.0000,0.0000 L 500.0000,0.0000 L 500.0000,420.0000 L 0.0000,420.0000 z " style="fill: #eeeeec; fill-opacity: 1.00; stroke: none;" id="ezcGraphPolygon_1"&gt;&lt;/path&gt;
&lt;path d=" M 0.0000,42.0000 L 0.0000,0.0000 L 500.0000,0.0000 L 500.0000,42.0000 L 0.0000,42.0000 z " style="fill: #000000; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_2"&gt;&lt;/path&gt;
&lt;ellipse cx="237.5000" cy="231.0000" rx="112.5000" ry="112.5000" style="fill: #3465a4; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircle_4" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Upek&amp;amp;p=-2&amp;amp;vendor=Lenovo'"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="237.5000" cy="231.0000" rx="112.0000" ry="112.0000" style="fill: none; stroke: #1a3352; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircle_5"&gt;&lt;/ellipse&gt;
&lt;path d=" M 154.1667,231.0000 L 119.0000,231.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_6"&gt;&lt;/path&gt;
&lt;ellipse cx="154.1667" cy="231.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_7"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="119.0000" cy="231.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_8"&gt;&lt;/ellipse&gt;
&lt;g id="ezcGraphTextBox_3"&gt;
&lt;path d=" M 79.9000,42.0000 L 79.9000,0.5000 L 420.6000,0.5000 L 420.6000,42.0000 L 79.9000,42.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_10"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_3_text" x="80.4000" text-length="339.2000px" y="35.0000" style="font-size: 40px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Notebook Vendors
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_9" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Upek&amp;amp;p=-2&amp;amp;vendor=Lenovo'"&gt;
&lt;path d=" M 36.1800,250.0500 L 36.1800,212.4500 L 114.0000,212.4500 L 114.0000,250.0500 L 36.1800,250.0500 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_11"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_9_text" x="55.7600" text-length="57.2400px" y="228.2500" style="font-size: 18px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Lenovo
&lt;/text&gt;
&lt;text id="ezcGraphTextBox_9_text" x="36.6800" text-length="76.3200px" y="248.0500" style="font-size: 18px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;(100.0%)
&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;&lt;p&gt;All of Upek readers are used by Lenovo.&lt;/p&gt;
&lt;p&gt;It looks like the Upek devices are "TouchChip Fingerprint Coprocessor"
and not an "Integrated Smart Card Reader". I don't know why they are
listed as "Chipcard Vendor". Perhaps it is a bug or limitation of
&lt;a class="reference external" href="https://linux-hardware.org/"&gt;https://linux-hardware.org/&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="lenovo"&gt;
&lt;h3&gt;Lenovo&lt;/h3&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="500" height="420" version="1.0" id="ezcGraph"&gt;
&lt;defs&gt;&lt;/defs&gt;
&lt;g id="ezcGraphChart" color-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility"&gt;
&lt;path d=" M 0.0000,420.0000 L 0.0000,0.0000 L 500.0000,0.0000 L 500.0000,420.0000 L 0.0000,420.0000 z " style="fill: #eeeeec; fill-opacity: 1.00; stroke: none;" id="ezcGraphPolygon_1"&gt;&lt;/path&gt;
&lt;path d=" M 0.0000,42.0000 L 0.0000,0.0000 L 500.0000,0.0000 L 500.0000,42.0000 L 0.0000,42.0000 z " style="fill: #000000; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_2"&gt;&lt;/path&gt;
&lt;ellipse cx="237.5000" cy="231.0000" rx="112.5000" ry="112.5000" style="fill: #3465a4; fill-opacity: 1.00; stroke: none; cursor: pointer;" id="ezcGraphCircle_4" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Lenovo&amp;amp;p=-2&amp;amp;vendor=Lenovo'"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="237.5000" cy="231.0000" rx="112.0000" ry="112.0000" style="fill: none; stroke: #1a3352; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphCircle_5"&gt;&lt;/ellipse&gt;
&lt;path d=" M 154.1667,231.0000 L 119.0000,231.0000" style="fill: none; stroke: #000000; stroke-width: 1; stroke-opacity: 1.00; stroke-linecap: round; stroke-linejoin: round;" id="ezcGraphLine_6"&gt;&lt;/path&gt;
&lt;ellipse cx="154.1667" cy="231.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_7"&gt;&lt;/ellipse&gt;
&lt;ellipse cx="119.0000" cy="231.0000" rx="3.0000" ry="3.0000" style="fill: #000000; fill-opacity: 1.00; stroke: none;" id="ezcGraphCircle_8"&gt;&lt;/ellipse&gt;
&lt;g id="ezcGraphTextBox_3"&gt;
&lt;path d=" M 79.9000,42.0000 L 79.9000,0.5000 L 420.6000,0.5000 L 420.6000,42.0000 L 79.9000,42.0000 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_10"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_3_text" x="80.4000" text-length="339.2000px" y="35.0000" style="font-size: 40px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Notebook Vendors
&lt;/text&gt;
&lt;/g&gt;
&lt;g id="ezcGraphTextBox_9" style=" cursor: pointer;" onclick="top.location = 'https://linux-hardware.org/?view=computers&amp;amp;type=notebook&amp;amp;f=chipcard_vendor&amp;amp;v=Lenovo&amp;amp;p=-2&amp;amp;vendor=Lenovo'"&gt;
&lt;path d=" M 36.1800,250.0500 L 36.1800,212.4500 L 114.0000,212.4500 L 114.0000,250.0500 L 36.1800,250.0500 z " style="fill: #ffffff; fill-opacity: 0.00; stroke: none;" id="ezcGraphPolygon_11"&gt;&lt;/path&gt;
&lt;text id="ezcGraphTextBox_9_text" x="55.7600" text-length="57.2400px" y="228.2500" style="font-size: 18px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;Lenovo
&lt;/text&gt;
&lt;text id="ezcGraphTextBox_9_text" x="36.6800" text-length="76.3200px" y="248.0500" style="font-size: 18px; font-family: 'Arial'; fill: #2e3436; fill-opacity: 1.00; stroke: none;"&gt;(100.0%)
&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;&lt;p&gt;Unsurprisingly, all of Lenovo readers are used by... Lenovo.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="corresponding-ccid-devices"&gt;
&lt;h2&gt;Corresponding CCID devices&lt;/h2&gt;
&lt;p&gt;It is possible to list the CCID devices of each manufacturer that I know
of:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://ccid.apdu.fr/select_readers/?iManufacturer~broadcom"&gt;Broadcom&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://ccid.apdu.fr/select_readers/?iManufacturer~alcor%20micro"&gt;Alcor Micro&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://ccid.apdu.fr/select_readers/?iManufacturer~O2"&gt;O2 Micro&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upek (not smart card readers)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://ccid.apdu.fr/select_readers/?iManufacturer~Lenovo"&gt;Lenovo&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Only three main vendors of smart card readers are used in laptops: Broadcom,
Alcor Micro and O2 Micro.&lt;/p&gt;
&lt;p&gt;Do they produce good products? Are their products supported by my CCID
driver? These are both very good questions, but for other blog articles.
To be continued...&lt;/p&gt;
&lt;/section&gt;</description><category>ccid</category><guid>https://blog.apdu.fr/posts/2026/03/laptops-and-smart-card-readers/</guid><pubDate>Tue, 03 Mar 2026 20:29:45 GMT</pubDate></item><item><title>SCARD_CTL_CODE(3601): USB path of the reader</title><link>https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/</link><dc:creator>Ludovic Rousseau</dc:creator><description>&lt;p&gt;In version &lt;a class="reference external" href="https://blog.apdu.fr/posts/2026/02/new-version-of-libccid-171"&gt;1.7.1&lt;/a&gt; of my CCID driver I added a new service with the
Control Code &lt;code class="docutils literal"&gt;SCARD_CTL_CODE(3601)&lt;/code&gt;.&lt;/p&gt;
&lt;section id="problem"&gt;
&lt;h2&gt;Problem&lt;/h2&gt;
&lt;p&gt;Some people use two (or more) readers. And each reader plays a specific
role in their application. It is therefore important to identify each one.&lt;/p&gt;
&lt;p&gt;While it is often possible to use the PC/SC reader name (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;), if you have two identical readers
with no serial numbers, it becomes impossible to distinguish between
them.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="solution"&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;A USB device is connected to a USB bus with a specific topology. The
&lt;code class="docutils literal"&gt;lsusb &lt;span class="pre"&gt;--tree&lt;/span&gt;&lt;/code&gt; command, for example, can display the USB bus topology.
The output looks like this:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_b94df7abab3142c8a0926b7eb14f4b38-1" name="rest_code_b94df7abab3142c8a0926b7eb14f4b38-1" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_b94df7abab3142c8a0926b7eb14f4b38-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;lsusb&lt;span class="w"&gt; &lt;/span&gt;-t
&lt;a id="rest_code_b94df7abab3142c8a0926b7eb14f4b38-2" name="rest_code_b94df7abab3142c8a0926b7eb14f4b38-2" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_b94df7abab3142c8a0926b7eb14f4b38-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/16p, 480M&lt;/span&gt;
&lt;a id="rest_code_b94df7abab3142c8a0926b7eb14f4b38-3" name="rest_code_b94df7abab3142c8a0926b7eb14f4b38-3" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_b94df7abab3142c8a0926b7eb14f4b38-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;    |__ Port 003: Dev 039, If 0, Class=Chip/SmartCard, Driver=usbfs, 12M&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The smart card reader is connected to USB Port 003 on Bus 001. These
numbers are fixed and linked to the computer's physical USB port.
Disconnecting and reconnecting the reader to the same USB port will
result in the same topology.&lt;/p&gt;
&lt;p&gt;On GNU/Linux, the device number &lt;cite&gt;will&lt;/cite&gt; change. For example, if I
disconnect and reconnect the device, the reader's device number (Dev)
will change from 039 to 040.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="scard-ctl-code-3601"&gt;
&lt;h2&gt;SCARD_CTL_CODE(3601)&lt;/h2&gt;
&lt;p&gt;This code is specific to my CCID driver. It comes after &lt;code class="docutils literal"&gt;SCARD_CTL_CODE(3600)&lt;/code&gt;
that is also specific/proprietary and used for MEP (see
&lt;a class="reference external" href="https://blog.apdu.fr/posts/2024/06/ccid-driver-and-multiple-enabled-profiles-mep/"&gt;CCID driver and Multiple Enabled Profiles (MEP)&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Ideally, we would use a code defined by the &lt;a class="reference external" href="https://pcscworkgroup.com/"&gt;PC/SC Workgroup&lt;/a&gt; but this group is essentially defunct and
Microsoft is no longer a member. Microsoft stopped following the
PC/SC Workgroup Specification a long time ago. Therefore, even if a name is
defined by the PC/SC Workgroup, it will not be available on Windows.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="api-documentation"&gt;
&lt;h2&gt;API documentation&lt;/h2&gt;
&lt;p&gt;Use &lt;a class="reference external" href="https://pcsclite.apdu.fr/api/group__API.html#gac3454d4657110fd7f753b2d3d8f4e32f"&gt;SCardControl()&lt;/a&gt;
to send the control code &lt;code class="docutils literal"&gt;SCARD_CTL_CODE(3601)&lt;/code&gt; to the reader. This
code will be intercepted by the CCID driver. On return, you get a
NUL-terminated string in the format
&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;&amp;lt;bus&amp;gt;-&amp;lt;port[.port[.port]]&amp;gt;:&amp;lt;config&amp;gt;.&amp;lt;interface&amp;gt;&lt;/span&gt;&lt;/code&gt; (e.g.,
&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;1-1.3.2:1.0&lt;/span&gt;&lt;/code&gt;) as found in &lt;code class="docutils literal"&gt;/sys/bus/usb/devices/&lt;/code&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="source-code"&gt;
&lt;h2&gt;Source code&lt;/h2&gt;
&lt;p&gt;This example code is also included in the CCID driver's source code, in the
&lt;a class="reference external" href="https://salsa.debian.org/rousseau/CCID/-/blob/master/examples/get_usb_path.py?ref_type=heads"&gt;examples/get_usb_path.py&lt;/a&gt;
file.&lt;/p&gt;
&lt;p&gt;The code also displays the &lt;code class="docutils literal"&gt;SCARD_ATTR_CHANNEL_ID&lt;/code&gt; of the reader (see
&lt;a class="reference external" href="https://blog.apdu.fr/posts/2020/04/scardattrchannelid-and-usb-devices/"&gt;SCARD_ATTR_CHANNEL_ID and USB devices&lt;/a&gt;). This is an official PC/SC
feature. It can be used when topology information is obtained from another
source.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code python"&gt;&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-1" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-1" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-1"&gt;&lt;/a&gt;&lt;span class="ch"&gt;#! /usr/bin/env python3&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-2" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-2" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-2"&gt;&lt;/a&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-3" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-3" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-3"&gt;&lt;/a&gt;&lt;span class="sd"&gt;"""&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-4" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-4" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-4"&gt;&lt;/a&gt;&lt;span class="sd"&gt;get_usb_path.py: get USB path of readers&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-5" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-5" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-5"&gt;&lt;/a&gt;&lt;span class="sd"&gt;Copyright (C) 2026  Ludovic Rousseau&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-6" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-6" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-6"&gt;&lt;/a&gt;&lt;span class="sd"&gt;"""&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-7" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-7" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-7"&gt;&lt;/a&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-8" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-8" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-8"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#   This program is free software; you can redistribute it and/or modify&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-9" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-9" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-9"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#   it under the terms of the GNU General Public License as published by&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-10" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-10" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-10"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#   the Free Software Foundation; either version 3 of the License, or&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-11" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-11" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-11"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#   (at your option) any later version.&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-12" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-12" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-12"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-13" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-13" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-13"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#   This program is distributed in the hope that it will be useful,&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-14" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-14" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-14"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#   but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-15" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-15" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-15"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-16" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-16" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-16"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#   GNU General Public License for more details.&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-17" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-17" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-17"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-18" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-18" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-18"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#   You should have received a copy of the GNU General Public License along&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-19" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-19" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-19"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#   with this program; if not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-20" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-20" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-20"&gt;&lt;/a&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-21" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-21" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-21"&gt;&lt;/a&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;struct&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-22" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-22" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-22"&gt;&lt;/a&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;smartcard&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-23" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-23" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-23"&gt;&lt;/a&gt;&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;smartcard.pcsc.PCSCPart10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;SCARD_CTL_CODE&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-24" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-24" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-24"&gt;&lt;/a&gt;&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;smartcard.scard&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-25" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-25" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-25"&gt;&lt;/a&gt;    &lt;span class="n"&gt;SCARD_E_NOT_TRANSACTED&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-26" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-26" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-26"&gt;&lt;/a&gt;    &lt;span class="n"&gt;SCARD_E_INVALID_PARAMETER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-27" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-27" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-27"&gt;&lt;/a&gt;    &lt;span class="n"&gt;SCARD_ATTR_CHANNEL_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-28" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-28" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-28"&gt;&lt;/a&gt;    &lt;span class="n"&gt;SCARD_SHARE_DIRECT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-29" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-29" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-29"&gt;&lt;/a&gt;    &lt;span class="n"&gt;SCARD_LEAVE_CARD&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-30" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-30" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-30"&gt;&lt;/a&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-31" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-31" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-31"&gt;&lt;/a&gt;&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;smartcard.util&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;toASCIIString&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-32" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-32" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-32"&gt;&lt;/a&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-33" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-33" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-33"&gt;&lt;/a&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-34" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-34" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-34"&gt;&lt;/a&gt;&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;get_usb_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-35" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-35" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-35"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;"""&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-36" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-36" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-36"&gt;&lt;/a&gt;&lt;span class="sd"&gt;    Display USB topology&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-37" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-37" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-37"&gt;&lt;/a&gt;&lt;span class="sd"&gt;    """&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-38" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-38" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-38"&gt;&lt;/a&gt;    &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Using:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-39" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-39" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-39"&gt;&lt;/a&gt;    &lt;span class="n"&gt;card_connection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;reader&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;createConnection&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-40" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-40" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-40"&gt;&lt;/a&gt;    &lt;span class="n"&gt;card_connection&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;SCARD_SHARE_DIRECT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;disposition&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;SCARD_LEAVE_CARD&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-41" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-41" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-41"&gt;&lt;/a&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-42" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-42" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-42"&gt;&lt;/a&gt;    &lt;span class="c1"&gt;# special control code&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-43" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-43" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-43"&gt;&lt;/a&gt;    &lt;span class="n"&gt;ioctl_get_usb_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SCARD_CTL_CODE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3601&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-44" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-44" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-44"&gt;&lt;/a&gt;    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-45" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-45" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-45"&gt;&lt;/a&gt;        &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;card_connection&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;control&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ioctl_get_usb_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-46" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-46" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-46"&gt;&lt;/a&gt;    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;smartcard&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Exceptions&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SmartcardException&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-47" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-47" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-47"&gt;&lt;/a&gt;        &lt;span class="c1"&gt;# SCARD_E_NOT_TRANSACTED returned by pcsc-lite&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-48" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-48" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-48"&gt;&lt;/a&gt;        &lt;span class="c1"&gt;# SCARD_E_INVALID_PARAMETER retruned by macOS&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-49" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-49" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-49"&gt;&lt;/a&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hresult&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;SCARD_E_NOT_TRANSACTED&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SCARD_E_INVALID_PARAMETER&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-50" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-50" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-50"&gt;&lt;/a&gt;            &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Your driver does not (yet) support SCARD_CTL_CODE(3601)"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-51" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-51" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-51"&gt;&lt;/a&gt;            &lt;span class="k"&gt;return&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-52" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-52" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-52"&gt;&lt;/a&gt;        &lt;span class="k"&gt;raise&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-53" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-53" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-53"&gt;&lt;/a&gt;    &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"USB path:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;toASCIIString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-54" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-54" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-54"&gt;&lt;/a&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-55" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-55" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-55"&gt;&lt;/a&gt;    &lt;span class="c1"&gt;# get Channel ID&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-56" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-56" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-56"&gt;&lt;/a&gt;    &lt;span class="n"&gt;attrib&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;card_connection&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getAttrib&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SCARD_ATTR_CHANNEL_ID&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-57" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-57" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-57"&gt;&lt;/a&gt;    &lt;span class="n"&gt;ddddcccc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;struct&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;unpack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"i"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;bytearray&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;attrib&lt;/span&gt;&lt;span class="p"&gt;))[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-58" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-58" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-58"&gt;&lt;/a&gt;    &lt;span class="n"&gt;dddd&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ddddcccc&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-59" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-59" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-59"&gt;&lt;/a&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;dddd&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mh"&gt;0x0020&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-60" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-60" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-60"&gt;&lt;/a&gt;        &lt;span class="n"&gt;bus&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ddddcccc&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mh"&gt;0xFF00&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-61" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-61" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-61"&gt;&lt;/a&gt;        &lt;span class="n"&gt;addr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ddddcccc&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mh"&gt;0xFF&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-62" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-62" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-62"&gt;&lt;/a&gt;        &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;" USB: bus: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;bus&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;, addr: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;addr&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-63" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-63" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-63"&gt;&lt;/a&gt;    &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-64" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-64" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-64"&gt;&lt;/a&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-65" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-65" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-65"&gt;&lt;/a&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-66" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-66" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-66"&gt;&lt;/a&gt;&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-67" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-67" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-67"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;"""&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-68" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-68" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-68"&gt;&lt;/a&gt;&lt;span class="sd"&gt;    main&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-69" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-69" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-69"&gt;&lt;/a&gt;&lt;span class="sd"&gt;    """&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-70" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-70" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-70"&gt;&lt;/a&gt;    &lt;span class="c1"&gt;# for all the available readers&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-71" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-71" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-71"&gt;&lt;/a&gt;    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;reader&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;smartcard&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;readers&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-72" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-72" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-72"&gt;&lt;/a&gt;        &lt;span class="n"&gt;get_usb_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-73" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-73" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-73"&gt;&lt;/a&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-74" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-74" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-74"&gt;&lt;/a&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-75" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-75" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-75"&gt;&lt;/a&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;"__main__"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_79a355baae1d4ff48b3f2cec493940a5-76" name="rest_code_79a355baae1d4ff48b3f2cec493940a5-76" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_79a355baae1d4ff48b3f2cec493940a5-76"&gt;&lt;/a&gt;    &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="output"&gt;
&lt;h2&gt;Output&lt;/h2&gt;
&lt;section id="the-reader-is-connected-directly-to-the-computer"&gt;
&lt;h3&gt;The reader is connected directly to the computer&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_57f5d66a4216408ba12e59e724bbc05c-1" name="rest_code_57f5d66a4216408ba12e59e724bbc05c-1" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_57f5d66a4216408ba12e59e724bbc05c-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;./get_usb_path.py
&lt;a id="rest_code_57f5d66a4216408ba12e59e724bbc05c-2" name="rest_code_57f5d66a4216408ba12e59e724bbc05c-2" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_57f5d66a4216408ba12e59e724bbc05c-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;Using: Gemalto PC Twin Reader (70D7E2EE) 01 00&lt;/span&gt;
&lt;a id="rest_code_57f5d66a4216408ba12e59e724bbc05c-3" name="rest_code_57f5d66a4216408ba12e59e724bbc05c-3" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_57f5d66a4216408ba12e59e724bbc05c-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;USB path: 1-3:1.0&lt;/span&gt;
&lt;a id="rest_code_57f5d66a4216408ba12e59e724bbc05c-4" name="rest_code_57f5d66a4216408ba12e59e724bbc05c-4" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_57f5d66a4216408ba12e59e724bbc05c-4"&gt;&lt;/a&gt;&lt;span class="go"&gt; USB: bus: 1, addr: 39&lt;/span&gt;
&lt;a id="rest_code_57f5d66a4216408ba12e59e724bbc05c-5" name="rest_code_57f5d66a4216408ba12e59e724bbc05c-5" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_57f5d66a4216408ba12e59e724bbc05c-5"&gt;&lt;/a&gt;
&lt;a id="rest_code_57f5d66a4216408ba12e59e724bbc05c-6" name="rest_code_57f5d66a4216408ba12e59e724bbc05c-6" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_57f5d66a4216408ba12e59e724bbc05c-6"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;lsusb&lt;span class="w"&gt; &lt;/span&gt;-t
&lt;a id="rest_code_57f5d66a4216408ba12e59e724bbc05c-7" name="rest_code_57f5d66a4216408ba12e59e724bbc05c-7" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_57f5d66a4216408ba12e59e724bbc05c-7"&gt;&lt;/a&gt;&lt;span class="go"&gt;/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/16p, 480M&lt;/span&gt;
&lt;a id="rest_code_57f5d66a4216408ba12e59e724bbc05c-8" name="rest_code_57f5d66a4216408ba12e59e724bbc05c-8" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_57f5d66a4216408ba12e59e724bbc05c-8"&gt;&lt;/a&gt;&lt;span class="go"&gt;    |__ Port 003: Dev 039, If 0, Class=Chip/SmartCard, Driver=usbfs, 12M&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The USB path is &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;1-3:1.0&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This corresponds to bus 1, port 3, configuration 1 and interface 0. You
can ignore the configuration and interface details for non-composite USB
devices.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="connected-to-another-usb-port-of-the-computer"&gt;
&lt;h3&gt;Connected to another USB port of the computer&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_d8bee77caf904891a7bbaf93d9214f4d-1" name="rest_code_d8bee77caf904891a7bbaf93d9214f4d-1" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_d8bee77caf904891a7bbaf93d9214f4d-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;./get_usb_path.py
&lt;a id="rest_code_d8bee77caf904891a7bbaf93d9214f4d-2" name="rest_code_d8bee77caf904891a7bbaf93d9214f4d-2" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_d8bee77caf904891a7bbaf93d9214f4d-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;Using: Gemalto PC Twin Reader (70D7E2EE) 01 00&lt;/span&gt;
&lt;a id="rest_code_d8bee77caf904891a7bbaf93d9214f4d-3" name="rest_code_d8bee77caf904891a7bbaf93d9214f4d-3" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_d8bee77caf904891a7bbaf93d9214f4d-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;USB path: 1-6:1.0&lt;/span&gt;
&lt;a id="rest_code_d8bee77caf904891a7bbaf93d9214f4d-4" name="rest_code_d8bee77caf904891a7bbaf93d9214f4d-4" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_d8bee77caf904891a7bbaf93d9214f4d-4"&gt;&lt;/a&gt;&lt;span class="go"&gt; USB: bus: 1, addr: 40&lt;/span&gt;
&lt;a id="rest_code_d8bee77caf904891a7bbaf93d9214f4d-5" name="rest_code_d8bee77caf904891a7bbaf93d9214f4d-5" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_d8bee77caf904891a7bbaf93d9214f4d-5"&gt;&lt;/a&gt;
&lt;a id="rest_code_d8bee77caf904891a7bbaf93d9214f4d-6" name="rest_code_d8bee77caf904891a7bbaf93d9214f4d-6" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_d8bee77caf904891a7bbaf93d9214f4d-6"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;lsusb&lt;span class="w"&gt; &lt;/span&gt;-t
&lt;a id="rest_code_d8bee77caf904891a7bbaf93d9214f4d-7" name="rest_code_d8bee77caf904891a7bbaf93d9214f4d-7" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_d8bee77caf904891a7bbaf93d9214f4d-7"&gt;&lt;/a&gt;&lt;span class="go"&gt;/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/16p, 480M&lt;/span&gt;
&lt;a id="rest_code_d8bee77caf904891a7bbaf93d9214f4d-8" name="rest_code_d8bee77caf904891a7bbaf93d9214f4d-8" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_d8bee77caf904891a7bbaf93d9214f4d-8"&gt;&lt;/a&gt;&lt;span class="go"&gt;    |__ Port 006: Dev 040, If 0, Class=Chip/SmartCard, Driver=usbfs, 12M&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Note:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;the Port changed from 003 to 006&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the Dev changed from 039 to 040&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="connected-to-a-hub"&gt;
&lt;h3&gt;Connected to a hub&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_15c13b75bf6045a98c636b0404d21c2f-1" name="rest_code_15c13b75bf6045a98c636b0404d21c2f-1" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_15c13b75bf6045a98c636b0404d21c2f-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;./get_usb_path.py
&lt;a id="rest_code_15c13b75bf6045a98c636b0404d21c2f-2" name="rest_code_15c13b75bf6045a98c636b0404d21c2f-2" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_15c13b75bf6045a98c636b0404d21c2f-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;Using: Gemalto PC Twin Reader (70D7E2EE) 01 00&lt;/span&gt;
&lt;a id="rest_code_15c13b75bf6045a98c636b0404d21c2f-3" name="rest_code_15c13b75bf6045a98c636b0404d21c2f-3" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_15c13b75bf6045a98c636b0404d21c2f-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;USB path: 1-3.1:1.0&lt;/span&gt;
&lt;a id="rest_code_15c13b75bf6045a98c636b0404d21c2f-4" name="rest_code_15c13b75bf6045a98c636b0404d21c2f-4" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_15c13b75bf6045a98c636b0404d21c2f-4"&gt;&lt;/a&gt;&lt;span class="go"&gt; USB: bus: 1, addr: 42&lt;/span&gt;
&lt;a id="rest_code_15c13b75bf6045a98c636b0404d21c2f-5" name="rest_code_15c13b75bf6045a98c636b0404d21c2f-5" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_15c13b75bf6045a98c636b0404d21c2f-5"&gt;&lt;/a&gt;
&lt;a id="rest_code_15c13b75bf6045a98c636b0404d21c2f-6" name="rest_code_15c13b75bf6045a98c636b0404d21c2f-6" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_15c13b75bf6045a98c636b0404d21c2f-6"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;lsusb&lt;span class="w"&gt; &lt;/span&gt;-t
&lt;a id="rest_code_15c13b75bf6045a98c636b0404d21c2f-7" name="rest_code_15c13b75bf6045a98c636b0404d21c2f-7" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_15c13b75bf6045a98c636b0404d21c2f-7"&gt;&lt;/a&gt;&lt;span class="go"&gt;/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/16p, 480M&lt;/span&gt;
&lt;a id="rest_code_15c13b75bf6045a98c636b0404d21c2f-8" name="rest_code_15c13b75bf6045a98c636b0404d21c2f-8" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_15c13b75bf6045a98c636b0404d21c2f-8"&gt;&lt;/a&gt;&lt;span class="go"&gt;    |__ Port 003: Dev 041, If 0, Class=Hub, Driver=hub/4p, 480M&lt;/span&gt;
&lt;a id="rest_code_15c13b75bf6045a98c636b0404d21c2f-9" name="rest_code_15c13b75bf6045a98c636b0404d21c2f-9" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_15c13b75bf6045a98c636b0404d21c2f-9"&gt;&lt;/a&gt;&lt;span class="go"&gt;        |__ Port 001: Dev 042, If 0, Class=Chip/SmartCard, Driver=usbfs, 12M&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Note:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Port 003 is now used by the USB hub (Class=Hub)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the reader uses Port 001 of the hub&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the USB path has one extra level &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;1-3.1:1.0&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="connected-to-another-port-of-the-hub"&gt;
&lt;h3&gt;Connected to another port of the hub&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_8672dcf73d7c4e07b81e04a443690757-1" name="rest_code_8672dcf73d7c4e07b81e04a443690757-1" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_8672dcf73d7c4e07b81e04a443690757-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;./get_usb_path.py
&lt;a id="rest_code_8672dcf73d7c4e07b81e04a443690757-2" name="rest_code_8672dcf73d7c4e07b81e04a443690757-2" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_8672dcf73d7c4e07b81e04a443690757-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;Using: Gemalto PC Twin Reader (70D7E2EE) 01 00&lt;/span&gt;
&lt;a id="rest_code_8672dcf73d7c4e07b81e04a443690757-3" name="rest_code_8672dcf73d7c4e07b81e04a443690757-3" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_8672dcf73d7c4e07b81e04a443690757-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;USB path: 1-3.4:1.0&lt;/span&gt;
&lt;a id="rest_code_8672dcf73d7c4e07b81e04a443690757-4" name="rest_code_8672dcf73d7c4e07b81e04a443690757-4" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_8672dcf73d7c4e07b81e04a443690757-4"&gt;&lt;/a&gt;&lt;span class="go"&gt; USB: bus: 1, addr: 43&lt;/span&gt;
&lt;a id="rest_code_8672dcf73d7c4e07b81e04a443690757-5" name="rest_code_8672dcf73d7c4e07b81e04a443690757-5" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_8672dcf73d7c4e07b81e04a443690757-5"&gt;&lt;/a&gt;
&lt;a id="rest_code_8672dcf73d7c4e07b81e04a443690757-6" name="rest_code_8672dcf73d7c4e07b81e04a443690757-6" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_8672dcf73d7c4e07b81e04a443690757-6"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;lsusb&lt;span class="w"&gt; &lt;/span&gt;-t
&lt;a id="rest_code_8672dcf73d7c4e07b81e04a443690757-7" name="rest_code_8672dcf73d7c4e07b81e04a443690757-7" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_8672dcf73d7c4e07b81e04a443690757-7"&gt;&lt;/a&gt;&lt;span class="go"&gt;/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/16p, 480M&lt;/span&gt;
&lt;a id="rest_code_8672dcf73d7c4e07b81e04a443690757-8" name="rest_code_8672dcf73d7c4e07b81e04a443690757-8" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_8672dcf73d7c4e07b81e04a443690757-8"&gt;&lt;/a&gt;&lt;span class="go"&gt;    |__ Port 003: Dev 041, If 0, Class=Hub, Driver=hub/4p, 480M&lt;/span&gt;
&lt;a id="rest_code_8672dcf73d7c4e07b81e04a443690757-9" name="rest_code_8672dcf73d7c4e07b81e04a443690757-9" href="https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/#rest_code_8672dcf73d7c4e07b81e04a443690757-9"&gt;&lt;/a&gt;&lt;span class="go"&gt;        |__ Port 004: Dev 043, If 0, Class=Chip/SmartCard, Driver=usbfs, 12M&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Note:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;the reader is connected to Port 004 of the hub&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the hub is still connected to Port 003&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Not everyone will need or use this feature. However, it can be very
important if you have a large number of readers.&lt;/p&gt;
&lt;p&gt;Many Thanks to Diego de los Santos for the idea and implementation.&lt;/p&gt;
&lt;/section&gt;</description><category>ccid</category><category>code</category><guid>https://blog.apdu.fr/posts/2026/02/scard_ctl_code3601-usb-path-of-the-reader/</guid><pubDate>Sun, 08 Feb 2026 12:10:17 GMT</pubDate></item></channel></rss>