<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Edid on inetshell</title><link>https://inet.sh/en/tags/edid/</link><description>Recent content in Edid on inetshell</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 25 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://inet.sh/en/tags/edid/index.xml" rel="self" type="application/rss+xml"/><item><title>PiKVM: force 1080p (or any mode you want) by editing the EDID</title><link>https://inet.sh/en/posts/pikvm/pikvm-force-1080p-edid/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/en/posts/pikvm/pikvm-force-1080p-edid/</guid><description>The PiKVM V3 (and DIY V0–V2) captures 1080p only at 50 Hz and therefore advertises 720p by default; some consoles, like Proxmox&amp;#39;s, look bad. kvmd-edidconf --import-preset=v3.1080p-by-default --apply changes the EDID the host sees. How to check it, change the monitor name so Windows re-detects it, and go back to the original preset.</description><content:encoded><![CDATA[<h2 id="tldr">TL;DR</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">rw
</span></span><span class="line"><span class="cl">kvmd-edidconf --import-preset<span class="o">=</span>v3.1080p-by-default --apply    <span class="c1"># V3, and DIY V0–V2 with their preset (v0, v1, v2)</span>
</span></span><span class="line"><span class="cl">ro
</span></span></code></pre></td></tr></table>
</div>
</div><p>Then <strong>reboot the host</strong> or unplug and replug the HDMI: the EDID is only read when the host detects the monitor. On <strong>V4 Mini</strong> and <strong>V4 Plus</strong> none of this is needed: they capture 1080p at 60 Hz out of the box.</p>
<h2 id="why">Why</h2>
<p>The PiKVM presents itself to the host as a monitor, and what that monitor &ldquo;can do&rdquo; lives in the <strong>EDID</strong>: resolutions, refresh rates, and which one is preferred. The host picks from that.</p>
<p>The V3 (and DIY builds with the TC358743 CSI capture chip) has a hardware limit: <strong>1080p only at 50 Hz</strong>. Since 50 Hz is an unusual rate, the default EDID marks <strong>720p60</strong> as the preferred mode and many hosts stay there. That is right for most, but some systems look bad at 720p: the Proxmox console, some BIOS screens, desktops that scale oddly. The <code>v3.1080p-by-default</code> preset keeps the same modes but makes <strong>1080p50</strong> the preferred one.</p>
<h2 id="checking">Checking</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">kvmd-edidconf                 <span class="c1"># no arguments: manufacturer, product, serial, name and audio of the current EDID</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>In the web UI, the video indicator shows the resolution and fps being captured; after the host reboot it should read <code>1920x1080</code> and <code>50</code>. If the host has a display tool (<code>xrandr</code>, Windows Settings), the &ldquo;monitor&rdquo; shows up with the EDID&rsquo;s name.</p>
<h2 id="other-edid-settings">Other EDID settings</h2>
<p>Windows stores per-monitor settings keyed by manufacturer, product, and serial. If the host stays in an old mode after changing the EDID, change its identity so it treats it as a new monitor:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">rw
</span></span><span class="line"><span class="cl">kvmd-edidconf --set-monitor-name<span class="o">=</span>PIKVM --set-mfc-id<span class="o">=</span>PKV --set-product-id<span class="o">=</span><span class="m">34953</span> --set-serial<span class="o">=</span><span class="m">1234567890</span> --apply
</span></span><span class="line"><span class="cl">ro
</span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li><code>--set-audio=1</code> advertises audio over HDMI (to capture sound on models that support it).</li>
<li>On the <strong>V4 Plus</strong>, with a real monitor connected to the OUT2 output, <code>--import-display-ids</code> copies its identity into the PiKVM&rsquo;s EDID.</li>
<li>Back to the original: <code>kvmd-edidconf --import-preset=v3 --apply</code> (or <code>v4mini</code>, <code>v4plus</code> depending on the model).</li>
</ul>
<h2 id="traps">Traps</h2>
<ul>
<li><strong><code>rw</code> before, <code>ro</code> after.</strong> The PiKVM filesystem is read-only; without <code>rw</code> the change is not saved and without <code>ro</code> it nags you on every login.</li>
<li><strong>The host must re-read the EDID.</strong> <code>--apply</code> takes effect on the PiKVM instantly, but the host does not notice until a reboot, a cable replug, or on some BIOSes only at POST.</li>
<li><strong>50 Hz on the V3 is not a bug</strong>, it is the capture chip&rsquo;s limit. For 60 Hz, V4.</li>
<li><strong>Black screen after a hand-made EDID</strong>: import the model&rsquo;s preset again and apply.</li>
<li><strong>Proxmox</strong> and other framebuffer consoles fix the mode at boot; after changing the EDID you have to reboot the node, not just the session.</li>
</ul>
<p>Reference: <a href="https://docs.pikvm.org/edid/">EDID</a> in the PiKVM documentation.</p>
]]></content:encoded></item></channel></rss>