<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Hardware-Lab on Tech Blog</title>
    <link>https://blog-8ye.pages.dev/en/categories/hardware-lab/</link>
    <description>Recent content in Hardware-Lab on Tech Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>© 2026 Plus</copyright>
    <lastBuildDate>Thu, 16 Apr 2026 10:00:00 +0900</lastBuildDate><atom:link href="https://blog-8ye.pages.dev/en/categories/hardware-lab/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Complete Guide to Fiber Optic Communication — From Principles to Real-World Use</title>
      <link>https://blog-8ye.pages.dev/en/posts/fiber-optic-communication-guide/</link>
      <pubDate>Thu, 16 Apr 2026 10:00:00 +0900</pubDate>
      
      <guid>https://blog-8ye.pages.dev/en/posts/fiber-optic-communication-guide/</guid>
      <description>&lt;p&gt;Fiber optic communication transmits data using light as the medium. Commercialized in the 1970s, it has since become the backbone of the internet, transoceanic cables, and data center networks. With transmission speeds thousands of times faster than copper and reach extending tens of kilometers, modern communications infrastructure simply cannot function without fiber optics.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;1. Core Principle — Total Internal Reflection (TIR)&#xA;    &lt;div id=&#34;1-core-principle--total-internal-reflection-tir&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#1-core-principle--total-internal-reflection-tir&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The physical foundation of fiber optics is &lt;strong&gt;Total Internal Reflection (TIR)&lt;/strong&gt;. When light travels from a medium with a higher refractive index (the core) to one with a lower index (the cladding), it completely reflects back if the angle of incidence exceeds the &lt;strong&gt;Critical Angle&lt;/strong&gt; — no light escapes.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Building an NVIDIA GPU Controller (5) — EDID Editor and Color Control Complete</title>
      <link>https://blog-8ye.pages.dev/en/posts/edid-editor-color-control-complete/</link>
      <pubDate>Fri, 27 Mar 2026 13:00:00 +0900</pubDate>
      
      <guid>https://blog-8ye.pages.dev/en/posts/edid-editor-color-control-complete/</guid>
      <description>&lt;p&gt;This is the final installment of the series. We&amp;rsquo;ve covered NVAPI initialization, GPU and display information queries, and custom resolutions up to this point. Now we implement the project&amp;rsquo;s highlights — the &lt;strong&gt;EDID editor&lt;/strong&gt; and &lt;strong&gt;color control&lt;/strong&gt; — and bring the entire application to completion.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What Is EDID Editing&#xA;    &lt;div id=&#34;what-is-edid-editing&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-is-edid-editing&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;EDID (Extended Display Identification Data) is a 128-byte (or 256-byte+ for extensions) structure that a monitor uses to advertise its capabilities to the graphics card. It is exchanged automatically over the DDC/CI channel upon connection, and the GPU driver uses this data to determine supported resolutions, color depth, HDR support, and more.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Building an NVIDIA GPU Controller (4) — Custom Resolutions and Display Timing Calculations</title>
      <link>https://blog-8ye.pages.dev/en/posts/custom-display-resolution-timing/</link>
      <pubDate>Fri, 27 Mar 2026 12:00:00 +0900</pubDate>
      
      <guid>https://blog-8ye.pages.dev/en/posts/custom-display-resolution-timing/</guid>
      <description>&lt;p&gt;Previous parts of this series covered NVAPI initialization, GPU information queries, and EDID reading and writing. This part tackles the project&amp;rsquo;s core feature: &lt;strong&gt;custom resolutions&lt;/strong&gt;. Rather than simply calling NVAPI functions, the goal is to calculate and apply &lt;strong&gt;display timing&lt;/strong&gt; directly — the language that monitors actually understand.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What Is Display Timing&#xA;    &lt;div id=&#34;what-is-display-timing&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-is-display-timing&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;When a monitor and GPU exchange pixel data, they don&amp;rsquo;t just pass around resolution numbers. The analog signal conventions from the CRT era carried over into the digital world, so beyond the visible pixels that make up the image, there are defined &lt;strong&gt;blanking intervals&lt;/strong&gt; on all sides.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Building an NVIDIA GPU Controller (3) — Deep Dive into EDID Binary Structure and Parsing</title>
      <link>https://blog-8ye.pages.dev/en/posts/edid-binary-structure-parsing/</link>
      <pubDate>Fri, 27 Mar 2026 11:00:00 +0900</pubDate>
      
      <guid>https://blog-8ye.pages.dev/en/posts/edid-binary-structure-parsing/</guid>
      <description>&lt;p&gt;In the previous installment we covered initializing NVAPI and obtaining GPU handles along with display Output IDs. This entry is the most technically dense in the series. We&amp;rsquo;ll dissect the EDID byte array retrieved from an NVIDIA GPU — byte by byte — examining exactly what structure it encodes and how our C# parser interprets it.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What Is EDID?&#xA;    &lt;div id=&#34;what-is-edid&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-is-edid&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;EDID (Extended Display Identification Data)&lt;/strong&gt; is binary data that a monitor sends to the GPU to identify itself and declare what it supports. First standardized by VESA in 1994, the spec has evolved through EDID 1.4 and consists of a 128-byte base block plus optional 128-byte extension blocks.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Building an NVIDIA GPU Controller (2) — GPU Info Query and Display Enumeration</title>
      <link>https://blog-8ye.pages.dev/en/posts/nvapi-gpu-display-enumeration/</link>
      <pubDate>Fri, 27 Mar 2026 10:00:00 +0900</pubDate>
      
      <guid>https://blog-8ye.pages.dev/en/posts/nvapi-gpu-display-enumeration/</guid>
      <description>&lt;p&gt;Part 1 covered how to build the NVAPI wrapper layer and pull native functions into C# through &lt;code&gt;NvApiWrapper&lt;/code&gt;. This installment focuses on two core modules that actually put that wrapper to use: &lt;code&gt;NvGpuInfo&lt;/code&gt;, which collects GPU hardware data, and &lt;code&gt;NvDisplay&lt;/code&gt;, which enumerates every connected display and resolves monitor names.&lt;/p&gt;&#xA;&lt;p&gt;The data structures these two classes produce — &lt;code&gt;GpuInfoData&lt;/code&gt;, &lt;code&gt;DisplayInfo&lt;/code&gt;, and &lt;code&gt;DriverInfo&lt;/code&gt; — are the shared models used throughout the entire controller.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Building an NVIDIA GPU Controller (1) — NVAPI Initialization and Project Architecture</title>
      <link>https://blog-8ye.pages.dev/en/posts/nvapi-gpu-controller-architecture-setup/</link>
      <pubDate>Fri, 27 Mar 2026 09:00:00 +0900</pubDate>
      
      <guid>https://blog-8ye.pages.dev/en/posts/nvapi-gpu-controller-architecture-setup/</guid>
      <description>&lt;p&gt;The idea of controlling an NVIDIA GPU programmatically had been sitting in the back of my mind for a while. Reading and writing monitor EDID directly, injecting custom resolutions, changing color space settings with a single line of code — I needed a tool that could push settings directly to the GPU on my own terms, without relying on GeForce Experience or the NVIDIA Control Panel.&lt;/p&gt;&#xA;&lt;p&gt;The result is &lt;strong&gt;NvGpuController&lt;/strong&gt; — an NVIDIA GPU control application built with C# WinForms (.NET 4.7.2). This series documents the process of building it from scratch. Part 1 covers why I chose NVAPI, how the project is structured, and how I bridged NVAPI&amp;rsquo;s unusual initialization mechanism into C# via P/Invoke.&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
