edid-editor-cli(1)

EDID-EDITOR-CLI(1) User Commands EDID-EDITOR-CLI(1)

NAME

edid-editor-cli - read and change EDID data from the command line

SYNOPSIS

edid-editor-cli command [option...] [argument...]

DESCRIPTION

edid-editor-cli reads and changes EDID, the data a display sends to describe itself, with the same parser as edid-editor(1), and without a display. It reads the EDID base block, CTA-861 extensions and DisplayID 1.x and 2.x blocks.

A file is binary EDID or hexadecimal text in the layouts edid-decode(1) and xrandr --verbose print; the kind is recognised from the data, and - reads standard input. The EDID of a connected display is read from its edid file under /sys/class/drm; see displays. EDID data that breaks the standard is refused unless --ignore-errors is given.

Options may come before or after the command and its arguments.

READING

info file
An overview of the display: name, manufacturer, date, input, screen size, timings, refresh ranges, color and HDR support, audio and extension blocks.
report file
Every group, field, value and unit, followed by the raw data.
groups file
Every group with its offset and code, block by block; sub-groups are indented under the group that holds them. These are the addresses the other commands take.
fields file group
The fields of a group with their values, units and notes: read-only, reserved, not used, or with named values. A detailed timing also lists its refresh rate.
describe file group field
A field in full: value, unit, range, the bytes it occupies, its description and its named values.
get file group field
The value of a field, as the editor shows it.
diff file1 file2
The fields whose values differ, by block and group, and the groups only one of the files has. Groups are paired by their code in order; checksums are left out.
displays
The connected displays whose EDID is available, with the file it is read from.

CHANGING

A changed EDID is written to the file given with -o, or back to the file it was read from with --in-place. It is written as hexadecimal text when the name ends in .hex or .txt, or is - for standard output, and as binary otherwise. The new file replaces the old one only once it is complete, the checksums are recomputed, and nothing is ever written under /sys. What each command changed is printed, to standard error when the EDID goes to standard output.

set file group field=value ...
Writes fields of a group, in the order given; a value a field refuses stops the command before anything is written. A change that alters the type or layout of a group, such as a data block tag, rebuilds the group from its data. Fields derived from other data, such as lengths and offsets, need --edit-read-only.
add file block kind
Adds a group to a block, where the editor would put it. kind is audio-lpcm, audio-extended, video or timing for a CTA-861 block, and displayid for a DisplayID block. A new timing is a copy of the first detailed timing, or of the timing given as a group after timing.
duplicate file group
Copies a group after itself.
delete file group
Removes a group.
move file group up|down
Moves a group within its block.
prefer file group [off]
Makes a detailed timing the preferred one, or with off clears the preferred flag of a DisplayID timing. It changes places with the first detailed timing of the base block, which every system prefers, converted between formats when it is a DisplayID timing, and DisplayID timings lose a preferred flag that would compete. The first detailed timing holds a pixel clock of up to 655.35 MHz; a faster DisplayID timing is flagged preferred instead. No other timing is lost.
fix-checksums file
Recomputes the checksum of every block.
convert file
Writes the same bytes as binary or hexadecimal text.

fix-checksums and convert work on the bytes alone, so they also serve data the parser refuses.

SHELL COMPLETION

complete [word...] current
Prints the candidates for the word current after the words before it, one to a line, each optionally followed by a tab and a description. Groups, fields and values are read from the file named in the words. The words are the command line after the program name, without options. Exit status 3 means that current is a file name, which the shell completes itself.

The completions for bash(1), zsh(1) and fish(1) installed with the program use this command.

ADDRESSES

A group is named by its offset as groups lists it (0x036), by its code when only one group has it (MRL), by the nth group with a code (DTD:2), or by both (DTD@0x036). Offsets change when groups are added, moved or removed.

A field is named by the name fields shows, or by the name the parser gives it, which describe adds when it differs. Names are matched without regard to case, spaces, - and _, so "Horizontal active", horizontal-active and hactivepix are the same field. name:n is the nth field of a name that repeats, and #n the nth field of the group.

A detailed timing also has a refresh field, in Hz, which follows from the pixel clock and the totals. Setting it sets the pixel clock that comes closest to the rate with the current blanking, in steps of the clock's unit; the rate reached is printed. A field of that name in another group, as standard timings have, is that field.

A value is text as the field shows it, a named value as describe lists it, or on, off, yes, no, true or false for a single bit, or a decimal number for a bit field shown in binary.

OPTIONS

-o, --output file
Where a changed EDID is written.
-i, --in-place
Writes a changed EDID back to the file it was read from.
--ignore-errors
Opens EDID data that breaks the standard, as Open Anyway does in the editor.
--edit-read-only
Allows writing fields derived from other data.
-q, --quiet
Leaves out notices about the data.
--json
Prints info, groups, fields, diff and displays as JSON: an array of objects, or for fields an object holding the group and an array of its fields.
-h, --help
Shows a summary of the commands and options.
--version
Shows the version.

EXIT STATUS

0
Success.
1
The data can't be read or written, a value is refused, or diff found differences.
2
A mistake in the command line.
3
complete asks for file names.

EXAMPLES

Read the EDID of a connected display:

edid-editor-cli displays
edid-editor-cli info /sys/class/drm/card1-DP-1/edid

Save it, raise the refresh rate of its first detailed timing, and compare:

cp /sys/class/drm/card1-DP-1/edid monitor.bin
edid-editor-cli set monitor.bin DTD:1 refresh=75 -o new.bin
edid-editor-cli diff monitor.bin new.bin

Change fields in place, add an audio block to the first extension, and print the groups as JSON:

edid-editor-cli set new.bin VID "color-depth=10 bits" --in-place
edid-editor-cli add new.bin 1 audio-lpcm --in-place
edid-editor-cli groups new.bin --json

SEE ALSO

edid-editor(1), edid-decode(1), xrandr(1)

BUGS

Report bugs at https://github.com/sachesi/edid-editor/issues.

2026-09-15 EDID Editor