patch_edid

This fork of edid-json-tools adds a patch_edid tool that can correct several edid issues present in HMDs such as remove a faulty yuv mode, add the information to mark an HMD non-desktop and fix broken checksums.

patch_edid works through the linux debugfs to make low level changes that are not persistent over reboots. However, once a connector’s edid override is active, it will persist over display cable reconnects and suspending the PC.

Note that the display has to be present for the edid to be modified. For those HMDs that only turn the display on, when monado launches and wakes up the display, this means that for those HMDs you should start monado-service first, then while monado-service is running, run patch_edid, then restart monado-service.

Sometimes reconnecting the HMD display cable may be required between running patch_edid and then starting monado.

Installation

On Archlinux, install edid-json-tools-patch_edid from the AUR.

Install in a virtualenv

git clone https://github.com/Joel-Valenciano/edid-json-tools.git
virtualenv edid-json-tools-venv
source edid-json-tools-venv/bin/activate
pip install --editable 'edid-json-tools[CLI]'

When installed in a virtualenv, you can only run patch_edid from a shell in which you have run source edid-json-tools-venv/bin/activate before. Run deactivate to get that shell back to its original state.

Running

Use xrandr, kscreen-doctor --outputs or similar to find the HDMI-?, DP-? or similar connector name for your HMD.

Then run, for example to remove a faulty yuv mode:

sudo patch_edid override -m -y 1 DP-2

or to fix the checksum and mark it as non-desktop:

sudo patch_edid override -d -m 1 DP-2

The edid override can also be removed with:

sudo patch_edid override --reset 1 DP-2