<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Bensuperpc</title>
    <subtitle>Bensuperpc website, talk about software and hardware stuff.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://bensuperpc.github.io/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://bensuperpc.github.io"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2025-12-27T00:00:00+00:00</updated>
    <id>https://bensuperpc.github.io/atom.xml</id>
    <entry xml:lang="en">
        <title>A guide to SFF PCs (WIP)</title>
        <published>2025-12-27T00:00:00+00:00</published>
        <updated>2025-12-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://bensuperpc.github.io/documentation/hardware/sff-pc/guide-sff-pc/"/>
        <id>https://bensuperpc.github.io/documentation/hardware/sff-pc/guide-sff-pc/</id>
        
        <content type="html" xml:base="https://bensuperpc.github.io/documentation/hardware/sff-pc/guide-sff-pc/">&lt;h1 id=&quot;a-guide-to-sff-pcs&quot;&gt;A Guide to SFF PCs&lt;&#x2F;h1&gt;
&lt;p&gt;Welcome to the guide to SFF PCs.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;introduction-to-sff-pcs&quot;&gt;Introduction to SFF PCs&lt;&#x2F;h2&gt;
&lt;p&gt;In this section, we will explore different aspects of SFF PCs, including their components and software, with a focus on &lt;strong&gt;Linux&lt;&#x2F;strong&gt; and &lt;strong&gt;open-source&lt;&#x2F;strong&gt; solutions, Windows have often lower lifetime support and proprietary software.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;what-is-an-sff-pc&quot;&gt;What is an SFF PC?&lt;&#x2F;h3&gt;
&lt;p&gt;An SFF PC is a &lt;strong&gt;Small Form Factor PC&lt;&#x2F;strong&gt;, it is usually very compact, power-efficient, and can be used for various purposes, they are commonly found in schools, offices, and home servers.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;why-should-i-choose-an-sff-pc&quot;&gt;Why should I choose an SFF PC?&lt;&#x2F;h3&gt;
&lt;p&gt;There are many reasons to choose an SFF PC:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compact&lt;&#x2F;strong&gt;: SFF PCs are very small and can fit almost anywhere. (~1-3 liters)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Power-efficient&lt;&#x2F;strong&gt;: They consume less power, especially models with T or U series processors.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Affordable&lt;&#x2F;strong&gt;: SFF PCs are often cheaper than traditional full desktop PCs, especially on the second-hand market.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;why-shouldn-t-i-choose-an-sff-pc&quot;&gt;Why shouldn&#x27;t I choose an SFF PC?&lt;&#x2F;h3&gt;
&lt;p&gt;There are also some drawbacks to consider:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Limited upgradeability&lt;&#x2F;strong&gt;: Many SFF PCs have limited upgrade options, and some components are not replaceable.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Fewer ports&lt;&#x2F;strong&gt;: Compared to larger desktops, SFF PCs typically have fewer connectivity options.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Performance constraints&lt;&#x2F;strong&gt;: Due to their small size and thermal limitations, performance may be lower than full-sized PCs.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Proprietary components&lt;&#x2F;strong&gt;: Some models use proprietary parts, making repairs and upgrades more difficult.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;what-are-some-examples-of-sff-pcs&quot;&gt;What are some examples of SFF PCs?&lt;&#x2F;h3&gt;
&lt;p&gt;Here are some well-known brands and models:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lenovo ThinkCentre&lt;&#x2F;strong&gt;: M73 Tiny, M710q, M720q, M70q gen 1, M75q gen 1, M90q gen 3&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Dell OptiPlex&lt;&#x2F;strong&gt;: 3040, 3050, 3060, 3070, 5040, 5050, 5060, 5070&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;HP EliteDesk&lt;&#x2F;strong&gt;: 800 G1 Mini, 800 G2 Mini&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Intel NUC&lt;&#x2F;strong&gt;: NUC6i3SYH, NUC6i5SYH, NUC6i7KYK, NUC7i3BNH, NUC7i5BNH, NUC7i7BNH&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Zotac ZBOX&lt;&#x2F;strong&gt;: CI660 Nano, CI640 Nano, CI620 Nano, CI540 Nano, CI520 Nano, CI327 Nano&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Asus VivoMini&lt;&#x2F;strong&gt;: UN65, UN65U, UN65U-M023M, UN65U-M021M, UN65U-M022M, UN65U-M020M&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Many other brands and models are available on the market.&lt;&#x2F;p&gt;
&lt;p&gt;For second-hand options, i recommend &lt;strong&gt;Lenovo, Dell, and HP&lt;&#x2F;strong&gt;. These brands offer plenty of affordable models that are often upgradable (RAM, SSD, CPU, PSU) and great Linux compatibility.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;arm-sff-pcs&quot;&gt;ARM SFF PCs&lt;&#x2F;h3&gt;
&lt;p&gt;SFF PCs are usually x86-based, but ARM-based SFF PCs have been gaining popularity in recent years, they are generally cheaper and more power-efficient but come with limitations:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Limited software compatibility&lt;&#x2F;strong&gt;: They are not compatible with traditional x86&#x2F;PC software and drivers can be missing or outdated.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Limited upgrade options&lt;&#x2F;strong&gt;: Components are often soldered and non-replaceable.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Lower performance&lt;&#x2F;strong&gt;: Compared to x86 counterparts, ARM-based SFF PCs may struggle with demanding tasks (encoding, gaming, etc.).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;In this guide, we will focus on x86 SFF PCs and the Raspberry Pi.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;sff-pc-components&quot;&gt;SFF PC Components&lt;&#x2F;h2&gt;
&lt;p&gt;In this section, we will look at the main components of SFF PCs.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;cpu-central-processing-unit&quot;&gt;CPU (Central Processing Unit)&lt;&#x2F;h3&gt;
&lt;p&gt;I recommend using &lt;strong&gt;socketed CPUs&lt;&#x2F;strong&gt;, as they allow for future upgrades to more powerful models (within the same TDP range), for example on Thinkcentre tiny M720q, you can upgrade from a slow &lt;strong&gt;Intel Celeron G4900T&lt;&#x2F;strong&gt; to a powerful &lt;strong&gt;Intel i9-9900T&lt;&#x2F;strong&gt; without any issues (somtime just need update of Intel ME and BIOS).&lt;&#x2F;p&gt;
&lt;p&gt;Most SFF PCs come with &lt;strong&gt;35W or 65W CPUs&lt;&#x2F;strong&gt;, &lt;strong&gt;i strongly recommend avoiding CPUs with a higher TDP than what the system supports&lt;&#x2F;strong&gt;, as this can cause overheating and potentially damage the motherboard or PSU.&lt;&#x2F;p&gt;
&lt;p&gt;Many modern software utilizes &lt;strong&gt;AVX2&lt;&#x2F;strong&gt; instructions, which can significantly boost performance in tasks like video encoding&#x2F;decoding, compression, encryption, etc. Every CPU since &lt;strong&gt;Intel Haswell&lt;&#x2F;strong&gt; (2013) and &lt;strong&gt;AMD Zen&lt;&#x2F;strong&gt; (2017) supports AVX2, except for some low-end models like &lt;strong&gt;Intel Celeron&#x2F;Pentium&#x2F;Atom&lt;&#x2F;strong&gt; and &lt;strong&gt;AMD Athlon&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;intel-cpu-generations&quot;&gt;Intel CPU generations&lt;&#x2F;h4&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Brand&lt;&#x2F;th&gt;&lt;th&gt;CPU arch&lt;&#x2F;th&gt;&lt;th&gt;CPU Gen&lt;&#x2F;th&gt;&lt;th&gt;Socket&lt;&#x2F;th&gt;&lt;th&gt;RAM Type&lt;&#x2F;th&gt;&lt;th&gt;Max RAM&lt;&#x2F;th&gt;&lt;th&gt;Year&lt;&#x2F;th&gt;&lt;th&gt;Exemple of SSF PC&lt;&#x2F;th&gt;&lt;th&gt;Remarks&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Core&lt;&#x2F;td&gt;&lt;td&gt;Core 2&lt;&#x2F;td&gt;&lt;td&gt;LGA775&lt;&#x2F;td&gt;&lt;td&gt;DDR2-DDR3&lt;&#x2F;td&gt;&lt;td&gt;8GB&lt;&#x2F;td&gt;&lt;td&gt;2006-2007&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;Huge performance improvement over Netburst&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Penryn&lt;&#x2F;td&gt;&lt;td&gt;Core 2&lt;&#x2F;td&gt;&lt;td&gt;LGA775&lt;&#x2F;td&gt;&lt;td&gt;DDR2-DDR3&lt;&#x2F;td&gt;&lt;td&gt;8GB&lt;&#x2F;td&gt;&lt;td&gt;2007-2008&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;Better perf efficiency&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Nehalem&lt;&#x2F;td&gt;&lt;td&gt;1st Gen&lt;&#x2F;td&gt;&lt;td&gt;LGA1156&lt;&#x2F;td&gt;&lt;td&gt;DDR3&lt;&#x2F;td&gt;&lt;td&gt;16GB&lt;&#x2F;td&gt;&lt;td&gt;2008-2009&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;SMT, Memory controller on CPU and monolithic quad-core&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Westmere&lt;&#x2F;td&gt;&lt;td&gt;1st Gen&lt;&#x2F;td&gt;&lt;td&gt;LGA1156&lt;&#x2F;td&gt;&lt;td&gt;DDR3&lt;&#x2F;td&gt;&lt;td&gt;16GB&lt;&#x2F;td&gt;&lt;td&gt;2010-2011&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;Better perf efficiency&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Sandy Bridge&lt;&#x2F;td&gt;&lt;td&gt;2nd Gen&lt;&#x2F;td&gt;&lt;td&gt;LGA1155&lt;&#x2F;td&gt;&lt;td&gt;DDR3&lt;&#x2F;td&gt;&lt;td&gt;32GB&lt;&#x2F;td&gt;&lt;td&gt;2011-2012&lt;&#x2F;td&gt;&lt;td&gt;M72 tiny&lt;&#x2F;td&gt;&lt;td&gt;Add AVX support, good iGPU and greatly improve perf&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Ivy Bridge&lt;&#x2F;td&gt;&lt;td&gt;3rd Gen&lt;&#x2F;td&gt;&lt;td&gt;LGA1155&lt;&#x2F;td&gt;&lt;td&gt;DDR3&lt;&#x2F;td&gt;&lt;td&gt;32GB&lt;&#x2F;td&gt;&lt;td&gt;2012-2013&lt;&#x2F;td&gt;&lt;td&gt;M72 tiny&lt;&#x2F;td&gt;&lt;td&gt;Better perf efficiency&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Haswell&lt;&#x2F;td&gt;&lt;td&gt;4th Gen&lt;&#x2F;td&gt;&lt;td&gt;LGA1150&lt;&#x2F;td&gt;&lt;td&gt;DDR3&lt;&#x2F;td&gt;&lt;td&gt;32GB&lt;&#x2F;td&gt;&lt;td&gt;2013-2014&lt;&#x2F;td&gt;&lt;td&gt;M73 tiny&lt;&#x2F;td&gt;&lt;td&gt;Support AVX2 and FMA3, improve perf&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Broadwell&lt;&#x2F;td&gt;&lt;td&gt;5th Gen&lt;&#x2F;td&gt;&lt;td&gt;LGA1150&lt;&#x2F;td&gt;&lt;td&gt;DDR3&lt;&#x2F;td&gt;&lt;td&gt;32GB&lt;&#x2F;td&gt;&lt;td&gt;2014-2015&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;Better perf efficiency&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Skylake&lt;&#x2F;td&gt;&lt;td&gt;6th Gen&lt;&#x2F;td&gt;&lt;td&gt;LGA1151&lt;&#x2F;td&gt;&lt;td&gt;DDR3-DDR4&lt;&#x2F;td&gt;&lt;td&gt;64GB&lt;&#x2F;td&gt;&lt;td&gt;2015-2016&lt;&#x2F;td&gt;&lt;td&gt;M700, M710q&lt;&#x2F;td&gt;&lt;td&gt;HEVC&#x2F;VP9 8-bit hardware enc&#x2F;dec, iGPU vulkan and NVMe support&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Kaby Lake&lt;&#x2F;td&gt;&lt;td&gt;7th Gen&lt;&#x2F;td&gt;&lt;td&gt;LGA1151&lt;&#x2F;td&gt;&lt;td&gt;DDR4&lt;&#x2F;td&gt;&lt;td&gt;64GB&lt;&#x2F;td&gt;&lt;td&gt;2016-2017&lt;&#x2F;td&gt;&lt;td&gt;M710q&lt;&#x2F;td&gt;&lt;td&gt;HEVC&#x2F;VP9 10-bit hardware enc&#x2F;dec support&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Coffee Lake&lt;&#x2F;td&gt;&lt;td&gt;8-9th Gen&lt;&#x2F;td&gt;&lt;td&gt;LGA1151&lt;&#x2F;td&gt;&lt;td&gt;DDR4&lt;&#x2F;td&gt;&lt;td&gt;64GB&lt;&#x2F;td&gt;&lt;td&gt;2017-2019&lt;&#x2F;td&gt;&lt;td&gt;M720q&lt;&#x2F;td&gt;&lt;td&gt;Increase core count and remove SMT on 9th gen CPUs&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Comet Lake&lt;&#x2F;td&gt;&lt;td&gt;10th Gen&lt;&#x2F;td&gt;&lt;td&gt;LGA1200&lt;&#x2F;td&gt;&lt;td&gt;DDR4&lt;&#x2F;td&gt;&lt;td&gt;128GB&lt;&#x2F;td&gt;&lt;td&gt;2020-2021&lt;&#x2F;td&gt;&lt;td&gt;M70q gen 1&lt;&#x2F;td&gt;&lt;td&gt;Re-add SMT on most CPUs&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Rocket Lake&lt;&#x2F;td&gt;&lt;td&gt;11th Gen&lt;&#x2F;td&gt;&lt;td&gt;LGA1200&lt;&#x2F;td&gt;&lt;td&gt;DDR4&lt;&#x2F;td&gt;&lt;td&gt;128GB&lt;&#x2F;td&gt;&lt;td&gt;2021-2022&lt;&#x2F;td&gt;&lt;td&gt;M70q gen 2&lt;&#x2F;td&gt;&lt;td&gt;Add AVX-512 support and better perf&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Alder Lake&lt;&#x2F;td&gt;&lt;td&gt;12th Gen&lt;&#x2F;td&gt;&lt;td&gt;LGA1700&lt;&#x2F;td&gt;&lt;td&gt;DDR4-DDR5&lt;&#x2F;td&gt;&lt;td&gt;256GB&lt;&#x2F;td&gt;&lt;td&gt;2021-2022&lt;&#x2F;td&gt;&lt;td&gt;M70q gen 3&lt;&#x2F;td&gt;&lt;td&gt;Remove AVX-512, Pcore and ECore, AV1 hard dec and improve IPC&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Raptor Lake&lt;&#x2F;td&gt;&lt;td&gt;13-14th Gen&lt;&#x2F;td&gt;&lt;td&gt;LGA1700&lt;&#x2F;td&gt;&lt;td&gt;DDR5&lt;&#x2F;td&gt;&lt;td&gt;256GB&lt;&#x2F;td&gt;&lt;td&gt;2022-2023&lt;&#x2F;td&gt;&lt;td&gt;M70q gen 4, 5&lt;&#x2F;td&gt;&lt;td&gt;More Ecores and cache&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Arrow Lake&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;td&gt;LGA1700&lt;&#x2F;td&gt;&lt;td&gt;DDR5&lt;&#x2F;td&gt;&lt;td&gt;256GB&lt;&#x2F;td&gt;&lt;td&gt;2024-2025&lt;&#x2F;td&gt;&lt;td&gt;M70q gen 6&lt;&#x2F;td&gt;&lt;td&gt;Remove SMT, gain big perf per thread, AV1 encode, Ray Tracing&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;intel&lt;&#x2F;td&gt;&lt;td&gt;Nova Lake&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;td&gt;LGA1851&lt;&#x2F;td&gt;&lt;td&gt;DDR5&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;td&gt;2026 ?&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;(Re)add AVX10.2&#x2F;AVX512 support&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h4 id=&quot;amd-cpu-generations&quot;&gt;AMD CPU generations&lt;&#x2F;h4&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Brand&lt;&#x2F;th&gt;&lt;th&gt;CPU arch&lt;&#x2F;th&gt;&lt;th&gt;CPU Gen&lt;&#x2F;th&gt;&lt;th&gt;Socket&lt;&#x2F;th&gt;&lt;th&gt;RAM Type&lt;&#x2F;th&gt;&lt;th&gt;Max RAM&lt;&#x2F;th&gt;&lt;th&gt;Year&lt;&#x2F;th&gt;&lt;th&gt;Exemple of SSF PC&lt;&#x2F;th&gt;&lt;th&gt;Remarks&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;AMD&lt;&#x2F;td&gt;&lt;td&gt;Excavator&lt;&#x2F;td&gt;&lt;td&gt;4th Gen&lt;&#x2F;td&gt;&lt;td&gt;AM4&lt;&#x2F;td&gt;&lt;td&gt;DDR4&lt;&#x2F;td&gt;&lt;td&gt;32GB&lt;&#x2F;td&gt;&lt;td&gt;2015-2016&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;AMD&lt;&#x2F;td&gt;&lt;td&gt;Zen&lt;&#x2F;td&gt;&lt;td&gt;1st Gen&lt;&#x2F;td&gt;&lt;td&gt;AM4&lt;&#x2F;td&gt;&lt;td&gt;DDR4&lt;&#x2F;td&gt;&lt;td&gt;64GB&lt;&#x2F;td&gt;&lt;td&gt;2017-2018&lt;&#x2F;td&gt;&lt;td&gt;M715Q&lt;&#x2F;td&gt;&lt;td&gt;Huge performance improvement and on pair with intel Haswell CPUs&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;AMD&lt;&#x2F;td&gt;&lt;td&gt;Zen+&lt;&#x2F;td&gt;&lt;td&gt;2nd Gen&lt;&#x2F;td&gt;&lt;td&gt;AM4&lt;&#x2F;td&gt;&lt;td&gt;DDR4&lt;&#x2F;td&gt;&lt;td&gt;64GB&lt;&#x2F;td&gt;&lt;td&gt;2018-2019&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;AMD&lt;&#x2F;td&gt;&lt;td&gt;Zen 2&lt;&#x2F;td&gt;&lt;td&gt;3rd Gen&lt;&#x2F;td&gt;&lt;td&gt;AM4&lt;&#x2F;td&gt;&lt;td&gt;DDR4&lt;&#x2F;td&gt;&lt;td&gt;128GB&lt;&#x2F;td&gt;&lt;td&gt;2019-2020&lt;&#x2F;td&gt;&lt;td&gt;M70q gen 1&#x2F;2&lt;&#x2F;td&gt;&lt;td&gt;On pair with intel Skylake CPUs and fix most of the issues of Zen&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;AMD&lt;&#x2F;td&gt;&lt;td&gt;Zen 3&lt;&#x2F;td&gt;&lt;td&gt;4th Gen&lt;&#x2F;td&gt;&lt;td&gt;AM4&lt;&#x2F;td&gt;&lt;td&gt;DDR4&lt;&#x2F;td&gt;&lt;td&gt;128GB&lt;&#x2F;td&gt;&lt;td&gt;2020-2021&lt;&#x2F;td&gt;&lt;td&gt;M70q gen 2&lt;&#x2F;td&gt;&lt;td&gt;Improve IPC and power efficiency&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;AMD&lt;&#x2F;td&gt;&lt;td&gt;Zen 4&lt;&#x2F;td&gt;&lt;td&gt;5th Gen&lt;&#x2F;td&gt;&lt;td&gt;AM5&lt;&#x2F;td&gt;&lt;td&gt;DDR5&lt;&#x2F;td&gt;&lt;td&gt;128GB&lt;&#x2F;td&gt;&lt;td&gt;2021-2022&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;Add AVX-512 support, better IPC and RDNA iGPU&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;AMD&lt;&#x2F;td&gt;&lt;td&gt;Zen 5&lt;&#x2F;td&gt;&lt;td&gt;6th Gen&lt;&#x2F;td&gt;&lt;td&gt;AM5&lt;&#x2F;td&gt;&lt;td&gt;DDR5&lt;&#x2F;td&gt;&lt;td&gt;192GB&lt;&#x2F;td&gt;&lt;td&gt;2022-2023&lt;&#x2F;td&gt;&lt;td&gt;M70q gen 5&lt;&#x2F;td&gt;&lt;td&gt;Slightly improve IPC and AVX-512 support perf&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;I recommend using &lt;strong&gt;Intel Alder Lake&lt;&#x2F;strong&gt;, &lt;strong&gt;AMD Zen 3&lt;&#x2F;strong&gt;, or newer CPUs, they offer nice performances and support modern features like NVMe, iGPU Vulkan, HEVC 10-bit hardware encoding&#x2F;decoding, AVX2, etc... However, if you’re on a budget, &lt;strong&gt;Intel Coffee Lake&lt;&#x2F;strong&gt;, &lt;strong&gt;AMD Zen 2&lt;&#x2F;strong&gt; remains a good option due to the low price of the CPUs and relatively good performance, older CPUs like &lt;strong&gt;Intel Haswell&lt;&#x2F;strong&gt; and &lt;strong&gt;AMD Excavator&lt;&#x2F;strong&gt; often not worth it due to their low performance, lack of modern features (NVMe, HEVC or Vulkan etc...) and microcode updates (security and bug fix for CPU).&lt;&#x2F;p&gt;
&lt;h3 id=&quot;gpu-graphics-processing-unit&quot;&gt;GPU (Graphics Processing Unit)&lt;&#x2F;h3&gt;
&lt;p&gt;Most SFF PCs have only an integrated GPU, they are sufficient for light GPU tasks and are very power efficient, some SFF PCs can add a dedicated GPU (like M720Q&#x2F;M920Q), these are low-profile and use PCIe x4&#x2F;x8 lanes, which can be useful for light gaming, networking, etc... &lt;strong&gt;Ensure the PSU and motherboard can support the PCIe card&#x27;s power consumption.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I recommend Intel iGPUs from &lt;strong&gt;Skylake or newer&lt;&#x2F;strong&gt; (Intel HD 500 series and newer) or AMD iGPUs from &lt;strong&gt;Zen 2 or newer&lt;&#x2F;strong&gt; (Vega and newer).&lt;&#x2F;p&gt;
&lt;p&gt;These GPUs support modern graphics APIs such as OpenGL 4.6 and Vulkan (up to 1.4 on Linux via Mesa), and provide hardware acceleration for common video codecs like AVC&#x2F;H.264, HEVC&#x2F;H.265, and VP9.&lt;&#x2F;p&gt;
&lt;p&gt;AV1 hardware decoding is available on Intel Alder Lake or newer, and on AMD RDNA2&#x2F;Zen 4-based iGPUs or newer, for encoding, Intel Arc GPUs, Arrow lake or AMD RDNA3-based GPUs are required.&lt;&#x2F;p&gt;
&lt;p&gt;Vulkan (1.3&#x2F;1.4) has become increasingly important in recent years, especially with the emergence of Vulkan Video extensions, which aim to improve efficiency by reducing CPU overhead compared to traditional APIs such as VA-API or VDPAU.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;ram-random-access-memory&quot;&gt;RAM (Random Access Memory)&lt;&#x2F;h3&gt;
&lt;p&gt;SFF PCs typically have &lt;strong&gt;two RAM slots&lt;&#x2F;strong&gt;, supporting DDR3, DDR4, or DDR5 RAM &lt;strong&gt;depending on the CPU and motherboard&lt;&#x2F;strong&gt;, the maximum capacity usually ranges from 16GB to 256GB, i recommend using &lt;strong&gt;two identical RAM sticks&lt;&#x2F;strong&gt; to enable dual-channel (double the bandwidth), you can use higher-frequency RAM than what the CPU officially supports, the RAM will downclock to maximum supported frequency by memory controller.&lt;&#x2F;p&gt;
&lt;p&gt;Most SSF PCs support &lt;strong&gt;SO-DIMM&lt;&#x2F;strong&gt; (RAM in Laptop), which is smaller than standard DIMM RAM, but they have similar performances.&lt;&#x2F;p&gt;
&lt;p&gt;I recommend using &lt;strong&gt;DDR4&lt;&#x2F;strong&gt; or &lt;strong&gt;DDR5&lt;&#x2F;strong&gt; RAM, as it is the most common, well-supported, here are some general recommendations (in 2025):&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;4GB&lt;&#x2F;strong&gt;: Barebones Linux server, light applications. (small website hosting, router, NAS)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;8GB&lt;&#x2F;strong&gt;: Light to medium applications. (web browsing, office work, small servers)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;16GB&lt;&#x2F;strong&gt;: Recommended for most use cases. (basic game server, CI build server, light development)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;32GB+&lt;&#x2F;strong&gt;: Optimal for multitasking. (AAA gaming, video&#x2F;photo editing, rendering)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;64GB+&lt;&#x2F;strong&gt;: Heavy multitasking. (virtualization, machine learning, scientific computing, CAD)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;storage&quot;&gt;Storage&lt;&#x2F;h3&gt;
&lt;p&gt;SFF PCs have &lt;strong&gt;four main storage options&lt;&#x2F;strong&gt; (depending on the model):&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;M.2 NVMe SSD&lt;&#x2F;strong&gt;: Very fast and present in most SFF PCs since 2015, the best choice.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;M.2 SATA SSD&lt;&#x2F;strong&gt;: Uses the same connector as NVMe but operates at SATA speeds. (e.g., ThinkCentre M700)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;2.5&quot; SATA SSD&lt;&#x2F;strong&gt;: Slower than M.2 NVMe but a good alternative if M.2 is unavailable.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;2.5&quot; SATA HDD&lt;&#x2F;strong&gt;: Very slow and generally not recommended, but can be replaced with an SSD.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Onboard eMMC&lt;&#x2F;strong&gt;: Soldered storage on the motherboard, &lt;strong&gt;avoid it&lt;&#x2F;strong&gt;, it is slow, limited and non-replaceable.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I recommend using &lt;strong&gt;M.2 NVMe SSDs&lt;&#x2F;strong&gt;, be mindful of the size (2242, 2260, 2280), connector type (B, M, B+M), and whether it&#x27;s single or double-sided.&lt;&#x2F;p&gt;
&lt;p&gt;You can use SSDs &lt;strong&gt;PCIe 4.0 x4&lt;&#x2F;strong&gt; on &lt;strong&gt;PCIe 3.0 x2&lt;&#x2F;strong&gt; or &lt;strong&gt;x4&lt;&#x2F;strong&gt; slots and vice versa, &lt;strong&gt;the SSD will automatically adjust to the maximum speed supported by both parts&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;ports&quot;&gt;Ports&lt;&#x2F;h3&gt;
&lt;p&gt;All SFF PCs have a limited number of ports, ensure that your chosen SFF PC has enough ports for your needs, some models support expansion for additional ports (most Lenovo ThinkCentre tiny models).&lt;&#x2F;p&gt;
&lt;p&gt;Common ports include:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;USB type A&lt;&#x2F;strong&gt;: For peripherals, storage, mouse, keyboard, etc...&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;USB type C&lt;&#x2F;strong&gt;: Same as USB type A, sometimes video output and&#x2F;or thunderbolt support&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;HDMI&#x2F;DisplayPort&#x2F;VGA&lt;&#x2F;strong&gt;: For monitors&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Ethernet&lt;&#x2F;strong&gt;: For networking&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Audio jacks&lt;&#x2F;strong&gt;: For headphones, microphones, speakers&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;psu-power-supply-unit&quot;&gt;PSU (Power Supply Unit)&lt;&#x2F;h3&gt;
&lt;p&gt;Most SFF PCs use an &lt;strong&gt;external power supply&lt;&#x2F;strong&gt;, often with a proprietary connector.&lt;&#x2F;p&gt;
&lt;p&gt;Here are general guidelines:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;45W&lt;&#x2F;strong&gt;: 15W CPU&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;65W&lt;&#x2F;strong&gt;: 35W CPU&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;90W&lt;&#x2F;strong&gt;: 65W CPU or 35W CPU + DVD drive&#x2F;expansion&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;135W&lt;&#x2F;strong&gt;: 65W CPU + 45W GPU or 100W CPU&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;You can gain &lt;strong&gt;small performance boosts&lt;&#x2F;strong&gt; by using an overpowered PSU, especially since Intel &lt;strong&gt;Commet Lake&lt;&#x2F;strong&gt; and newer CPUs.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;motherboard&quot;&gt;Motherboard&lt;&#x2F;h3&gt;
&lt;p&gt;Like the PSU, most SFF PCs have a &lt;strong&gt;proprietary motherboard&lt;&#x2F;strong&gt;, sometimes, you can replace it with another model from the same brand (e.g., an M920Q motherboard in an M720Q), however, in most cases, it is best to stick with the original motherboard model.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;operating-system&quot;&gt;Operating System&lt;&#x2F;h3&gt;
&lt;p&gt;All SFF PCs x86-based are compatible with most operating systems (Linux, Windows, FreeBSD, even MacOS x86 etc...), i strongly recommend using &lt;strong&gt;Linux&lt;&#x2F;strong&gt; or &lt;strong&gt;FreeBSD&lt;&#x2F;strong&gt; due to its low resource usage, better performance, security, and compatibility with older hardware, some Linux distributions i recommend for SFF PCs.&lt;&#x2F;p&gt;
&lt;p&gt;Standard Linux distributions:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Debian&lt;&#x2F;strong&gt;: Stable, well-supported, large software repository, update cycle of ~2 years&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Ubuntu&lt;&#x2F;strong&gt;: User-friendly, large community, based on Debian with GNOME desktop&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Arch Linux&lt;&#x2F;strong&gt;: Rolling release and cutting-edge software, highly customizable but high learning curve&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;NixOS&lt;&#x2F;strong&gt;: Fully declarative and reproducible configuration, unique package management system&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Lightweight Linux distributions:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lubuntu&lt;&#x2F;strong&gt;: Ubuntu with LXQt GUI&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Xubuntu&lt;&#x2F;strong&gt;: Ubuntu with XFCE GUI&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Stitaz&lt;&#x2F;strong&gt;: Extremely lightweight, can run on very old hardware but old kernels and software.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Multimedia-focused Linux distributions:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OSMC&lt;&#x2F;strong&gt;: Lightweight media center distribution based on Debian&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;lenovo-thinkcentre-ssf-pcs&quot;&gt;Lenovo thinkcentre SSF PCs&lt;&#x2F;h2&gt;
&lt;p&gt;In this section, we will see the different models of Lenovo thinkcentre SSF PCs.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Model&lt;&#x2F;th&gt;&lt;th&gt;CPU&lt;&#x2F;th&gt;&lt;th&gt;Chipset&lt;&#x2F;th&gt;&lt;th&gt;SODIMM RAM²&lt;&#x2F;th&gt;&lt;th&gt;PCIe&lt;&#x2F;th&gt;&lt;th&gt;SSD&#x2F;HDD ports&lt;&#x2F;th&gt;&lt;th&gt;PSREF&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;M72 tiny&lt;&#x2F;td&gt;&lt;td&gt;Sandy bdridge&#x2F;Ivy bridge&lt;&#x2F;td&gt;&lt;td&gt;Intel H61&lt;&#x2F;td&gt;&lt;td&gt;2x 8GB 1600MHz DDR3&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;withdrawnbook&#x2F;M72e.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M92 tiny&lt;&#x2F;td&gt;&lt;td&gt;Sandy bdridge&#x2F;Ivy bridge&lt;&#x2F;td&gt;&lt;td&gt;Intel Q77&lt;&#x2F;td&gt;&lt;td&gt;2x 8GB 1600MHz DDR3&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;withdrawnbook&#x2F;M92&amp;amp;M92p.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M73 tiny&lt;&#x2F;td&gt;&lt;td&gt;Haswell&lt;&#x2F;td&gt;&lt;td&gt;Intel H81&lt;&#x2F;td&gt;&lt;td&gt;2x 8GB 1600MHz DDR3&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M73_Tiny&#x2F;ThinkCentre_M73_Tiny_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M83 tiny&lt;&#x2F;td&gt;&lt;td&gt;Haswell&lt;&#x2F;td&gt;&lt;td&gt;Intel Q85&lt;&#x2F;td&gt;&lt;td&gt;2x 8GB 1600MHz DDR3&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M83_Tiny&#x2F;ThinkCentre_M83_Tiny_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M700q&lt;&#x2F;td&gt;&lt;td&gt;Skylake&lt;&#x2F;td&gt;&lt;td&gt;Intel B150&lt;&#x2F;td&gt;&lt;td&gt;2x 16GB 2133MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 1x (Sata)&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M700_Tiny&#x2F;ThinkCentre_M700_Tiny_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M900q&lt;&#x2F;td&gt;&lt;td&gt;Skylake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q170&lt;&#x2F;td&gt;&lt;td&gt;2x 16GB 2133MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 1x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M900_Tiny&#x2F;ThinkCentre_M900_Tiny_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M710q&lt;&#x2F;td&gt;&lt;td&gt;Skylake&#x2F;Kaby Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel B250&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 2400MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 1x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M710_Tiny&#x2F;ThinkCentre_M710_Tiny_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M910q&lt;&#x2F;td&gt;&lt;td&gt;Skylake&#x2F;Kaby Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q270&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 2400MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 2x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M910_Tiny&#x2F;ThinkCentre_M910_Tiny_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M720q&lt;&#x2F;td&gt;&lt;td&gt;Coffee Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel B360&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 2666MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;x8 Gen 3¹&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 1x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M720_Tiny&#x2F;ThinkCentre_M720_Tiny_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M920q&lt;&#x2F;td&gt;&lt;td&gt;Coffee Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q370&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 2666MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;x8 Gen 3¹&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 1x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M920_Tiny&#x2F;ThinkCentre_M920_Tiny_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M920x&lt;&#x2F;td&gt;&lt;td&gt;Coffee Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q370&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 2666MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;x8 Gen 3¹&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 2x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M920x_Tiny&#x2F;ThinkCentre_M920x_Tiny_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;P330&lt;&#x2F;td&gt;&lt;td&gt;Coffee Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q370&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 2666MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;x8 Gen 3¹&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 2x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkStation&#x2F;ThinkStation_P330_Tiny&#x2F;ThinkStation_P330_Tiny_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M75q&lt;&#x2F;td&gt;&lt;td&gt;AMD Zen 2&lt;&#x2F;td&gt;&lt;td&gt;AMD Pro 500&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 2933MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 1x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M75q_Tiny&#x2F;ThinkCentre_M75q_Tiny_Spec.PDF&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M75q Gen 2&lt;&#x2F;td&gt;&lt;td&gt;AMD Zen 3&lt;&#x2F;td&gt;&lt;td&gt;AMD Pro 500&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 3200MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 1x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M75q_Gen_2&#x2F;ThinkCentre_M75q_Gen_2_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M70q&lt;&#x2F;td&gt;&lt;td&gt;Comet Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel H470&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 2933MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 1x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M70q&#x2F;ThinkCentre_M70q_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M80q&lt;&#x2F;td&gt;&lt;td&gt;Comet Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q470&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 2933MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 1x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M80q&#x2F;ThinkCentre_M80q_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M90q&lt;&#x2F;td&gt;&lt;td&gt;Comet Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q470&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 2933MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;x8 Gen 3&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 2x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M90q&#x2F;ThinkCentre_M90q_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;P340&lt;&#x2F;td&gt;&lt;td&gt;Comet Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q470&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 2933MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;x8 Gen 3&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 2x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkStation&#x2F;ThinkStation_P340_Tiny&#x2F;ThinkStation_P340_Tiny_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M70q Gen 2&lt;&#x2F;td&gt;&lt;td&gt;Rocket Lake&#x2F;Comet Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel B560&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 3200MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 1x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M70q_Gen_2&#x2F;ThinkCentre_M70q_Gen_2_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M90q Gen 2&lt;&#x2F;td&gt;&lt;td&gt;Rocket Lake&#x2F;Comet Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q570&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 3200MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;x8 Gen 3&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 2x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M90q_Gen_2&#x2F;ThinkCentre_M90q_Gen_2_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;P350&lt;&#x2F;td&gt;&lt;td&gt;Rocket Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q570&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 3200MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;x8 Gen 3&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 2x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkStation&#x2F;ThinkStation_P350_Tiny&#x2F;ThinkStation_P350_Tiny_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M80q Gen 3&lt;&#x2F;td&gt;&lt;td&gt;Alder Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q670&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 4800MHz DDR5&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 2x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M80q_Gen_3&#x2F;ThinkCentre_M80q_Gen_3_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M90q Gen 3&lt;&#x2F;td&gt;&lt;td&gt;Alder Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q670&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 4800MHz DDR5&lt;&#x2F;td&gt;&lt;td&gt;x8 Gen 4&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 2x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M90q_Gen_3&#x2F;ThinkCentre_M90q_Gen_3_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;P360&lt;&#x2F;td&gt;&lt;td&gt;Alder Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q670&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 4800MHz DDR5&lt;&#x2F;td&gt;&lt;td&gt;x8 Gen 4&lt;&#x2F;td&gt;&lt;td&gt;2x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkStation&#x2F;ThinkStation_P360_Tiny&#x2F;ThinkStation_P360_Tiny_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M70q Gen 3&lt;&#x2F;td&gt;&lt;td&gt;Alder Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q670&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 3200MHz DDR4&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;1x SATA &amp;amp; 1x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M70q_Gen_3&#x2F;ThinkCentre_M70q_Gen_3_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M75q Gen 5&lt;&#x2F;td&gt;&lt;td&gt;AMD Zen 4&lt;&#x2F;td&gt;&lt;td&gt;AMD Pro 600&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 5200MHz DDR5&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;2x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M75q_Gen_5&#x2F;ThinkCentre_M75q_Gen_5_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M70q Gen 4&lt;&#x2F;td&gt;&lt;td&gt;Raptor Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q670&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 5600MHz DDR5&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;2x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M70q_Gen_4&#x2F;ThinkCentre_M70q_Gen_4_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M70q Gen 5&lt;&#x2F;td&gt;&lt;td&gt;Raptor Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel Q670&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 5600MHz DDR5&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;2x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M70q_Gen_5&#x2F;ThinkCentre_M70q_Gen_5_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;M70q Gen 6&lt;&#x2F;td&gt;&lt;td&gt;Arrow Lake&lt;&#x2F;td&gt;&lt;td&gt;Intel B860&#x2F;Q870&lt;&#x2F;td&gt;&lt;td&gt;2x 32GB 5600MHz DDR5&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;2x M.2 NVMe&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;psref.lenovo.com&#x2F;syspool&#x2F;Sys&#x2F;PDF&#x2F;ThinkCentre&#x2F;ThinkCentre_M70q_Gen_6&#x2F;ThinkCentre_M70q_Gen_6_Spec.pdf&quot;&gt;PDF&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;&lt;strong&gt;¹&lt;&#x2F;strong&gt;: You need proprietary riser card to use the PCIe slot&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;²&lt;&#x2F;strong&gt;: Maximum RAM supported is determined by CPU (memory controller) and BIOS, some configurations may support more RAM unofficially.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;tools&quot;&gt;Tools&lt;&#x2F;h3&gt;
&lt;p&gt;Lenovo Bios&#x2F;UEFI simulator: &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;download.lenovo.com&#x2F;bsco&#x2F;index.html#&#x2F;&quot;&gt;Simulator&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;m710q-and-m910q&quot;&gt;M710q and M910q&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;ports-1&quot;&gt;Ports&lt;&#x2F;h4&gt;
 &lt;figure class=&quot;fi&quot;&gt;&lt;img src=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;images&#x2F;articles&#x2F;SSF-PC&#x2F;lenovo-thinkcentre-m710q-front.webp&quot; alt=&quot;Front of M710q&quot; width=&quot;721&quot; height=&quot;147&quot; loading=&quot;lazy&quot; &#x2F;&gt;&lt;figcaption&gt;Front of M710q&lt;&#x2F;figcaption&gt;&lt;&#x2F;figure&gt;
&lt;p&gt;On the front:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;2x USB 3.1 Gen 1&lt;&#x2F;li&gt;
&lt;li&gt;1x Audio headphone jack&lt;&#x2F;li&gt;
&lt;li&gt;1x Audio microphone jack&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
 &lt;figure class=&quot;fi&quot;&gt;&lt;img src=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;images&#x2F;articles&#x2F;SSF-PC&#x2F;lenovo-thinkcentre-m710q-back.webp&quot; alt=&quot;Back of M710q&quot; width=&quot;725&quot; height=&quot;150&quot; loading=&quot;lazy&quot; &#x2F;&gt;&lt;figcaption&gt;Back of M710q&lt;&#x2F;figcaption&gt;&lt;&#x2F;figure&gt;
&lt;p&gt;On the back:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;4x USB 3.1 Gen 1&lt;&#x2F;li&gt;
&lt;li&gt;1x HDMI 1.4&lt;&#x2F;li&gt;
&lt;li&gt;1x DisplayPort 1.2a&lt;&#x2F;li&gt;
&lt;li&gt;1x Ethernet RJ45&lt;&#x2F;li&gt;
&lt;li&gt;1x Lenovo proprietary power connector&lt;&#x2F;li&gt;
&lt;li&gt;2x proprietary port for accessories (VGA, HDMI, DP, USB-C etc...)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The M710q&#x2F;M910q does not support HDR through HDMI (1.4) or DisplayPort (1.2a) but 10bit color depth is supported.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;cpu&quot;&gt;CPU&lt;&#x2F;h4&gt;
&lt;p&gt;The M710q&#x2F;M910q supports all &lt;strong&gt;6th&lt;&#x2F;strong&gt; and &lt;strong&gt;7th&lt;&#x2F;strong&gt; generation Intel 35W CPUs (models with &lt;strong&gt;T&lt;&#x2F;strong&gt; suffix), i recommend 7th gen for HEVC 10-bit hardware encoding&#x2F;decoding support.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;ram&quot;&gt;RAM&lt;&#x2F;h4&gt;
&lt;p&gt;The M710q&#x2F;M910q have &lt;strong&gt;two DDR4 SODIMM slots&lt;&#x2F;strong&gt; with a maximum capacity of &lt;strong&gt;32GB&lt;&#x2F;strong&gt; (2x16GB), the maximum frequency is &lt;strong&gt;2133MHz&lt;&#x2F;strong&gt; or &lt;strong&gt;2400MHz&lt;&#x2F;strong&gt; on &lt;strong&gt;7th&lt;&#x2F;strong&gt; gen.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;bios&quot;&gt;Bios&lt;&#x2F;h4&gt;
&lt;p&gt;You &lt;strong&gt;should&lt;&#x2F;strong&gt; update your bios to improve compatibility with newer hardware, older bios versions have issues with some NVMe SSDs: &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;Lenovo&#x2F;comments&#x2F;1jzxnp4&#x2F;m710q_tiny_what_nvme_ssd_works&#x2F;?show=original&quot;&gt;reddit&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;troubleshooting&quot;&gt;Troubleshooting&lt;&#x2F;h4&gt;
&lt;h3 id=&quot;m720q-m920q-and-m920x&quot;&gt;M720q, M920q and M920x&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;ports-2&quot;&gt;Ports&lt;&#x2F;h4&gt;
 &lt;figure class=&quot;fi&quot;&gt;&lt;img src=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;images&#x2F;articles&#x2F;SSF-PC&#x2F;lenovo-thinkcentre-m720q-front.webp&quot; alt=&quot;Front of M720q&quot; width=&quot;1107&quot; height=&quot;234&quot; loading=&quot;lazy&quot; &#x2F;&gt;&lt;figcaption&gt;Front of M720q&lt;&#x2F;figcaption&gt;&lt;&#x2F;figure&gt;
&lt;p&gt;On the front:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;The power button&lt;&#x2F;li&gt;
&lt;li&gt;1x Audio microphone jack&lt;&#x2F;li&gt;
&lt;li&gt;1x Audio headphone jack&lt;&#x2F;li&gt;
&lt;li&gt;1x USB-C 3.1 Gen 1&lt;&#x2F;li&gt;
&lt;li&gt;1x USB 3.1 Gen 1&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
 &lt;figure class=&quot;fi&quot;&gt;&lt;img src=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;images&#x2F;articles&#x2F;SSF-PC&#x2F;lenovo-thinkcentre-m720q-back.webp&quot; alt=&quot;Back of M720q&quot; width=&quot;1105&quot; height=&quot;221&quot; loading=&quot;lazy&quot; &#x2F;&gt;&lt;figcaption&gt;Back of M720q&lt;&#x2F;figcaption&gt;&lt;&#x2F;figure&gt;
&lt;p&gt;On the back:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;1x Lenovo proprietary power connector&lt;&#x2F;li&gt;
&lt;li&gt;1x DisplayPort 1.2a&lt;&#x2F;li&gt;
&lt;li&gt;2x USB 3.1 Gen 1&lt;&#x2F;li&gt;
&lt;li&gt;1x HDMI 1.4&lt;&#x2F;li&gt;
&lt;li&gt;2x USB 3.1 Gen 2&lt;&#x2F;li&gt;
&lt;li&gt;1x Ethernet RJ45&lt;&#x2F;li&gt;
&lt;li&gt;2x port for proprietary accessories (VGA, HDMI, DP, USB-C etc...)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The M720q&#x2F;M920q does not support HDR through HDMI (1.4) or DisplayPort (1.2a) but 10bit color depth is supported.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;cpu-1&quot;&gt;CPU&lt;&#x2F;h4&gt;
&lt;p&gt;The M720q&#x2F;M920q supports all &lt;strong&gt;8th&lt;&#x2F;strong&gt; and &lt;strong&gt;9th&lt;&#x2F;strong&gt; generation Intel 35W CPUs (models with &lt;strong&gt;T&lt;&#x2F;strong&gt; suffix), the &lt;strong&gt;i7-9900T&lt;&#x2F;strong&gt; is the most powerful CPU available for this model, but it is very expensive and hard to find, the i3-8100T, i3-9100T, i5-8500T, i5-8600T, i5-9500T, i5-9600T, i7-8700T, i7-9700T are far more common, affordable and still offer good performance.&lt;&#x2F;p&gt;
&lt;p&gt;Avoid Celeron and Pentium, they are pretty slow (missing AVX2, FMA3, etc...), &lt;strong&gt;do not use CPUs with a higher TDP than 35W (65W on M920x)&lt;&#x2F;strong&gt;, this can cause overheating and potentially damage your motherboard (like VRMs) or PSU.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;ram-1&quot;&gt;RAM&lt;&#x2F;h4&gt;
&lt;p&gt;The M720q&#x2F;M920q&#x2F;M920x have &lt;strong&gt;two DDR4 SODIMM slots&lt;&#x2F;strong&gt; with a maximum capacity of &lt;strong&gt;64GB&lt;&#x2F;strong&gt; (2x32GB), the maximum frequency is &lt;strong&gt;2400MHz&lt;&#x2F;strong&gt; or &lt;strong&gt;2666MHz&lt;&#x2F;strong&gt; on i5&#x2F;i7 CPUs.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;storage-1&quot;&gt;Storage&lt;&#x2F;h4&gt;
&lt;p&gt;You have &lt;strong&gt;two&lt;&#x2F;strong&gt; storage options:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;M.2 NVMe PCIe 3.0&lt;&#x2F;strong&gt;: Only one slot and support PCIe x4 Gen 3&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;2.5&quot; SATA&lt;&#x2F;strong&gt;: Slower but it be a good alternative if you need more storage or don&#x27;t have an M.2 NVMe SSD&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The the &lt;strong&gt;second M.2 slot&lt;&#x2F;strong&gt; missing NVMe on M720q&#x2F;M920q, you can solder missing components to get working M.2 (SATA): &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;badger707&#x2F;m920q-dual-NVME&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;badger707&#x2F;m920q-dual-NVME&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;gpu&quot;&gt;GPU&lt;&#x2F;h4&gt;
&lt;p&gt;All compatible CPU have an integrated GPU, if it is not enough, you can add a &lt;strong&gt;low-profile&lt;&#x2F;strong&gt; GPU with &lt;strong&gt;proprietary PCIe riser card&lt;&#x2F;strong&gt;, you are limited with PCIe 3.0 x8 and 45W TDP (you also need 135W PSU).&lt;&#x2F;p&gt;
&lt;h4 id=&quot;psu&quot;&gt;PSU&lt;&#x2F;h4&gt;
&lt;p&gt;The proprietary PSU used for the M720q has a &lt;strong&gt;65W&lt;&#x2F;strong&gt;, &lt;strong&gt;90W&lt;&#x2F;strong&gt;, &lt;strong&gt;135W&lt;&#x2F;strong&gt; power rating, &lt;strong&gt;90W&lt;&#x2F;strong&gt; is minimum when you use expansion cards or powerful CPU. (i7 or i9 CPU)&lt;&#x2F;p&gt;
&lt;h4 id=&quot;expansion-and-accessories&quot;&gt;Expansion and accessories&lt;&#x2F;h4&gt;
&lt;p&gt;The M720q supports multiple expansion options:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Type&lt;&#x2F;th&gt;&lt;th&gt;Model&lt;&#x2F;th&gt;&lt;th&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;VGA Port Card&lt;&#x2F;td&gt;&lt;td&gt;01AJ935&lt;&#x2F;td&gt;&lt;td&gt;Add 1 VGA Port outputs&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;VGA Port Card&lt;&#x2F;td&gt;&lt;td&gt;5C50W00881&lt;&#x2F;td&gt;&lt;td&gt;Add 1 VGA Port outputs&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Display Port Card&lt;&#x2F;td&gt;&lt;td&gt;01AJ937&lt;&#x2F;td&gt;&lt;td&gt;Add 1 Display Port outputs&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;HDMI Port Card&lt;&#x2F;td&gt;&lt;td&gt;01AJ938&lt;&#x2F;td&gt;&lt;td&gt;Add 1 HDMI Port outputs&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;USB-C Port Card&lt;&#x2F;td&gt;&lt;td&gt;01AJ939&lt;&#x2F;td&gt;&lt;td&gt;Add 1 USB-C Port outputs&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Riser PCIe x8&lt;&#x2F;td&gt;&lt;td&gt;01AJ940&lt;&#x2F;td&gt;&lt;td&gt;Add 1 PCIe x8 slot&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;COM RS232 Port Card&lt;&#x2F;td&gt;&lt;td&gt;04X2733&lt;&#x2F;td&gt;&lt;td&gt;Add 1 COM RS232 Port outputs&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Vesa Mount&lt;&#x2F;td&gt;&lt;td&gt;4XF0N03161&lt;&#x2F;td&gt;&lt;td&gt;Vesa Mount + screws&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Vesa Mount&lt;&#x2F;td&gt;&lt;td&gt;SM10U47670&lt;&#x2F;td&gt;&lt;td&gt;Vesa Mount + screws&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Vesa Mount&lt;&#x2F;td&gt;&lt;td&gt;01EF310&lt;&#x2F;td&gt;&lt;td&gt;Vesa Mount + screws&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Vesa Mount&lt;&#x2F;td&gt;&lt;td&gt;01EF645&lt;&#x2F;td&gt;&lt;td&gt;Vesa Mount + screws&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Vesa Mount&lt;&#x2F;td&gt;&lt;td&gt;5M10U49625&lt;&#x2F;td&gt;&lt;td&gt;Vesa Mount + screws&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;USB hub&lt;&#x2F;td&gt;&lt;td&gt;01EF647&lt;&#x2F;td&gt;&lt;td&gt;USB hub with RS232&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Wifi antenna&lt;&#x2F;td&gt;&lt;td&gt;00XJ126&lt;&#x2F;td&gt;&lt;td&gt;Internal Wifi antenna&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Radiator with fan&lt;&#x2F;td&gt;&lt;td&gt;01MN633&lt;&#x2F;td&gt;&lt;td&gt;Radiator with fan&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Radiator with fan&lt;&#x2F;td&gt;&lt;td&gt;01MN632&lt;&#x2F;td&gt;&lt;td&gt;Radiator with fan&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h4 id=&quot;bios-1&quot;&gt;BIOS&lt;&#x2F;h4&gt;
&lt;p&gt;To update the BIOS, you &lt;strong&gt;must&lt;&#x2F;strong&gt; update &lt;strong&gt;Intel Management Engine&lt;&#x2F;strong&gt; first, then update the BIOS, otherwise you risk boot loop with older BIOS versions.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;troubleshooting-1&quot;&gt;Troubleshooting&lt;&#x2F;h4&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;forums.servethehome.com&#x2F;index.php?threads&#x2F;lenovo-thinkcentre-thinkstation-tiny-project-tinyminimicro-reference-thread.34925&#x2F;&quot;&gt;Project TinyMiniMicro&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;forums.servethehome.com&#x2F;index.php?threads&#x2F;tiny-mini-micro-pc-experiences.30230&#x2F;&quot;&gt;Tiny&#x2F;Mini&#x2F;Micro PC experiences&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Small_form_factor&quot;&gt;Wikipedia&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.cpu-world.com&#x2F;&quot;&gt;cpu-world&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>C++ Code Coverage with CMake and GCOVR</title>
        <published>2025-08-07T00:00:00+00:00</published>
        <updated>2025-08-07T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://bensuperpc.github.io/tutorial/coverage/"/>
        <id>https://bensuperpc.github.io/tutorial/coverage/</id>
        
        <content type="html" xml:base="https://bensuperpc.github.io/tutorial/coverage/">&lt;h1 id=&quot;code-coverage-in-c-c-with-cmake-and-gcovr&quot;&gt;Code Coverage in C&#x2F;C++ with CMake and GCOVR&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;&#x2F;h2&gt;
&lt;p&gt;This tutorial shows how to set up a C&#x2F;C++ project with CMake and GCOVR to generate code coverage reports, this allows you to precisely verify which parts of the source code and which conditional branches (if, switch, etc.) are actually covered by the tests.&lt;&#x2F;p&gt;
&lt;p&gt;We’ll use a small sample project based on Google Test, but the method is also compatible with other frameworks such as Catch2, Boost.Test, or Doctest.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;minimum-requirements&quot;&gt;Minimum Requirements&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;CMake 3.15&lt;&#x2F;li&gt;
&lt;li&gt;GCC or Clang (C++17)&lt;&#x2F;li&gt;
&lt;li&gt;Google Test (GTest)&lt;&#x2F;li&gt;
&lt;li&gt;GCOVR 5.0&lt;&#x2F;li&gt;
&lt;li&gt;Ninja (optional, but recommended)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;A distribution like &lt;strong&gt;Ubuntu 22.04&lt;&#x2F;strong&gt;, &lt;strong&gt;Debian 12&lt;&#x2F;strong&gt; or higher is recommended for this tutorial, but you can use any Linux distribution with the required versions of the tools.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;installing-dependencies&quot;&gt;Installing Dependencies&lt;&#x2F;h3&gt;
&lt;p&gt;To install the necessary dependencies, you can use the following commands:&lt;&#x2F;p&gt;
&lt;p&gt;For &lt;strong&gt;Ubuntu&#x2F;Debian&lt;&#x2F;strong&gt; :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; apt-get install cmake build-essential g++ gcovr ninja-build libgtest-dev&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;For &lt;strong&gt;Fedora&lt;&#x2F;strong&gt; :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; dnf install cmake gcc-c++ gcovr ninja-build gtest-devel&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;For &lt;strong&gt;Arch Linux&lt;&#x2F;strong&gt; :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span&gt; cmake gcc gcovr ninja gtest&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;what-is-gcovr&quot;&gt;What is GCOVR?&lt;&#x2F;h2&gt;
&lt;p&gt;GCOVR is an open-source tool that generates C&#x2F;C++ code coverage reports from the data produced during test execution.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;sample-project&quot;&gt;Sample Project&lt;&#x2F;h2&gt;
&lt;p&gt;The sample project is a simple application and two C++ libraries, one for mathematics and one for physics.&lt;&#x2F;p&gt;
&lt;p&gt;Here is the project structure:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;├──&lt;&#x2F;span&gt;&lt;span&gt; CMakeLists.txt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;├──&lt;&#x2F;span&gt;&lt;span&gt; main.cpp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;├──&lt;&#x2F;span&gt;&lt;span&gt; math&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;│  &lt;&#x2F;span&gt;&lt;span&gt; ├── CMakeLists.txt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;│  &lt;&#x2F;span&gt;&lt;span&gt; ├── math.cpp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;│  &lt;&#x2F;span&gt;&lt;span&gt; └── math.hpp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;├──&lt;&#x2F;span&gt;&lt;span&gt; physics&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;│  &lt;&#x2F;span&gt;&lt;span&gt; ├── CMakeLists.txt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;│  &lt;&#x2F;span&gt;&lt;span&gt; ├── physics.cpp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;│  &lt;&#x2F;span&gt;&lt;span&gt; └── physics.hpp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;└──&lt;&#x2F;span&gt;&lt;span&gt; tests&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;    ├──&lt;&#x2F;span&gt;&lt;span&gt; CMakeLists.txt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;    └──&lt;&#x2F;span&gt;&lt;span&gt; test.cpp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt; directories,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 10&lt;&#x2F;span&gt;&lt;span&gt; files&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You can download the sample project: &lt;!-- Assets --&gt;
&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;sources&#x2F;tuto_coverage.7z&quot; target=&quot;_blank&quot;&gt;
    tuto_coverage.7z
&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;compilation-with-coverage&quot;&gt;Compilation with Coverage&lt;&#x2F;h3&gt;
&lt;p&gt;To enable code coverage, the project must be compiled with the options: &lt;code&gt;-O0 -g --coverage&lt;&#x2F;code&gt; and &lt;code&gt;--coverage&lt;&#x2F;code&gt; for linking.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;cmake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span&gt; .&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -B&lt;&#x2F;span&gt;&lt;span&gt; build&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -G&lt;&#x2F;span&gt;&lt;span&gt; Ninja&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -DCMAKE_CXX_FLAGS=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt;&amp;quot;-O0 -g --coverage&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -DCMAKE_EXE_LINKER_FLAGS=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt;&amp;quot;--coverage&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; cmake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --build&lt;&#x2F;span&gt;&lt;span&gt; build&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The &lt;code&gt;--coverage&lt;&#x2F;code&gt; option is equivalent to &lt;code&gt;-fprofile-arcs -ftest-coverage&lt;&#x2F;code&gt; for GCC&#x2F;Clang, in a classic project, it is preferable to use CMake presets rather than specifying the options manually.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;running-tests&quot;&gt;Running Tests&lt;&#x2F;h3&gt;
&lt;p&gt;Once the project is compiled, you can run the tests, this will generate files on which GCOVR relies to generate coverage reports:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.gcno&lt;&#x2F;code&gt; generated at compile time, contains metadata for coverage&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;.gcda&lt;&#x2F;code&gt; generated at runtime, contains the collected coverage data&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ctest&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --test-dir&lt;&#x2F;span&gt;&lt;span&gt; build&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --output-on-failure --no-tests=error --repeat&lt;&#x2F;span&gt;&lt;span&gt; until-fail:1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --schedule-random --parallel 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: center&quot;&gt;Option&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--test-dir build&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Specify the directory containing the tests&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--output-on-failure&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Show the output of failed tests&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--no-tests=error&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Generates an error if no tests are found&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--repeat until-fail:1&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Repeats the tests until a failure occurs, here 1 time&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--schedule-random&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Runs the tests in random order&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--parallel 1&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Runs the tests in parallel, here 1 test at a time&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;You will get output similar to:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;Test&lt;&#x2F;span&gt;&lt;span&gt; project &#x2F;home&#x2F;bensuperpc&#x2F;tuto_coverage&#x2F;build&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;    Start&lt;&#x2F;span&gt;&lt;span&gt; 3: MathTests.Mul&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;1&#x2F;7&lt;&#x2F;span&gt;&lt;span&gt; Test&lt;&#x2F;span&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt; #3: MathTests.Mul .....................   Passed    0.00 sec&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;    Start&lt;&#x2F;span&gt;&lt;span&gt; 7: PhysicsTests.GravitationalForce&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;2&#x2F;7&lt;&#x2F;span&gt;&lt;span&gt; Test&lt;&#x2F;span&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt; #7: PhysicsTests.GravitationalForce ...   Passed    0.00 sec&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;    Start&lt;&#x2F;span&gt;&lt;span&gt; 5: PhysicsTests.Speed&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;3&#x2F;7&lt;&#x2F;span&gt;&lt;span&gt; Test&lt;&#x2F;span&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt; #5: PhysicsTests.Speed ................   Passed    0.00 sec&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;    Start&lt;&#x2F;span&gt;&lt;span&gt; 2: MathTests.Sub&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;4&#x2F;7&lt;&#x2F;span&gt;&lt;span&gt; Test&lt;&#x2F;span&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt; #2: MathTests.Sub .....................   Passed    0.00 sec&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;    Start&lt;&#x2F;span&gt;&lt;span&gt; 1: MathTests.Add&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;5&#x2F;7&lt;&#x2F;span&gt;&lt;span&gt; Test&lt;&#x2F;span&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt; #1: MathTests.Add .....................   Passed    0.00 sec&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;    Start&lt;&#x2F;span&gt;&lt;span&gt; 6: PhysicsTests.KineticEnergy&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;6&#x2F;7&lt;&#x2F;span&gt;&lt;span&gt; Test&lt;&#x2F;span&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt; #6: PhysicsTests.KineticEnergy ........   Passed    0.00 sec&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;    Start&lt;&#x2F;span&gt;&lt;span&gt; 4: MathTests.Div&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;7&#x2F;7&lt;&#x2F;span&gt;&lt;span&gt; Test&lt;&#x2F;span&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt; #4: MathTests.Div .....................   Passed    0.00 sec&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;100%&lt;&#x2F;span&gt;&lt;span&gt; tests passed,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span&gt; tests failed out of&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 7&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;Total&lt;&#x2F;span&gt;&lt;span&gt; Test time (real) =   0.02 sec&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;html-report-with-gcovr&quot;&gt;HTML Report with GCOVR&lt;&#x2F;h3&gt;
&lt;p&gt;After running the tests, you can generate a coverage report with GCOVR, here we generate an HTML report to visualize the code coverage, but you can also generate reports in plain text, XML or JSON.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;gcovr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --root&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;.&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --decisions --calls --html-theme&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;green&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --exclude&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;tests&#x2F;*&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --exclude&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;build&#x2F;*&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --exclude&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;main.cpp&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --html --html-details --output&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;build&#x2F;coverage.html&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: center&quot;&gt;Option&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--root &quot;.&quot;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Sets the root directory for coverage&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--decisions&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Includes coverage decisions in the report&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--calls&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Includes function calls in the report&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--html-theme &quot;green&quot;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Sets the HTML report theme to green&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--exclude &quot;tests&#x2F;*&quot;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Excludes test files from the report&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--exclude &quot;build&#x2F;*&quot;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Excludes build files from the report&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--exclude &quot;main.cpp&quot;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Excludes the &lt;code&gt;main.cpp&lt;&#x2F;code&gt; file from the report&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--html&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Generates an HTML report&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--html-details&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Includes details in the HTML report&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;code&gt;--output &quot;build&#x2F;coverage.html&quot;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Specifies the output file name for the HTML report&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Once the HTML report is generated, you can open it in your browser to visualize the code coverage, it should be generated in the file &lt;code&gt;build&#x2F;coverage.html&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Here is the rendering of the report in the browser:&lt;&#x2F;p&gt;
 &lt;figure class=&quot;fi b1&quot;&gt;&lt;img src=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;images&#x2F;Screenshot_20250807_100908.webp&quot; class=&quot;b1&quot; alt=&quot;Main Page&quot; width=&quot;1111&quot; height=&quot;574&quot; loading=&quot;lazy&quot; &#x2F;&gt;&lt;figcaption&gt;Main Page&lt;&#x2F;figcaption&gt;&lt;&#x2F;figure&gt;
 &lt;figure class=&quot;fi b1&quot;&gt;&lt;img src=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;images&#x2F;Screenshot_20250807_101010.webp&quot; class=&quot;b1&quot; alt=&quot;Secondary Page&quot; width=&quot;1111&quot; height=&quot;835&quot; loading=&quot;lazy&quot; &#x2F;&gt;&lt;figcaption&gt;Secondary Page&lt;&#x2F;figcaption&gt;&lt;&#x2F;figure&gt;
&lt;h4 id=&quot;xml-or-json-report&quot;&gt;XML or JSON Report&lt;&#x2F;h4&gt;
&lt;p&gt;You can also generate a report in XML or JSON for integration with other tools:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;gcovr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --root&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;.&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --decisions --calls --exclude&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;tests&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --exclude&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;build&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --exclude&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;main.cpp&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --xml-pretty --output&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;build&#x2F;coverage.xml&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Or in JSON :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;gcovr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --root&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;.&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --decisions --calls --exclude&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;tests&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --exclude&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;build&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --exclude&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;main.cpp&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --json-pretty --output&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;build&#x2F;coverage.json&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;ci-cd-integration&quot;&gt;CI&#x2F;CD Integration&lt;&#x2F;h2&gt;
&lt;p&gt;You can integrate code coverage generation into your CI&#x2F;CD pipeline to automatically generate reports on each commit or merge request.&lt;&#x2F;p&gt;
&lt;p&gt;Here is an example of a Gitlab CI to generate a coverage report and fail the pipeline if the coverage is below a certain threshold:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;variables&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;  # If someone forgets to add tests on new feature, the pipeline will fail if coverage is below these thresholds&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  MIN_LINE_COVERAGE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 50&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  MIN_FUNCTION_COVERAGE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 50&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  MIN_BRANCH_COVERAGE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 50&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  MIN_DECISION_COVERAGE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 50&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;stages&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  - coverage&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;coverage_stage&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  stage&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; coverage&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  script&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;    # Compile the project with coverage flags&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    - cmake -S . -B build -G Ninja -DCMAKE_CXX_FLAGS=&amp;quot;-O0 -g --coverage&amp;quot; -DCMAKE_EXE_LINKER_FLAGS=&amp;quot;--coverage&amp;quot; &amp;amp;&amp;amp; cmake --build build&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;    # Run tests to generate coverage data&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    - ctest --verbose --repeat until-fail:1 --parallel 1 --schedule-random --test-dir build || true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;    # Create directory for HTML coverage reports&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    - mkdir -p &amp;quot;coverage_html_$CI_COMMIT_SHORT_SHA&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;    # Generate HTML coverage reports&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    - gcovr --root &amp;quot;.&amp;quot; --exclude &amp;quot;tests&#x2F;&amp;quot; --exclude &amp;quot;build&#x2F;&amp;quot; --exclude &amp;quot;main.cpp&amp;quot; --decisions --calls --html --html-theme green --html-details -o &amp;quot;coverage_html_$CI_COMMIT_SHORT_SHA&#x2F;coverage.html&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;    # Generate XML coverage report (for Gitlab)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    - gcovr --root &amp;quot;.&amp;quot; --exclude &amp;quot;tests&#x2F;&amp;quot; --exclude &amp;quot;build&#x2F;&amp;quot; --exclude &amp;quot;main.cpp&amp;quot; --decisions --calls --xml-pretty -o coverage.xml&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;    # Check minimum coverage thresholds&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    - gcovr --root &amp;quot;.&amp;quot; --exclude &amp;quot;tests&#x2F;&amp;quot; --exclude &amp;quot;build&#x2F;&amp;quot; --exclude &amp;quot;main.cpp&amp;quot; --decisions --calls --print-summary --fail-under-line $MIN_LINE_COVERAGE --fail-under-branch $MIN_BRANCH_COVERAGE --fail-under-function $MIN_FUNCTION_COVERAGE --fail-under-decision $MIN_DECISION_COVERAGE&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  artifacts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;$CI_PROJECT_NAME-$CI_COMMIT_SHORT_SHA&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    expire_in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; 7 days&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    when&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; always&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    paths&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;coverage_html_$CI_COMMIT_SHORT_SHA&#x2F;*&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;coverage.xml&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;  # Parse coverage from coverage.xml file&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  coverage&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;#39;&#x2F;lines: (\d+\.\d+)%&#x2F;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;gcovr.com&#x2F;en&#x2F;latest&#x2F;&quot;&gt;GCOVR&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;google&#x2F;googletest&quot;&gt;Google Test&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Deploy Traefik as a reverse proxy with Kubernetes</title>
        <published>2025-05-25T00:00:00+00:00</published>
        <updated>2025-05-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://bensuperpc.github.io/tutorial/kubernetes/"/>
        <id>https://bensuperpc.github.io/tutorial/kubernetes/</id>
        
        <content type="html" xml:base="https://bensuperpc.github.io/tutorial/kubernetes/">&lt;h1 id=&quot;deploy-traefik-as-a-reverse-proxy-with-kubernetes&quot;&gt;Deploy Traefik as a reverse proxy with Kubernetes&lt;&#x2F;h1&gt;
&lt;p&gt;I recommend learning the basics of Docker&#x2F;containers and Kubernetes before starting this tutorial.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;dependencies-and-configure-kubernetes&quot;&gt;Dependencies and configure Kubernetes&lt;&#x2F;h2&gt;
&lt;p&gt;Install the required packages for Kubernetes and Minikube on your system:&lt;&#x2F;p&gt;
&lt;p&gt;On &lt;strong&gt;Arch Linux&#x2F;Manjaro&lt;&#x2F;strong&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span&gt; minikube cri-o kompose helm kubectl kubelet kubeadm&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;start minikube:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;minikube&lt;&#x2F;span&gt;&lt;span&gt; start&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Configure Kubernetes context to use Minikube:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kubectl&lt;&#x2F;span&gt;&lt;span&gt; config use-context minikube &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; kubectl&lt;&#x2F;span&gt;&lt;span&gt; config get-contexts &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; kubectl&lt;&#x2F;span&gt;&lt;span&gt; get nodes&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Enable and start kubelet service:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; systemctl start kubelet &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; sudo&lt;&#x2F;span&gt;&lt;span&gt; systemctl enable&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --now&lt;&#x2F;span&gt;&lt;span&gt; kubelet &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; sudo&lt;&#x2F;span&gt;&lt;span&gt; systemctl status kubelet&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;deploy-traefik-with-helm&quot;&gt;Deploy Traefik with Helm&lt;&#x2F;h2&gt;
&lt;p&gt;Let&#x27;s deploy Traefik using Helm, which is a package manager for Kubernetes.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;helm&lt;&#x2F;span&gt;&lt;span&gt; repo add traefik https:&#x2F;&#x2F;traefik.github.io&#x2F;charts &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; helm&lt;&#x2F;span&gt;&lt;span&gt; repo update &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; helm&lt;&#x2F;span&gt;&lt;span&gt; install traefik traefik&#x2F;traefik&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --namespace&lt;&#x2F;span&gt;&lt;span&gt; traefik-tutorial&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --create-namespace&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Once the installation is complete, you can check the status of the traefik install:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;helm&lt;&#x2F;span&gt;&lt;span&gt; list&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -A&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Result:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;NAME&lt;&#x2F;span&gt;&lt;span&gt;    NAMESPACE               REVISION        UPDATED                                 STATUS          CHART           APP VERSION&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;traefik&lt;&#x2F;span&gt;&lt;span&gt; traefik-tutorial&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;        1&lt;&#x2F;span&gt;&lt;span&gt;               2025-05-27 21:55:44.32763531 +0200 CEST deployed        traefik-35.2.0  v3.3.6&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You can also check the status of services:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;minikube&lt;&#x2F;span&gt;&lt;span&gt; service list&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You should see output similar to this:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;------------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;-----------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;---------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;---------------------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;    NAMESPACE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;     |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;      NAME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;       |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;  TARGET&lt;&#x2F;span&gt;&lt;span&gt; PORT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;  |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;            URL&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;            |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;------------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;-----------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;---------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;---------------------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; default&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;          |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; kubernetes&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;      |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; No&lt;&#x2F;span&gt;&lt;span&gt; node port&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;  |                           |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; kube-system&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;      |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; kube-dns&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;        |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; No&lt;&#x2F;span&gt;&lt;span&gt; node port&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;  |                           |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; traefik-tutorial&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; traefik&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;         |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; web&#x2F;80&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;        |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; http:&#x2F;&#x2F;192.168.49.2:31134&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|                  |                 |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; websecure&#x2F;443&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; http:&#x2F;&#x2F;192.168.49.2:32083&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;------------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;-----------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;---------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;---------------------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The &lt;strong&gt;NAME&lt;&#x2F;strong&gt; (&lt;em&gt;traefik&lt;&#x2F;em&gt;) must match to &lt;strong&gt;ingressClassName&lt;&#x2F;strong&gt; in the Ingress controller.&lt;&#x2F;p&gt;
&lt;p&gt;You can also check the ingress controller:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kubectl&lt;&#x2F;span&gt;&lt;span&gt; get ingressclass&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Result:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;NAME&lt;&#x2F;span&gt;&lt;span&gt;      CONTROLLER                      PARAMETERS   AGE&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;traefik&lt;&#x2F;span&gt;&lt;span&gt;   traefik.io&#x2F;ingress-controller&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;   &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;none&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt;       34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Get the Traefik service URL:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;minikube&lt;&#x2F;span&gt;&lt;span&gt; service traefik&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span&gt; traefik-tutorial&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --url&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Result:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;http:&#x2F;&#x2F;192.168.49.2:31134&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;http:&#x2F;&#x2F;192.168.49.2:32083&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You can check &lt;code&gt;traefik&lt;&#x2F;code&gt; pod in the &lt;code&gt;traefik-tutorial&lt;&#x2F;code&gt; namespace:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kubectl&lt;&#x2F;span&gt;&lt;span&gt; get pods&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --all-namespaces&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Result:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;NAMESPACE&lt;&#x2F;span&gt;&lt;span&gt;          NAME                               READY   STATUS    RESTARTS       AGE&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        coredns-668d6bf9bc-4wnlv           1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   5&lt;&#x2F;span&gt;&lt;span&gt; (22h ago)    9d&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        etcd-minikube                      1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   5&lt;&#x2F;span&gt;&lt;span&gt; (22h ago)    9d&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        kube-apiserver-minikube            1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   5&lt;&#x2F;span&gt;&lt;span&gt; (22h ago)    9d&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        kube-controller-manager-minikube   1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   5&lt;&#x2F;span&gt;&lt;span&gt; (22h ago)    9d&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        kube-proxy-79r5k                   1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   5&lt;&#x2F;span&gt;&lt;span&gt; (22h ago)    9d&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        kube-scheduler-minikube            1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   5&lt;&#x2F;span&gt;&lt;span&gt; (22h ago)    9d&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        storage-provisioner                1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   12&lt;&#x2F;span&gt;&lt;span&gt; (30m ago)   9d&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;traefik-tutorial&lt;&#x2F;span&gt;&lt;span&gt;   traefik-66c954b954-qzdvw   1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   0&lt;&#x2F;span&gt;&lt;span&gt;              4m35s&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;deploy-a-sample-application-with-traefik&quot;&gt;Deploy a sample application with Traefik&lt;&#x2F;h2&gt;
&lt;p&gt;You can now deploy a sample application to test Traefik as a reverse proxy, we will deploy the &lt;code&gt;whoami&lt;&#x2F;code&gt; application, which is a simple HTTP server that returns information about the request it receives.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;traefik.ingress.whoami.yml&lt;&#x2F;strong&gt; : Ingress define to route traffic to the &lt;code&gt;whoami&lt;&#x2F;code&gt; service.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;apiVersion&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; networking.k8s.io&#x2F;v1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;kind&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; Ingress&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;metadata&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami-ingress&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  namespace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; traefik-tutorial&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  annotations&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;      #kubernetes.io&#x2F;ingress.class: traefik&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;      traefik.ingress.kubernetes.io&#x2F;router.entrypoints&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; web&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;      #traefik.ingress.kubernetes.io&#x2F;router.entrypoints: websecure&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;spec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  ingressClassName&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; traefik&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  rules&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt; host&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami.bensuperpc.org&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;      http&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;        paths&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt; path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; &#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;            pathType&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; Prefix&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;            backend&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;              service&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;                name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;                port&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;                  number&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 80&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt; host&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami.192.168.49.2.nip.io&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;      http&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;        paths&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt; path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; &#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;            pathType&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; Prefix&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;            backend&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;              service&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;                name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;                port&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;                  number&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 80&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;whoami.deployment.yml&lt;&#x2F;strong&gt; : The Deployment specifies how the &lt;code&gt;whoami&lt;&#x2F;code&gt; application runs inside a pod.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;kind&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; Deployment&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;apiVersion&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; apps&#x2F;v1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;metadata&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  namespace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; traefik-tutorial&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  labels&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    app&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;spec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  replicas&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  selector&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    matchLabels&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;      app&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  template&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    metadata&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;      labels&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;        app&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    spec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;      containers&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt; name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;          image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; traefik&#x2F;whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;          ports&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt; name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; web&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;              containerPort&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 80&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;whoami.services.yml&lt;&#x2F;strong&gt; : The Service specifies how the application is made accessible on the network.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;apiVersion&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; v1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;kind&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; Service&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;metadata&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  namespace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; traefik-tutorial&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;spec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; ClusterIP&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  ports&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt; name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; web&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;      port&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 80&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;      targetPort&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 80&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  selector&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    app&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Apply the Ingress, Deployment, and Service configurations:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kubectl&lt;&#x2F;span&gt;&lt;span&gt; apply&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; whoami.services.yml&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; whoami.deployment.yml&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; traefik.ingress.whoami.yml&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Check the status of the pods to ensure they are running:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kubectl&lt;&#x2F;span&gt;&lt;span&gt; get pods&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --all-namespaces&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You should see &lt;code&gt;whoami&lt;&#x2F;code&gt; and &lt;code&gt;traefik&lt;&#x2F;code&gt; pods running in the &lt;code&gt;traefik-tutorial&lt;&#x2F;code&gt; namespace:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;NAMESPACE&lt;&#x2F;span&gt;&lt;span&gt;          NAME                               READY   STATUS    RESTARTS      AGE&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        coredns-668d6bf9bc-5llhm           1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        etcd-minikube                      1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        kube-apiserver-minikube            1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        kube-controller-manager-minikube   1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        kube-proxy-9llmn                   1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        kube-scheduler-minikube            1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        storage-provisioner                1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   5&lt;&#x2F;span&gt;&lt;span&gt; (30s ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;traefik-tutorial&lt;&#x2F;span&gt;&lt;span&gt;   traefik-66c954b954-qzdvw           1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;traefik-tutorial&lt;&#x2F;span&gt;&lt;span&gt;   whoami-68965c9df8-cv94z            1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Now you can access the &lt;code&gt;whoami&lt;&#x2F;code&gt; service through Traefik using the defined hostnames:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;curl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;Host: whoami.bensuperpc.org&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; http:&#x2F;&#x2F;192.168.49.2:31134&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Result:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;Hostname:&lt;&#x2F;span&gt;&lt;span&gt; whoami-68965c9df8-cv94z&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;IP:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 127.0.0.1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;IP:&lt;&#x2F;span&gt;&lt;span&gt; ::1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;IP:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 10.244.0.4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;IP:&lt;&#x2F;span&gt;&lt;span&gt; fe80::90a3:81ff:fe9d:8107&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;RemoteAddr:&lt;&#x2F;span&gt;&lt;span&gt; 10.244.0.6:48226&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;GET&lt;&#x2F;span&gt;&lt;span&gt; &#x2F; HTTP&#x2F;1.1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;Host:&lt;&#x2F;span&gt;&lt;span&gt; whoami.bensuperpc.org&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;User-Agent:&lt;&#x2F;span&gt;&lt;span&gt; curl&#x2F;8.13.0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;Accept:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;font-weight: bold;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;font-weight: bold;&quot;&gt;*&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;Accept-Encoding:&lt;&#x2F;span&gt;&lt;span&gt; gzip&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;X-Forwarded-For:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 10.244.0.1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;X-Forwarded-Host:&lt;&#x2F;span&gt;&lt;span&gt; whoami.bensuperpc.org&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;X-Forwarded-Port:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 80&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;X-Forwarded-Proto:&lt;&#x2F;span&gt;&lt;span&gt; http&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;X-Forwarded-Server:&lt;&#x2F;span&gt;&lt;span&gt; traefik-686745597f-g49dt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;X-Real-Ip:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 10.244.0.1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you access with your browser to &lt;code&gt;http:&#x2F;&#x2F;whoami.192.168.49.2.nip.io:31134&#x2F;&lt;&#x2F;code&gt;, you should see the same result.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;You may need to add the &lt;code&gt;whoami.192.168.49.2.nip.io&lt;&#x2F;code&gt; and &lt;code&gt;whoami.bensuperpc.org&lt;&#x2F;code&gt; domains to your &lt;code&gt;&#x2F;etc&#x2F;hosts&lt;&#x2F;code&gt; file or use a DNS service that resolves it to the Minikube IP address.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;scaling-the-application&quot;&gt;Scaling the application&lt;&#x2F;h2&gt;
&lt;p&gt;We can now add more whoami instances, and Traefik will route the traffic automatically based on the Ingress rules defined.&lt;&#x2F;p&gt;
&lt;p&gt;Let&#x27;s scale the &lt;code&gt;whoami&lt;&#x2F;code&gt; deployment to 5 replicas:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kubectl&lt;&#x2F;span&gt;&lt;span&gt; scale deploy whoami&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --replicas=5 -n&lt;&#x2F;span&gt;&lt;span&gt; traefik-tutorial &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Now check the status of the pods again:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kubectl&lt;&#x2F;span&gt;&lt;span&gt; get pods&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --all-namespaces&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You should see multiple &lt;code&gt;whoami&lt;&#x2F;code&gt; pods running:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;NAMESPACE&lt;&#x2F;span&gt;&lt;span&gt;          NAME                               READY   STATUS    RESTARTS      AGE&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        coredns-668d6bf9bc-5llhm           1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        etcd-minikube                      1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        kube-apiserver-minikube            1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        kube-controller-manager-minikube   1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        kube-proxy-9llmn                   1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        kube-scheduler-minikube            1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kube-system&lt;&#x2F;span&gt;&lt;span&gt;        storage-provisioner                1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   5&lt;&#x2F;span&gt;&lt;span&gt; (30s ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;traefik-tutorial&lt;&#x2F;span&gt;&lt;span&gt;   traefik-66c954b954-qzdvw           1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;traefik-tutorial&lt;&#x2F;span&gt;&lt;span&gt;   whoami-68965c9df8-cv94z            1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   2&lt;&#x2F;span&gt;&lt;span&gt; (10h ago)   34h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;traefik-tutorial&lt;&#x2F;span&gt;&lt;span&gt;   whoami-68965c9df8-5g7xk            1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   0&lt;&#x2F;span&gt;&lt;span&gt;             2m&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;traefik-tutorial&lt;&#x2F;span&gt;&lt;span&gt;   whoami-68965c9df8-7j5qk            1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   0&lt;&#x2F;span&gt;&lt;span&gt;             2m&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;traefik-tutorial&lt;&#x2F;span&gt;&lt;span&gt;   whoami-68965c9df8-8j6xk            1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   0&lt;&#x2F;span&gt;&lt;span&gt;             2m&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;traefik-tutorial&lt;&#x2F;span&gt;&lt;span&gt;   whoami-68965c9df8-9k7xk            1&#x2F;1     Running&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   0&lt;&#x2F;span&gt;&lt;span&gt;             2m&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You can access the &lt;code&gt;whoami&lt;&#x2F;code&gt; service again, and it will now return responses from different pods, demonstrating that Traefik is load balancing the requests across the replicas.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;curl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;Host: whoami.bensuperpc.org&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; http:&#x2F;&#x2F;192.168.49.2:31134&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;Hostname&lt;&#x2F;code&gt; and &lt;code&gt;IP&lt;&#x2F;code&gt; will change each time you call the service, as it will return the information from a different pod.&lt;&#x2F;p&gt;
&lt;p&gt;Rescale the &lt;code&gt;whoami&lt;&#x2F;code&gt; deployment back to 1 replica:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kubectl&lt;&#x2F;span&gt;&lt;span&gt; scale deploy whoami&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --replicas=1 -n&lt;&#x2F;span&gt;&lt;span&gt; traefik-tutorial &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;horizontal-pod-autoscaler&quot;&gt;Horizontal Pod Autoscaler&lt;&#x2F;h3&gt;
&lt;p&gt;You need to install the metrics server to use HPA. You can install it with the following command:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kubectl&lt;&#x2F;span&gt;&lt;span&gt; apply&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; https:&#x2F;&#x2F;github.com&#x2F;kubernetes-sigs&#x2F;metrics-server&#x2F;releases&#x2F;latest&#x2F;download&#x2F;components.yaml&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Now update your &lt;code&gt;whoami&lt;&#x2F;code&gt; deployment to use HPA to automatically scale the number of replicas.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;whoami.deployment.yml&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;kind&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; Deployment&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;apiVersion&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; apps&#x2F;v1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;metadata&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  namespace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; traefik-tutorial&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  labels&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    app&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;spec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  replicas&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  selector&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    matchLabels&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;      app&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  template&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    metadata&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;      labels&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;        app&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    spec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;      containers&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt; name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;          image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; traefik&#x2F;whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;          ports&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt; name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; web&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;              containerPort&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 80&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;          resources&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;            requests&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;              cpu&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;100m&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;              memory&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;128Mi&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;            limits&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;              cpu&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;250m&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;              memory&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;256Mi&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Add the Horizontal Pod Autoscaler configuration to automatically scale the &lt;code&gt;whoami&lt;&#x2F;code&gt; deployment.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;whoami.hpa.yml&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;apiVersion&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; autoscaling&#x2F;v2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;kind&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; HorizontalPodAutoscaler&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;metadata&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  namespace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; traefik-tutorial&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;spec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  scaleTargetRef&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    apiVersion&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; apps&#x2F;v1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    kind&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; Deployment&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;    name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; whoami&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  minReplicas&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  maxReplicas&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 10&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;  metrics&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt; type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; Resource&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;      resource&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;        name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; cpu&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;        target&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;          type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; Utilization&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #72F1B8;&quot;&gt;          averageUtilization&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B6B1B1;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 50&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Apply the updated &lt;code&gt;whoami&lt;&#x2F;code&gt; deployment and HPA configuration:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kubectl&lt;&#x2F;span&gt;&lt;span&gt; apply&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; whoami.services.yml&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; whoami.deployment.yml&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; traefik.ingress.whoami.yml&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; whoami.hpa.yml&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Now you can check the status of the Horizontal Pod Autoscaler:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kubectl&lt;&#x2F;span&gt;&lt;span&gt; get hpa&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span&gt; traefik-tutorial&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Expected result:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;NAME&lt;&#x2F;span&gt;&lt;span&gt;     REFERENCE           TARGETS              MINPODS   MAXPODS   REPLICAS   AGE&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;whoami&lt;&#x2F;span&gt;&lt;span&gt;   Deployment&#x2F;whoami   cpu:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;unknown&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;50%&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;   1         5         1&lt;&#x2F;span&gt;&lt;span&gt;          85s&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;clean-up&quot;&gt;Clean up&lt;&#x2F;h2&gt;
&lt;p&gt;To clean up the resources created during this tutorial, you can delete the Ingress, Deployment, and Service configurations, as well as the Traefik installation.&lt;&#x2F;p&gt;
&lt;p&gt;Uninstall helm chart:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;helm&lt;&#x2F;span&gt;&lt;span&gt; uninstall traefik&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --namespace&lt;&#x2F;span&gt;&lt;span&gt; traefik-tutorial&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Delete all resources in the &lt;code&gt;traefik-tutorial&lt;&#x2F;code&gt; namespace and cleanup Minikube:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;kubectl&lt;&#x2F;span&gt;&lt;span&gt; delete all&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --all -n&lt;&#x2F;span&gt;&lt;span&gt; traefik-tutorial &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; minikube&lt;&#x2F;span&gt;&lt;span&gt; delete&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;More info:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;doc.traefik.io&#x2F;traefik&#x2F;&quot;&gt;Traefik documentation&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;doc.traefik.io&#x2F;traefik&#x2F;getting-started&#x2F;quick-start-with-kubernetes&#x2F;&quot;&gt;Traefik quick start&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;octopus.com&#x2F;blog&#x2F;difference-clusterip-nodeport-loadbalancer-kubernetes&quot;&gt;Difference clusterip&#x2F;nodeport&#x2F;loadbalancer&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;dockersamples&#x2F;example-voting-app&quot;&gt;Voting application example&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;doc.traefik.io&#x2F;traefik-hub&#x2F;api-gateway&#x2F;expose&#x2F;api-gateway-autoscaling&quot;&gt;api gateway autoscaling&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Mesa GPU drivers</title>
        <published>2025-03-21T00:00:00+00:00</published>
        <updated>2025-03-21T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://bensuperpc.github.io/documentation/hardware/pc/gpu/"/>
        <id>https://bensuperpc.github.io/documentation/hardware/pc/gpu/</id>
        
        <content type="html" xml:base="https://bensuperpc.github.io/documentation/hardware/pc/gpu/">&lt;h1 id=&quot;introduction&quot;&gt;Introduction&lt;&#x2F;h1&gt;
&lt;p&gt;You can find below a list of GPU architectures and their corresponding Mesa drivers and API support.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;amd-graphics&quot;&gt;AMD Graphics&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Release&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;GFX Core&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Architecture&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;GPU Models&#x2F;Series&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;OpenGL&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;OpenCL&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Vulkan&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;2000-2002&lt;&#x2F;td&gt;&lt;td&gt;GFX1&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;Radeon 7xxx&lt;&#x2F;td&gt;&lt;td&gt;1.3&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2002-2004&lt;&#x2F;td&gt;&lt;td&gt;GFX1&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;Radeon 8xxx, Radeon 9000, Radeon 9200, Radeon 9250&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2002-2005&lt;&#x2F;td&gt;&lt;td&gt;GFX2&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;Radeon 9500, Radeon 9600, Radeon 9700, Radeon 9800, Radeon X300-X850&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2004-2005&lt;&#x2F;td&gt;&lt;td&gt;GFX2&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;Radeon X700, Radeon X800, Radeon X850, Radeon Xpress 200-1250&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2005-2006&lt;&#x2F;td&gt;&lt;td&gt;GFX2&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;Radeon X1300, Radeon X1600, Radeon X1800, Radeon X1900, Radeon X1950&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2007-2008&lt;&#x2F;td&gt;&lt;td&gt;GFX3&lt;&#x2F;td&gt;&lt;td&gt;Ultra-Threaded SE&lt;&#x2F;td&gt;&lt;td&gt;Radeon HD 2xxx, Radeon HD 3xxx&lt;&#x2F;td&gt;&lt;td&gt;3.3&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2008-2009&lt;&#x2F;td&gt;&lt;td&gt;GFX3&lt;&#x2F;td&gt;&lt;td&gt;TeraScale 1&lt;&#x2F;td&gt;&lt;td&gt;Radeon HD 4xxx&lt;&#x2F;td&gt;&lt;td&gt;3.3&lt;&#x2F;td&gt;&lt;td&gt;1.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2009-2011&lt;&#x2F;td&gt;&lt;td&gt;GFX4&lt;&#x2F;td&gt;&lt;td&gt;TeraScale 2&lt;&#x2F;td&gt;&lt;td&gt;Radeon HD 5xxx, Radeon HD 6xxx&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;1.2&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2010-2012&lt;&#x2F;td&gt;&lt;td&gt;GFX5&lt;&#x2F;td&gt;&lt;td&gt;TeraScale 3&lt;&#x2F;td&gt;&lt;td&gt;Radeon HD 69xx, Radeon HD 7xxx (Trinity&#x2F;Richland APUs)&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2012-2013&lt;&#x2F;td&gt;&lt;td&gt;GFX6&lt;&#x2F;td&gt;&lt;td&gt;GCN 1.0&lt;&#x2F;td&gt;&lt;td&gt;Radeon HD 7xxx-8xxx, Radeon R7 240&#x2F;250, Radeon R9 280&#x2F;290&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;1.3&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2013-2014&lt;&#x2F;td&gt;&lt;td&gt;GFX7&lt;&#x2F;td&gt;&lt;td&gt;GCN 2.0&lt;&#x2F;td&gt;&lt;td&gt;Radeon R7 260, Radeon R9 290X, Radeon R9 295X2, Kaveri APUs&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;1.3&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2014-2015&lt;&#x2F;td&gt;&lt;td&gt;GFX8&lt;&#x2F;td&gt;&lt;td&gt;GCN 3.0&lt;&#x2F;td&gt;&lt;td&gt;Radeon R9 285, Radeon R9 380, Radeon R9 390&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2015-2017&lt;&#x2F;td&gt;&lt;td&gt;GFX8.1&lt;&#x2F;td&gt;&lt;td&gt;GCN 4.0&lt;&#x2F;td&gt;&lt;td&gt;Radeon R9 Fury series, Radeon RX 4xx&#x2F;5xx, Stoney Ridge APUs&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2017-2019&lt;&#x2F;td&gt;&lt;td&gt;GFX9&lt;&#x2F;td&gt;&lt;td&gt;GCN 5.0&lt;&#x2F;td&gt;&lt;td&gt;Radeon RX Vega 56&#x2F;64, Radeon VII, Raven Ridge&#x2F;Renoir APUs&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2019-2020&lt;&#x2F;td&gt;&lt;td&gt;GFX10&lt;&#x2F;td&gt;&lt;td&gt;RDNA 1.0&lt;&#x2F;td&gt;&lt;td&gt;Radeon RX 5xxx (Navi 10, Navi 12, Navi 14)&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2020-2022&lt;&#x2F;td&gt;&lt;td&gt;GFX10&lt;&#x2F;td&gt;&lt;td&gt;RDNA 2.0&lt;&#x2F;td&gt;&lt;td&gt;Radeon RX 6xxx (Navi 21, Navi 22, Navi 23, Navi 24), Van Gogh, Raphael APUs&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2022-2024&lt;&#x2F;td&gt;&lt;td&gt;GFX11&lt;&#x2F;td&gt;&lt;td&gt;RDNA 3.0&lt;&#x2F;td&gt;&lt;td&gt;Radeon RX 7xxx (Navi 31, Navi 32, Navi 33), Phoenix APUs (780M, 760M)&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2024&lt;&#x2F;td&gt;&lt;td&gt;GFX11&lt;&#x2F;td&gt;&lt;td&gt;RDNA 3.5&lt;&#x2F;td&gt;&lt;td&gt;Radeon RX 8xxM (Strix Point APUs)&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2025&lt;&#x2F;td&gt;&lt;td&gt;GFX12&lt;&#x2F;td&gt;&lt;td&gt;RDNA 4.0&lt;&#x2F;td&gt;&lt;td&gt;Radeon RX 9xxx&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;mesa-drivers&quot;&gt;Mesa drivers&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Driver name&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Type&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Version&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;GFX Core&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;r200 &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;docs.mesa3d.org&#x2F;amber.html&quot;&gt;mesa-amber&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;OpenGL&lt;&#x2F;td&gt;&lt;td&gt;1.5&lt;&#x2F;td&gt;&lt;td&gt;GFX1&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;r300&lt;&#x2F;td&gt;&lt;td&gt;OpenGL&lt;&#x2F;td&gt;&lt;td&gt;1.5&lt;&#x2F;td&gt;&lt;td&gt;GFX2&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;r600&lt;&#x2F;td&gt;&lt;td&gt;OpenGL&lt;&#x2F;td&gt;&lt;td&gt;3.3&lt;&#x2F;td&gt;&lt;td&gt;GFX3-GFX5&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;radeonsi&lt;&#x2F;td&gt;&lt;td&gt;OpenGL&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;GFX6-GFX11&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;radv&lt;&#x2F;td&gt;&lt;td&gt;Vulkan&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;td&gt;GFX6-GFX11&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;intel-graphics&quot;&gt;Intel Graphics&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Release&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;GFX Core&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Architecture&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;GPU Models&#x2F;Series&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;OpenGL&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;OpenCL&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Vulkan&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1998-1999&lt;&#x2F;td&gt;&lt;td&gt;Gen1&lt;&#x2F;td&gt;&lt;td&gt;3D Accelerator&lt;&#x2F;td&gt;&lt;td&gt;i740, i752, i754&lt;&#x2F;td&gt;&lt;td&gt;1.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1999-2003&lt;&#x2F;td&gt;&lt;td&gt;Gen2&lt;&#x2F;td&gt;&lt;td&gt;Extreme Graphics&lt;&#x2F;td&gt;&lt;td&gt;82810, 82815, 82845G, 82855GM, 82865G&lt;&#x2F;td&gt;&lt;td&gt;1.3&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2003-2004&lt;&#x2F;td&gt;&lt;td&gt;Gen3&lt;&#x2F;td&gt;&lt;td&gt;Extreme Graphics 2&lt;&#x2F;td&gt;&lt;td&gt;82852GM, 82855GM, 82915G, 82925X&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2006-2007&lt;&#x2F;td&gt;&lt;td&gt;Gen4&lt;&#x2F;td&gt;&lt;td&gt;GMA 3000&#x2F;3100&lt;&#x2F;td&gt;&lt;td&gt;G965, Q965, X3000, X3100, G31, G33, G35, Q33, Q35&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2007-2009&lt;&#x2F;td&gt;&lt;td&gt;Gen4.5&lt;&#x2F;td&gt;&lt;td&gt;GMA X3500&#x2F;X4500&lt;&#x2F;td&gt;&lt;td&gt;G35, G41, G43, G45, Q43, Q45, B43, X38, X48&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2010&lt;&#x2F;td&gt;&lt;td&gt;Gen5&lt;&#x2F;td&gt;&lt;td&gt;Ironlake&lt;&#x2F;td&gt;&lt;td&gt;HD Graphics (Arrandale, Clarkdale)&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2011&lt;&#x2F;td&gt;&lt;td&gt;Gen6&lt;&#x2F;td&gt;&lt;td&gt;Sandy Bridge&lt;&#x2F;td&gt;&lt;td&gt;HD Graphics 2000&#x2F;3000&lt;&#x2F;td&gt;&lt;td&gt;3.3&lt;&#x2F;td&gt;&lt;td&gt;1.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2012&lt;&#x2F;td&gt;&lt;td&gt;Gen7&lt;&#x2F;td&gt;&lt;td&gt;Ivy Bridge&lt;&#x2F;td&gt;&lt;td&gt;HD Graphics 2500&#x2F;4000&lt;&#x2F;td&gt;&lt;td&gt;4.2&lt;&#x2F;td&gt;&lt;td&gt;1.2&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2013&lt;&#x2F;td&gt;&lt;td&gt;Gen7.5&lt;&#x2F;td&gt;&lt;td&gt;Haswell&lt;&#x2F;td&gt;&lt;td&gt;HD Graphics 4200&#x2F;4400&#x2F;4600&#x2F;5000&#x2F;5100&#x2F;5200&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;1.2&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2014-2015&lt;&#x2F;td&gt;&lt;td&gt;Gen8&lt;&#x2F;td&gt;&lt;td&gt;Broadwell&lt;&#x2F;td&gt;&lt;td&gt;HD Graphics 5300&#x2F;5500&#x2F;6000, Iris 6100&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;2.0&lt;&#x2F;td&gt;&lt;td&gt;1.3&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2015-2017&lt;&#x2F;td&gt;&lt;td&gt;Gen9&lt;&#x2F;td&gt;&lt;td&gt;Skylake&lt;&#x2F;td&gt;&lt;td&gt;HD Graphics 5xx, Iris 5xx&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2017-2019&lt;&#x2F;td&gt;&lt;td&gt;Gen9.5&lt;&#x2F;td&gt;&lt;td&gt;Kaby Lake&#x2F;Coffee Lake&lt;&#x2F;td&gt;&lt;td&gt;UHD Graphics 6xx, Iris Plus 6xx&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2019-2020&lt;&#x2F;td&gt;&lt;td&gt;Gen11&lt;&#x2F;td&gt;&lt;td&gt;Ice Lake&lt;&#x2F;td&gt;&lt;td&gt;Iris Plus Graphics (G4, G7)&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2020-2021&lt;&#x2F;td&gt;&lt;td&gt;Gen12&lt;&#x2F;td&gt;&lt;td&gt;Xe-LP&lt;&#x2F;td&gt;&lt;td&gt;UHD Graphics (Rocket Lake), Iris Xe (Alder Lake)&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2022&lt;&#x2F;td&gt;&lt;td&gt;Gen12.7&lt;&#x2F;td&gt;&lt;td&gt;Xe-HPG&#x2F;Xe-HPC&lt;&#x2F;td&gt;&lt;td&gt;Arc Alchemist (A7xx A3xx), Ponte Vecchio&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;3.0&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2024-2025&lt;&#x2F;td&gt;&lt;td&gt;Gen20&lt;&#x2F;td&gt;&lt;td&gt;Xe2-HPG&#x2F;Xe2-LPG&lt;&#x2F;td&gt;&lt;td&gt;Battlemage (B5xx), Lunar Lake&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;3.0&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;mesa-drivers-1&quot;&gt;Mesa drivers&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Driver name&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Type&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Version&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;GFX Core&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;i830&#x2F;i965 &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;docs.mesa3d.org&#x2F;amber.html&quot;&gt;mesa-amber&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;OpenGL&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;td&gt;Gen2&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;i915&lt;&#x2F;td&gt;&lt;td&gt;OpenGL&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;Gen3&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;crocus&lt;&#x2F;td&gt;&lt;td&gt;OpenGL&lt;&#x2F;td&gt;&lt;td&gt;4.6¹&lt;&#x2F;td&gt;&lt;td&gt;Gen4-Gen7.5&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;iris&lt;&#x2F;td&gt;&lt;td&gt;OpenGL&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;Gen8-Gen20&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;hasvk&lt;&#x2F;td&gt;&lt;td&gt;Vulkan&lt;&#x2F;td&gt;&lt;td&gt;1.0 (partial)&lt;&#x2F;td&gt;&lt;td&gt;Gen6-Gen8&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;anv&lt;&#x2F;td&gt;&lt;td&gt;Vulkan&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;td&gt;Gen9-Gen20&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;&lt;strong&gt;¹&lt;&#x2F;strong&gt;: May vary depending on hardware.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;nvidia-graphics&quot;&gt;Nvidia Graphics&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Release&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;GFX Core&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Architecture&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;GPU Models&#x2F;Series&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;OpenGL&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;OpenCL&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Vulkan&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1995&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;td&gt;NV1&lt;&#x2F;td&gt;&lt;td&gt;NV1 (Diamond Edge 3D)&lt;&#x2F;td&gt;&lt;td&gt;1.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Cancelled&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;td&gt;NV2&lt;&#x2F;td&gt;&lt;td&gt;Cancelled&lt;&#x2F;td&gt;&lt;td&gt;1.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1997&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;td&gt;NV3&lt;&#x2F;td&gt;&lt;td&gt;NV3, RIVA 128, RIVA 128ZX&lt;&#x2F;td&gt;&lt;td&gt;1.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1998-1999&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;td&gt;NV4&lt;&#x2F;td&gt;&lt;td&gt;RIVA TNT, TNT2, TNT2 Ultra, Vanta, M64&lt;&#x2F;td&gt;&lt;td&gt;1.2&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1999-2000&lt;&#x2F;td&gt;&lt;td&gt;Celsius¹&lt;&#x2F;td&gt;&lt;td&gt;NV10&lt;&#x2F;td&gt;&lt;td&gt;GeForce 256, GeForce 2, Quadro&lt;&#x2F;td&gt;&lt;td&gt;1.3&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2001-2002&lt;&#x2F;td&gt;&lt;td&gt;Kelvin¹&lt;&#x2F;td&gt;&lt;td&gt;NV20&lt;&#x2F;td&gt;&lt;td&gt;GeForce 3, GeForce 4 Ti&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2003-2004&lt;&#x2F;td&gt;&lt;td&gt;Rankine¹&lt;&#x2F;td&gt;&lt;td&gt;NV30&lt;&#x2F;td&gt;&lt;td&gt;GeForce FX 5xx Series&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2004-2006&lt;&#x2F;td&gt;&lt;td&gt;Curie¹&lt;&#x2F;td&gt;&lt;td&gt;NV40&lt;&#x2F;td&gt;&lt;td&gt;GeForce 6000&#x2F;7000, Quadro FX&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2006-2008&lt;&#x2F;td&gt;&lt;td&gt;Tesla (1st Gen)&lt;&#x2F;td&gt;&lt;td&gt;G80&lt;&#x2F;td&gt;&lt;td&gt;GeForce 8000, 9xx, 1xx, GTX 2xx&lt;&#x2F;td&gt;&lt;td&gt;3.3&lt;&#x2F;td&gt;&lt;td&gt;1.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2008-2009&lt;&#x2F;td&gt;&lt;td&gt;Tesla (2nd Gen)&lt;&#x2F;td&gt;&lt;td&gt;GT200&lt;&#x2F;td&gt;&lt;td&gt;GeForce GTX 260, 280, 295&lt;&#x2F;td&gt;&lt;td&gt;3.3&lt;&#x2F;td&gt;&lt;td&gt;1.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2010-2011&lt;&#x2F;td&gt;&lt;td&gt;Fermi&lt;&#x2F;td&gt;&lt;td&gt;GF100&lt;&#x2F;td&gt;&lt;td&gt;GeForce GT&#x2F;GTX 4xx&#x2F;5xx, Quadro 4000&#x2F;5000&#x2F;6000&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;1.1&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2012-2013&lt;&#x2F;td&gt;&lt;td&gt;Kepler&lt;&#x2F;td&gt;&lt;td&gt;GK100&lt;&#x2F;td&gt;&lt;td&gt;GeForce GT&#x2F;GTX 6xx&#x2F;7xx, Quadro K-series&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;1.1&lt;&#x2F;td&gt;&lt;td&gt;1.x ?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2014&lt;&#x2F;td&gt;&lt;td&gt;Maxwell (1st Gen)&lt;&#x2F;td&gt;&lt;td&gt;GM100&lt;&#x2F;td&gt;&lt;td&gt;GeForce GTX 750&#x2F;750 Ti, 8xx&lt;&#x2F;td&gt;&lt;td&gt;4.x&lt;&#x2F;td&gt;&lt;td&gt;1.2&lt;&#x2F;td&gt;&lt;td&gt;1.x ?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2014-2015&lt;&#x2F;td&gt;&lt;td&gt;Maxwell (2nd Gen)&lt;&#x2F;td&gt;&lt;td&gt;GM200&lt;&#x2F;td&gt;&lt;td&gt;GeForce GT&#x2F;GTX 9xx, Quadro M-series&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;1.2&lt;&#x2F;td&gt;&lt;td&gt;1.x ?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2016-2017&lt;&#x2F;td&gt;&lt;td&gt;Pascal&lt;&#x2F;td&gt;&lt;td&gt;GP100&lt;&#x2F;td&gt;&lt;td&gt;GeForce GTX 1xxx, Titan Xp, Quadro P-series&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;2.0&lt;&#x2F;td&gt;&lt;td&gt;1.3 ?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2016-2017&lt;&#x2F;td&gt;&lt;td&gt;Volta&lt;&#x2F;td&gt;&lt;td&gt;GV100&lt;&#x2F;td&gt;&lt;td&gt;GeForce GTX 1xxx, Quadro P-series&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;1.2&lt;&#x2F;td&gt;&lt;td&gt;1.3 ?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2018-2019&lt;&#x2F;td&gt;&lt;td&gt;Turing&lt;&#x2F;td&gt;&lt;td&gt;TU100&lt;&#x2F;td&gt;&lt;td&gt;GeForce RTX 2xxx, Quadro RTX&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;2.0&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2020-2021&lt;&#x2F;td&gt;&lt;td&gt;Ampere&lt;&#x2F;td&gt;&lt;td&gt;GA100&lt;&#x2F;td&gt;&lt;td&gt;GeForce RTX 3xxx, Quadro RTX A-series&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;3.0&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2022-2023&lt;&#x2F;td&gt;&lt;td&gt;Ada Lovelace&lt;&#x2F;td&gt;&lt;td&gt;AD100&lt;&#x2F;td&gt;&lt;td&gt;GeForce RTX 4xxx,&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;3.0&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2025&lt;&#x2F;td&gt;&lt;td&gt;Blackwell&lt;&#x2F;td&gt;&lt;td&gt;GB100&lt;&#x2F;td&gt;&lt;td&gt;GeForce RTX 5xxx&lt;&#x2F;td&gt;&lt;td&gt;4.6&lt;&#x2F;td&gt;&lt;td&gt;3.0&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;¹: The code names were initially used by the Nouveau kernel driver.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;mesa-drivers-2&quot;&gt;Mesa drivers&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Driver name&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Type&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Version&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;GFX Core&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;nv50&lt;&#x2F;td&gt;&lt;td&gt;OpenGL&lt;&#x2F;td&gt;&lt;td&gt;3.3&lt;&#x2F;td&gt;&lt;td&gt;G80-GT200&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;nvc0&lt;&#x2F;td&gt;&lt;td&gt;OpenGL&lt;&#x2F;td&gt;&lt;td&gt;4.5&lt;&#x2F;td&gt;&lt;td&gt;GF100-?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;nvk&lt;&#x2F;td&gt;&lt;td&gt;Vulkan&lt;&#x2F;td&gt;&lt;td&gt;1.4¹&lt;&#x2F;td&gt;&lt;td&gt;GK100-GB100&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;&lt;strong&gt;¹&lt;&#x2F;strong&gt;: May vary depending on hardware.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;broadcom-videocore&quot;&gt;Broadcom VideoCore&lt;&#x2F;h2&gt;
&lt;p&gt;It is mainly used in Raspberry Pi.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Release&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;GFX Core&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Architecture&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;SOC Models&#x2F;Series&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;OpenGL&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;OpenCL&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Vulkan&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;2012-2016&lt;&#x2F;td&gt;&lt;td&gt;VideoCore IV&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;BCM2835-BCM2837&lt;&#x2F;td&gt;&lt;td&gt;2.x&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2012-2016&lt;&#x2F;td&gt;&lt;td&gt;VideoCore VI&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;BCM2711B0&lt;&#x2F;td&gt;&lt;td&gt;3.3&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;1.0&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2012-2016&lt;&#x2F;td&gt;&lt;td&gt;VideoCore VII&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;BCM2712&lt;&#x2F;td&gt;&lt;td&gt;3.3&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A&lt;&#x2F;td&gt;&lt;td&gt;1.0&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;mesa-drivers-3&quot;&gt;Mesa drivers&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Driver name&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Type&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Version&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;GFX Core&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;vc4&lt;&#x2F;td&gt;&lt;td&gt;OpenGL&lt;&#x2F;td&gt;&lt;td&gt;2.1&lt;&#x2F;td&gt;&lt;td&gt;VideoCore IV&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;v3d&lt;&#x2F;td&gt;&lt;td&gt;OpenGL&lt;&#x2F;td&gt;&lt;td&gt;3.3&lt;&#x2F;td&gt;&lt;td&gt;VideoCore VI-VII&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;v3dv&lt;&#x2F;td&gt;&lt;td&gt;Vulkan&lt;&#x2F;td&gt;&lt;td&gt;1.0&lt;&#x2F;td&gt;&lt;td&gt;VideoCore VI-VII&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;source&quot;&gt;Source&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.x.org&#x2F;wiki&#x2F;RadeonFeature&#x2F;&quot;&gt;RadeonFeature&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Intel_Graphics_Technology&quot;&gt;IntelGraphics&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;List_of_Nvidia_graphics_processing_units&quot;&gt;NvidiaGraphics&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;List_of_AMD_graphics_processing_units&quot;&gt;AMDGraphics&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;mesamatrix.net&#x2F;&quot;&gt;Mesa Matrix&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;vulkan.gpuinfo.org&#x2F;&quot;&gt;Vulkan Hardware Database&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;airlied.blogspot.com&#x2F;2021&#x2F;04&#x2F;crocus-gallium-for-gen4-7-generation.html&quot;&gt;Crocus&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;OpenGL&quot;&gt;OpenGL Archlinux&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.collabora.com&#x2F;news-and-blog&#x2F;news-and-events&#x2F;mesa-25.2-brings-new-hardware-support-for-nouveau-users.html&quot;&gt;Nvk Vulkan Driver&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.khronos.org&#x2F;conformance&#x2F;adopters&#x2F;conformant-products&#x2F;vulkan&quot;&gt;Vulkan conformance&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Evolutions of CPUs (WIP)</title>
        <published>2025-02-24T00:00:00+00:00</published>
        <updated>2025-02-24T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://bensuperpc.github.io/documentation/hardware/pc/cpu/"/>
        <id>https://bensuperpc.github.io/documentation/hardware/pc/cpu/</id>
        
        <content type="html" xml:base="https://bensuperpc.github.io/documentation/hardware/pc/cpu/">&lt;h1 id=&quot;introduction&quot;&gt;Introduction&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;intel-cpu&quot;&gt;Intel CPU&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Release&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Codename&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Microarch&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;CPU Models&#x2F;Series&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;SIMD instructions&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;AES-NI&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1979&lt;&#x2F;td&gt;&lt;td&gt;8088&#x2F;8086&lt;&#x2F;td&gt;&lt;td&gt;8086&lt;&#x2F;td&gt;&lt;td&gt;Intel 8088&#x2F;8086&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1982&lt;&#x2F;td&gt;&lt;td&gt;80286&lt;&#x2F;td&gt;&lt;td&gt;80286&lt;&#x2F;td&gt;&lt;td&gt;Intel 80286&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1985&lt;&#x2F;td&gt;&lt;td&gt;80386&lt;&#x2F;td&gt;&lt;td&gt;80386&lt;&#x2F;td&gt;&lt;td&gt;Intel 80386&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1989&lt;&#x2F;td&gt;&lt;td&gt;80486&lt;&#x2F;td&gt;&lt;td&gt;80486&lt;&#x2F;td&gt;&lt;td&gt;Intel 80486&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1993&lt;&#x2F;td&gt;&lt;td&gt;P6&lt;&#x2F;td&gt;&lt;td&gt;P5&lt;&#x2F;td&gt;&lt;td&gt;Pentium&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1995&lt;&#x2F;td&gt;&lt;td&gt;P6&lt;&#x2F;td&gt;&lt;td&gt;P6&lt;&#x2F;td&gt;&lt;td&gt;Pentium Pro&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1997&lt;&#x2F;td&gt;&lt;td&gt;Klamath&lt;&#x2F;td&gt;&lt;td&gt;P6&lt;&#x2F;td&gt;&lt;td&gt;Pentium II&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF5645&quot; &gt;
    MMX
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1998&lt;&#x2F;td&gt;&lt;td&gt;Deschutes&lt;&#x2F;td&gt;&lt;td&gt;P6&lt;&#x2F;td&gt;&lt;td&gt;Pentium II&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF5645&quot; &gt;
    MMX
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1999&lt;&#x2F;td&gt;&lt;td&gt;Katmai&lt;&#x2F;td&gt;&lt;td&gt;P6&lt;&#x2F;td&gt;&lt;td&gt;Pentium III&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF6F61&quot; &gt;
    SSE
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1999&lt;&#x2F;td&gt;&lt;td&gt;Coppermine&lt;&#x2F;td&gt;&lt;td&gt;P6&lt;&#x2F;td&gt;&lt;td&gt;Pentium III&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF6F61&quot; &gt;
    SSE
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2000&lt;&#x2F;td&gt;&lt;td&gt;Willamette&lt;&#x2F;td&gt;&lt;td&gt;NetBurst&lt;&#x2F;td&gt;&lt;td&gt;Pentium 4&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFB347&quot; &gt;
    SSE2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2001&lt;&#x2F;td&gt;&lt;td&gt;Tualatin&lt;&#x2F;td&gt;&lt;td&gt;P6&lt;&#x2F;td&gt;&lt;td&gt;Pentium III&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF6F61&quot; &gt;
    SSE
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2002&lt;&#x2F;td&gt;&lt;td&gt;Northwood&lt;&#x2F;td&gt;&lt;td&gt;NetBurst&lt;&#x2F;td&gt;&lt;td&gt;Pentium 4&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFB347&quot; &gt;
    SSE2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2004&lt;&#x2F;td&gt;&lt;td&gt;Prescott&lt;&#x2F;td&gt;&lt;td&gt;NetBurst&lt;&#x2F;td&gt;&lt;td&gt;Pentium 4&#x2F;D&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    SSE3
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2004&lt;&#x2F;td&gt;&lt;td&gt;Cedar Mill&lt;&#x2F;td&gt;&lt;td&gt;NetBurst&lt;&#x2F;td&gt;&lt;td&gt;Pentium 4&#x2F;D&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    SSE3
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2006&lt;&#x2F;td&gt;&lt;td&gt;Conroe&lt;&#x2F;td&gt;&lt;td&gt;Core&lt;&#x2F;td&gt;&lt;td&gt;Core 2 E6xxx, E1&#x2F;E2xxx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    SSE3
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2006&lt;&#x2F;td&gt;&lt;td&gt;Kentsfield&lt;&#x2F;td&gt;&lt;td&gt;Core&lt;&#x2F;td&gt;&lt;td&gt;Core 2 Q6xxx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    SSE3
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2007&lt;&#x2F;td&gt;&lt;td&gt;Penryn&lt;&#x2F;td&gt;&lt;td&gt;Penryn&lt;&#x2F;td&gt;&lt;td&gt;Core 2 E7&#x2F;E8&#x2F;Q8&#x2F;Q9xxx, E2&#x2F;E5&#x2F;E6xxx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #ADFF2F&quot; &gt;
    SSSE3
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2008&lt;&#x2F;td&gt;&lt;td&gt;Nehalem&lt;&#x2F;td&gt;&lt;td&gt;Nehalem&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7 9xx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #2ECC40&quot; &gt;
    SSE4
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2010&lt;&#x2F;td&gt;&lt;td&gt;Westmere&lt;&#x2F;td&gt;&lt;td&gt;Westmere&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7 xxx, Pentium G69xx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00C49A&quot; &gt;
    SSE4.2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2011&lt;&#x2F;td&gt;&lt;td&gt;Sandy Bridge&lt;&#x2F;td&gt;&lt;td&gt;Sandy Bridge&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7 2xxx, Pentium G6xx&#x2F;G8xx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00D100&quot; &gt;
    AVX
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2012&lt;&#x2F;td&gt;&lt;td&gt;Ivy Bridge&lt;&#x2F;td&gt;&lt;td&gt;Ivy Bridge&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7 3xxx, Pentium G2xxx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00D100&quot; &gt;
    AVX
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2013-2014&lt;&#x2F;td&gt;&lt;td&gt;Haswell&lt;&#x2F;td&gt;&lt;td&gt;Haswell&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7 4xxx, Pentium G3xxx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2014&lt;&#x2F;td&gt;&lt;td&gt;Broadwell&lt;&#x2F;td&gt;&lt;td&gt;Broadwell&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7 5xxx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2015&lt;&#x2F;td&gt;&lt;td&gt;Skylake&lt;&#x2F;td&gt;&lt;td&gt;Skylake&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7 6xxx, Pentium G44xx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2016&lt;&#x2F;td&gt;&lt;td&gt;Kaby Lake&lt;&#x2F;td&gt;&lt;td&gt;Kaby Lake&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7 7xxx, Pentium G45xx&#x2F;G46xx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2018-2019&lt;&#x2F;td&gt;&lt;td&gt;Coffee Lake&lt;&#x2F;td&gt;&lt;td&gt;Coffee Lake&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7&#x2F;i9 8xxx&#x2F;9xxx, Pentium G5xxx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2019&lt;&#x2F;td&gt;&lt;td&gt;Ice Lake&lt;&#x2F;td&gt;&lt;td&gt;Ice Lake&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7 10xxxGx (mobile only)&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    AVX-512
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2020&lt;&#x2F;td&gt;&lt;td&gt;Comet Lake&lt;&#x2F;td&gt;&lt;td&gt;Comet Lake&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7&#x2F;i9 10xxx, Pentium G6xxx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2020&lt;&#x2F;td&gt;&lt;td&gt;Tiger Lake&lt;&#x2F;td&gt;&lt;td&gt;Willow Cove&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7 11xxxGx (mobile only)&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    AVX-512
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2021&lt;&#x2F;td&gt;&lt;td&gt;Rocket Lake&lt;&#x2F;td&gt;&lt;td&gt;Cypress Cove&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7&#x2F;i9 11xxx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    AVX-512
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2021&lt;&#x2F;td&gt;&lt;td&gt;Alder Lake&lt;&#x2F;td&gt;&lt;td&gt;Golden Cove &#x2F; Gracemont&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7&#x2F;i9 12xxx, Pentium G7xxx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2022&lt;&#x2F;td&gt;&lt;td&gt;Raptor Lake&lt;&#x2F;td&gt;&lt;td&gt;Raptor Cove &#x2F; Gracemont&lt;&#x2F;td&gt;&lt;td&gt;Core i3&#x2F;i5&#x2F;i7&#x2F;i9 13xxx&#x2F;14xxx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2024&lt;&#x2F;td&gt;&lt;td&gt;Meteor Lake&lt;&#x2F;td&gt;&lt;td&gt;Redwood Cove &#x2F; Crestmont&lt;&#x2F;td&gt;&lt;td&gt;Core Ultra 3&#x2F;5&#x2F;7&#x2F;9 1xx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2024&lt;&#x2F;td&gt;&lt;td&gt;Lunar Lake&lt;&#x2F;td&gt;&lt;td&gt;Lion Cove &#x2F; Skymont&lt;&#x2F;td&gt;&lt;td&gt;Core Ultra 3&#x2F;5&#x2F;7&#x2F;9 2xx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2024&lt;&#x2F;td&gt;&lt;td&gt;Arrow Lake&lt;&#x2F;td&gt;&lt;td&gt;Lion Cove &#x2F; Skymont&lt;&#x2F;td&gt;&lt;td&gt;Core Ultra 3&#x2F;5&#x2F;7&#x2F;9 3xx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2025 ?&lt;&#x2F;td&gt;&lt;td&gt;Nova Lake&lt;&#x2F;td&gt;&lt;td&gt;Nova Lake&lt;&#x2F;td&gt;&lt;td&gt;Core Ultra 3&#x2F;5&#x2F;7&#x2F;9 4xx ?&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #009dff&quot; &gt;
    10.2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;&lt;em&gt;Note: &lt;strong&gt;Pentium&lt;&#x2F;strong&gt; and &lt;strong&gt;Celeron&lt;&#x2F;strong&gt; processors up to &lt;strong&gt;Comet Lake&lt;&#x2F;strong&gt; do not support AVX, AVX2 and AVX-512.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;amd-cpu&quot;&gt;AMD CPU&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Release&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Codename&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Microarch&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;CPU Models&#x2F;Series&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;SIMD instructions&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;AES-NI&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1996&lt;&#x2F;td&gt;&lt;td&gt;K5&lt;&#x2F;td&gt;&lt;td&gt;K5&lt;&#x2F;td&gt;&lt;td&gt;AMD K5&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1997&lt;&#x2F;td&gt;&lt;td&gt;K6&lt;&#x2F;td&gt;&lt;td&gt;K6&lt;&#x2F;td&gt;&lt;td&gt;AMD K6, K6-II, K6-III&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF5645&quot; &gt;
    MMX
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1999&lt;&#x2F;td&gt;&lt;td&gt;K7&lt;&#x2F;td&gt;&lt;td&gt;K7&lt;&#x2F;td&gt;&lt;td&gt;AMD Athlon, Duron&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF6F61&quot; &gt;
    SSE
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2003&lt;&#x2F;td&gt;&lt;td&gt;K8&lt;&#x2F;td&gt;&lt;td&gt;K8&lt;&#x2F;td&gt;&lt;td&gt;AMD Athlon 64, Opteron&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    SSE3
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2007&lt;&#x2F;td&gt;&lt;td&gt;K10&lt;&#x2F;td&gt;&lt;td&gt;K10&lt;&#x2F;td&gt;&lt;td&gt;AMD Phenom, Phenom II, Athlon II&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #ADFF2F&quot; &gt;
    SSE4a
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2011&lt;&#x2F;td&gt;&lt;td&gt;Bulldozer&lt;&#x2F;td&gt;&lt;td&gt;Bulldozer&lt;&#x2F;td&gt;&lt;td&gt;AMD FX x1xx, Opteron (Bulldozer)&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00D100&quot; &gt;
    AVX
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2014&lt;&#x2F;td&gt;&lt;td&gt;Steamroller&lt;&#x2F;td&gt;&lt;td&gt;Steamroller&lt;&#x2F;td&gt;&lt;td&gt;AMD APUs (Steamroller)&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00D100&quot; &gt;
    AVX
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2015&lt;&#x2F;td&gt;&lt;td&gt;Excavator&lt;&#x2F;td&gt;&lt;td&gt;Excavator&lt;&#x2F;td&gt;&lt;td&gt;AMD APUs (Excavator)&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2017&lt;&#x2F;td&gt;&lt;td&gt;Zen&lt;&#x2F;td&gt;&lt;td&gt;Zen&lt;&#x2F;td&gt;&lt;td&gt;AMD Ryzen 1xxx, EPYC 7xx1&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2018&lt;&#x2F;td&gt;&lt;td&gt;Zen+&lt;&#x2F;td&gt;&lt;td&gt;Zen+&lt;&#x2F;td&gt;&lt;td&gt;AMD Ryzen 2xxx&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2019&lt;&#x2F;td&gt;&lt;td&gt;Zen 2&lt;&#x2F;td&gt;&lt;td&gt;Zen 2&lt;&#x2F;td&gt;&lt;td&gt;AMD Ryzen 3xxx, EPYC 7xx2&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2020&lt;&#x2F;td&gt;&lt;td&gt;Zen 3&lt;&#x2F;td&gt;&lt;td&gt;Zen 3&lt;&#x2F;td&gt;&lt;td&gt;AMD Ryzen 5xxx, EPYC 7xx3&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #00CED1&quot; &gt;
    AVX2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2022&lt;&#x2F;td&gt;&lt;td&gt;Zen 4&lt;&#x2F;td&gt;&lt;td&gt;Zen 4&lt;&#x2F;td&gt;&lt;td&gt;AMD Ryzen 7xxx, EPYC 4&#x2F;8&#x2F;9xx4&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    AVX-512
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2024&lt;&#x2F;td&gt;&lt;td&gt;Zen 5&lt;&#x2F;td&gt;&lt;td&gt;Zen 5&lt;&#x2F;td&gt;&lt;td&gt;AMD Ryzen 9xxx, EPYC 9xx5&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    AVX-512
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;arm-cpu&quot;&gt;ARM CPU&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Release&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Microarch&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;CPU Models&#x2F;Series&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Inst. length&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;SIMD instructions&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Out-of-order&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;td&gt;ARMv1&lt;&#x2F;td&gt;&lt;td&gt;ARM1&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;td&gt;ARMv2&lt;&#x2F;td&gt;&lt;td&gt;ARM2&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;td&gt;ARMv3&lt;&#x2F;td&gt;&lt;td&gt;ARM6&lt;&#x2F;td&gt;&lt;td&gt;32-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1993&lt;&#x2F;td&gt;&lt;td&gt;ARMv4&lt;&#x2F;td&gt;&lt;td&gt;ARM7&lt;&#x2F;td&gt;&lt;td&gt;32-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1998&lt;&#x2F;td&gt;&lt;td&gt;ARMv5&lt;&#x2F;td&gt;&lt;td&gt;ARM9&lt;&#x2F;td&gt;&lt;td&gt;32-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2002&lt;&#x2F;td&gt;&lt;td&gt;ARMv6&lt;&#x2F;td&gt;&lt;td&gt;ARM11&lt;&#x2F;td&gt;&lt;td&gt;32-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2005&lt;&#x2F;td&gt;&lt;td&gt;ARMv7&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A8&lt;&#x2F;td&gt;&lt;td&gt;32-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    NEON
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2007&lt;&#x2F;td&gt;&lt;td&gt;ARMv7&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A9&lt;&#x2F;td&gt;&lt;td&gt;32-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    NEON
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2009&lt;&#x2F;td&gt;&lt;td&gt;ARMv7&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A5&lt;&#x2F;td&gt;&lt;td&gt;32-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    NEON
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2011&lt;&#x2F;td&gt;&lt;td&gt;ARMv7&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A7&lt;&#x2F;td&gt;&lt;td&gt;32-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    NEON
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2011&lt;&#x2F;td&gt;&lt;td&gt;ARMv7&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A15&lt;&#x2F;td&gt;&lt;td&gt;32-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    NEON
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2012&lt;&#x2F;td&gt;&lt;td&gt;ARMv8&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A53&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    NEON
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2012&lt;&#x2F;td&gt;&lt;td&gt;ARMv8&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A57&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    NEON
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2013&lt;&#x2F;td&gt;&lt;td&gt;ARMv7&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A12&lt;&#x2F;td&gt;&lt;td&gt;32-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    NEON
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2014&lt;&#x2F;td&gt;&lt;td&gt;ARMv7&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A17&lt;&#x2F;td&gt;&lt;td&gt;32-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    NEON
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2016&lt;&#x2F;td&gt;&lt;td&gt;ARMv8&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A72&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    NEON
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2016&lt;&#x2F;td&gt;&lt;td&gt;ARMv8&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A73&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    NEON
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2016&lt;&#x2F;td&gt;&lt;td&gt;ARMv8&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A32&lt;&#x2F;td&gt;&lt;td&gt;32-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    NEON
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2016&lt;&#x2F;td&gt;&lt;td&gt;ARMv8&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A35&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FFD700&quot; &gt;
    NEON
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2017&lt;&#x2F;td&gt;&lt;td&gt;ARMv8.2&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A75&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #ADFF2F&quot; &gt;
    NEON (opt. SVE)
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2017&lt;&#x2F;td&gt;&lt;td&gt;ARMv8.2&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A55&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #ADFF2F&quot; &gt;
    NEON (opt. SVE)
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2018&lt;&#x2F;td&gt;&lt;td&gt;ARMv8.2&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A76&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #ADFF2F&quot; &gt;
    NEON (opt. SVE)
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2019&lt;&#x2F;td&gt;&lt;td&gt;ARMv8.2&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A77&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #ADFF2F&quot; &gt;
    NEON (opt. SVE)
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2019&lt;&#x2F;td&gt;&lt;td&gt;ARMv8.2&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A65&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #ADFF2F&quot; &gt;
    NEON (opt. SVE)
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2020&lt;&#x2F;td&gt;&lt;td&gt;ARMv8.2&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A78&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #ADFF2F&quot; &gt;
    NEON (opt. SVE)
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2020&lt;&#x2F;td&gt;&lt;td&gt;ARMv8.2&lt;&#x2F;td&gt;&lt;td&gt;Cortex-X1&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #ADFF2F&quot; &gt;
    NEON (opt. SVE)
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2021&lt;&#x2F;td&gt;&lt;td&gt;ARMv9&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A710&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    SVE2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2021&lt;&#x2F;td&gt;&lt;td&gt;ARMv9&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A510&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    SVE2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2021&lt;&#x2F;td&gt;&lt;td&gt;ARMv9&lt;&#x2F;td&gt;&lt;td&gt;Cortex-X2&lt;&#x2F;td&gt;&lt;td&gt;32-bit&#x2F;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    SVE2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2022&lt;&#x2F;td&gt;&lt;td&gt;ARMv9&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A715&lt;&#x2F;td&gt;&lt;td&gt;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    SVE2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2022&lt;&#x2F;td&gt;&lt;td&gt;ARMv9&lt;&#x2F;td&gt;&lt;td&gt;Cortex-X3&lt;&#x2F;td&gt;&lt;td&gt;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    SVE2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2023&lt;&#x2F;td&gt;&lt;td&gt;ARMv9.2&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A520&lt;&#x2F;td&gt;&lt;td&gt;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    SVE2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #FF4136&quot; &gt;
    No
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2023&lt;&#x2F;td&gt;&lt;td&gt;ARMv9.2&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A720&lt;&#x2F;td&gt;&lt;td&gt;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    SVE2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2023&lt;&#x2F;td&gt;&lt;td&gt;ARMv9.2&lt;&#x2F;td&gt;&lt;td&gt;Cortex-X4&lt;&#x2F;td&gt;&lt;td&gt;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    SVE2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2024&lt;&#x2F;td&gt;&lt;td&gt;ARMv9.2&lt;&#x2F;td&gt;&lt;td&gt;Cortex-A725&lt;&#x2F;td&gt;&lt;td&gt;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    SVE2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2024&lt;&#x2F;td&gt;&lt;td&gt;ARMv9.2&lt;&#x2F;td&gt;&lt;td&gt;Cortex-X925&lt;&#x2F;td&gt;&lt;td&gt;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    SVE2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;2024&#x2F;2025 ?&lt;&#x2F;td&gt;&lt;td&gt;ARMv9.2&lt;&#x2F;td&gt;&lt;td&gt;Cortex-X930&lt;&#x2F;td&gt;&lt;td&gt;64-bit&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    SVE2
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;td&gt;&lt;span style=&quot;color: #1AC7FF&quot; &gt;
    Yes
&lt;&#x2F;span&gt;
&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;&lt;em&gt;Note: Implementation can very by vendor, some may support additional features or optimizations.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;benchmark&quot;&gt;Benchmark&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;passmark&quot;&gt;PassMark&lt;&#x2F;h3&gt;
 &lt;figure class=&quot;fi b1&quot;&gt;&lt;img src=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;images&#x2F;articles&#x2F;benchmark&#x2F;cpu_performance_st.webp&quot; class=&quot;b1&quot; alt=&quot;cpu_performance_st&quot; width=&quot;7680&quot; height=&quot;4320&quot; loading=&quot;lazy&quot; &#x2F;&gt;&lt;figcaption&gt;PassMark score from 2000 to 2025 in single-thread&lt;&#x2F;figcaption&gt;&lt;&#x2F;figure&gt;
 &lt;figure class=&quot;fi b1&quot;&gt;&lt;img src=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;images&#x2F;articles&#x2F;benchmark&#x2F;cpu_performance_mt.webp&quot; class=&quot;b1&quot; alt=&quot;cpu_performance_mt&quot; width=&quot;7680&quot; height=&quot;4320&quot; loading=&quot;lazy&quot; &#x2F;&gt;&lt;figcaption&gt;PassMark score from 2000 to 2025 in multi-thread&lt;&#x2F;figcaption&gt;&lt;&#x2F;figure&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Comparison of SSDs</title>
        <published>2025-02-23T00:00:00+00:00</published>
        <updated>2025-02-23T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://bensuperpc.github.io/documentation/hardware/pc/ssd/"/>
        <id>https://bensuperpc.github.io/documentation/hardware/pc/ssd/</id>
        
        <content type="html" xml:base="https://bensuperpc.github.io/documentation/hardware/pc/ssd/">&lt;h1 id=&quot;introduction&quot;&gt;Introduction&lt;&#x2F;h1&gt;
&lt;p&gt;A comparison of SSDs of different brands and models.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;samsung-ssd-nvme&quot;&gt;Samsung SSD NVMe&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Modèle&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Release&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;NVMe&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;PCIe&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Consumption&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Perfs R&#x2F;W&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;IOPS (R&#x2F;W)&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Capacity&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Memory type&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;TBW (1TB)&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Memory&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Samsung 950 Pro&lt;&#x2F;td&gt;&lt;td&gt;2015&lt;&#x2F;td&gt;&lt;td&gt;1.1&lt;&#x2F;td&gt;&lt;td&gt;3.0 x4&lt;&#x2F;td&gt;&lt;td&gt;5,7w &#x2F; 0,03w&lt;&#x2F;td&gt;&lt;td&gt;2.5 &#x2F; 1.5 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;300K &#x2F; 110K&lt;&#x2F;td&gt;&lt;td&gt;256 GB - 512 GB&lt;&#x2F;td&gt;&lt;td&gt;MLC&lt;&#x2F;td&gt;&lt;td&gt;800 TBW&lt;&#x2F;td&gt;&lt;td&gt;0.5 GB LPDDR3&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Samsung 960 Evo&lt;&#x2F;td&gt;&lt;td&gt;2016&lt;&#x2F;td&gt;&lt;td&gt;1.2&lt;&#x2F;td&gt;&lt;td&gt;3.0 x4&lt;&#x2F;td&gt;&lt;td&gt;5,7w &#x2F; 0,04w&lt;&#x2F;td&gt;&lt;td&gt;3.2 &#x2F; 1.9 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;380K &#x2F; 360K&lt;&#x2F;td&gt;&lt;td&gt;256 GB - 1 To&lt;&#x2F;td&gt;&lt;td&gt;TLC&lt;&#x2F;td&gt;&lt;td&gt;400 TBW&lt;&#x2F;td&gt;&lt;td&gt;0.5-1 GB LPDDR3&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Samsung 960 Pro&lt;&#x2F;td&gt;&lt;td&gt;2016&lt;&#x2F;td&gt;&lt;td&gt;1.3&lt;&#x2F;td&gt;&lt;td&gt;3.0 x4&lt;&#x2F;td&gt;&lt;td&gt;5,7w &#x2F; 0,04w&lt;&#x2F;td&gt;&lt;td&gt;3.5 &#x2F; 2.1 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;500K &#x2F; 450K&lt;&#x2F;td&gt;&lt;td&gt;512 GB - 2 To&lt;&#x2F;td&gt;&lt;td&gt;MLC&lt;&#x2F;td&gt;&lt;td&gt;800 TBW&lt;&#x2F;td&gt;&lt;td&gt;0.5-2 GB LPDDR3&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Samsung 970 Evo&lt;&#x2F;td&gt;&lt;td&gt;2018&lt;&#x2F;td&gt;&lt;td&gt;1.3&lt;&#x2F;td&gt;&lt;td&gt;3.0 x4&lt;&#x2F;td&gt;&lt;td&gt;6w &#x2F; 0,05w&lt;&#x2F;td&gt;&lt;td&gt;3.5 &#x2F; 2.5 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;500K &#x2F; 480K&lt;&#x2F;td&gt;&lt;td&gt;256 GB - 2 TB&lt;&#x2F;td&gt;&lt;td&gt;TLC&lt;&#x2F;td&gt;&lt;td&gt;600 TBW&lt;&#x2F;td&gt;&lt;td&gt;0.5-2 GB LPDDR3&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Samsung 970 Evo Plus&lt;&#x2F;td&gt;&lt;td&gt;2021&lt;&#x2F;td&gt;&lt;td&gt;1.3&lt;&#x2F;td&gt;&lt;td&gt;3.0 x4&lt;&#x2F;td&gt;&lt;td&gt;6w &#x2F; 0,05w&lt;&#x2F;td&gt;&lt;td&gt;3.5 &#x2F; 3.3 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;620K &#x2F; 560K&lt;&#x2F;td&gt;&lt;td&gt;256 GB - 2 TB&lt;&#x2F;td&gt;&lt;td&gt;TLC&lt;&#x2F;td&gt;&lt;td&gt;600 TBW&lt;&#x2F;td&gt;&lt;td&gt;0.5-2 GB LPDDR3&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Samsung 970 Pro&lt;&#x2F;td&gt;&lt;td&gt;2018&lt;&#x2F;td&gt;&lt;td&gt;1.3&lt;&#x2F;td&gt;&lt;td&gt;3.0 x4&lt;&#x2F;td&gt;&lt;td&gt;5,7w &#x2F; 0,05w&lt;&#x2F;td&gt;&lt;td&gt;3.5 &#x2F; 3.3 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;500K &#x2F; 450K&lt;&#x2F;td&gt;&lt;td&gt;512 GB - 1 TB&lt;&#x2F;td&gt;&lt;td&gt;MLC&lt;&#x2F;td&gt;&lt;td&gt;1200 TBW&lt;&#x2F;td&gt;&lt;td&gt;0.5-1 GB LPDDR3&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Samsung 980&lt;&#x2F;td&gt;&lt;td&gt;2021&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;td&gt;3.0 x4&lt;&#x2F;td&gt;&lt;td&gt;4,6w &#x2F; 0,05w&lt;&#x2F;td&gt;&lt;td&gt;3.5 &#x2F; 3.0 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;500K &#x2F; 480K&lt;&#x2F;td&gt;&lt;td&gt;256 GB - 1 TB&lt;&#x2F;td&gt;&lt;td&gt;TLC&lt;&#x2F;td&gt;&lt;td&gt;600 TBW&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Samsung 980 Pro&lt;&#x2F;td&gt;&lt;td&gt;2021&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;td&gt;4.0 x4&lt;&#x2F;td&gt;&lt;td&gt;6,2w &#x2F; 0,05w&lt;&#x2F;td&gt;&lt;td&gt;7.0 &#x2F; 5.1 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;1000K &#x2F; 1000K&lt;&#x2F;td&gt;&lt;td&gt;256 GB - 2 TB&lt;&#x2F;td&gt;&lt;td&gt;TLC&lt;&#x2F;td&gt;&lt;td&gt;600 TBW&lt;&#x2F;td&gt;&lt;td&gt;0.5-2 GB LPDDR3&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Samsung 990 Evo&lt;&#x2F;td&gt;&lt;td&gt;2023&lt;&#x2F;td&gt;&lt;td&gt;2.0&lt;&#x2F;td&gt;&lt;td&gt;4.0 x4&#x2F;5.0 x2&lt;&#x2F;td&gt;&lt;td&gt;5,5w  &#x2F; 0,05w&lt;&#x2F;td&gt;&lt;td&gt;5.0 &#x2F; 4.2 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;700K &#x2F; 800K&lt;&#x2F;td&gt;&lt;td&gt;1 TB - 2 TB&lt;&#x2F;td&gt;&lt;td&gt;TLC&lt;&#x2F;td&gt;&lt;td&gt;600 TBW&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Samsung 990 Evo Plus&lt;&#x2F;td&gt;&lt;td&gt;2024&lt;&#x2F;td&gt;&lt;td&gt;2.0&lt;&#x2F;td&gt;&lt;td&gt;4.0 x4&#x2F;5.0 x2&lt;&#x2F;td&gt;&lt;td&gt;5,5w  &#x2F; 0,05w&lt;&#x2F;td&gt;&lt;td&gt;7.1 &#x2F; 6.3 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;850K &#x2F; 1350K&lt;&#x2F;td&gt;&lt;td&gt;1 TB - 4 TB&lt;&#x2F;td&gt;&lt;td&gt;TLC&lt;&#x2F;td&gt;&lt;td&gt;600 TBW&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Samsung 990 Pro&lt;&#x2F;td&gt;&lt;td&gt;2022&lt;&#x2F;td&gt;&lt;td&gt;2.0&lt;&#x2F;td&gt;&lt;td&gt;4.0 x4&lt;&#x2F;td&gt;&lt;td&gt;5,5w  &#x2F; 0,05w&lt;&#x2F;td&gt;&lt;td&gt;7.4 &#x2F; 6.9 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;1400K &#x2F; 1500K&lt;&#x2F;td&gt;&lt;td&gt;1 TB - 2 TB&lt;&#x2F;td&gt;&lt;td&gt;TLC&lt;&#x2F;td&gt;&lt;td&gt;600 TBW&lt;&#x2F;td&gt;&lt;td&gt;1-2 GB LPDDR4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Samsung 9100 Pro&lt;&#x2F;td&gt;&lt;td&gt;2025&lt;&#x2F;td&gt;&lt;td&gt;2.0&lt;&#x2F;td&gt;&lt;td&gt;5.0 x4&lt;&#x2F;td&gt;&lt;td&gt;9w &#x2F; 0.05w&lt;&#x2F;td&gt;&lt;td&gt;14.8 &#x2F; 13.4 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;2200K &#x2F; 2600K&lt;&#x2F;td&gt;&lt;td&gt;1 TB - 8 TB&lt;&#x2F;td&gt;&lt;td&gt;TLC&lt;&#x2F;td&gt;&lt;td&gt;600 TBW&lt;&#x2F;td&gt;&lt;td&gt;1-4 GB LPDDR4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;western-digital-ssd-nvme&quot;&gt;Western Digital SSD NVMe&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Modèle&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Release&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;NVMe&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;PCIe&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Consumption&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Perfs R&#x2F;W&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;IOPS (R&#x2F;W)&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Capacity&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Memory type&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;TBW (1TB)&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;strong&gt;Memory&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;WD SN750&lt;&#x2F;td&gt;&lt;td&gt;2019&lt;&#x2F;td&gt;&lt;td&gt;1.3&lt;&#x2F;td&gt;&lt;td&gt;3.0 x4&lt;&#x2F;td&gt;&lt;td&gt;5.8w &#x2F; ?&lt;&#x2F;td&gt;&lt;td&gt;5.1 &#x2F; 4.9 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;550K &#x2F; 520K&lt;&#x2F;td&gt;&lt;td&gt;256 GB - 4 TB&lt;&#x2F;td&gt;&lt;td&gt;TLC&lt;&#x2F;td&gt;&lt;td&gt;600 TBW&lt;&#x2F;td&gt;&lt;td&gt;0.5-4 GB DDR4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;WD SN770&lt;&#x2F;td&gt;&lt;td&gt;2022&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;td&gt;4.0 x4&lt;&#x2F;td&gt;&lt;td&gt;4.6w &#x2F; ?&lt;&#x2F;td&gt;&lt;td&gt;5.1 &#x2F; 4.9 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;740K &#x2F; 800K&lt;&#x2F;td&gt;&lt;td&gt;256 GB - 2 TB&lt;&#x2F;td&gt;&lt;td&gt;TLC&lt;&#x2F;td&gt;&lt;td&gt;600 TBW&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;WD SN850&lt;&#x2F;td&gt;&lt;td&gt;2020&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;td&gt;4.0 x4&lt;&#x2F;td&gt;&lt;td&gt;7w &#x2F; ?&lt;&#x2F;td&gt;&lt;td&gt;7.0 &#x2F; 5.1 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;1000K &#x2F; 770K&lt;&#x2F;td&gt;&lt;td&gt;512 GB - 2 TB&lt;&#x2F;td&gt;&lt;td&gt;TLC&lt;&#x2F;td&gt;&lt;td&gt;600 TBW&lt;&#x2F;td&gt;&lt;td&gt;0.5-2 GB DDR4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;WD SN850X&lt;&#x2F;td&gt;&lt;td&gt;2022&lt;&#x2F;td&gt;&lt;td&gt;1.4&lt;&#x2F;td&gt;&lt;td&gt;4.0 x4&lt;&#x2F;td&gt;&lt;td&gt;6,8w &#x2F; ?&lt;&#x2F;td&gt;&lt;td&gt;7.3 &#x2F; 6.6 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;1200K &#x2F; 1200K&lt;&#x2F;td&gt;&lt;td&gt;1 TB - 8 TB&lt;&#x2F;td&gt;&lt;td&gt;TLC&lt;&#x2F;td&gt;&lt;td&gt;600 TBW&lt;&#x2F;td&gt;&lt;td&gt;1-2 GB DDR4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;WD SN8100&lt;&#x2F;td&gt;&lt;td&gt;2025&lt;&#x2F;td&gt;&lt;td&gt;2.0&lt;&#x2F;td&gt;&lt;td&gt;5.0 x4&lt;&#x2F;td&gt;&lt;td&gt;7.0w &#x2F; 0,05w&lt;&#x2F;td&gt;&lt;td&gt;14.9 &#x2F; 14.0 GB&#x2F;s&lt;&#x2F;td&gt;&lt;td&gt;2300K &#x2F; 2400K&lt;&#x2F;td&gt;&lt;td&gt;1 TB - 4 TB&lt;&#x2F;td&gt;&lt;td&gt;TLC&lt;&#x2F;td&gt;&lt;td&gt;600 TBW&lt;&#x2F;td&gt;&lt;td&gt;1-4 GB DDR4&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;sources-datasheets&quot;&gt;Sources&#x2F;Datasheets&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;download.semiconductor.samsung.com&#x2F;resources&#x2F;data-sheet&#x2F;Samsung_SSD_950_PRO_Data_Sheet_Rev_1_2.pdf&quot;&gt;Samsung 950 Pro&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;download.semiconductor.samsung.com&#x2F;resources&#x2F;brochure&#x2F;NVMe_SSD_960_PRO_EVO_Brochure_Rev_1_1.pdf&quot;&gt;Samsung 960 Pro&#x2F;Evo&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;download.semiconductor.samsung.com&#x2F;resources&#x2F;data-sheet&#x2F;Samsung_NVMe_SSD_970_PRO_Data_Sheet_Rev.1.0.pdf&quot;&gt;Samsung 970 Pro&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;download.semiconductor.samsung.com&#x2F;resources&#x2F;data-sheet&#x2F;Samsung-NVMe-SSD-970-EVO-Data-Sheet_Rev.1.0.pdf&quot;&gt;Samsung 970 Evo&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;download.semiconductor.samsung.com&#x2F;resources&#x2F;data-sheet&#x2F;Samsung_NVMe_SSD_970_EVO_Plus_Data_Sheet_Rev.3.0.pdf&quot;&gt;Samsung 970 Evo Plus&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;download.semiconductor.samsung.com&#x2F;resources&#x2F;data-sheet&#x2F;Samsung_NVMe_SSD_980_Data_Sheet_Rev.1.1.pdf&quot;&gt;Samsung 980&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;download.semiconductor.samsung.com&#x2F;resources&#x2F;data-sheet&#x2F;Samsung-NVMe-SSD-980-PRO-Data-Sheet_Rev.2.1_230509_10129505081019.pdf&quot;&gt;Samsung 980 Pro&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;download.semiconductor.samsung.com&#x2F;resources&#x2F;data-sheet&#x2F;samsung_nvme_ssd_990_evo_datasheet_rev.1.1.pdf&quot;&gt;Samsung 990 Evo&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;download.semiconductor.samsung.com&#x2F;resources&#x2F;data-sheet&#x2F;samsung_nvme_ssd_990_evo_plus_datasheet_rev.1.0.pdf&quot;&gt;Samsung 990 Evo Plus&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;download.semiconductor.samsung.com&#x2F;resources&#x2F;data-sheet&#x2F;Samsung_NVMe_SSD_990_PRO_Datasheet_Rev.1.0.pdf&quot;&gt;Samsung 990 Pro&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;download.semiconductor.samsung.com&#x2F;resources&#x2F;data-sheet&#x2F;Samsung_NVMe_SSD_9100_PRO_Datasheet_Rev.1.0.pdf&quot;&gt;Samsung 9100 Pro&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;documents.westerndigital.com&#x2F;content&#x2F;dam&#x2F;doc-library&#x2F;en_us&#x2F;assets&#x2F;public&#x2F;western-digital&#x2F;product&#x2F;internal-drives&#x2F;wd-black-ssd&#x2F;product-brief-wd-black-sn770-nvme-ssd.pdf&quot;&gt;Western Digital SN770&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;documents.westerndigital.com&#x2F;content&#x2F;dam&#x2F;doc-library&#x2F;en_us&#x2F;assets&#x2F;public&#x2F;western-digital&#x2F;product&#x2F;internal-drives&#x2F;wd-black-ssd&#x2F;data-sheet-wd-black-sn850-nvme-ssd.pdf&quot;&gt;Western Digital SN850&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;documents.westerndigital.com&#x2F;content&#x2F;dam&#x2F;doc-library&#x2F;en_us&#x2F;assets&#x2F;public&#x2F;western-digital&#x2F;product&#x2F;internal-drives&#x2F;wd-black-ssd&#x2F;data-sheet-wd-black-sn850x-nvme-ssd.pdf&quot;&gt;Western Digital SN850X&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;documents.westerndigital.com&#x2F;content&#x2F;dam&#x2F;doc-library&#x2F;en_us&#x2F;assets&#x2F;public&#x2F;western-digital&#x2F;product&#x2F;internal-drives&#x2F;wd-black-ssd&#x2F;data-sheet-wd-black-sn8100-nvme-ssd.pdf&quot;&gt;Western Digital SN8100&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>RTL9210 Firmware and Tools</title>
        <published>2025-02-20T00:00:00+00:00</published>
        <updated>2025-02-20T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://bensuperpc.github.io/tutorial/rtl9210/"/>
        <id>https://bensuperpc.github.io/tutorial/rtl9210/</id>
        
        <content type="html" xml:base="https://bensuperpc.github.io/tutorial/rtl9210/">&lt;h1 id=&quot;rtl9210&quot;&gt;RTL9210&lt;&#x2F;h1&gt;
&lt;p&gt;Firmware and tools for &lt;strong&gt;RTL9210&lt;&#x2F;strong&gt; and &lt;strong&gt;RTL9210B&lt;&#x2F;strong&gt; USB to NVMe&#x2F;SATA bridge controller. They are provided by &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.station-drivers.com&quot;&gt;station-drivers.com&lt;&#x2F;a&gt;, &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.realtek.com&quot;&gt;Realtek&lt;&#x2F;a&gt;, etc.&lt;&#x2F;p&gt;
&lt;p&gt;Don&#x27;t hesitate to support &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.station-drivers.com&quot;&gt;station-drivers.com&lt;&#x2F;a&gt;, they are a great source for drivers and firmware.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;All procedures described in this Git repository are at your own risk. In case of software issues, you can find some solutions in the &lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;#unbrick&quot;&gt;Unbrick&lt;&#x2F;a&gt; section.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;table-of-contents&quot;&gt;Table of Contents&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;#firmware&quot;&gt;Firmware&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;#chipset-list&quot;&gt;Chipset List&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;#files-and-folders&quot;&gt;Files and Folders&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;#supported-devices&quot;&gt;Supported Devices&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;#how-to-flash-the-firmware&quot;&gt;How to Flash the Firmware&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;#configuration&quot;&gt;Configuration&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;#create-your-own-configuration&quot;&gt;Create your own configuration&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;#unbrick&quot;&gt;Unbrick&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;#firmware-changelog&quot;&gt;Firmware changelog&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;#contribute&quot;&gt;Contribute&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;#sources&quot;&gt;Sources&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;firmware&quot;&gt;Firmware&lt;&#x2F;h2&gt;
&lt;p&gt;The table below lists all known firmware versions available in this git repository&#x27;s &lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;firmware&quot;&gt;firmware&lt;&#x2F;a&gt; folder.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Firmware version&lt;&#x2F;th&gt;&lt;th&gt;RTL9201(A)&lt;&#x2F;th&gt;&lt;th&gt;RTL9210(A)&lt;&#x2F;th&gt;&lt;th&gt;RTL9210B&lt;&#x2F;th&gt;&lt;th&gt;RTL9220A&lt;&#x2F;th&gt;&lt;th&gt;Links&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1.20.12&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210_fw%20(Version%201.20.12).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.23.5&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;Not found yet&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.23.9&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210_fw%20(Version%201.23.9).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.23.15&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210_fw%20(Version%201.23.15).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.25.7&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210_fw%20(Version%201.25.7).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.25.14&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210_fw%20(Version%201.25.14).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.25.18&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210_fw%20(Version%201.25.18).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.27.24&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210_fw%20(Version%201.27.24).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.27.25&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210_fw%20(Version%201.27.25).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.28.17&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210_fw%20(Version%201.28.17).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.29.8&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210_fw%20(Version%201.29.8).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.29.12&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210_fw%20(Version%201.29.12).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.29.12.011122&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210AB_fw%20(Version%201.29.12.011122).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.29.391&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210_fw%20(Version%201.29.391).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.30.17&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.30.17).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.30.21.070622&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210AB_fw%20(Version%201.30.21.070622).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.30.24.030822&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.30.24.030822).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.30.28.081022&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.30.28.081022).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.31.17.102022&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.31.17.102022).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.31.17.102022 (2)&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.31.17.102022%20(2)).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.32.16.010923&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.32.16.010923).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.32.45.041323&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.32.45.041323).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.32.49.140423&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.32.49.140423).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.32.49.140423 (Lcd)&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.32.49.140423%20(Lcd)).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.32.68.062623&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.32.68.062623).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.32.87.082923&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.32.87.082923).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.32.901.120722&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.32.901.120722).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.33.5.100623&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.33.7.191023&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.33.7.191023).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.33.44.011824&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.33.44.011824).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.33.98.090324&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw%20(Version%201.33.98.090324).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.34.29.011325&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw1.34.29(station-drivers.com).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;1.34.39.032625&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;❌&lt;&#x2F;td&gt;&lt;td&gt;✅&lt;&#x2F;td&gt;&lt;td&gt;❓&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;blob&#x2F;main&#x2F;firmware&#x2F;realtek_rtl9210B_fw1.34.39(station-drivers.com).zip&quot;&gt;Download&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;chipset-list&quot;&gt;Chipset List&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Hardware&lt;&#x2F;th&gt;&lt;th&gt;USB&lt;&#x2F;th&gt;&lt;th&gt;PCIe&#x2F;NVMe&lt;&#x2F;th&gt;&lt;th&gt;SATA&lt;&#x2F;th&gt;&lt;th&gt;Others features&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;RTL9201(A)&lt;&#x2F;td&gt;&lt;td&gt;3.x 10Gbps&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;SATA 3&lt;&#x2F;td&gt;&lt;td&gt;Many bugs&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;RTL9201R&lt;&#x2F;td&gt;&lt;td&gt;3.x 10Gbps&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;SATA 3&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;RTL9210(A)&lt;&#x2F;td&gt;&lt;td&gt;3.x 10Gbps&lt;&#x2F;td&gt;&lt;td&gt;3.0x2&lt;&#x2F;td&gt;&lt;td&gt;SATA 3&lt;&#x2F;td&gt;&lt;td&gt;Some enclosure only support NVMe or SATA&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;RTL9210VA&lt;&#x2F;td&gt;&lt;td&gt;3.x 10Gbps&lt;&#x2F;td&gt;&lt;td&gt;3.0x2&lt;&#x2F;td&gt;&lt;td&gt;SATA 3&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;RTL9210B&lt;&#x2F;td&gt;&lt;td&gt;3.x 10Gbps&lt;&#x2F;td&gt;&lt;td&gt;3.0x2&lt;&#x2F;td&gt;&lt;td&gt;SATA 3&lt;&#x2F;td&gt;&lt;td&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.realtek.com&#x2F;Product&#x2F;Index?id=4075&amp;amp;cate_id=786&quot;&gt;RTL9210B-CG&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;RTL9210VB&lt;&#x2F;td&gt;&lt;td&gt;3.x 10Gbps&lt;&#x2F;td&gt;&lt;td&gt;3.0x2&lt;&#x2F;td&gt;&lt;td&gt;SATA 3&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;RTL9210BPD&lt;&#x2F;td&gt;&lt;td&gt;3.x 10Gbps&lt;&#x2F;td&gt;&lt;td&gt;3.0x2&lt;&#x2F;td&gt;&lt;td&gt;SATA 3&lt;&#x2F;td&gt;&lt;td&gt;Power Delivery support, &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.realtek.com&#x2F;Product&#x2F;Index?id=4076&amp;amp;cate_id=786&quot;&gt;RTL9210BPD-CG&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;RTL9220 (A)&lt;&#x2F;td&gt;&lt;td&gt;3.2 20Gbps&lt;&#x2F;td&gt;&lt;td&gt;3.0x4 ?&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;RTL9220VA&lt;&#x2F;td&gt;&lt;td&gt;3.2 20Gbps ?&lt;&#x2F;td&gt;&lt;td&gt;3.0x4 ?&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;RTL9220DP&lt;&#x2F;td&gt;&lt;td&gt;3.2 40Gbps&lt;&#x2F;td&gt;&lt;td&gt;3.0x4&lt;&#x2F;td&gt;&lt;td&gt;-&lt;&#x2F;td&gt;&lt;td&gt;RAID0, RAID1&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;files-and-folders&quot;&gt;Files and Folders&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;configure&quot;&gt;configure&lt;&#x2F;a&gt;: All configurations for each device.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;dump&quot;&gt;dump&lt;&#x2F;a&gt;: All dumps for each device.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;firmware&quot;&gt;firmware&lt;&#x2F;a&gt;: All found firmware.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;supported-devices&quot;&gt;Supported Devices&lt;&#x2F;h2&gt;
&lt;p&gt;There are dozens of devices with the RTL9210B, I have gathered in this git repository some firmware configs found on the &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.station-drivers.com&#x2F;index.php&#x2F;en&#x2F;forum&#x2F;enclosures-nvme-sata-usb-3-x&#x2F;76-nvme-usb-drives-realtek-rtl9210-rtl9220-firmware-version-1-xx?start=0&quot;&gt;www.station-drivers.com&lt;&#x2F;a&gt; forums.&lt;&#x2F;p&gt;
&lt;p&gt;You can check in the &lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;configure&quot;&gt;configure&lt;&#x2F;a&gt; folder or use values from the &lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;dump&quot;&gt;dump&lt;&#x2F;a&gt; folder to create your own configuration.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Brand&lt;&#x2F;th&gt;&lt;th&gt;Model&lt;&#x2F;th&gt;&lt;th&gt;Controller&lt;&#x2F;th&gt;&lt;th&gt;config file&lt;&#x2F;th&gt;&lt;th&gt;dump&lt;&#x2F;th&gt;&lt;th&gt;Notes&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Fideco&lt;&#x2F;td&gt;&lt;td&gt;M211CP&lt;&#x2F;td&gt;&lt;td&gt;RTL9210B&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;configure&#x2F;FIDECO_M211CP.cfg&quot;&gt;config&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;dump&#x2F;FIDECO_M211CP.txt&quot;&gt;dump&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Inateck&lt;&#x2F;td&gt;&lt;td&gt;FE2025&lt;&#x2F;td&gt;&lt;td&gt;RTL9210B&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;configure&#x2F;RTL9210B_CG_INATEK_FE2025_N1.cfg&quot;&gt;config&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;dump&#x2F;INATEK_FE2025_N1.txt&quot;&gt;dump&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Sabrent&lt;&#x2F;td&gt;&lt;td&gt;EC-SNVE&lt;&#x2F;td&gt;&lt;td&gt;RTL9210B&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;configure&#x2F;RTL9210B_CG_SABRANT_EC-SNVE.cfg&quot;&gt;config&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Mokin&lt;&#x2F;td&gt;&lt;td&gt;MOUD0501&lt;&#x2F;td&gt;&lt;td&gt;RTL9210B&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;dump&#x2F;MOKiN.txt&quot;&gt;dump&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Ugreen&lt;&#x2F;td&gt;&lt;td&gt;CM559&lt;&#x2F;td&gt;&lt;td&gt;RTL9210B&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;configure&#x2F;RTL9210B_CG_UGREEN.cfg&quot;&gt;config&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;dump&#x2F;UGREEN.txt&quot;&gt;dump&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;SmallRig&lt;&#x2F;td&gt;&lt;td&gt;SD-01&lt;&#x2F;td&gt;&lt;td&gt;RTL9210B&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;dump&#x2F;SMALLRIG_SD-01.txt&quot;&gt;dump&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;MKUO&lt;&#x2F;td&gt;&lt;td&gt;SD-01&lt;&#x2F;td&gt;&lt;td&gt;RTL9210(B ?)&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Orico&lt;&#x2F;td&gt;&lt;td&gt;M2PJM-C3&lt;&#x2F;td&gt;&lt;td&gt;RTL9210(B ?)&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;dump&#x2F;ORICO_M2PJM-C3.txt&quot;&gt;dump&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Orico&lt;&#x2F;td&gt;&lt;td&gt;PWDM2-G2(A)&lt;&#x2F;td&gt;&lt;td&gt;RTL9210B&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;configure&#x2F;RTL9210B_CG_ORICO_PWDM2-G2.cfg&quot;&gt;config&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;dump&#x2F;ORICO_PWDM2-G2.txt&quot;&gt;dump&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Unionsime&lt;&#x2F;td&gt;&lt;td&gt;MD202&lt;&#x2F;td&gt;&lt;td&gt;RTL9210B&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;configure&#x2F;RTL9210B_CG_UNIONSINE_MD202.cfg&quot;&gt;config&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;dump&#x2F;UNIONSINE_MD202.txt&quot;&gt;dump&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;UniAccessories&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;td&gt;RTL9210B&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;configure&#x2F;RTL9210B_CG_UniAccessories.cfg&quot;&gt;config&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;dump&#x2F;UniAccessories.txt&quot;&gt;dump&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;how-to-flash-the-firmware&quot;&gt;How to Flash the Firmware&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Warning: Flashing the firmware can brick or permanently damage your device. Do it at your own risk. The author of this Git repository is not responsible for any damage to your device. If you brick your device, you can try to unbrick it with the &lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;rtl9210&#x2F;#unbrick&quot;&gt;Unbrick&lt;&#x2F;a&gt; section.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Info: The firmware update tool is only available for Windows and does not work well on Linux with Wine or in a virtual machine.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Download the &lt;strong&gt;correct&lt;&#x2F;strong&gt; and latest firmware and tools from the &lt;code&gt;firmware&lt;&#x2F;code&gt; folder.&lt;&#x2F;li&gt;
&lt;li&gt;Extract the archive.&lt;&#x2F;li&gt;
&lt;li&gt;Connect the device to the computer.&lt;&#x2F;li&gt;
&lt;li&gt;Launch the firmware update tool (such as UTHSB_MPtool) provided in the firmware archive.&lt;&#x2F;li&gt;
&lt;li&gt;Dump your device configuration with the firmware update tool and save it.&lt;&#x2F;li&gt;
&lt;li&gt;Disconnect the enclosure from the computer.&lt;&#x2F;li&gt;
&lt;li&gt;Remove the NVMe&#x2F;SATA drive.&lt;&#x2F;li&gt;
&lt;li&gt;Reconnect the device to the computer.&lt;&#x2F;li&gt;
&lt;li&gt;Copy the configuration file (&lt;code&gt;.cfg&lt;&#x2F;code&gt;) of your device from the &lt;strong&gt;configure folder&lt;&#x2F;strong&gt; to the &lt;strong&gt;configure folder&lt;&#x2F;strong&gt; where the firmware update tool is located.&lt;&#x2F;li&gt;
&lt;li&gt;Change the &lt;code&gt;SERIAL&lt;&#x2F;code&gt; in the configuration file to match your dump file &lt;strong&gt;if it is defined&lt;&#x2F;strong&gt;. (Optional but recommended)&lt;&#x2F;li&gt;
&lt;li&gt;Comment out the &lt;code&gt;DISK_IPS_THRES&lt;&#x2F;code&gt; with a &lt;code&gt;;&lt;&#x2F;code&gt; in the configuration file. (Optional but recommended)&lt;&#x2F;li&gt;
&lt;li&gt;Launch the firmware update tool (such as UTHSB_MPtool) provided in the firmware archive.&lt;&#x2F;li&gt;
&lt;li&gt;Select the configuration file (&lt;code&gt;.cfg&lt;&#x2F;code&gt;) of your device.&lt;&#x2F;li&gt;
&lt;li&gt;Click on the flash&#x2F;update device button and wait until the process is finished.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;configuration&quot;&gt;Configuration&lt;&#x2F;h2&gt;
&lt;p&gt;This section describes how to configure (in cfg files) the firmware for your device, all configurations are in the &lt;code&gt;configure&lt;&#x2F;code&gt; folder or use values from the &lt;code&gt;dump&lt;&#x2F;code&gt; folder to create your own configuration.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Each configuration are unique to the device, your enclosure may not work properly if you have not the right configuration.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Variable name&lt;&#x2F;th&gt;&lt;th&gt;Value example&lt;&#x2F;th&gt;&lt;th&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;U2PHY&lt;&#x2F;td&gt;&lt;td&gt;02 f4 9b e0 e1&lt;&#x2F;td&gt;&lt;td&gt;USB 2.0 Physical Layer settings&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;U3PHY&lt;&#x2F;td&gt;&lt;td&gt;02 d4 09 00 d5 00 80&lt;&#x2F;td&gt;&lt;td&gt;USB 3.0 Physical Layer settings&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;VID&lt;&#x2F;td&gt;&lt;td&gt;0x0bda&lt;&#x2F;td&gt;&lt;td&gt;Vendor ID&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;PID&lt;&#x2F;td&gt;&lt;td&gt;0x9210&lt;&#x2F;td&gt;&lt;td&gt;Product ID&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;MANUFACTURE&lt;&#x2F;td&gt;&lt;td&gt;&quot;Unionsine&quot;&lt;&#x2F;td&gt;&lt;td&gt;Manufacturer name&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;PRODUCT&lt;&#x2F;td&gt;&lt;td&gt;&quot;MD202&quot;&lt;&#x2F;td&gt;&lt;td&gt;Product name&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;SERIAL&lt;&#x2F;td&gt;&lt;td&gt;&quot;012345679545&quot;&lt;&#x2F;td&gt;&lt;td&gt;Serial number, 12 characters and unique per device&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;SCSI_PRODUCT&lt;&#x2F;td&gt;&lt;td&gt;&quot;Unionsine MD202 &quot;&lt;&#x2F;td&gt;&lt;td&gt;SCSI Product name&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;SCSI_VENDOR&lt;&#x2F;td&gt;&lt;td&gt;&quot;n&#x2F;a&quot;&lt;&#x2F;td&gt;&lt;td&gt;SCSI Vendor name&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;CFEXPRESS&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;Enable CFExpress card reader (Always 0x0)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;USB_SELF_PWR&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;If the device is self-powered ?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LED&lt;&#x2F;td&gt;&lt;td&gt;0x1&lt;&#x2F;td&gt;&lt;td&gt;Set to 0x1 if the device has a LED&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;DISK_HOTPLUG&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;Anable device supports hot-plugging (Very often 0x0)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;PINMUX1&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;Pin multiplexing settings (first set)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;PINMUX2&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;Pin multiplexing settings (second set)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;U2_MAXPWR&lt;&#x2F;td&gt;&lt;td&gt;0xfa&lt;&#x2F;td&gt;&lt;td&gt;USB 2.0 mode maximum power&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;U3_MAXPWR&lt;&#x2F;td&gt;&lt;td&gt;0x70&lt;&#x2F;td&gt;&lt;td&gt;USB 3.0 mode maximum power&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;ASPMDIS&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;Enable or disable active power management&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;PCIE_REFCLK&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;PCIe reference clock&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;PCIE_PWRCUT_THRES&lt;&#x2F;td&gt;&lt;td&gt;0x5&lt;&#x2F;td&gt;&lt;td&gt;Suspends the PCIe power after 5 minutes of idle time  (1 unit = 1 minute),, it recommended to comment this line&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;DISK_IPS_THRES&lt;&#x2F;td&gt;&lt;td&gt;0x1&lt;&#x2F;td&gt;&lt;td&gt;Responsible for powering down the PCI bus after a timeout to conserve energy&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;SWR_1_2V&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;EN_U1U2&lt;&#x2F;td&gt;&lt;td&gt;0x1&lt;&#x2F;td&gt;&lt;td&gt;Set to 0x1 to enable USB 3.0 Link Power Management&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;EN_UPS&lt;&#x2F;td&gt;&lt;td&gt;0x1&lt;&#x2F;td&gt;&lt;td&gt;Enable USB Power Saving ?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;PD&lt;&#x2F;td&gt;&lt;td&gt;0x1&lt;&#x2F;td&gt;&lt;td&gt;Power Down&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;CUSTOMIZED_LED&lt;&#x2F;td&gt;&lt;td&gt;02 01 07&lt;&#x2F;td&gt;&lt;td&gt;To customize the LED behavior&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;SUSPEND_LED_OFF&lt;&#x2F;td&gt;&lt;td&gt;0x1&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;FORCE_USB_SPEED&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;Force specific USB speed ?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;FORCE_PCIE_SPEED&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;Force specific PCIe speed ?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;FORCE_USB_QUIRK&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;FORCE_PCIE_QUIRK&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;FAN&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;Set to 0x1 if the device has a fan&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;DIS_SHOW_EMPTY_DISK&lt;&#x2F;td&gt;&lt;td&gt;0x1&lt;&#x2F;td&gt;&lt;td&gt;Set to 0x1 to show the enclosure when no NVMe&#x2F;SATA drive is connected&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;FORCE_SATA_NORMAL_DMA&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;Force SATA to use normal DMA&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;RM_INTERNAL_RD&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;HS_AUTO_SWITCH&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;UART_DBG_PIN&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;UART Debug pin&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;UART_BAUD_RATE&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;UART Baud rate&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;FINGER_PRINT_EN&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;Enable fingerprint authentication&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;CUSTOMIZED_DISK_IDENTIFY&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;HW_LED_CFG&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;CDROM_CFG&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;SUPPORT_HID&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LATE_INIT_DISK&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;SCSI_WP_PIN&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;Write Protect SCSI pin ?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;SD_MMC_TYPE&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;FORCE_PORT_TYPE&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;BCDDEVICE&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;SUSPEND_DISK_OFF&lt;&#x2F;td&gt;&lt;td&gt;0x7&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;SCSI_WB_PIN&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;CUSTOMIZED_FEATURE&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;PERIPH_API&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;RAID_CFG&lt;&#x2F;td&gt;&lt;td&gt;0x0&lt;&#x2F;td&gt;&lt;td&gt;?&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;create-your-own-configuration&quot;&gt;Create your own configuration&lt;&#x2F;h2&gt;
&lt;p&gt;To create your own configuration, you can use the &lt;code&gt;dump&lt;&#x2F;code&gt; folder to get the values of your device.&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Find the dump file of your device in the &lt;code&gt;dump&lt;&#x2F;code&gt; folder or on the internet.&lt;&#x2F;li&gt;
&lt;li&gt;Create a new file in the &lt;code&gt;configure&lt;&#x2F;code&gt; folder with the name of your device and the extension &lt;code&gt;.cfg&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Copy the content of the dump file into the new file.&lt;&#x2F;li&gt;
&lt;li&gt;Remove the first 3 lines of the dump file. These lines start with a line of &lt;code&gt;*&lt;&#x2F;code&gt;, contain the device name on the second line, and have another line of &lt;code&gt;*&lt;&#x2F;code&gt; on the third line.&lt;&#x2F;li&gt;
&lt;li&gt;Remove variables with a value of &lt;code&gt;n&#x2F;a&lt;&#x2F;code&gt;. (Optional)&lt;&#x2F;li&gt;
&lt;li&gt;Replace &lt;code&gt;:&lt;&#x2F;code&gt; with &lt;code&gt;=&lt;&#x2F;code&gt; for variable definitions.&lt;&#x2F;li&gt;
&lt;li&gt;Comment &lt;code&gt;DISK_IPS_THRES&lt;&#x2F;code&gt; by changing it to &lt;code&gt;;DISK_IPS_THRES = 0x1&lt;&#x2F;code&gt; if you want. (Optional)&lt;&#x2F;li&gt;
&lt;li&gt;Launch the firmware update tool (such as UTHSB_MPtool), select the new configuration file, and flash it.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;unbrick&quot;&gt;Unbrick&lt;&#x2F;h2&gt;
&lt;p&gt;When you have bricked your device, you can try to unbrick it with the following steps:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Disconnect the device from the computer and remove the NVMe&#x2F;SATA drive.&lt;&#x2F;li&gt;
&lt;li&gt;Disassemble the enclosure and locate the flash chip, which is usually an 8-pin 2x3 mm chip. The chip might be labeled P25Q40SH, FM25Q04A, PUYA P25D40H, or FM25Q04A.&lt;&#x2F;li&gt;
&lt;li&gt;Find the datasheet for the flash chip, and locate the CS# and VCC pin or CS# and Hardware Reset pin. Generally, VCC is pin 8 and CS# is pin 1.&lt;&#x2F;li&gt;
&lt;li&gt;Short the CS# and VCC pin, or better, use an SPI programmer like the CH341A. If using an SPI programmer, you can skip the next steps and directly flash the firmware.&lt;&#x2F;li&gt;
&lt;li&gt;Launch the Realtek firmware update tool (such as UTHSB_MPtool).&lt;&#x2F;li&gt;
&lt;li&gt;Connect the enclosure to the computer and keep the pins shorted. Keep the pins shorted for 10-15 seconds or until the device is recognized by the computer or the Realtek firmware update tool.&lt;&#x2F;li&gt;
&lt;li&gt;Launch the Realtek firmware update tool (such as UTHSB_MPtool).&lt;&#x2F;li&gt;
&lt;li&gt;Click on the flash&#x2F;update device button and wait until the process is finished.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;raw.githubusercontent.com&#x2F;bensuperpc&#x2F;rtl9210&#x2F;refs&#x2F;heads&#x2F;main&#x2F;image&#x2F;imageFlash.jpg&quot; alt=&quot;image&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;firmware-changelog&quot;&gt;Firmware changelog&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-23-9-100520-05-10-2020&quot;&gt;1.23.9.100520 05&#x2F;10&#x2F;2020&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Add customized command.&lt;&#x2F;li&gt;
&lt;li&gt;Fix SATA USB powercut resume issue.&lt;&#x2F;li&gt;
&lt;li&gt;Fix SATA reset issue if disk is lost.&lt;&#x2F;li&gt;
&lt;li&gt;Update Kinsea KS10 LED behavior.&lt;&#x2F;li&gt;
&lt;li&gt;Fix Fulllink macbook disk speed test issue.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;1-23-5-09320-03-09-2020&quot;&gt;1.23.5.09320 03&#x2F;09&#x2F;2020&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Support USB HID interface.&lt;&#x2F;li&gt;
&lt;li&gt;Improve the compatibility for RTL9210B.&lt;&#x2F;li&gt;
&lt;li&gt;Support RTL9210C_PD&#x2F;RTL9210C_CG.&lt;&#x2F;li&gt;
&lt;li&gt;Improve the compatibility for cdrom feature.&lt;&#x2F;li&gt;
&lt;li&gt;Add Orico customized sleep RGB LED behavior.&lt;&#x2F;li&gt;
&lt;li&gt;Support security api.&lt;&#x2F;li&gt;
&lt;li&gt;Add Kinsea KS10 LED behavior.&lt;&#x2F;li&gt;
&lt;li&gt;Add IOmaster M204 LED behavior.&lt;&#x2F;li&gt;
&lt;li&gt;Add LED SSI_6431_fp LED behavior.&lt;&#x2F;li&gt;
&lt;li&gt;Improve opal compatibility.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;1-27-25-072921-29-07-2021&quot;&gt;1.27.25.072921 29&#x2F;07&#x2F;2021&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;This firmware update aims to improve stability with Samsung 980 Pro and Western Digital SN550 NVMe SSDs.&lt;&#x2F;li&gt;
&lt;li&gt;The power LED behavior is also improved on Windows, and Intel based Mac systems:
now when safely ejected the power LED should turn off ( it may blink slowly )
indicating the drive may be safely unplugged from the computer.This update
is recommended for uses who have experienced connectivity problems with Samsung 980 Pro or Western Digital SN550 NVMe SSDs.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;1-29-8-122921&quot;&gt;1.29.8.122921 ?&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Fix problem If your HDD&#x2F;SSD could not be detected or kept disconnected from your Mac&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;1-29-12-011122&quot;&gt;1.29.12.011122 ?&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Fix Compatibility with Samsung M.2 SSDs und Samsung Data Migration Tool&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;1-30-17-070622&quot;&gt;1.30.17.070622 ?&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Fix slow speed issue.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;1-30-21-070622&quot;&gt;1.30.21.070622 ?&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Has improved random 4K read performance.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;1-31-17-102022&quot;&gt;1.31.17.102022 ?&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;1-32-16-010923&quot;&gt;1.32.16.010923 ?&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;1-32-45-041323&quot;&gt;1.32.45.041323 ?&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;1-32-49-140423&quot;&gt;1.32.49.140423 ?&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;1-32-68-062623-28-06-2023&quot;&gt;1.32.68.062623 28&#x2F;06&#x2F;2023&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;1-32-87-082923-29-08-2023&quot;&gt;1.32.87.082923 29&#x2F;08&#x2F;2023&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Addresses USB link instability seen in some SSD models when used in conjunction with Linux-based PCs, including the Solidigm P41 Plus. This update includes compatibility fixes in certain scenarios, including use with the Samsung 980 Pro&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;1-32-901-120722&quot;&gt;1.32.901.120722 ?&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;1-33-5-100623&quot;&gt;1.33.5.100623 ?&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;1-33-7-191023-19-10-2023&quot;&gt;1.33.7.191023 19&#x2F;10&#x2F;2023&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;1-33-44-011824-18-01-2024&quot;&gt;1.33.44.011824 18&#x2F;01&#x2F;2024&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Improved Compatibility&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;1-33-98-090324-03-09-2024&quot;&gt;1.33.98.090324 03&#x2F;09&#x2F;2024&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Improved speed on some SSDs (more info &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.station-drivers.com&#x2F;index.php&#x2F;en&#x2F;forum&#x2F;enclosures-nvme-sata-usb-3-x&#x2F;632-realtek-rtl9210b-nvme-usb-3-1-controller-firmware-version-1-33-98-090324&quot;&gt;www.station-drivers.com&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;1-34-29-011325-04-01-2025&quot;&gt;1.34.29.011325 04&#x2F;01&#x2F;2025&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixes an issue with random SSD disconnection&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;1-34-39-032625-13-01-2025&quot;&gt;1.34.39.032625 13&#x2F;01&#x2F;2025&lt;&#x2F;h3&gt;
&lt;h2 id=&quot;contribute&quot;&gt;Contribute&lt;&#x2F;h2&gt;
&lt;p&gt;Don&#x27;t hesitate to contribute to this git repository by creating a pull request or by contacting me by email: &lt;strong&gt;bensuperpc [at] gmail.com&lt;&#x2F;strong&gt; (I didn&#x27;t accept exec files for security reasons).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.station-drivers.com&#x2F;index.php&#x2F;en&#x2F;forum&#x2F;enclosures-nvme-sata-usb-3-x&#x2F;76-nvme-usb-drives-realtek-rtl9210-rtl9220-firmware-version-1-xx?start=0&quot;&gt;www.station-drivers.com&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.station-drivers.com&#x2F;index.php&#x2F;en&#x2F;forum&#x2F;enclosures-nvme-sata-usb-3-x&#x2F;76-nvme-usb-drives-realtek-rtl9210-rtl9220-firmware-version-1-xx?start=60#718&quot;&gt;Configuration&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;downloads.sabrent.com&#x2F;product&#x2F;ec-snve-firmware-update&#x2F;?wpdmdl=370&amp;amp;refresh=624f7332be18e1649374002&amp;amp;ind=1649290344652&amp;amp;filename=EC-SNVE%20-%20Firmware%20Update%20-%20Windows.zip&quot;&gt;Sabrent EC-SNVE firmware&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Benchmarking Webp format (WIP)</title>
        <published>2025-02-16T00:00:00+00:00</published>
        <updated>2025-02-16T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://bensuperpc.github.io/benchmark/webp/"/>
        <id>https://bensuperpc.github.io/benchmark/webp/</id>
        
        <content type="html" xml:base="https://bensuperpc.github.io/benchmark/webp/">&lt;h1 id=&quot;introduction&quot;&gt;Introduction&lt;&#x2F;h1&gt;
&lt;p&gt;Webp is a image format created by Google in early 2010&#x27;s, in this article, we will benchmark it against others lossless formats like avif, png, jpegxl.&lt;&#x2F;p&gt;
&lt;p&gt;The benchmark is done using the &lt;strong&gt;PNG&lt;&#x2F;strong&gt; format as input, and the output formats are &lt;strong&gt;Webp&lt;&#x2F;strong&gt;, &lt;strong&gt;Avif&lt;&#x2F;strong&gt;, and &lt;strong&gt;JpegXL&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;setup&quot;&gt;Setup&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: center&quot;&gt;Specification&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Value&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;CPU&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AMD Ryzen 7 5700X 8c16t (3.4 GHz &#x2F; 4.6 GHz)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;GPU&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;NVIDIA GeForce RTX 3060 Ti 8GB GDDR6&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;RAM&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;64GB DDR4 3200MHz&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;OS&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Manjaro&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;Compiler&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;GCC 15.2.1&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;cwebp&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;archlinux.org&#x2F;packages&#x2F;extra&#x2F;x86_64&#x2F;libwebp&#x2F;&quot;&gt;1.6.0&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;avifenc&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;archlinux.org&#x2F;packages&#x2F;extra&#x2F;x86_64&#x2F;libavif&#x2F;&quot;&gt;1.3.0&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;cjxl&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;archlinux.org&#x2F;packages&#x2F;extra&#x2F;x86_64&#x2F;libjxl&#x2F;&quot;&gt;0.11.1&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;ffmpeg&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;archlinux.org&#x2F;packages&#x2F;extra&#x2F;x86_64&#x2F;ffmpeg&#x2F;&quot;&gt;8.0.1&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;Docker Image&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bensuperpc&#x2F;docker-multimedia&quot;&gt;docker.io&#x2F;bensuperpc&#x2F;multimedia:1.0.0-archlinux-base-20260101&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;lossless-compression&quot;&gt;Lossless compression&lt;&#x2F;h2&gt;
&lt;p&gt;The dataset for the &lt;strong&gt;lossless&lt;&#x2F;strong&gt; benchmark is:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.kaggle.com&#x2F;datasets&#x2F;awsaf49&#x2F;scd-768x768-png-image-dataset&quot;&gt;SCD dataset&lt;&#x2F;a&gt; (7597 PNG images (768x768), 4.2 GB)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.kaggle.com&#x2F;datasets&#x2F;theoviel&#x2F;rsna-breast-cancer-1024-pngs&quot;&gt;RSNA Breast Cancer dataset&lt;&#x2F;a&gt; (547000 PNG images (1024x1024), 13.62 GB)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.kaggle.com&#x2F;datasets&#x2F;swaroopkml&#x2F;cifar10-pngs-in-folders&quot;&gt;CIFAR-10 dataset&lt;&#x2F;a&gt; (60000 PNG images (32x32), 135 MB)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.kaggle.com&#x2F;datasets&#x2F;andhikawb&#x2F;fashion-mnist-png&quot;&gt;Fashion MNIST dataset&lt;&#x2F;a&gt; (70000 PNG images (28x28), 36 MB)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The PNG to Webp lossless compression command is:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;cwebp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -quiet -metadata&lt;&#x2F;span&gt;&lt;span&gt; all&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -lossless -exact -z&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;Compression&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;&amp;gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;Input&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;Output&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The options are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-quiet&lt;&#x2F;code&gt;: Quiet mode.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;-metadata all&lt;&#x2F;code&gt;: Copy all metadata.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;-lossless&lt;&#x2F;code&gt;: Lossless compression.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;-exact&lt;&#x2F;code&gt;: Use exact mode, keep invisible pixels.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;-z &amp;lt;Compression&amp;gt;&lt;&#x2F;code&gt;: Compression level, from 0 to 9, 9 best compression.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;-mt&lt;&#x2F;code&gt;: Use multi-threading (we don&#x27;t use it for the benchmark, gnu parallel is used).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;Input&amp;gt;&lt;&#x2F;code&gt;: Input PNG file.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;Output&amp;gt;&lt;&#x2F;code&gt;: Output Webp file.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For PNG to Avif lossless compression:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;avifenc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --jobs 1 --lossless --speed&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;Compression&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --codec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;codec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;&amp;gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;Input&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --output&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;Output&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The options are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--lossless&lt;&#x2F;code&gt;: Lossless compression.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;--speed &amp;lt;Compression&amp;gt;&lt;&#x2F;code&gt;: Compression level, from 0 to 9, 9 best compression.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;--jobs 1&lt;&#x2F;code&gt;: Number of jobs.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;--codec&lt;&#x2F;code&gt;: Use the &lt;em&gt;aom&lt;&#x2F;em&gt; codec, only codec available for lossless compression (11-2024).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;Input&amp;gt;&lt;&#x2F;code&gt;: Input PNG file.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;Output&amp;gt;&lt;&#x2F;code&gt;: Output Avif file.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For PNG to JPGXL lossless compression:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;cjxl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --num_threads 1 --quiet --effort&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;Compression&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --distance 0.0 --brotli_effort 11&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;Input&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;&amp;gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;Output&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The options are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--quiet&lt;&#x2F;code&gt;: Quiet mode.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;--num_threads 1&lt;&#x2F;code&gt;: Number of threads.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;--effort &amp;lt;Compression&amp;gt;&lt;&#x2F;code&gt;: Compression level, from 0 to 9, 9 best compression.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;--distance 0.0&lt;&#x2F;code&gt;: The quality, 0.0 is &quot;mathematically lossless&quot;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;--brotli_effort 11&lt;&#x2F;code&gt;: Brotli compression level, 11 best compression.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;Input&amp;gt;&lt;&#x2F;code&gt;: Input PNG file.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;Output&amp;gt;&lt;&#x2F;code&gt;: Output JPGXL file.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For the final command, we use GNU Parallel to speed up the process (for Webp):&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;time&lt;&#x2F;span&gt;&lt;span&gt; find &lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt; -iname &lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt;&amp;quot;*.png&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; -type f -print0 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; parallel&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --jobs 16 --null&lt;&#x2F;span&gt;&lt;span&gt; cwebp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -quiet -metadata&lt;&#x2F;span&gt;&lt;span&gt; all&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -lossless -exact -z 9&lt;&#x2F;span&gt;&lt;span&gt; {}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span&gt; {.}.webp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The CMD to get the size of the output files is:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;find&lt;&#x2F;span&gt;&lt;span&gt; .&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -type&lt;&#x2F;span&gt;&lt;span&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -iname&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;*.webp&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;%s\n&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; awk&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;#39;{sum+=$1} END {printf &amp;quot;%.2f MiB\n&amp;quot;, sum&#x2F;1024&#x2F;1024}&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Where &lt;code&gt;{1}&lt;&#x2F;code&gt; is the compression level from 0 to 9.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;results&quot;&gt;Results&lt;&#x2F;h2&gt;
&lt;p&gt;For Ciphar-10:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: center&quot;&gt;Format&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Compression&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Size (MiB)&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Ratio (%)&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Time (s)&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;png&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;100.0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;webp&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;298&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;webp&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;299&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;webp&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;2&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;300&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;webp&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;3&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;302&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;webp&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;4&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;295&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;webp&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;5&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;291&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;webp&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;6&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;295&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;webp&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;7&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;293&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;webp&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;8&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;293&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;webp&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;9&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;103.29&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;286&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;jpegxl&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;jpegxl&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;2&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;jpegxl&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;3&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;jpegxl&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;4&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;jpegxl&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;5&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;jpegxl&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;6&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;jpegxl&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;7&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;jpegxl&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;8&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;jpegxl&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;9&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;cleanup&quot;&gt;Cleanup&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;find&lt;&#x2F;span&gt;&lt;span&gt; .&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -type&lt;&#x2F;span&gt;&lt;span&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;*.webp&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -delete&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;developers.google.com&#x2F;speed&#x2F;webp&#x2F;docs&#x2F;cwebp&quot;&gt;cWebp&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;aomediacodec.github.io&#x2F;av1-avif&#x2F;&quot;&gt;Avif&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;jpegxl.info&#x2F;&quot;&gt;JpegXL&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Tutorial on FFMPEG (WIP)</title>
        <published>2025-02-16T00:00:00+00:00</published>
        <updated>2025-02-16T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://bensuperpc.github.io/tutorial/ffmpeg/"/>
        <id>https://bensuperpc.github.io/tutorial/ffmpeg/</id>
        
        <content type="html" xml:base="https://bensuperpc.github.io/tutorial/ffmpeg/">&lt;h2 id=&quot;about-ffmpeg&quot;&gt;About FFMPEG&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;convert-video-to-av1-crf-svt-av1&quot;&gt;Convert video to AV1 CRF (SVT-AV1)&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: center&quot;&gt;Option&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;default&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Example&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-vf&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-vf scale=1920:-1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Downscale the video to 1080p&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-g&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;?&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-g 60&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Set the keyframe interval of x frames, lower value increase quality but increase file size&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-pix_fmt&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Depends on source&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-pix_fmt yuv420p&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Set the pixel format, yuv420p for 8-bit, yuv420p10le for 10-bit ect...&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-crf&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Constant Rate Factor, &lt;strong&gt;options depend on the encoder&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-preset&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Set the encoding speed, &lt;strong&gt;options depend on the encoder&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-tune&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Set the encoding tune, &lt;strong&gt;options depend on the encoder&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-c:v&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-c:v libsvtav1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Set the video codec, &lt;strong&gt;options depend on installed codecs&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-c:a&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-c:a copy&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Set the audio codec, &lt;strong&gt;options depend on installed codecs&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-c:s&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-c:s copy&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Set the subtitle codec, &lt;strong&gt;options depend on installed codecs&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-map&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-map 0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Map the input stream to the output&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-map_metadata&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-map_metadata 0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Map the metadata to the output&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-map_chapters&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-map_chapters 0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Map the chapters to the output&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-fps_mode&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;auto&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-fps_mode passthrough&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Set the frame rate mode, passthrough, cfr, vfr, auto&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-loglevel&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-loglevel error&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Set the log level, error, warning, info, verbose, debug, trace&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-hide_banner&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-hide_banner&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Hide the banner&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-y&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-y&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Overwrite output files without asking&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;This table shows the most common options for SVT-AV1, like the preset, crf, and svtav1-params.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;For svtav1-params each option is separated by a colon &lt;code&gt;:&lt;&#x2F;code&gt;, option and value are separated by &lt;code&gt;=&lt;&#x2F;code&gt;, like &lt;code&gt;tune=0:enable-qm=1:qm-min=0&lt;&#x2F;code&gt;.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: center&quot;&gt;Option&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;default&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Min&#x2F;Max&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Example&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-preset&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;4&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-preset 4&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0-12&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0 for slowest, 12 for fastest encoding&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-crf&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;18&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-crf 30&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0-63&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Constant Rate Factor, lower value increase quality&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;-svtav1-params&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-svtav1-params tune=0:enable-qm=1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;SVT-AV1 specific options&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;tune&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0-1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-svtav1-params tune=0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0 for subjective quality, 1 for objective quality (PSNR)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;enable-qm&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0-1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-svtav1-params enable-qm=1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Enable quantization matrices&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;qm-min&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;8&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0-15&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-svtav1-params qm-min=0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Minimum quantization matrix&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;qm-max&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;15&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0-15&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-svtav1-params qm-max=10&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Maximum quantization matrix&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;aq-mode&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;2&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0-2&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-svtav1-params aq-mode=2&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Adaptive quantization mode&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;enable-overlays&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0-1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-svtav1-params enable-overlays=1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Enable overlays&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;film-grain&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0-12&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;-svtav1-params film-grain=8&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Add film grain to the video&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;More information about the options can be found in the &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;AOMediaCodec&#x2F;SVT-AV1&#x2F;-&#x2F;blob&#x2F;master&#x2F;Docs&#x2F;Parameters.md?ref_type=heads&quot;&gt;SVT-AV1 documentation&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Example of encoding CRF for very high quality (Maybe little overkill, preset 4 and crf 20 is a good start for 1080p).&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:v&lt;&#x2F;span&gt;&lt;span&gt; libsvtav1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -preset 1 -crf 14 -svtav1-params&lt;&#x2F;span&gt;&lt;span&gt; tune=0:enable-qm=1:qm-min=0:qm-max=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;8 -c:a&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:s&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -map 0 -map_metadata 0 -map_chapters 0&lt;&#x2F;span&gt;&lt;span&gt; output.mkv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-preset 1&lt;&#x2F;strong&gt;: i recommend to use 4-6 for good quality and speed, 3 or lower for better quality but it &lt;strong&gt;really&lt;&#x2F;strong&gt; slow (~2x slower per lower step, for minimal gain).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;-crf 14&lt;&#x2F;strong&gt;: CRF 20-24 is a good start, 14 for very high quality bit bigger file size.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;tune=0&lt;&#x2F;strong&gt;: Enable subjective quality, 1 for objective quality (PSNR).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;enable-qm=1&lt;&#x2F;strong&gt;: Enable quantization matrices.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;qm-min=0&lt;&#x2F;strong&gt;: Minimum quantization matrix, reduce it for lower compression in certain zones, the &lt;em&gt;8&lt;&#x2F;em&gt; default is little too high, 0-4 is a good start.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;qm-max=8&lt;&#x2F;strong&gt;: Maximum quantization matrix, increase it for higher compression in certain zones, the &lt;em&gt;15&lt;&#x2F;em&gt; default is little too high, 8-12 is a good start.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;With &lt;strong&gt;AV1AN&lt;&#x2F;strong&gt;, it usefull if you have move than 16 threads, SVT-AV1 is not well optimized for over 16 threads, AV11AN encode the video in parallel &lt;strong&gt;per scene&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;av1an&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --encoder&lt;&#x2F;span&gt;&lt;span&gt; svt-av1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --video-params&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;--rc 0 --crf 16 --preset 1 --tune 0 --enable-qm=1 --qm-min=0 --qm-max=8&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --audio-params&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;-c:a copy&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span&gt; temp_output.mkv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Optional for AV1AN:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Add &lt;code&gt;--video-filter &quot;scale=1920:-1&quot;&lt;&#x2F;code&gt; to downscale the video to 1080p&lt;&#x2F;li&gt;
&lt;li&gt;Add &lt;code&gt;--keyint 60&lt;&#x2F;code&gt; in video-params to set the keyframe interval to 60 frames (every 1 seconds at 60fps), lower value increase quality but increase file size&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;convert-video-to-av1-crf-aom&quot;&gt;Convert video to AV1 CRF(AOM)&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:v&lt;&#x2F;span&gt;&lt;span&gt; libaom-av1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -crf 18 -cpu-used 3 -row-mt 1 -c:a&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:s&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -map 0 -map_metadata 0 -map_chapters 0&lt;&#x2F;span&gt;&lt;span&gt; output.mkv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;convert-video-to-av1-crf-rav1e&quot;&gt;Convert video to AV1 CRF (Rav1e)&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -y -c:v&lt;&#x2F;span&gt;&lt;span&gt; librav1e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -crf 18 -speed 3 -c:a&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:s&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -map 0 -map_metadata 0 -map_chapters 0&lt;&#x2F;span&gt;&lt;span&gt; output.mkv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;convert-video-to-h265-crf-x265&quot;&gt;Convert video to h265 CRF (x265)&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -y -c:v&lt;&#x2F;span&gt;&lt;span&gt; libx265&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -crf 18 -preset&lt;&#x2F;span&gt;&lt;span&gt; slower&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:a&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:s&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -map 0 -map_metadata 0 -map_chapters 0&lt;&#x2F;span&gt;&lt;span&gt; output.mkv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;convert-video-to-h265-abr-2-pass-and-scale-to-720p-x265&quot;&gt;Convert video to h265 ABR 2 pass and scale to 720p (x265)&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -y -c:v&lt;&#x2F;span&gt;&lt;span&gt; libx265&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -preset&lt;&#x2F;span&gt;&lt;span&gt; slow&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -vf&lt;&#x2F;span&gt;&lt;span&gt; scale=1280:-1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -b:v&lt;&#x2F;span&gt;&lt;span&gt; 2000k&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -minrate&lt;&#x2F;span&gt;&lt;span&gt; 500k&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -maxrate&lt;&#x2F;span&gt;&lt;span&gt; 6000k&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -bufsize&lt;&#x2F;span&gt;&lt;span&gt; 12000k&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -pass 1 -an -f&lt;&#x2F;span&gt;&lt;span&gt; null &#x2F;dev&#x2F;null &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -preset&lt;&#x2F;span&gt;&lt;span&gt; slow&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -vf&lt;&#x2F;span&gt;&lt;span&gt; scale=1280:-1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:v&lt;&#x2F;span&gt;&lt;span&gt; libx265&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -b:v&lt;&#x2F;span&gt;&lt;span&gt; 2000k&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -minrate&lt;&#x2F;span&gt;&lt;span&gt; 500k&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -maxrate&lt;&#x2F;span&gt;&lt;span&gt; 6000k&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -bufsize&lt;&#x2F;span&gt;&lt;span&gt; 12000k&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -pass 2 -c:a&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:s&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -map 0 -map_metadata 0 -map_chapters 0&lt;&#x2F;span&gt;&lt;span&gt; output.mkv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;convert-video-to-h264-crf-x264&quot;&gt;Convert video to h264 CRF (x264)&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:v&lt;&#x2F;span&gt;&lt;span&gt; libx264&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -crf 26 -preset&lt;&#x2F;span&gt;&lt;span&gt; slow&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:a&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:s&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -map 0 -map_metadata 0 -map_chapters 0&lt;&#x2F;span&gt;&lt;span&gt; output.mkv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;convert-video-with-vaapi-h264-h265-av1&quot;&gt;Convert video with VAAPI (h264&#x2F;h265&#x2F;AV1)&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -hwaccel&lt;&#x2F;span&gt;&lt;span&gt; vaapi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -vaapi_device&lt;&#x2F;span&gt;&lt;span&gt; &#x2F;dev&#x2F;dri&#x2F;renderD128&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;  -i&lt;&#x2F;span&gt;&lt;span&gt; input.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -vf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;#39;format=nv12,hwupload&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:v&lt;&#x2F;span&gt;&lt;span&gt; h264_vaapi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -rc_mode&lt;&#x2F;span&gt;&lt;span&gt; CQP&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -qp 30 -strict&lt;&#x2F;span&gt;&lt;span&gt; unofficial&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:a&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:s&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -map 0 -map_metadata 0 -map_chapters 0&lt;&#x2F;span&gt;&lt;span&gt; output.mkv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;get-ssim&quot;&gt;Get SSIM&lt;&#x2F;h3&gt;
&lt;p&gt;SSIM Y: For luma (Y) channel, 0-1, 1 is perfect match
SSIM U: For chrominance (U) channel, 0-1, 1 is perfect match
SSIM V: For chrominance (V) channel, 0-1, 1 is perfect match
SSIM All: Average of YUV, 0-1, 1 is perfect match&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; output.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -lavfi&lt;&#x2F;span&gt;&lt;span&gt; ssim&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; null -&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;get-psnr&quot;&gt;Get PSNR&lt;&#x2F;h3&gt;
&lt;p&gt;PSNR Y: For luma (Y) channel, in dB higher is better
PSNR U: For chrominance (U) channel, in dB higher is better
PSNR V: For chrominance (V) channel, in dB higher is better
PSNR All: Average of YUV, in dB higher is better&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; output.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -lavfi&lt;&#x2F;span&gt;&lt;span&gt; psnr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; null -&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;get-vmaf&quot;&gt;Get VMAF&lt;&#x2F;h3&gt;
&lt;p&gt;VMAF score, higher is better&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; output.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -lavfi&lt;&#x2F;span&gt;&lt;span&gt; libvmaf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; null -&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Output into a json file&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; video1.mp4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; video2.mp4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -lavfi&lt;&#x2F;span&gt;&lt;span&gt; libvmaf=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt;&amp;quot;log_path=vmaf.json:log_fmt=json&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; null -&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;cut-video-without-re-encoding&quot;&gt;Cut video without re-encoding&lt;&#x2F;h3&gt;
&lt;p&gt;Extract from 125s to 150s&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mp4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -ss 125 -t 25 -copyts -map_metadata 0 -vcodec&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -acodec&lt;&#x2F;span&gt;&lt;span&gt; copy out.mkv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mp4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -ss 125 -to 150 -c&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -copyts -map_metadata 0 -vcodec&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -acodec&lt;&#x2F;span&gt;&lt;span&gt; copy out.mkv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;import-watermark&quot;&gt;Import watermark&lt;&#x2F;h3&gt;
&lt;p&gt;Import watermark at 10:10 from the top left corner&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mp4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; watermark.png&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -filter_complex&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;overlay=10:10&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:a&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:s&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -map 0 -map_metadata 0 -map_chapters 0&lt;&#x2F;span&gt;&lt;span&gt; output.mp4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;change-video-speed&quot;&gt;Change video speed&lt;&#x2F;h3&gt;
&lt;p&gt;Speed up the video by 2x&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mp4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -vf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;setpts=0.5*PTS&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -af&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;atempo=2.0&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -map_metadata 0&lt;&#x2F;span&gt;&lt;span&gt; output.mp4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Change the video frame rate to 30fps (2x slower if the original is 60fps)&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mp4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -filter:v&lt;&#x2F;span&gt;&lt;span&gt; fps=fps=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;30 -map_metadata 0&lt;&#x2F;span&gt;&lt;span&gt; output.mp4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;convert-video-to-gif&quot;&gt;Convert video to gif&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mp4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -vf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;fps=24,scale=480:-1:flags=lanczos&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:v&lt;&#x2F;span&gt;&lt;span&gt; gif&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -map_metadata 0&lt;&#x2F;span&gt;&lt;span&gt; output.gif&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;add-vintage-look-effect-to-video-and-play-it-with-ffplay&quot;&gt;Add vintage look effect to video and play it with ffplay&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffplay&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mp4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -vf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;curves=vintage,noise=alls=30:allf=t+u,hue=s=0.7,eq=contrast=0.85:brightness=-0.1:saturation=0.7,gblur=sigma=1.5,colorbalance=rm=0.2:gm=0.1:bm=-0.2,vignette&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;curves=vintage&lt;&#x2F;strong&gt;: Add a vintage look&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;noise=alls=30:allf=t+u&lt;&#x2F;strong&gt;: Add noise&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;hue=s=0.7&lt;&#x2F;strong&gt;: Reduces saturation&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;eq=contrast=0.85:brightness=-0.01:saturation=0.7&lt;&#x2F;strong&gt;: Adjust contrast, brightness and saturation&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;gblur=sigma=1.5&lt;&#x2F;strong&gt;: Add a gaussian blur&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;colorbalance=rm=0.2:gm=0.1:bm=-0.2&lt;&#x2F;strong&gt;: Adjust color balance to sepia tone&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;vignette&lt;&#x2F;strong&gt;: Add a vignette&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;image-commands-examples&quot;&gt;Image commands examples&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;convert-images-png-to-webp-lossless&quot;&gt;Convert images png to webp (lossless)&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;find&lt;&#x2F;span&gt;&lt;span&gt; .&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;*.png&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; parallel&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -eta&lt;&#x2F;span&gt;&lt;span&gt; cwebp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -metadata&lt;&#x2F;span&gt;&lt;span&gt; all&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -lossless -exact -z 9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;{}&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;{.}.webp&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; find&lt;&#x2F;span&gt;&lt;span&gt; .&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;*.png&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -exec&lt;&#x2F;span&gt;&lt;span&gt; sh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;#39;touch -r &amp;quot;${0%.*}.png&amp;quot; &amp;quot;${0%.*}.webp&amp;quot;&amp;#39; &amp;quot;{}&amp;quot; &amp;#39;;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;get-difference-between-two-images&quot;&gt;Get difference between two images&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;compare&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -metric&lt;&#x2F;span&gt;&lt;span&gt; AE input1.png input2.webp null:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Or with ImageMagick&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;magick&lt;&#x2F;span&gt;&lt;span&gt; input1.png ppm:-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; magick&lt;&#x2F;span&gt;&lt;span&gt; input2.webp ppm:-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; diff&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -q&lt;&#x2F;span&gt;&lt;span&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;lt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;magick&lt;&#x2F;span&gt;&lt;span&gt; input2.webp ppm:-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;audio-commands-examples&quot;&gt; Audio commands examples&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;generate-audio-spectrogram-with-sox&quot;&gt;Generate audio spectrogram with sox&lt;&#x2F;h3&gt;
&lt;p&gt;You can generate a spectrogram with sox, for example with a flac file to detect &quot;fake&quot; flac files.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;sox&lt;&#x2F;span&gt;&lt;span&gt; input_audio.flac&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span&gt; spectrogram&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span&gt; output_spectrogram.png&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;em&gt;Add &lt;code&gt;-t flac&lt;&#x2F;code&gt; if the input file is not recognized as flac.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;increase-audio-volume-without-re-encoding&quot;&gt;Increase audio volume without re-encoding&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mp4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -af&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;volume=2.0&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:v&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:a&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:s&lt;&#x2F;span&gt;&lt;span&gt; copy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -map 0 -map_metadata 0 -map_chapters 0&lt;&#x2F;span&gt;&lt;span&gt; output.mp4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;convert-audio&quot;&gt;Convert audio&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: center&quot;&gt;Audio lib&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Max bitrate&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Extension&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;libmp3lame&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;320kbps&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;mp3&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;aac&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;250kbps&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;m4a&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;libopus&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;250kbps&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;opus&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;flac&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;lossless&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;flac&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Convert audio to mp3&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.flac&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -c:a&lt;&#x2F;span&gt;&lt;span&gt; libmp3lame&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -b:a&lt;&#x2F;span&gt;&lt;span&gt; 320k output.mp3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Convert audio to lossy or &quot;fake&quot; flac&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; output.mp3 output.flac&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Remove noise from audio&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; input.mp3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -af&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;highpass=f=200, lowpass=f=3000&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; output.mp3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;metadata-commands-examples&quot;&gt;Metadata commands examples&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;get-metadata-from-audio-or-video-file&quot;&gt;Get metadata from audio or video file&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;ffprobe&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -v&lt;&#x2F;span&gt;&lt;span&gt; quiet&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -print_format&lt;&#x2F;span&gt;&lt;span&gt; json&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -show_format -show_streams&lt;&#x2F;span&gt;&lt;span&gt; input.mp4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;youtube-dlp&quot;&gt;Youtube-dlp&lt;&#x2F;h3&gt;
&lt;p&gt;Download audio from youtube video without re-encoding:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;yt-dlp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; bestaudio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --extract-audio --embed-thumbnail --embed-metadata --embed-chapters --output&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;%(title)s.%(ext)s&amp;quot; &amp;quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=video_playlist_id&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Download video from youtube video without re-encoding:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;yt-dlp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;bestvideo+(251&#x2F;mergeall[format_id~=251-])&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --audio-multistreams --sub-langs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;all,-live_chat&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --embed-chapters --embed-metadata --merge-output-format&lt;&#x2F;span&gt;&lt;span&gt; mkv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; --output&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF8B39;&quot;&gt; &amp;quot;%(title)s.%(ext)s&amp;quot; &amp;quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=video_id&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;useful-links&quot;&gt;Useful links&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;ffmpeg.org&#x2F;&quot;&gt;FFMPEG&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;imagemagick.org&#x2F;&quot;&gt;ImageMagick&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;gist.github.com&#x2F;BlueSwordM&#x2F;86dfcb6ab38a93a524472a0cbe4c4100&quot;&gt;Simple SVT-AV1 Beginner Guide&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;AOMediaCodec&#x2F;SVT-AV1&#x2F;-&#x2F;blob&#x2F;master&#x2F;Docs&#x2F;CommonQuestions.md&quot;&gt;CommonQuestions SVT-AV1&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;ottverse.com&#x2F;create-vintage-videos-using-ffmpeg&#x2F;&quot;&gt;Vintage look with ffmpeg&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;ffmpeg.org&#x2F;ffmpeg-filters.html&quot;&gt;FFMPEG filters&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;trac.ffmpeg.org&#x2F;wiki&#x2F;Encode&#x2F;MP3&quot;&gt;FFMPEG Lame&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;wiki.x266.mov&#x2F;blog&#x2F;svt-av1-deep-dive&quot;&gt;Encoding Animation with SVT-AV1: A Deep Dive&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;license&quot;&gt;License&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;bensuperpc.github.io&#x2F;tutorial&#x2F;ffmpeg&#x2F;LICENSE&quot;&gt;MIT&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>CAN bus under Linux (WIP)</title>
        <published>2025-02-01T00:00:00+00:00</published>
        <updated>2025-02-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://bensuperpc.github.io/tutorial/canbus/"/>
        <id>https://bensuperpc.github.io/tutorial/canbus/</id>
        
        <content type="html" xml:base="https://bensuperpc.github.io/tutorial/canbus/">&lt;h1 id=&quot;can-bus&quot;&gt;CAN bus&lt;&#x2F;h1&gt;
&lt;p&gt;This page provides a brief overview of the CAN bus protocol and how to use it under Linux.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;install-tools-for-can-bus-and-setup&quot;&gt;Install tools for CAN bus and setup&lt;&#x2F;h2&gt;
&lt;p&gt;On debian&#x2F;ubuntu based systems:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; apt install can-utils&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;On arch based systems (AUR package):&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;yay&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span&gt; can-utils&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;From source: &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;linux-can&#x2F;can-utils&quot;&gt;can-utils&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;setup-virtual-interfaces&quot;&gt;Setup virtual interfaces&lt;&#x2F;h3&gt;
&lt;p&gt;Create a virtual CAN interface:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; ip link add can0 type vcan&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Enable standard CAN interface:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; ip link set up can0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Enable CAN FD interface:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; ip link set up can0 mtu&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 72&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;setup-hardware-interfaces&quot;&gt;Setup hardware interfaces&lt;&#x2F;h3&gt;
&lt;p&gt;Enable hardware CAN interface:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; ip link set up can0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Set standard CAN interface:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; ip link set can0 type can bitrate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 125000&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Set CAN FD interface:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; ip link set can0 type can bitrate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 125000&lt;&#x2F;span&gt;&lt;span&gt; dbitrate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 5000000&lt;&#x2F;span&gt;&lt;span&gt; fd on&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;receiving-data&quot;&gt;Receiving data&lt;&#x2F;h2&gt;
&lt;p&gt;To read received data from a CAN interface:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;candump&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; -cexdtA&lt;&#x2F;span&gt;&lt;span&gt; any&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;sending-data&quot;&gt;Sending data&lt;&#x2F;h2&gt;
&lt;p&gt;To send data to a CAN interface:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;cansend&lt;&#x2F;span&gt;&lt;span&gt; can0 217#1234567890ABCDEF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;For CAN FD frames:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;cansend&lt;&#x2F;span&gt;&lt;span&gt; can0 112##01234567890ABCDEF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Or with extended data:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;cansend&lt;&#x2F;span&gt;&lt;span&gt; can0 112##01234567890ABCDEF1234567890ABCDEF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;For CAN FD and BRS (Baud Rate Switch):&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;cansend&lt;&#x2F;span&gt;&lt;span&gt; can0 112##11234567890ABCDEF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You should see the sent frame in the &lt;code&gt;candump&lt;&#x2F;code&gt; output:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;2026-01-31&lt;&#x2F;span&gt;&lt;span&gt; 14:51:04.623452)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;  can0&lt;&#x2F;span&gt;&lt;span&gt;  TX - -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;  217&lt;&#x2F;span&gt;&lt;span&gt;   [8]  12 34 56 78 90 AB CD EF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;2026-01-31&lt;&#x2F;span&gt;&lt;span&gt; 14:51:12.489300)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;  can0&lt;&#x2F;span&gt;&lt;span&gt;  TX - -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;  112&lt;&#x2F;span&gt;&lt;span&gt;  [08]  12 34 56 78 90 AB CD EF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;2026-01-31&lt;&#x2F;span&gt;&lt;span&gt; 14:51:19.698954)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;  can0&lt;&#x2F;span&gt;&lt;span&gt;  TX - -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;  112&lt;&#x2F;span&gt;&lt;span&gt;  [16]  12 34 56 78 90 AB CD EF 12 34 56 78 90 AB CD EF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;2026-01-31&lt;&#x2F;span&gt;&lt;span&gt; 14:51:29.358900)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;  can0&lt;&#x2F;span&gt;&lt;span&gt;  TX B -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;  112&lt;&#x2F;span&gt;&lt;span&gt;  [08]  12 34 56 78 90 AB CD EF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;remove-hardware-interfaces&quot;&gt;Remove hardware interfaces&lt;&#x2F;h2&gt;
&lt;p&gt;To remove the hardware CAN interface:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; ip link set down can0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;CAN_bus&quot;&gt;CAN bus&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;linux-can&#x2F;can-utils&quot;&gt;can-util&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;SocketCAN&quot;&gt;SocketCAN&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;CAN_FD&quot;&gt;CAN FD&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.kernel.org&#x2F;doc&#x2F;html&#x2F;latest&#x2F;networking&#x2F;can.html&quot;&gt;SocketCAN on Linux&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
</feed>
