This is a python library to parse extended display identification data (EDID).
This project based on pyedid
The EDID data frame format is described in detail on the Wikipedia page.
- Python 3.6+
- requests
pip3 install pyedid
- Parsing EDID data from hex or bytes
- Embedded PNP ID registry with dump/restore to CSV file
- Updatable PNP ID registry from www.uefi.org
ToDO
import pyedid
edid_hex = (
'00ffffffffffff000469982401010101'
'1e1b01031e351e78ea9265a655559f28'
'0d5054bfef00714f818081409500a940'
'b300d1c00101023a801871382d40582c'
'4500132b2100001e000000fd00324c1e'
'5311000a202020202020000000fc0056'
'533234380a20202020202020000000ff'
'0048374c4d51533132323136310a0000'
)
# returned Edid object, used the Default embedded registry
edid = pyedid.parse_edid(edid_hex)
edid.name # 'VS248'
edid.manufacturer # 'Ancor Communications Inc'
edid.serial # 'H7LMQS122161'
edid.year # 2017 (year of manufacture)
edid.week # 30 (week of manufacture)
edid.width # 53.0 cm
edid.height # 30.0 cm
edid.resolutions # list with resulutions (x, y, rate), ex (720, 400, 70.0)
edid... # some other EDID data
json_str = str(edid) # making JSON string object
from pyedid import get_edid_from_xrandr_verbose
from subprocess import check_output
# getting `xrandr --verbose` output
randr = check_output(['xrandr', '--verbose'])
# parsing xrandr outputs to a bytes edid's list
edids = get_edid_from_xrandr_verbose(randr)
# parsing edid
edid = pyedid.parse_edid(edids[0])
from pyedid import Registry, DEFAULT_REGISTRY
# making a registry object from www.uefi.org
r_web = Registry.from_web()
# dumping the default registry to csv file
DEFAULT_REGISTRY.to_csv('/path/to/csv.file')
# restoring registry from csv file
r_csv = Registry.from_csv('/path/to/csv.file')
See LICENSE