# EDID and HowTo make one

## krax

Hello;

I read the Post here https://www.osadl.org/Single-View.111M591850c02b5.0.html ; and i tried to make do with what i understood from the post but here are some questions:

1. where is the /lib/firmware  located ;in for example /usr/src/linux/lib/firmware or /usr/lib/firmware or elsewhere?

2.Could i use a pre-build EDID in that address the post gave  and tweak it with an editor like Gvim and pass it to kernel using the info bellow; the resolution i am trying is 1600x900@60

```

  1: [H PIXELS RND]  :  1600.000000

  2: [V LINES RND]  :  450.000000

  3: [V FIELD RATE RQD]  :  120.000000

  4: [TOP MARGIN (LINES)]  :  8.000000

  5: [BOT MARGIN (LINES)]  :  8.000000

  6: [INTERLACE]  :  0.500000

  7: [H PERIOD EST]  :  16.648841

  8: [V SYNC+BP]  :  33.000000

  9: [V BACK PORCH]  :  30.000000

  10: [TOTAL V LINES]  :  500.500000

  11: [V FIELD RATE EST]  :  120.008471

  12: [H PERIOD]  :  16.650017

  13: [V FIELD RATE]  :  120.000000

  14: [V FRAME RATE]  :  60.000000

  15: [LEFT MARGIN (PIXELS)]  :  32.000000

  16: [RIGHT MARGIN (PIXELS)]  :  32.000000

  17: [TOTAL ACTIVE PIXELS]  :  1664.000000

  18: [IDEAL DUTY CYCLE]  :  25.004995

  19: [H BLANK (PIXELS)]  :  560.000000

  20: [TOTAL PIXELS]  :  2224.000000

  21: [PIXEL FREQ]  :  133.573440

  22: [H FREQ]  :  60.060000

  17: [H SYNC (PIXELS)]  :  176.000000

  18: [H FRONT PORCH (PIXELS)]  :  104.000000

  36: [V ODD FRONT PORCH(LINES)]  :  1.500000
```

if yes where could i get and edid.bin file?

3.Or should i build an edid file from scratch; if yes how could i make edid file.

Thanks

----------

## eyoung100

What is your monitor type/brand etc   :Question: 

----------

## krax

Samsung SA300 over VGA100:02.0 

VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09) { CONFIG_I915=y && CONFIG_I915_KMS=y }

KERNEL 3.10.7-gentoo-r1

----------

## eyoung100

This may help:  [Workaround] Define DisplaySize for External Monitor to Xorg Server

----------

## salahx

KMS requires an EDID, and while you can override the EDID in org.conf, the plan is to get X11 away from the hardware and that will stop working. It is possible to override the EDID at the kernel level though. To do so, be sure CONFIG_DRM_LOAD_EDID_FIRMWARE is selected and passing drm_kms_helper.edid_firmware= one of the following 5 special parameters on the kernel command line, corresponding to the desired resolution:

edid/1024x768.bin

edid/1280x1024.bin

edid/1600x1200.bin

edid/1680x1050.bin

edid/1920x1080.bin

Note that these values are hardcoded in the driver, there is no corresponding /lib/firmware file (although if it exists it will override the built-in ones)

It is possible to create custom EDID if needed: see Documentation/EDID/HOWTO.txt in the kernel sources for the details.

----------

## krax

I want to do in the kernel level because my problem is in tty mode and I want to know how to make (make file) (build) (compile) 1600*900 @60 from the source provided in the kernel git directory.

The main heck is providing numbers needed in source file; some could be find from CVT command but i don't now how and also the value for CRC also.

thanks

----------

## salahx

It depends on what's causing your problem. If the problem is due to a  KVM switch, the east solution is boot Linux without the switch fetch the EDID from from sysfs (Use 'find /sys -iname edid' to find it), then copy it to the firmware directory (/lib/firmware/edid/edid.bin) and boto that way.

Otherwise go to /usr/src/linux/Documentation/EDID; cppy 1024x768.S to 1600x900.S and edit the values 1600x900.S to suit. You can look into edid.S as to what some of the values mean. XPIX should be 1600, YPIX should be 900, XY_RATIO should be XY_RATIO_16_9; but as far as the other stuff goes i'd either leave it as is or use the results from your monitor.

You get the results from your monitor, grab the edid file from sysfs above and emerge the read-edid utility. It contains the programs parse-edid, which you will need for 2 things. The first is to fetch the values of your existing monitor. The second is to figure out what the CRC  you your new DID need to  be (if its wrong, it'll tell you the correct value, simply set CRC to that value and rebuild)

----------

