diff options
author | PMR <pmr@pmr-lander> | 2020-02-11 12:51:26 +0000 |
---|---|---|
committer | PMR <pmr@pmr-lander> | 2020-02-11 12:51:26 +0000 |
commit | 944807d70b5f784f3f9b29a2d7fc547c8bbc6645 (patch) | |
tree | bca4f14860b9a950adbc8dc50de88b6418070a82 | |
parent | dc386bea3aba5215baf335ce1ec1452ce36a8b4b (diff) |
Import plainbox-provider-checkbox_0.51.0~rc1.orig.tar.gzupstream-0.51.0_rc1patched-0.51.0_rc1-1
273 files changed, 4858 insertions, 1026 deletions
diff --git a/bin/boot_mode_test b/bin/boot_mode_test index 7c9358c..e51a099 100755 --- a/bin/boot_mode_test +++ b/bin/boot_mode_test @@ -26,19 +26,16 @@ import logging from argparse import ArgumentParser -def version_check(check): - """Check the installed Ubuntu version to see if it is older than 16.04 - (Xenial) and run the requested check +def do_tests(check): + """Dispatcher for the requested tests. :returns: - 0 if if the installed version is older than 16.04 regardless of return - code from the requested check - - return code from requested check if the installed version is 16.04 or - newer. + return code from requested check. """ if check == 'efi': return efi_boot_check() + elif check == 'reboot_firmware': + return reboot_to_firmware_check() else: return secure_boot_check() @@ -59,6 +56,33 @@ def efi_boot_check(): return 1 +def reboot_to_firmware_check(): + """Test that the computer supports the reboot-to-firmware feature. + + :returns: + 0 if the feature IS supported (pass) + 1 if the feature is NOT supported (fail) + """ + osis_dir = "/sys/firmware/efi/efivars/" + osis_var = osis_dir + \ + "OsIndicationsSupported-8be4df61-93ca-11d2-aa0d-00e098032b8c" + if os.path.isdir(osis_dir): + if os.path.isfile(osis_var): + fw_info = open(osis_var).read() + if ord(fw_info[4]) & 1: + logging.info("PASS: Reboot-to-firmware feature is present.") + return 0 + else: + logging.error("FAIL: Reboot-to-firmware feature is missing.") + return 1 + else: + logging.info("FAIL: OsIndicationsSupported variable not present.") + return 1 + else: + logging.info("FAIL: System did NOT boot in EFI mode.") + return 1 + + def secure_boot_check(): """Test that the computer booted with Secure Boot active. @@ -97,13 +121,14 @@ def secure_boot_check(): def main(): parser = ArgumentParser() parser.add_argument('check', - choices=['efi', 'secureboot'], + choices=['efi', 'secureboot', 'reboot_firmware'], help='The type of check to perform') args = parser.parse_args() FORMAT = '%(levelname)s: %(message)s' logging.basicConfig(level=logging.INFO, format=FORMAT) - return version_check(args.check) + return do_tests(args.check) + if __name__ == '__main__': sys.exit(main()) diff --git a/bin/camera_test_rpi.py b/bin/camera_test_rpi.py new file mode 100755 index 0000000..467ac13 --- /dev/null +++ b/bin/camera_test_rpi.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +# This file is part of Checkbox. +# +# Copyright 2020 Canonical Ltd. +# Written by: +# Jonathan Cave <jonathan.cave@canonical.com> +# +# Checkbox is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# Checkbox is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Checkbox. If not, see <http://www.gnu.org/licenses/>. + +import argparse +import os +import sys +import time + +import picamera + +# resolutions and framerates corresponding to sensor modes at: +# https://picamera.readthedocs.io/en/release-1.13/fov.html#camera-modes +test_res = [ + ((1920, 1080), 2), + ((2592, 1944), 2), + ((2592, 1944), (1, 8)), + ((1296, 972), 5), + ((1296, 730), 20), + ((640, 480), 50), + ((640, 480), 80), +] + + +def capture(): + path = os.path.expandvars('$PLAINBOX_SESSION_SHARE') + print('Images will be written to:\n{}\n'.format(path), flush=True) + for mode_no, (res, fr) in enumerate(test_res): + with picamera.PiCamera(resolution=res, framerate=fr) as camera: + print('Camera initialised, wait to settle...', flush=True) + time.sleep(2) + print('Resolution: {}'.format(camera.resolution)) + print('Framerate: {}'.format(camera.framerate)) + file = 'picam_{}.jpg'.format(mode_no+1) + camera.capture(os.path.join(path, file)) + print('Image {} captured\n'.format(file)) + + +def main(): + parser = argparse.ArgumentParser(description='PiCamera Tests') + parser.add_argument('--device', default="/dev/vchiq", type=str) + args = parser.parse_args() + print('Resolutions test on device: {}'.format(args.device), flush=True) + return capture() + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/bin/chameleon_edid_stress.py b/bin/chameleon_edid_stress.py new file mode 100755 index 0000000..8cc007d --- /dev/null +++ b/bin/chameleon_edid_stress.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 + +import glob +import os +import subprocess as sp +import sys +import time + +import xmlrpc.client + + +def Chameleon(host, port=9992): + """ + Get a proxy object that is used to control the Chameleon board. + + The interface definition for this object can be found at: + https://chromium.googlesource.com/chromiumos/platform/chameleon/+/refs/heads/master/chameleond/interface.py + """ + print('== Chameleon connection ==') + print('Target device: {}:{}'.format(host, port)) + proxy = xmlrpc.client.ServerProxy('http://{}:{}'.format(host, port)) + try: + # test the proxy works + mac = proxy.GetMacAddress() + print('MAC address: {}'.format(mac)) + except OSError as e: + print(e) + raise SystemExit('ERROR connecting to Chameleon board') + print() + return proxy + + +def get_hdmi_port(chameleon): + supported_ports = chameleon.GetSupportedPorts() + for port in supported_ports: + port_type = chameleon.GetConnectorType(port) + if port_type == 'HDMI': + return port + + +def get_hdmi_status(drm_id): + path = '/sys/class/drm/{}/status'.format(drm_id) + with open(path) as sys_f: + return sys_f.readline().strip() + + +def get_hdmi_edid(drm_id): + path = '/sys/class/drm/{}/edid'.format(drm_id) + output = sp.run(['edid-decode', path], check=False, stdout=sp.PIPE).stdout + for line in output.decode(sys.stdout.encoding).splitlines(): + if 'Manufacturer:' in line: + return line.strip() + + +def edid_from_file(filename): + with open(filename, 'r') as file: + if filename.upper().endswith('.TXT'): + # Convert the EDID text format returned from xrandr. + hex = file.read().replace('\n', '') + data = bytes.fromhex(hex) + else: + data = open(filename).read() + return data + + +if __name__ == '__main__': + if len(sys.argv) != 3: + raise SystemExit('ERROR: please specify drm card and chameleon IP') + + drm_id = sys.argv[1] + c = Chameleon(sys.argv[2]) + + edid_dir = os.path.expandvars( + '$PLAINBOX_PROVIDER_DATA/chameleon_edids/daily') + print('Loading EDIDs from {}'.format(edid_dir)) + edids = glob.glob(edid_dir + os.path.sep + '[A-Z][A-Z][A-Z]_*.txt') + + port_num = get_hdmi_port(c) + c.Unplug(port_num) + + fails = [] + for edid in edids: + edid_base = os.path.basename(edid) + print('=={}=='.format(edid_base)) + print('Send EDID to Chameleon') + edid_id = c.CreateEdid(edid_from_file(edid)) + c.ApplyEdid(port_num, edid_id) + print('Plug HDMI') + c.Plug(port_num) + time.sleep(2) + + # TODO: make this an actual test + if get_hdmi_status(drm_id) == 'connected': + manufacturer_str = get_hdmi_edid(drm_id) + print(manufacturer_str) + if edid_base[:3] not in manufacturer_str: + print('Manufacturer {} not found') + fails.append(edid_base) + else: + print('HDMI not connected') + fails.append(edid_base) + + print('Unplug HDMI') + c.Unplug(port_num) + time.sleep(2) + print('Free EDID data') + c.DestroyEdid(edid_id) + print('====\n', flush=True) + + if fails: + print("Failed EDIDs:") + for f in fails: + print(f) + raise SystemExit("Total {}/{}".format(len(fails), len(edids))) + print('PASS') diff --git a/bin/chameleon_hdmi_hotplug.py b/bin/chameleon_hdmi_hotplug.py new file mode 100755 index 0000000..7366886 --- /dev/null +++ b/bin/chameleon_hdmi_hotplug.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python3 + +import sys +import time + +import xmlrpc.client + + +def Chameleon(host, port=9992): + """ + Get a proxy object that is used to control the Chameleon board. + + The interface definition for this object can be found at: + https://chromium.googlesource.com/chromiumos/platform/chameleon/+/refs/heads/master/chameleond/interface.py + """ + print('== Chameleon connection ==') + print('Target device: {}:{}'.format(host, port)) + proxy = xmlrpc.client.ServerProxy('http://{}:{}'.format(host, port)) + try: + # test the proxy works + mac = proxy.GetMacAddress() + print('MAC address: {}'.format(mac)) + except OSError as e: + print(e) + raise SystemExit('ERROR connecting to Chameleon board') + print() + return proxy + + +def get_hdmi_port(chameleon): + supported_ports = chameleon.GetSupportedPorts() + for port in supported_ports: + port_type = chameleon.GetConnectorType(port) + if port_type == 'HDMI': + return port + + +def get_hdmi_status(drm_id): + path = '/sys/class/drm/{}/status'.format(drm_id) + with open(path) as sys_f: + return sys_f.readline().strip() + + +if __name__ == '__main__': + drm_id = sys.argv[1] + c = Chameleon(sys.argv[2]) + + start = get_hdmi_status(drm_id) + print('Starting status: {}'.format(start)) + print(flush=True) + + port_num = get_hdmi_port(c) + + print('chameleon> plug hdmi') + c.Plug(port_num) + time.sleep(10) + + new_status = get_hdmi_status(drm_id) + print('Status after plug request: {}'.format(new_status)) + print(flush=True) + if new_status != 'connected': + raise SystemExit('FAIL: hdmi not connected') + + print('chameleon> unplug hdmi') + c.Unplug(port_num) + time.sleep(10) + + final_status = get_hdmi_status(drm_id) + print('Status after unplug request: {}'.format(final_status)) + print(flush=True) + if final_status != 'disconnected': + raise SystemExit('FAIL: hdmi did not disconnect') + + print('PASS') diff --git a/bin/cpuid.py b/bin/cpuid.py index a434309..fcb6e0c 100755 --- a/bin/cpuid.py +++ b/bin/cpuid.py @@ -83,7 +83,7 @@ CPUIDS = { "Broadwell": ['0x4067', '0x306d4', '0x5066', '0x406f'], "Canon Lake": ['0x6066'], "Cascade Lake": ['0x50655', '0x50656', '0x50657'], - "Coffee Lake": ['0x806ea', '0x906ea', '0x906eb', '0x906ec'], + "Coffee Lake": ['0x806ea', '0x906e'], "Haswell": ['0x306c', '0x4065', '0x4066', '0x306f'], "Ice Lake": ['0x706e'], "Ivy Bridge": ['0x306a', '0x306e'], diff --git a/bin/disk_read_performance_test b/bin/disk_read_performance_test index 972c5b6..fec27c2 100755 --- a/bin/disk_read_performance_test +++ b/bin/disk_read_performance_test @@ -16,6 +16,9 @@ for disk in $@; do if [[ $dev_path =~ dm ]]; then disk_type="devmapper" fi + if [[ $dev_path =~ md ]]; then + disk_type="mdadm" + fi if [[ $dev_path =~ nvme ]]; then disk_type="nvme" fi @@ -45,7 +48,8 @@ for disk in $@; do "devmapper" ) MIN_BUF_READ=$DEFAULT_BUF_READ;; "ide" ) MIN_BUF_READ=40;; "mmc" ) MIN_BUF_READ=$DEFAULT_BUF_READ;; - "nvme" ) MIN_BUF_READ=400;; + "nvme" ) MIN_BUF_READ=200;; + "mdadm" ) MIN_BUF_READ=500;; * ) MIN_BUF_READ=$DEFAULT_BUF_READ;; esac echo "INFO: $disk_type: Using $MIN_BUF_READ MB/sec as the minimum throughput speed" diff --git a/bin/dkms_info b/bin/dkms_info.py index 9b36a28..9addc2d 100755 --- a/bin/dkms_info +++ b/bin/dkms_info.py @@ -4,6 +4,7 @@ # Written by: # Shawn Wang <shawn.wang@canonical.com> # Zygmunt Krynicki <zygmunt.krynicki@canonical.com> +# Jonathan Cave <jonathan.cave@canonical.com> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License version 3, @@ -30,6 +31,7 @@ supported output format: - dumps: json output (fully information) """ +import argparse import fnmatch import functools import email.parser @@ -39,14 +41,7 @@ import logging import os import subprocess import sys -import unittest -from guacamole import Command - -try: - from unittest import mock -except ImportError: - from plainbox.vendor import mock _logger = logging.getLogger(None) @@ -158,99 +153,6 @@ def match_patterns(patterns): return matched -class SystemInfoTests(unittest.TestCase): - - """Tests for System Information Parsing and Collection.""" - - _proc_modules = """\ -xt_REDIRECT 16384 3 - Live 0x0000000000000000 -nf_nat_redirect 16384 1 xt_REDIRECT, Live 0x0000000000000000 -xt_hl 16384 3 - Live 0x0000000000000000 -hid_generic 16384 0 - Live 0x0000000000000000 -usbhid 53248 0 - Live 0x0000000000000000 -hid 110592 2 hid_generic,usbhid, Live 0x0000000000000000 -overlay 45056 1 - Live 0x0000000000000000 -""" - _modalias = """\ -usb:v1D6Bp0003d0319dc09dsc00dp03ic09isc00ip00in00 -""" - - def setUp(self): - """Common setup code.""" - get_system_module_list.cache_clear() - get_system_modaliases.cache_clear() - - @mock.patch('io.open', mock.mock_open(read_data=_proc_modules)) - def test_get_module_list__calls_and_parses_lsmod(self): - """Ensure that get_module_list() parses lsmod output.""" - # NOTE: Return value was loaded from my system running kernel 4.0. - # The first few and last rows to be precise. - modules = get_system_module_list() - self.assertEqual(modules, [ - 'xt_REDIRECT', 'nf_nat_redirect', 'xt_hl', 'hid_generic', - 'usbhid', 'hid', 'overlay']) - - @mock.patch('io.open', mock.mock_open(read_data=_proc_modules)) - def test_get_module_list_is_cached(self): - """Ensure that get_module_list() cache works.""" - modules1 = get_system_module_list() - modules2 = get_system_module_list() - self.assertIn('xt_REDIRECT', modules1) - self.assertIn('overlay', modules2) - self.assertEqual(modules1, modules2) - - @mock.patch('os.walk') - @mock.patch('io.open', mock.mock_open(read_data=_modalias)) - def test_get_system_modalias(self, mock_os_walk): - """test_get_system_modalias.""" - mock_os_walk.return_value = [ - ("/sys/devices/pci0000:00/0000:00:14.0/usb2/2-0:1.0/modalias", - ["driver", "subsystem"], - ["modalias", "uevent"]), - ] - - """fetch hw_modaliases from machine and check modalis types.""" - modaliases = get_system_modaliases() - self.assertEqual(len(modaliases), 1) - self.assertIn("usb", modaliases) - - @mock.patch('os.uname') - @mock.patch('os.walk') - def test_get_installed_dkms_modules(self, mock_os_walk, mock_os_uname): - """test_get_installed_dkms_modules.""" - mock_os_walk.return_value = [ - ("/var/lib/dkms/hello/0.1", - ["3.19.0-15-generic", "build", "source"], - []), - ] - o = mock.Mock() - o.release = "3.19.0-15-generic" - mock_os_uname.return_value = o - self.assertEqual([['hello', '0.1']], - get_installed_dkms_modules()) - - @mock.patch('__main__.get_system_modaliases') - def test_match_patterns(self, mock_get_system_modaliases): - """Test of match_patterns.""" - mock_get_system_modaliases.return_value = { - "pci": ["v0000168Cd00000036sv0000103Csd0000217Fbc02sc80i00", - "v00008086d00008C26sv0000103Csd000022D9bc0Csc03i20"], - "usb": ["v8087p8000d0005dc09dsc00dp01ic09isc00ip00in00", - "v1D6Bp0002d0319dc09dsc00dp00ic09isc00ip00in00"], - } - pkg_modalieses = ["pci:v00008086d00008C26sv*sd*bc*sc*i*", - "usb:v07B4p010Ad0102dc*dsc*dp*ic*isc*ip*in*", - "oemalias:test"] - matched_modalieses = match_patterns(tuple(pkg_modalieses)) - # match_patterns - self.assertIn("pci:v00008086d00008C26sv*sd*bc*sc*i*", - matched_modalieses) - self.assertIn("oemalias:test", - matched_modalieses) - self.assertNotIn("usb:v07B4p010Ad0102dc*dsc*dp*ic*isc*ip*in*", - matched_modalieses) - - class DkmsPackage(object): """ @@ -295,9 +197,9 @@ class DkmsPackage(object): if not fn.endswith(".list"): continue with io.open(os.path.join(dpkg_info_root, fn), 'rt', - encoding='UTF-8') as stream: + encoding='UTF-8') as stream: if path in stream.read(): - return fn[:-len(".list")] + return fn[:-len(".list")] return None def _list_modules(self): @@ -350,6 +252,7 @@ class DkmsPackage(object): install_mods[m] = match_patterns(tuple(aliases)) return install_mods + def _headers_to_dist(pkg_str): """ Convert rft822 headers string to dict. @@ -366,6 +269,7 @@ def _headers_to_dist(pkg_str): target[key.lower()] = header[key] return target + class DebianPackageHandler(object): """Use rtf822(email) to handle the package information from file_object.""" @@ -396,7 +300,6 @@ class DebianPackageHandler(object): for pkg_str in self._file_object.read().split('\n\n'): yield pkg_str - def _get_device_pkgs(self): """ Only device packages have debian package header 'Modaliases'. @@ -409,23 +312,21 @@ class DebianPackageHandler(object): """ _logger.info("Looking for packages providing modaliases") - _modalias_pkgs = {} - target_str = "" result = {} for pkg_str in self._gen_all_pkg_strs(): for pkg in self.extra_pkgs: - if pkg.pkg_name is None: - continue - pstr = "Package: {}".format(pkg.pkg_name) - if pstr in pkg_str: - _logger.info("Gathering information of package, {}".format( - pkg.pkg_name)) - pkg.pkg = _headers_to_dist(pkg_str) - break + if pkg.pkg_name is None: + continue + pstr = "Package: {}".format(pkg.pkg_name) + if pstr in pkg_str: + _logger.info("Gathering information of package, {}".format( + pkg.pkg_name)) + pkg.pkg = _headers_to_dist(pkg_str) + break else: - if "Modaliases:" in pkg_str: + if "Modaliases:" in pkg_str: pkg = _headers_to_dist(pkg_str) (modalias_header, pattern_str) = \ @@ -434,15 +335,17 @@ class DebianPackageHandler(object): patterns.sort() pkg['match_patterns'] = match_patterns(tuple(patterns)) - with io.open("/var/lib/dpkg/info/{}.list".format(pkg['package']), - 'rt', encoding='UTF-8') as stream: + dpkgf = "/var/lib/dpkg/info/{}.list".format(pkg['package']) + with io.open(dpkgf, 'rt', encoding='UTF-8') as stream: if "/dkms.conf" in stream.read(): - pkg['unused_dkms'] = True + pkg['unused_dkms'] = True result[pkg['package']] = pkg return result def to_json(self): - return json.dumps({ "dkms": self.extra_pkgs, "non-dkms": self.pkgs }, default=lambda o: o.__dict__, sort_keys=True, indent=4) + return json.dumps( + {"dkms": self.extra_pkgs, "non-dkms": self.pkgs}, + default=lambda o: o.__dict__, sort_keys=True, indent=4) def to_outline(self): result = "" @@ -467,48 +370,7 @@ class DebianPackageHandler(object): return result -class DebianPackageHandlerTest(unittest.TestCase): - - """Test of DebianPackageHandler.""" - - _var_lib_dpkg_status = """\ -Package: foo -Status: install ok installed -Modaliases: hwe(pci:v000099DDd00000036sv*sd*bc*sc*i*) - -Package: foo1 -Status: install ok installed -Modaliases: hwe(pci:v0000AADDd00000036sv*sd*bc*sc*i*) - -Package: foo2 -Status: install ok installed - -Package: foo3 -Status: install ok installed - -Package: bar -Status: install ok installed - -""" - - - @mock.patch('io.open', mock.mock_open(read_data=_var_lib_dpkg_status)) - @mock.patch('__main__.get_system_modaliases') - def test_get_pkgs(self, mock_get_system_modaliases): - """Test of test_get_pkgs.""" - mock_get_system_modaliases.return_value = { - "pci": ["v0000168Cd00000036sv0000103Csd0000217Fbc02sc80i00", - "v00008086d00008C26sv0000103Csd000022D9bc0Csc03i20"], - "usb": ["v8087p8000d0005dc09dsc00dp01ic09isc00ip00in00", - "v1D6Bp0002d0319dc09dsc00dp00ic09isc00ip00in00"], - } - - self.pkg_handler = DebianPackageHandler( - file_object=io.StringIO(self._var_lib_dpkg_status)) - self.assertEqual(len(self.pkg_handler.pkgs), 2) - - -class DeviceInfo(Command): +class DeviceInfo(): """ Implementation of the dkms-info command. @@ -529,37 +391,35 @@ class DeviceInfo(Command): - dumps: json output (fully information) """ - def register_arguments(self, parser): - """Register command line arguments for dkms-info.""" - + def main(self): + """Invoke dkms-info.""" + parser = argparse.ArgumentParser() parser.add_argument( '--format', default="onelines", choices=["summary", "json"], help=("Choose output format type: " "summary (one line per packages) " "or json (json format, fully information)")) - parser.add_argument( '--output', default=None, help=("Output filename to store the output date")) + args = parser.parse_args() - def invoked(self, ctx): - """Invoke dkms-info.""" logging.basicConfig( level=logging.INFO, format='[%(relativeCreated)06dms] %(message)s') _logger.info("Started") - dkms_pkgs = [] + dkms_pkgs = [] for (dkms_name, dkms_ver) in get_installed_dkms_modules(): dkms_pkg = DkmsPackage(dkms_name, dkms_ver) dkms_pkgs.append(dkms_pkg) output = sys.stdout - if ctx.args.output is not None: - output = open(ctx.args.output, 'wt', encoding='UTF-8') + if args.output is not None: + output = open(args.output, 'wt', encoding='UTF-8') pkg_handler = DebianPackageHandler(extra_pkgs=dkms_pkgs) - if ctx.args.format == "summary": + if args.format == "summary": output.write(pkg_handler.to_outline()) else: output.write(pkg_handler.to_json()) @@ -567,8 +427,4 @@ class DeviceInfo(Command): if __name__ == '__main__': - if '--test' in sys.argv: - sys.argv.remove('--test') - unittest.main() - else: - DeviceInfo().main() + DeviceInfo().main() diff --git a/bin/dmi-sysfs-resource b/bin/dmi-sysfs-resource deleted file mode 100755 index 6741030..0000000 --- a/bin/dmi-sysfs-resource +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2015 Canonical Ltd. -# All rights reserved. -# -# Written by: -# Zygmunt Krynicki <zygmunt.krynicki@canonical.com> - -"""Collect information about all sysfs attributes related to DMI.""" - -import os - -import guacamole - - -class dmi_sysfs_resource(guacamole.Command): - - """ - Collect information about all sysfs attributes related to DMI. - - This program reads all the readable files in /sys/class/dmi/id/ and - presents them a single RFC822 record. - - @EPILOG@ - - Unreadable files (typically due to permissions) are silently skipped. - Please run this program as root if you wish to access various serial - numbers. - """ - - def invoked(self, ctx): - sysfs_root = '/sys/class/dmi/id/' - if not os.path.isdir(sysfs_root): - return - for dmi_attr in sorted(os.listdir(sysfs_root)): - dmi_filename = os.path.join(sysfs_root, dmi_attr) - if not os.path.isfile(dmi_filename): - continue - if not os.access(dmi_filename, os.R_OK): - continue - with open(dmi_filename, 'rt', encoding='utf-8') as stream: - dmi_data = stream.read().strip() - print("{}: {}".format(dmi_attr, dmi_data)) - - -if __name__ == "__main__": - dmi_sysfs_resource().main() diff --git a/bin/dmi_sysfs_resource.py b/bin/dmi_sysfs_resource.py new file mode 100755 index 0000000..a098976 --- /dev/null +++ b/bin/dmi_sysfs_resource.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 +# Copyright 2015-2020 Canonical Ltd. +# All rights reserved. +# +# Written by: +# Zygmunt Krynicki <zygmunt.krynicki@canonical.com> +# Jonathan Cave <jonathan.cave@canonical.com> + +"""Collect information about all sysfs attributes related to DMI.""" + +import os + +""" +Collect information about all sysfs attributes related to DMI. + +This program reads all the readable files in /sys/class/dmi/id/ and +presents them a single RFC822 record. + +@EPILOG@ + +Unreadable files (typically due to permissions) are silently skipped. +Please run this program as root if you wish to access various serial +numbers. +""" + + +def main(): + sysfs_root = '/sys/class/dmi/id/' + if not os.path.isdir(sysfs_root): + return + for dmi_attr in sorted(os.listdir(sysfs_root)): + dmi_filename = os.path.join(sysfs_root, dmi_attr) + if not os.path.isfile(dmi_filename): + continue + if not os.access(dmi_filename, os.R_OK): + continue + with open(dmi_filename, 'rt', encoding='utf-8') as stream: + dmi_data = stream.read().strip() + print("{}: {}".format(dmi_attr, dmi_data)) + + +if __name__ == "__main__": + main() diff --git a/bin/fan_reaction_test.py b/bin/fan_reaction_test.py index 3ae6362..a4ab744 100755 --- a/bin/fan_reaction_test.py +++ b/bin/fan_reaction_test.py @@ -37,9 +37,12 @@ class FanMonitor: def get_rpm(self): result = {} for p in self._fan_paths: - with open(p, 'rt') as f: - fan_mon_name = os.path.relpath(p, '/sys/class/hwmon') - result[fan_mon_name] = int(f.read()) + try: + with open(p, 'rt') as f: + fan_mon_name = os.path.relpath(p, '/sys/class/hwmon') + result[fan_mon_name] = int(f.read()) + except OSError: + print('Fan SysFS node dissappeared ({})'.format(p)) return result def get_average_rpm(self, period): acc = self.get_rpm() diff --git a/bin/i2c_driver_test b/bin/i2c_driver_test.py index 4af3bf8..c6aae78 100755 --- a/bin/i2c_driver_test +++ b/bin/i2c_driver_test.py @@ -1,28 +1,28 @@ #!/usr/bin/env python3 -# Copyright 2016 Canonical Ltd. +# Copyright 2016-2020 Canonical Ltd. # All rights reserved. # # Written by: # Authors: Gavin Lin <gavin.lin@canonical.com> # Sylvain Pineau <sylvain.pineau@canonical.com> +# Jonathan Cave <jonathan.cave@canonical.com> """ -This script will check number of detected I2C buses or devices +This script will check number of detected I2C buses or devices -To see how to use, please run "./i2c_driver_test" +To see how to use, please run "./i2c_driver_test.py" """ +import argparse import os import subprocess -from guacamole import Command - -class Bus(Command): +class Bus(): """Detect I2C bus.""" - def invoked(self, ctx): + def invoked(self, args): """Method called when the command is invoked.""" # Detect I2C buses and calculate number of them result = subprocess.check_output(['i2cdetect', '-l'], @@ -37,25 +37,19 @@ class Bus(Command): # Verify if detected number of buses is as expected else: - if ctx.args.bus != 0: - if bus_number == ctx.args.bus: + if args.bus != 0: + if bus_number == args.bus: print('Test passed') else: raise SystemExit('Test failed, expecting {} I2C ' - 'buses.'.format(ctx.args.bus)) - - def register_arguments(self, parser): - """Register command line arguments for the bus sub-command.""" - parser.add_argument( - '-b', '--bus', type=int, help='Expected number of I2C bus.', - default=0) + 'buses.'.format(args.bus)) -class Device(Command): +class Device(): """Detect I2C device.""" - def invoked(self, ctx): + def invoked(self, args): # Make sure that we have root privileges if os.geteuid() != 0: raise SystemExit('Error: please run this command as root') @@ -78,30 +72,29 @@ class Device(Command): for l in result_line: address_value = l.strip('\n').split(':')[1].split() for v in address_value: - if v != '--': exit_code = 0 + if v != '--': + exit_code = 0 if exit_code == 1: raise SystemExit('No I2C device detected on any I2C bus') - else: - print('I2C device detected') - return exit_code + print('I2C device detected') -class I2cDriverTest(Command): +class I2cDriverTest(): """I2C driver test.""" - sub_commands = ( - ('bus', Bus), - ('device', Device) - ) - - def invoked(self, ctx): - """Method called when the command is invoked.""" - if not ctx.early_args.rest: - ctx.parser.print_help() - return 1 + def main(self): + subcommands = { + 'bus': Bus, + 'device': Device + } + parser = argparse.ArgumentParser() + parser.add_argument('subcommand', type=str, choices=subcommands) + parser.add_argument('-b', '--bus', type=int, default=0, + help='Expected number of I2C bus.') + args = parser.parse_args() + subcommands[args.subcommand]().invoked(args) if __name__ == '__main__': I2cDriverTest().main() - diff --git a/bin/kernel_taint_test b/bin/kernel_taint_test new file mode 100755 index 0000000..976ccb6 --- /dev/null +++ b/bin/kernel_taint_test @@ -0,0 +1,93 @@ +#!/usr/bin/env python3 +""" +Test that the kernel is not "tainted" by out-of-tree drivers, etc. + +Copyright (C) 2019 Canonical Ltd. + +Authors: + Rod Smith <rod.smith@canonical.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License version 3, +as published by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +This script examines the /proc/sys/kernel/tainted file (or a user-specified +file, for debugging purposes) and parses the contents to determine if the +kernel is tainted. If so, the script reports the nature of the taint and +returns a value of 1. The script also returns a value of 1 if +# /proc/sys/kernel/tainted cannot be found or opened. If the kernel is NOT +# tainted, the script notes this fact and returns 0. +""" + + +import sys +from argparse import ArgumentParser + + +# Note: If max_taints is increased, add descriptions to taint_meanings in +# report_failures() +max_taints = 17 + + +def find_taints(taint_file): + """Read the kernel-taint file.""" + try: + f = open(taint_file, "r") + taints = int(f.read()) + except OSError: + taints = 2**(max_taints+1) # Set so we have a non-0 value to return + print("Kernel taint file ({}) not found!".format(taint_file)) + print("Kernel taint value is {}".format(taints)) + return(taints) + + +def report_failures(taints): + """Report the failure code and its meaning(s).""" + # Below meaning strings are taken from + # https://www.kernel.org/doc/html/latest/admin-guide/tainted-kernels.html + taint_meanings = ["proprietary module was loaded", + "module was force loaded", + "SMP kernel oops on an officially SMP incapable CPU", + "module was force unloaded", + "processor reported a Machine Check Exception (MCE)", + "bad page referenced or some unexpected page flags", + "taint requested by userspace application", + "kernel died recently, i.e. there was an OOPS or BUG", + "ACPI table overridden by user", + "kernel issued warning", + "staging driver was loaded", + "workaround for bug in platform firmware applied", + "externally-built ('out-of-tree') module was loaded", + "unsigned module was loaded", + "soft lockup occurred", + "kernel has been live patched", + "auxiliary taint, defined for and used by distros", + "kernel was built with the struct randomization plugin"] + for i in range(max_taints+1): + if (taints & (2 ** i)): + print("Taint bit value: {} ({})".format(i, taint_meanings[i])) + if taints == 0: + print("No kernel taints detected.") + + +def main(): + parser = ArgumentParser() + parser.add_argument('--taint-file', + default="/proc/sys/kernel/tainted", + help='The file that holds the taint information') + args = parser.parse_args() + taints = find_taints(args.taint_file) + report_failures(taints) + return(taints > 0) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/bin/module_loaded_test b/bin/module_loaded_test.py index 028d70b..b23fc63 100755 --- a/bin/module_loaded_test +++ b/bin/module_loaded_test.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# Copyright 2015 Canonical Ltd. +# Copyright 2015-2020 Canonical Ltd. # All rights reserved. # # Written by: @@ -10,31 +10,32 @@ Script to test if a module is loaded in the running kernel. If not the module will be loaded. This can be disabled using a flag. """ +import argparse import subprocess -from guacamole import Command - -class ModuleLoadedTest(Command): +class ModuleLoadedTest(): """Check if a kernel module is loaded. If not load it.""" - def register_arguments(self, parser): + def main(self): + parser = argparse.ArgumentParser() parser.add_argument("module", help="Specify the module to test for.") - parser.add_argument("-n", "--no-load", action="store_true", help=( "Don't try and load the module just test.")) + args = parser.parse_args() - def invoked(self, context): - if self.is_module_loaded(context.args.module): + if self.is_module_loaded(args.module): return # module not loaded - if context.args.no_load: - return 1 + if args.no_load: + raise SystemExit("ERROR: module {} not loaded in running" + " kernel".format(args.module)) # attempt a load of the module - if not self.load_module(context.args.module): - return 1 + if not self.load_module(args.module): + raise SystemExit( + "ERROR: attempt to load module {} failed".format(args.module)) def is_module_loaded(self, module): with open('/proc/modules', 'r') as modules: diff --git a/bin/pm_test b/bin/pm_test index f455858..b03e680 100755 --- a/bin/pm_test +++ b/bin/pm_test @@ -68,7 +68,7 @@ def main(): operation.teardown() result = { 'outcome': 'fail', - 'comment': message, + 'comments': message, } with open(os.path.join(args.log_dir, '__result'), 'wt') as f: json.dump(result, f) @@ -256,8 +256,12 @@ class PowerManagementOperation(): fwts_log_path = os.path.join(self.args.log_dir, 'fwts.log') try: with open(fwts_log_path, 'rt') as f: - magic_line = 'Completed S3 cycle(s) \n' - count = f.readlines().count(magic_line) + magic_line_s3 = 'Completed S3 cycle(s) \n' + magic_line_s2idle = 'Completed s2idle cycle(s) \n' + lines = f.readlines() + count_s3 = lines.count(magic_line_s3) + count_s2idle = lines.count(magic_line_s2idle) + count = count_s3 + count_s2idle if count != total_suspends_expected: problems = ( "Found {} occurrences of '{}'. Expected {}".format( @@ -268,7 +272,7 @@ class PowerManagementOperation(): if problems: result = { 'outcome': 'fail' if problems else 'pass', - 'comment': problems, + 'comments': problems, } result_filename = os.path.join(self.args.log_dir, '__result') with open(result_filename, 'wt') as f: diff --git a/bin/recovery_info b/bin/recovery_info deleted file mode 100755 index b2feedb..0000000 --- a/bin/recovery_info +++ /dev/null @@ -1,399 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2015 Canonical Ltd. -# Written by: -# Shawn Wang <shawn.wang@canonical.com> -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 3, -# as published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -"""Show the recovery partition information for the preinstalled OS.""" - -import os -import re -import subprocess -import sys -import tempfile -import unittest -import xml.dom.minidom as minidom - -from guacamole import Command - -try: - from unittest import mock -except ImportError: - from plainbox.vendor import mock - -RECOVERY_PACKAGES = ["dell-recovery", "ubuntu-recovery"] - - -def get_recovery_package(): - """ - Test with RECOVERY_PACKAGES. - - to check recovery application is installed or not - - :return: - string of package_version or None - """ - for pkg in RECOVERY_PACKAGES: - output = subprocess.check_output(["apt-cache", "policy", pkg], - universal_newlines=True) - for line in output.split("\n"): - if line.startswith(" Installed:"): - ver = line.split(": ")[1] - return "{}_{}".format(pkg, ver.strip()) - return None - - -RECOVERY_LABELS = {"HP_TOOLS": "HP", - "PQSERVICE": "UBUNTU", - "BACKUP": "TEST", - "INSTALL": "DELL", - "OS": "DELL", - "RECOVERY": "DELL"} - - -_escape_pattern = re.compile(r'\\x([0-9a-fA-F][0-9a-fA-F])') - - -def lsblk_unescape(label): - """Un-escape text escaping done by lsblk(8).""" - return _escape_pattern.sub( - lambda match: chr(int(match.group(1), 16)), label) - - -def get_recovery_partition(): - """ - Get the type and location of the recovery partition. - - :return: - (recovery_type, recovery_partition) or None - - Use lsblk(8) to inspect available block devices looking - for a partition with FAT or NTFS and a well-known label. - """ - cmd = ['lsblk', '-o', 'TYPE,FSTYPE,NAME,LABEL', '--raw'] - for line in subprocess.check_output(cmd).splitlines()[1:]: - type, fstype, name, label = line.split(b' ', 3) - # Skip everything but partitions - if type != b'part': - continue - # Skip everything but FAT and NTFS - if fstype != b'vfat' and fstype != b'ntfs': - continue - label = lsblk_unescape(label.decode('utf-8')) - recovery_type = RECOVERY_LABELS.get(label) - # Skip unknown labels - if recovery_type is None: - continue - recovery_partition = '/dev/{}'.format(name.decode('utf-8')) - return (recovery_type, recovery_partition) - - -class FunctionTests(unittest.TestCase): - - """Tests for several functions.""" - - @mock.patch('subprocess.check_output') - def test_get_recovery_package(self, mock_subprocess_check_output): - """Smoke test for get_recovery_package().""" - mock_subprocess_check_output.return_value = """\ -dell-recovery: - Installed: 1.11 - Candidate: 1.11 - Version table: - 1.11 - 500 https://archive/cesg-mirror/ test/public amd64 Packages -""" - self.assertEqual(get_recovery_package(), - "dell-recovery_1.11") - - @mock.patch('subprocess.check_output') - def test_get_recovery_partition(self, mock_subprocess_check_output): - """Smoke test for get_recovery_partition().""" - mock_subprocess_check_output.return_value = ( - b'TYPE FSTYPE NAME LABEL\n' - b'disk linux_raid_member sda fx:2x250GB\n' - b'raid1 bcache md127 \n' - b'disk ext4 bcache0 Ultra\n' - b'disk linux_raid_member sdb fx:2x250GB\n' - b'raid1 bcache md127 \n' - b'disk ext4 bcache0 Ultra\n' - b'disk sdc \n' - b'part btrfs sdc1 vol1\n' - b'disk sdd \n' - b'part ntfs sdd1 Windows\x208.1\n' - b'part sdd2 \n' - b'part ext4 sdd5 Utopic\n' - b'part swap sdd6 \n' - b'disk bcache sde \n' - b'disk ext4 bcache0 Ultra\n' - b'disk sdf \n' - b'part ntfs sda3 RECOVERY\n') - self.assertEqual(get_recovery_partition(), ("DELL", "/dev/sda3")) - - def test_lsblk_unescape(self): - """Smoke tests for lsblk_unescape().""" - self.assertEqual(lsblk_unescape('Windows\\x208.1'), 'Windows 8.1') - self.assertEqual(lsblk_unescape('Windows XP'), 'Windows XP') - - -class MountedPartition(object): - - """ - Mount Manager to mount partition on tempdir. - - e.g. - with MountedPartition("/dev/sda1") as tmp: - print("This is the mount point: {}".format(tmp)) - do_stuff() - """ - - def __init__(self, part): - """ - Prepare the mntdir point. - - :param part: string of the partition device file, like /dev/sda2 - """ - self.part = part - self.mntdir = tempfile.mkdtemp() - - def __enter__(self): - """ - __enter__ method for python's with statement. - - Mount the partition device to the mntdir. - """ - cmd = ["mount", self.part, self.mntdir] - subprocess.check_output(cmd, universal_newlines=True) - return self.mntdir - - def __exit__(self, type, value, traceback): - """ - __exit__ method for python's with statement. - - Unmount and remove the mntdir. - """ - subprocess.check_output(["umount", self.mntdir], - universal_newlines=True) - os.rmdir(self.mntdir) - - -class MountedPartitionTests(unittest.TestCase): - - """Unittest of MountedPartition.""" - - @mock.patch('subprocess.check_output') - def test_with_of_MountedPartition(self, mock_subprocess_check_output): - """Test mount point.""" - test_dir = "" - with MountedPartition("/dev/test") as tmp: - test_dir = tmp - self.assertTrue(os.path.exists(test_dir)) - mock_subprocess_check_output.assert_has_calls( - [mock.call(['mount', '/dev/test', test_dir], - universal_newlines=True)]) - self.assertFalse(os.path.exists(test_dir)) - mock_subprocess_check_output.assert_has_calls( - [mock.call(['umount', test_dir], - universal_newlines=True)]) - - -class RecoveryVersion(Command): - - """ - print the version of recovery image. - - @EPILOG@ - - This commands prints information such as: - - image_version: xxx - bto_version: REV_xxx.iso (dell only) - """ - - def invoked(self, ctx): - """ - Guacamole method called when the command is invoked. - - /etc/buildstamp is a image information file, - it created by the oem image builder. - - oilpalm Fri, 20 Jun 2014 04:02:07 +0000 - somerville-trusty-amd64-20140620-0 - - If /etc/buildstamp exist, print out the second line (image iso name). - - For Dell-recovery partition, /etc/buildstamp shows base image info. - If recovery_partition/bto.xml, - print out the bto_version (read from xml file). - """ - if os.path.isfile("/etc/buildstamp"): - with open('/etc/buildstamp', 'rt', encoding='UTF-8') as stream: - data = stream.readlines() - print("image_version: {}".format(data[1].strip())) - - with MountedPartition(ctx.recovery_partition) as mntdir: - fname = "{}/bto.xml".format(mntdir) - if os.path.isfile(fname): - o = minidom.parse("{}/bto.xml".format(mntdir)) - bto_platform = o.getElementsByTagName("platform") - bto_revision = o.getElementsByTagName("revision") - if bto_platform and bto_revision: - bto_platform = bto_platform[0].firstChild.data - bto_revision = bto_revision[0].firstChild.data - bto_version = bto_platform + " " + bto_revision - else: - bto_iso = o.getElementsByTagName("iso") - bto_version = bto_iso[0].firstChild.data - print("bto_version: {}".format(bto_version)) - - -class RecoveryFile(Command): - - """ - display a single file from the recovery partition - - This command can be used to ``cat`` any file from the recovery partition - """ - - def register_arguments(self, parser): - """ - Guacamole method used by the argparse ingredient. - - :param parser: - Argument parser (from :mod:`argparse`) specific to this command. - """ - parser.add_argument('file', help='name of the file to display') - - def invoked(self, ctx): - """ - Guacamole method used by the command ingredient. - - :param ctx: - The guacamole context object. Context provides access to all - features of guacamole. The argparse ingredient adds the ``args`` - attribute to it. That attribute contains the result of parsing - command line arguments. - :returns: - The return code of the command. Guacamole translates ``None`` to a - successful exit status (return code zero). - """ - with MountedPartition(ctx.recovery_partition) as mnt: - return subprocess.call([ - 'cat', '--', os.path.join(mnt, ctx.args.file)]) - - -class RecoveryCheckType(Command): - - """ - test if the recovery partition is of the given type. - - This command can be used for scripted tests, to see if the recovery - partition on the current system is of a concrete type or not (e.g. - DELL-specific) - - @EPILOG@ - - The exit code is 0 if the recovery partition type matches and 1 otherwise. - """ - - def register_arguments(self, parser): - """ - Guacamole method used by the argparse ingredient. - - :param parser: - Argument parser (from :mod:`argparse`) specific to this command. - """ - parser.add_argument( - 'type', help="expected type of the recovery partition") - - def invoked(self, ctx): - """ - Guacamole method used by the command ingredient. - - :param ctx: - The guacamole context object. Context provides access to all - features of guacamole. The argparse ingredient adds the ``args`` - attribute to it. That attribute contains the result of parsing - command line arguments. - :returns: - The return code of the command. Guacamole translates ``None`` to a - successful exit status (return code zero). - """ - if ctx.recovery_type != ctx.args.type: - return 1 - - -class RecoveryInfo(Command): - - """ - Inspect the recovery partition. - - This command can be used to inspect the recovery partition. It has several - sub-commands that do various tasks. If the system has no recovery - partition, the command exits with the error code 1. - """ - - sub_commands = ( - ('version', RecoveryVersion), - ('file', RecoveryFile), - ('checktype', RecoveryCheckType), - ) - - def invoked(self, ctx): - """ - Guacamole method used by the command ingredient. - - :param ctx: - The guacamole context object. Context provides access to all - features of guacamole. The argparse ingredient adds the ``args`` - attribute to it. That attribute contains the result of parsing - command line arguments. - :returns: - The return code of the command. Guacamole translates ``None`` to a - successful exit status (return code zero). - """ - partition = get_recovery_partition() - - if partition is None: - print("Recovery partition not found", file=sys.stderr) - return 1 - (recovery_type, recovery_partition) = partition - ctx.recovery_partition = recovery_partition - ctx.recovery_type = recovery_type - - -class RecoveryInfoTests(unittest.TestCase): - - """Tests for RecoveryInfo.""" - - @mock.patch('__main__.get_recovery_package') - @mock.patch('__main__.get_recovery_partition') - def test_smoke(self, mock_get_recovery_partition, - mock_get_recovery_package): - """Smoke tests for running recovery_info.""" - mock_get_recovery_partition.return_value = ("DELL", "/dev/sda3") - mock_get_recovery_package.return_value = "dell-recovery_1.11" - self.assertEqual(RecoveryInfo().main(argv=[], exit=False), 0) - self.assertEqual( - RecoveryInfo().main(argv=["checktype", "HP"], exit=False), 1) - self.assertEqual( - RecoveryInfo().main(argv=["checktype", "DELL"], exit=False), 0) - - -if __name__ == '__main__': - if '--test' in sys.argv: - sys.argv.remove('--test') - unittest.main() - else: - RecoveryInfo().main() diff --git a/bin/recovery_info.py b/bin/recovery_info.py new file mode 100755 index 0000000..5ce1ba9 --- /dev/null +++ b/bin/recovery_info.py @@ -0,0 +1,206 @@ +#!/usr/bin/env python3 +# Copyright 2015-2020 Canonical Ltd. +# Written by: +# Shawn Wang <shawn.wang@canonical.com> +# Jonathan Cave <jonathan.cave@canonical.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +"""Show the recovery partition information for the preinstalled OS.""" + +import os +import re +import subprocess +import sys +import tempfile + +import xml.dom.minidom as minidom + + +RECOVERY_PACKAGES = ["dell-recovery", "ubuntu-recovery"] + + +def get_recovery_package(): + """ + Test with RECOVERY_PACKAGES. + + to check recovery application is installed or not + + :return: + string of package_version or None + """ + for pkg in RECOVERY_PACKAGES: + output = subprocess.check_output(["apt-cache", "policy", pkg], + universal_newlines=True) + for line in output.split("\n"): + if line.startswith(" Installed:"): + ver = line.split(": ")[1] + return "{}_{}".format(pkg, ver.strip()) + return None + + +RECOVERY_LABELS = {"HP_TOOLS": "HP", + "PQSERVICE": "UBUNTU", + "BACKUP": "TEST", + "INSTALL": "DELL", + "OS": "DELL", + "RECOVERY": "DELL"} + + +_escape_pattern = re.compile(r'\\x([0-9a-fA-F][0-9a-fA-F])') + + +def lsblk_unescape(label): + """Un-escape text escaping done by lsblk(8).""" + return _escape_pattern.sub( + lambda match: chr(int(match.group(1), 16)), label) + + +def get_recovery_partition(): + """ + Get the type and location of the recovery partition. + + :return: + (recovery_type, recovery_partition) or None + + Use lsblk(8) to inspect available block devices looking + for a partition with FAT or NTFS and a well-known label. + """ + cmd = ['lsblk', '-o', 'TYPE,FSTYPE,NAME,LABEL', '--raw'] + for line in subprocess.check_output(cmd).splitlines()[1:]: + type, fstype, name, label = line.split(b' ', 3) + # Skip everything but partitions + if type != b'part': + continue + # Skip everything but FAT and NTFS + if fstype != b'vfat' and fstype != b'ntfs': + continue + label = lsblk_unescape(label.decode('utf-8')) + recovery_type = RECOVERY_LABELS.get(label) + # Skip unknown labels + if recovery_type is None: + continue + recovery_partition = '/dev/{}'.format(name.decode('utf-8')) + return (recovery_type, recovery_partition) + + +class MountedPartition(object): + + """ + Mount Manager to mount partition on tempdir. + + e.g. + with MountedPartition("/dev/sda1") as tmp: + print("This is the mount point: {}".format(tmp)) + do_stuff() + """ + + def __init__(self, part): + """ + Prepare the mntdir point. + + :param part: string of the partition device file, like /dev/sda2 + """ + self.part = part + self.mntdir = tempfile.mkdtemp() + + def __enter__(self): + """ + __enter__ method for python's with statement. + + Mount the partition device to the mntdir. + """ + cmd = ["mount", self.part, self.mntdir] + subprocess.check_output(cmd, universal_newlines=True) + return self.mntdir + + def __exit__(self, type, value, traceback): + """ + __exit__ method for python's with statement. + + Unmount and remove the mntdir. + """ + subprocess.check_output(["umount", self.mntdir], + universal_newlines=True) + os.rmdir(self.mntdir) + + +class RecoveryInfo(): + + """ + Inspect the recovery partition. + + This command can be used to inspect the recovery partition. It has several + sub-commands that do various tasks. If the system has no recovery + partition, the command exits with the error code 1. + """ + + def main(self): + partition = get_recovery_partition() + if len(sys.argv) == 1: + # no subcommand == detect test + if partition is None: + raise SystemExit("FAIL: Recovery partition not found") + else: + print("Found recovery partiion") + return + + (recovery_type, recovery_partition) = partition + + subcommand = sys.argv[1] + sub_commands = ('version', 'file', 'checktype') + if subcommand not in sub_commands: + raise SystemExit("ERROR: unexpected subcommand") + + if subcommand == "checktype": + if len(sys.argv) != 3: + raise SystemExit( + "ERROR: recovery_info.py checktype EXPECTED_TYPE") + expected_type = sys.argv[2] + if recovery_type != expected_type: + raise SystemExit("FAIL: expected {}, found {}".format( + expected_type, recovery_type)) + + if subcommand == "file": + if len(sys.argv) != 3: + raise SystemExit( + "ERROR: recovery_info.py file FILE") + file = sys.argv[2] + with MountedPartition(recovery_partition) as mnt: + return subprocess.call([ + 'cat', '--', os.path.join(mnt, file)]) + + if subcommand == "version": + if os.path.isfile("/etc/buildstamp"): + with open('/etc/buildstamp', 'rt', encoding='UTF-8') as stream: + data = stream.readlines() + print("image_version: {}".format(data[1].strip())) + + with MountedPartition(recovery_partition) as mntdir: + fname = "{}/bto.xml".format(mntdir) + if os.path.isfile(fname): + o = minidom.parse("{}/bto.xml".format(mntdir)) + bto_platform = o.getElementsByTagName("platform") + bto_revision = o.getElementsByTagName("revision") + if bto_platform and bto_revision: + bto_platform = bto_platform[0].firstChild.data + bto_revision = bto_revision[0].firstChild.data + bto_version = bto_platform + " " + bto_revision + else: + bto_iso = o.getElementsByTagName("iso") + bto_version = bto_iso[0].firstChild.data + print("bto_version: {}".format(bto_version)) + + +if __name__ == '__main__': + RecoveryInfo().main() diff --git a/bin/removable_storage_test b/bin/removable_storage_test index 249911a..bbace30 100755 --- a/bin/removable_storage_test +++ b/bin/removable_storage_test @@ -729,6 +729,8 @@ def main(): total_write_size = sum(write_sizes) try: + # Clear dmesg so we can check for I/O errors later + subprocess.check_output(['dmesg', '-C']) for disk, mount_point in disks_eligible.items(): print("%s (Total Data Size / iteration: %0.4f MB):" % (disk, (total_write_size / 1024 / 1024))) @@ -807,6 +809,10 @@ def main(): if test.umount() != 0: errors += 1 test.clean_tmp_dir() + dmesg = subprocess.run(['dmesg'], stdout=subprocess.PIPE) + if 'I/O error' in dmesg.stdout.decode(): + logging.error("I/O errors found in dmesg") + errors += 1 if errors > 0: logging.warning( diff --git a/bin/snap_tests.py b/bin/snap_tests.py index ad1e22a..f548db8 100755 --- a/bin/snap_tests.py +++ b/bin/snap_tests.py @@ -5,9 +5,10 @@ # Written by: # Authors: Jonathan Cave <jonathan.cave@canonical.com> +import argparse import os +import sys -from guacamole import Command from checkbox_support.snap_utils.snapd import Snapd # Requirements for the test snap: @@ -19,11 +20,11 @@ SNAPD_TASK_TIMEOUT = int(os.getenv('SNAPD_TASK_TIMEOUT', 30)) SNAPD_POLL_INTERVAL = int(os.getenv('SNAPD_POLL_INTERVAL', 1)) -class SnapList(Command): +class SnapList(): """snap list sub-command.""" - def invoked(self, ctx): + def invoked(self): """snap list should show the core package is installed.""" data = Snapd().list() for snap in data: @@ -34,11 +35,11 @@ class SnapList(Command): return 1 -class SnapSearch(Command): +class SnapSearch(): """snap search sub-command.""" - def invoked(self, ctx): + def invoked(self): """snap search for TEST_SNAP.""" data = Snapd().find(TEST_SNAP,) for snap in data: @@ -49,19 +50,18 @@ class SnapSearch(Command): return 1 -class SnapInstall(Command): +class SnapInstall(): """snap install sub-command.""" - def register_arguments(self, parser): - """Setup command arguments.""" - parser.add_argument('channel', help='channel to install from') - - def invoked(self, ctx): + def invoked(self): """Test install of test-snapd-tools snap.""" + parser = argparse.ArgumentParser() + parser.add_argument('channel', help='channel to install from') + args = parser.parse_args(sys.argv[2:]) print('Install {}...'.format(TEST_SNAP)) s = Snapd(SNAPD_TASK_TIMEOUT, SNAPD_POLL_INTERVAL) - s.install(TEST_SNAP, ctx.args.channel) + s.install(TEST_SNAP, args.channel) print('Confirm in snap list...') data = s.list() for snap in data: @@ -71,11 +71,11 @@ class SnapInstall(Command): return 1 -class SnapRefresh(Command): +class SnapRefresh(): """snap refresh sub-command.""" - def invoked(self, ctx): + def invoked(self): """Test refresh of test-snapd-tools snap.""" def get_rev(): data = Snapd().list() @@ -96,11 +96,11 @@ class SnapRefresh(Command): return 0 -class SnapRevert(Command): +class SnapRevert(): """snap revert sub-command.""" - def invoked(self, ctx): + def invoked(self): """Test revert of test-snapd-tools snap.""" s = Snapd(SNAPD_TASK_TIMEOUT, SNAPD_POLL_INTERVAL) print('Get stable channel revision from store...') @@ -123,11 +123,11 @@ class SnapRevert(Command): return 0 -class SnapReupdate(Command): +class SnapReupdate(): """snap reupdate sub-command.""" - def invoked(self, ctx): + def invoked(self): """Test re-update of test-snapd-tools snap.""" s = Snapd(SNAPD_TASK_TIMEOUT, SNAPD_POLL_INTERVAL) print('Get edge channel revision from store...') @@ -145,11 +145,11 @@ class SnapReupdate(Command): return 1 -class SnapRemove(Command): +class SnapRemove(): """snap remove sub-command.""" - def invoked(self, ctx): + def invoked(self): """Test remove of test-snapd-tools snap.""" print('Install {}...'.format(TEST_SNAP)) s = Snapd(SNAPD_TASK_TIMEOUT, SNAPD_POLL_INTERVAL) @@ -163,19 +163,24 @@ class SnapRemove(Command): return 0 -class Snap(Command): +class Snap(): """Fake snap like command.""" - sub_commands = ( - ('list', SnapList), - ('search', SnapSearch), - ('install', SnapInstall), - ('refresh', SnapRefresh), - ('revert', SnapRevert), - ('reupdate', SnapReupdate), - ('remove', SnapRemove) - ) + def main(self): + sub_commands = { + 'list': SnapList, + 'search': SnapSearch, + 'install': SnapInstall, + 'refresh': SnapRefresh, + 'revert': SnapRevert, + 'reupdate': SnapReupdate, + 'remove': SnapRemove + } + parser = argparse.ArgumentParser() + parser.add_argument('subcommand', type=str, choices=sub_commands) + args = parser.parse_args(sys.argv[1:2]) + sub_commands[args.subcommand]().invoked() if __name__ == '__main__': diff --git a/bin/tpm-sysfs-resource b/bin/tpm-sysfs-resource deleted file mode 100755 index 34f81b5..0000000 --- a/bin/tpm-sysfs-resource +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2015 Canonical Ltd. -# All rights reserved. -# -# Written by: -# Zygmunt Krynicki <zygmunt.krynicki@canonical.com> - - -"""Collect information about all sysfs attributes related to TPM.""" - -import os - -import guacamole - - -class tpm_sysfs_resource(guacamole.Command): - - """ - Collect information about all sysfs attributes related to TPM. - - This program traverses all the TPM device nodes found in /sys/class/tpm/. - Each present device is subsequently inspected by reading all readable files - in /sys/class/tpm/*/device/* and presenting the data present there as - subsequent RFC822 records. There is one record per TPM chip. In order to - differentiate each chip, each record contains the field x-sysfs-device-name - that stores the full sysfs directory name of the chip. - - @EPILOG@ - - Unreadable files (typically due to permissions) are silently skipped. - """ - - def invoked(self, ctx): - # This is found on 4.2 kernels - sysfs_root_tpm = '/sys/class/tpm/' - # This is found on 3.19 kernels - sysfs_root_misc = '/sys/class/misc/' - if os.path.isdir(sysfs_root_tpm): - sysfs_root = sysfs_root_tpm - elif os.path.isdir(sysfs_root_misc): - sysfs_root = sysfs_root_misc - else: - return - for tpm_id in sorted(os.listdir(sysfs_root)): - if sysfs_root == sysfs_root_misc and not tpm_id.startswith('tpm'): - continue - print("x-sysfs-device-name: {}".format(tpm_id)) - tpm_dirname = os.path.join(sysfs_root, tpm_id, 'device') - for tpm_attr in sorted(os.listdir(tpm_dirname)): - tpm_filename = os.path.join(tpm_dirname, tpm_attr) - if not os.path.isfile(tpm_filename): - continue - if not os.access(tpm_filename, os.R_OK): - continue - with open(tpm_filename, 'rt', encoding='utf-8') as stream: - tpm_data = stream.read() - tpm_data = tpm_data.rstrip() - if '\n' in tpm_data: - print("{}:".format(tpm_attr)) - for tpm_data_chunk in tpm_data.splitlines(): - print(" {}".format(tpm_data_chunk)) - else: - print("{}: {}".format(tpm_attr, tpm_data)) - print() - - -if __name__ == "__main__": - tpm_sysfs_resource().main() diff --git a/bin/tpm_sysfs_resoource.py b/bin/tpm_sysfs_resoource.py new file mode 100755 index 0000000..2f8c256 --- /dev/null +++ b/bin/tpm_sysfs_resoource.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 +# Copyright 2015-2020 Canonical Ltd. +# All rights reserved. +# +# Written by: +# Zygmunt Krynicki <zygmunt.krynicki@canonical.com> +# Jonathan Cave <jonathan.cave@canonical.com> + +""" +Collect information about all sysfs attributes related to TPM. + +This program traverses all the TPM device nodes found in /sys/class/tpm/. +Each present device is subsequently inspected by reading all readable files +in /sys/class/tpm/*/device/* and presenting the data present there as +subsequent RFC822 records. There is one record per TPM chip. In order to +differentiate each chip, each record contains the field x-sysfs-device-name +that stores the full sysfs directory name of the chip. + +@EPILOG@ + +Unreadable files (typically due to permissions) are silently skipped. +""" + +import os + + +def main(): + # This is found on 4.2 kernels + sysfs_root_tpm = '/sys/class/tpm/' + # This is found on 3.19 kernels + sysfs_root_misc = '/sys/class/misc/' + if os.path.isdir(sysfs_root_tpm): + sysfs_root = sysfs_root_tpm + elif os.path.isdir(sysfs_root_misc): + sysfs_root = sysfs_root_misc + else: + return + for tpm_id in sorted(os.listdir(sysfs_root)): + if sysfs_root == sysfs_root_misc and not tpm_id.startswith('tpm'): + continue + print("x-sysfs-device-name: {}".format(tpm_id)) + tpm_dirname = os.path.join(sysfs_root, tpm_id, 'device') + for tpm_attr in sorted(os.listdir(tpm_dirname)): + tpm_filename = os.path.join(tpm_dirname, tpm_attr) + if not os.path.isfile(tpm_filename): + continue + if not os.access(tpm_filename, os.R_OK): + continue + with open(tpm_filename, 'rt', encoding='utf-8') as stream: + tpm_data = stream.read() + tpm_data = tpm_data.rstrip() + if '\n' in tpm_data: + print("{}:".format(tpm_attr)) + for tpm_data_chunk in tpm_data.splitlines(): + print(" {}".format(tpm_data_chunk)) + else: + print("{}: {}".format(tpm_attr, tpm_data)) + print() + + +if __name__ == "__main__": + main() diff --git a/bin/virtualization b/bin/virtualization index de001a1..487fba5 100755 --- a/bin/virtualization +++ b/bin/virtualization @@ -24,24 +24,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. """ from argparse import ArgumentParser -import configparser -from glob import glob import os -import re import logging import lsb_release import platform import requests import shlex -import signal from subprocess import ( Popen, PIPE, - STDOUT, DEVNULL, CalledProcessError, check_output, - check_call, call ) import sys @@ -204,7 +198,7 @@ class KVMTest(object): self.arch = check_output(['dpkg', '--print-architecture'], universal_newlines=True).strip() self.qemu_config = QEMU_ARCH_CONFIG[self.arch] - self.release = lsb_release.get_lsb_information()["CODENAME"] + self.release = lsb_release.get_distro_information()["CODENAME"] def url_to_path(self, image_path): """ @@ -552,7 +546,7 @@ class RunCommand(object): def run(self, cmd): proc = Popen(shlex.split(cmd), stdout=PIPE, stderr=PIPE, - universal_newlines=True) + stdin=DEVNULL, universal_newlines=True) self.stdout, self.stderr = proc.communicate() self.returncode = proc.returncode @@ -834,7 +828,8 @@ def main(): args.func(args) except AttributeError: parser.print_help() - return False + return 1 + if __name__ == "__main__": - main() + sys.exit(main()) diff --git a/bin/wifi_master_mode b/bin/wifi_master_mode.py index 5953ea3..3888caa 100755 --- a/bin/wifi_master_mode +++ b/bin/wifi_master_mode.py @@ -1,32 +1,32 @@ #!/usr/bin/env python3 -# Copyright 2015 Canonical Ltd. +# Copyright 2015-2020 Canonical Ltd. # All rights reserved. # # Written by: # Jonathan Cave <jonathan.cave@canonical.com> # Po-Hsu Lin <po-hsu.lin@canonical.com> +import argparse import logging import os import sys import subprocess import tempfile -from guacamole import Command - -class WifiMasterMode(Command): +class WifiMasterMode(): """Make system to act as an 802.11 Wi-Fi Access Point.""" - def register_arguments(self, parser): + def main(self): + parser = argparse.ArgumentParser() parser.add_argument('--protocol', default='g', choices=['a', 'b', 'g', 'ad'], help="802.11 protocol, possible value: a/b/g/ad") parser.add_argument('--auto', action='store_true', help="Run in the automated mode") + args = parser.parse_args() - def invoked(self, ctx): data_dir = "" try: data_dir = os.environ['PLAINBOX_PROVIDER_DATA'] @@ -50,12 +50,12 @@ class WifiMasterMode(Command): with tempfile.NamedTemporaryFile(mode='w+t') as conf_file_out: with open(conf_in, "r") as conf_file_in: data_in = conf_file_in.read() - data_out = data_in.replace("$PROTOCOL", ctx.args.protocol) + data_out = data_in.replace("$PROTOCOL", args.protocol) data_out = data_out.replace("$WIFI-DEV-NAME", wifi_dev) conf_file_out.write(data_out) conf_file_out.flush() - if ctx.args.auto: + if args.auto: child = subprocess.Popen(['hostapd', '-d', conf_file_out.name], stdout=subprocess.PIPE, universal_newlines=True) @@ -87,5 +87,6 @@ class WifiMasterMode(Command): finally: child.terminate() + if __name__ == "__main__": WifiMasterMode().main() diff --git a/bin/wwan_tests b/bin/wwan_tests.py index 17389e5..c19c547 100755 --- a/bin/wwan_tests +++ b/bin/wwan_tests.py @@ -1,11 +1,12 @@ #!/usr/bin/env python3 -# Copyright 2015 Canonical Ltd. +# Copyright 2015-2020 Canonical Ltd. # All rights reserved. # # Written by: # Jonathan Cave <jonathan.cave@canonical.com> # Po-Hsu Lin <po-hsu.lin@canonical.com> +import argparse import logging import os import subprocess @@ -13,7 +14,6 @@ import sys import time import dbus -from guacamole import Command TEST_IP = "8.8.8.8" @@ -56,7 +56,8 @@ class MMDbus(): if (excp.get_dbus_name() == "org.freedesktop.DBus.Error.ServiceUnknown"): logging.error(excp.get_dbus_message()) - logging.error("Note: wwan_tests requires ModemManager >=1.0") + logging.error( + "Note: wwan_tests.py requires ModemManager >=1.0") else: logging.error(excp.get_dbus_message()) return @@ -258,9 +259,10 @@ def _ping_test(if_name): return ret_code -class ThreeGppConnection(Command): +class ThreeGppConnection(): - def register_arguments(self, parser): + def invoked(self, ctx): + parser = argparse.ArgumentParser() parser.add_argument('wwan_control_if', type=str, help='The control interface for the device') parser.add_argument('wwan_net_if', type=str, @@ -269,14 +271,13 @@ class ThreeGppConnection(Command): help='The APN for data connection') parser.add_argument('wwan_setup_time', type=int, default=30, help='delay before ping test') - - def invoked(self, ctx): + args = parser.parse_args(sys.argv[2:]) ret_code = 1 try: - _create_3gpp_connection(ctx.args.wwan_control_if, ctx.args.apn) + _create_3gpp_connection(ctx.args.wwan_control_if, args.apn) _wwan_radio_on() - time.sleep(ctx.args.wwan_setup_time) - ret_code = _ping_test(ctx.args.wwan_net_if) + time.sleep(args.wwan_setup_time) + ret_code = _ping_test(args.wwan_net_if) except: pass _destroy_3gpp_connection() @@ -284,20 +285,28 @@ class ThreeGppConnection(Command): return ret_code -class CountModems(Command): +class CountModems(): - def invoked(self, ctx): - if ctx.args.use_cli: + def invoked(self): + parser = argparse.ArgumentParser() + parser.add_argument('--use-cli', action='store_true', + help="Use mmcli for all calls rather than dbus") + args = parser.parse_args(sys.argv[2:]) + if args.use_cli: mm = MMCLI() else: mm = MMDbus() print(len(mm.get_modem_ids())) -class Resources(Command): +class Resources(): - def invoked(self, ctx): - if ctx.args.use_cli: + def invoked(self): + parser = argparse.ArgumentParser() + parser.add_argument('--use-cli', action='store_true', + help="Use mmcli for all calls rather than dbus") + args = parser.parse_args(sys.argv[2:]) + if args.use_cli: mm = MMCLI() else: mm = MMDbus() @@ -332,55 +341,60 @@ class Resources(Command): print() -class SimPresent(Command): +class SimPresent(): - def register_arguments(self, parser): + def invoked(self): + parser = argparse.ArgumentParser() parser.add_argument('hw_id', type=str, help='The hardware ID of the modem whose attached' 'SIM we want to query') - - def invoked(self, ctx): - if ctx.args.use_cli: + parser.add_argument('--use-cli', action='store_true', + help="Use mmcli for all calls rather than dbus") + args = parser.parse_args(sys.argv[2:]) + if args.use_cli: mm = MMCLI() else: mm = MMDbus() - mm_id = mm.equipment_id_to_mm_id(ctx.args.hw_id) + mm_id = mm.equipment_id_to_mm_id(args.hw_id) if not mm.sim_present(mm_id): return 1 -class SimInfo(Command): +class SimInfo(): - def register_arguments(self, parser): + def invoked(self): + parser = argparse.ArgumentParser() parser.add_argument('hw_id', type=str, help='The hardware ID of the modem whose attached' 'SIM we want to query') - - def invoked(self, ctx): - if ctx.args.use_cli: + parser.add_argument('--use-cli', action='store_true', + help="Use mmcli for all calls rather than dbus") + args = parser.parse_args(sys.argv[2:]) + if args.use_cli: mm = MMCLI() else: mm = MMDbus() - mm_id = mm.equipment_id_to_mm_id(ctx.args.hw_id) + mm_id = mm.equipment_id_to_mm_id(args.hw_id) print("Operator: {}".format(mm.get_sim_operatorname(mm_id))) print("IMSI: {}".format(mm.get_sim_imsi(mm_id))) print("MCC/MNC: {}".format(mm.get_sim_operatoridentifier(mm_id))) print("ICCID: {}".format(mm.get_sim_simidentifier(mm_id))) -class WWANTests(Command): - - sub_commands = ( - ('count', CountModems), - ('resources', Resources), - ('3gpp-connection', ThreeGppConnection), - ('sim-present', SimPresent), - ('sim-info', SimInfo) - ) - - def register_arguments(self, parser): - parser.add_argument('--use-cli', action='store_true', - help="Use mmcli for all calls rather than dbus") +class WWANTests(): + + def main(self): + sub_commands = { + 'count': CountModems, + 'resources': Resources, + '3gpp-connection': ThreeGppConnection, + 'sim-present': SimPresent, + 'sim-info': SimInfo + } + parser = argparse.ArgumentParser() + parser.add_argument('subcommand', type=str, choices=sub_commands) + args = parser.parse_args(sys.argv[1:2]) + sub_commands[args.subcommand]().invoked() if __name__ == "__main__": diff --git a/data/chameleon_edids/README b/data/chameleon_edids/README new file mode 100644 index 0000000..d05e2eb --- /dev/null +++ b/data/chameleon_edids/README @@ -0,0 +1,2 @@ +EDID data set taken from: +https://chromium.googlesource.com/chromiumos/third_party/autotest/+/refs/heads/master/server/site_tests/display_EdidStress/test_data/edids diff --git a/data/chameleon_edids/daily/4K_ACER_BX320HK_HDMI.txt b/data/chameleon_edids/daily/4K_ACER_BX320HK_HDMI.txt new file mode 100644 index 0000000..1a753b2 --- /dev/null +++ b/data/chameleon_edids/daily/4K_ACER_BX320HK_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0004729a0445540000 +20190103804728782e88e5a8554da025 +0e5054bfef80714f8140818081c09500 +b300d1c001014dd000a0f0703e803020 +3500c48f2100001a000000fd00174c1f +873c000a202020202020000000fc0042 +58333230484b0a2020202020000000ff +005435373044303030383530310a018f +020349f35410050403020716011f1213 +1420151106615d5e5f23090707830100 +006d030c001000387820006001020367 +d85dc40178c000e3050301e40f000001 +681a00000101233c00023a801871382d +40582c4500c48f2100001e565e00a0a0 +a0295030203500c48f2100001af45100 +a0f070198030203500c48f2100001eda diff --git a/data/chameleon_edids/daily/4K_DELL_UP3216Q_DP.txt b/data/chameleon_edids/daily/4K_DELL_UP3216Q_DP.txt new file mode 100644 index 0000000..e88b15e --- /dev/null +++ b/data/chameleon_edids/daily/4K_DELL_UP3216Q_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0010acf84050383230 +051a0104a5431c783aca95a6554ea126 +0f5054a54b808100b300714f8180d1c0 +0101010101017e4800e0a0381f404040 +3a00a11c2100001a000000ff00393143 +5937333538303238500a000000fc0044 +454c4c205532393137570a20000000fd +00314c1d5e13010a2020202020200117 +02031df1501005040302071601061112 +1513141f2023091f0783010000023a80 +1871382d40582c2500a11c2100001e01 +1d8018711c1620582c2500a11c210000 +9e011d007251d01e206e285500a11c21 +00001e8c0ad08a20e02d10103e9600a1 +1c210000180000000000000000000000 +000000000000000000000000000000dd diff --git a/data/chameleon_edids/daily/4K_HP_Spectre32_DP.txt b/data/chameleon_edids/daily/4K_HP_Spectre32_DP.txt new file mode 100644 index 0000000..c921e1c --- /dev/null +++ b/data/chameleon_edids/daily/4K_HP_Spectre32_DP.txt @@ -0,0 +1,16 @@ +00FFFFFFFFFFFF0022F01A3200000000 +2E180104B54728783A87D5A8554D9F25 +0E5054210800D1C0A9C081C0D100B300 +9500A94081804DD000A0F0703E803020 +3500C48F2100001A000000FD00183C1E +873C000A202020202020000000FC0048 +502053706563747265203332000000FF +00434E43393430303030310A2020018F +020318F14B101F041303120211010514 +2309070783010000A36600A0F0701F80 +30203500C48F2100001A565E00A0A0A0 +295030203500C48F2100001AEF5100A0 +F070198030203500C48F2100001AB339 +00A080381F4030203A00C48F2100001A +283C80A070B0234030203600C48F2100 +001A00000000000000000000000000C4 diff --git a/data/chameleon_edids/daily/4K_HP_Spectre32_HDMI.txt b/data/chameleon_edids/daily/4K_HP_Spectre32_HDMI.txt new file mode 100644 index 0000000..3d6643e --- /dev/null +++ b/data/chameleon_edids/daily/4K_HP_Spectre32_HDMI.txt @@ -0,0 +1,16 @@ +00FFFFFFFFFFFF0022F01C3201010101 +04190103804728782A87D5A8554D9F25 +0E5054210800D1C0A9C081C0D100B300 +9500A94081804DD000A0F0703E803020 +3500C48F2100001A000000FD00183C1B +873C000A202020202020000000FC0048 +502053706563747265203332000000FF +00434E43393430303030310A202001FB +02033DF15361605F5D101F0413031202 +11010514070616152309070783010000 +6C030C001000383C200040010367D85D +C401788000E40F030000E2002B047400 +30F2705A80B0588A00C48F2100001A56 +5E00A0A0A0295030203500C48F210000 +1EEF5100A0F070198030203500C48F21 +00001E000000000000000000000000A8 diff --git a/data/chameleon_edids/daily/ACI_9155_ASUS_VH238_HDMI.txt b/data/chameleon_edids/daily/ACI_9155_ASUS_VH238_HDMI.txt new file mode 100644 index 0000000..8b0d7ff --- /dev/null +++ b/data/chameleon_edids/daily/ACI_9155_ASUS_VH238_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff000469c323fccc0000 +2017010380331d782add45a3554fa027 +125054bfef00714f814081809500b300 +d1c001010101023a801871382d40582c +4500fd1e1100001e000000ff0044384c +4d54463035323437360a000000fd0032 +4b1e5011000a202020202020000000fc +00415355532056483233380a202000be \ No newline at end of file diff --git a/data/chameleon_edids/daily/ACI_9713_ASUS_VE258_DP.txt b/data/chameleon_edids/daily/ACI_9713_ASUS_VE258_DP.txt new file mode 100644 index 0000000..99f4f3e --- /dev/null +++ b/data/chameleon_edids/daily/ACI_9713_ASUS_VE258_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff000469f125f3c60100 +1d150104a5371f783a7695a5544ba226 +115054bfef00714f81c0814081809500 +950fb300d1c0023a801871382d40582c +450029372100001e000000ff0042374c +4d54463131363436370a000000fd0032 +4b185311041100f0f838f03c000000fc +00415355532056453235380a202001b7 +020322714f0102031112130414051f90 +0e0f1d1e2309170783010000656e0c00 +10008c0ad08a20e02d10103e96002937 +21000018011d007251d01e206e285500 +29372100001e011d00bc52d01e20b828 +554029372100001e8c0ad09020403120 +0c405500293721000018000000000000 +000000000000000000000000000000aa \ No newline at end of file diff --git a/data/chameleon_edids/daily/ACR_314_Acer_T232HL_HDMI.txt b/data/chameleon_edids/daily/ACR_314_Acer_T232HL_HDMI.txt new file mode 100644 index 0000000..3173661 --- /dev/null +++ b/data/chameleon_edids/daily/ACR_314_Acer_T232HL_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0004723a014c072030 +0217010380331d782aee95a3544c9926 +0f5054b30c00714f810081809500d1c0 +81c0b3000101023a801871382d40582c +4500fe1f1100001e000000fd00384b1e +5311000a202020202020000000fc0041 +6365722054323332484c0a20000000ff +004c57594141303031343330300a01e3 +020322724f010203040590111213149f +0607151623097f078301000065030c00 +1000023a80d072382d40102c9680fe1f +11000018011d8018711c1620582c2500 +fe1f1100009e011d80d0721c1620102c +2580fe1f1100009e023a80d072382d40 +102c2580fe1f1100001e000000000000 +000000000000000000000000000000c6 \ No newline at end of file diff --git a/data/chameleon_edids/daily/ACR_315_Acer_T272HL_HDMI.txt b/data/chameleon_edids/daily/ACR_315_Acer_T272HL_HDMI.txt new file mode 100644 index 0000000..5195669 --- /dev/null +++ b/data/chameleon_edids/daily/ACR_315_Acer_T272HL_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0004723b013c2a9034 +31170103803c22782a2fa5a554509e27 +105054b30c00714f81c0810081809500 +b300d1c00101023a801871382d40582c +450056502100001e000000fd00324b1e +5311000a202020202020000000fc0041 +6365722054323732484c0a20000000ff +004c575a4141303032343331300a0126 +020322724f010203040590111213149f +0607151623097f078301000065030c00 +1000023a801871382d40582c45005650 +2100001e023a80d072382d40102c2580 +56502100001e011d8018711c1620582c +250056502100009e011d80d0721c1620 +102c258056502100009e000000000000 +0000000000000000000000000000009e \ No newline at end of file diff --git a/data/chameleon_edids/daily/ACR_5429_H6510BD_HDMI.txt b/data/chameleon_edids/daily/ACR_5429_H6510BD_HDMI.txt new file mode 100644 index 0000000..6b2ec86 --- /dev/null +++ b/data/chameleon_edids/daily/ACR_5429_H6510BD_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff000472351534053033 +21170103800000780a436ea5574f9d25 +0d4e5e3fcf80317c457c617c813c8180 +81c09500d1c0023a801871382d40582c +450000000000001e000000fd0017780f +6611000a202020202020000000fc0048 +3635313042440a2020202020000000ff +004a465a3131303041383430310a0146 +020329f14d0602151104130514901f20 +212223091707830100006a030c001000 +3828208000e30503018c0ad08a20e02d +10103e9600c48e21000018011d007251 +d01e206e285500c48e2100001e011d80 +18711c1620582c2500c48e2100009ef3 +39801871382d40582c4500c48e210000 +1e000000000000000000000000000073 \ No newline at end of file diff --git a/data/chameleon_edids/daily/AMX_2150_DVX-2150_HDMI.txt b/data/chameleon_edids/daily/AMX_2150_DVX-2150_HDMI.txt new file mode 100644 index 0000000..1cb91e2 --- /dev/null +++ b/data/chameleon_edids/daily/AMX_2150_DVX-2150_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0005b8660800000000 +00150103803c22780a14e5a3564c9d25 +0e5054a56f808180818f7140b300814f +714f01010101273c80a170b023403020 +360056502100001a21399030621a2740 +68b0360056502100001c000000fd0038 +4b1e5311000a202020202020000000fc +004456582d323135300a20202020013d +02031ff14e8405030220221011131214 +1f071623097f0767030c002000802c01 +1d007251d01e20388815005650210000 +1e011d8018711c1620582c2500565021 +00009e8c0ad08a20e02d10103e960056 +5021000018023a801871382d40582c45 +0056502100001e000000000000000000 +0000000000000000000000000000008b \ No newline at end of file diff --git a/data/chameleon_edids/daily/ATL_1_AT-HDVS-RX_HDMI.txt b/data/chameleon_edids/daily/ATL_1_AT-HDVS-RX_HDMI.txt new file mode 100644 index 0000000..bca55d7 --- /dev/null +++ b/data/chameleon_edids/daily/ATL_1_AT-HDVS-RX_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00068c010001000000 +131701038010098cfa9c209c544f8f26 +215256afcf008180a940d1c0a9c081c0 +90408100b3009e20009051201f304880 +3600100a0000001c283c80a070b02340 +30203600100a0000001a000000fd0018 +550f5c11000a202020202020000000fc +0041542d484456532d52580a2020013d +02032ef14c010602840510151113141f +20320907051557500007000907070907 +0709070765030c001000830100000e1f +008051001e304080370010090000001c +662156aa51001e30468f330004030000 +001e023a801871382d40582c45001009 +0000001e011d007251d01e206e285500 +10090000001e00000000000000000045 \ No newline at end of file diff --git a/data/chameleon_edids/daily/CEI_0_Crestron_HDMI.txt b/data/chameleon_edids/daily/CEI_0_Crestron_HDMI.txt new file mode 100644 index 0000000..7bd5199 --- /dev/null +++ b/data/chameleon_edids/daily/CEI_0_Crestron_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff000ca9000000000000 +0113010380502d960eee91a3544c9926 +0f5054210800d1dcd1e2d1dd81c081f6 +3bb601010101023a801871382d40582c +450020c23100001e023a80d072382d40 +102c458020c23100001e000000fc0043 +72657374726f6e0a20202020000000fd +00173d1a440f000a2020202020200168 +020323414a901f200514041311020126 +0907070957078301000068030c001000 +002d009a29a0d0518422305098360020 +c23100001c662150b051001b30407036 +0020c23100001e9e20009051201f3048 +80360020c23100001c00000000000000 +00000000000000000000000000000000 +00000000000000000000000000000042 \ No newline at end of file diff --git a/data/chameleon_edids/daily/CEI_31032_Crestron_HDMI.txt b/data/chameleon_edids/daily/CEI_31032_Crestron_HDMI.txt new file mode 100644 index 0000000..5793a8f --- /dev/null +++ b/data/chameleon_edids/daily/CEI_31032_Crestron_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff000ca9387900000000 +0113010380502d960eee91a3544c9926 +0f505421080001010101010101010101 +010101010101011d007251d01e206e28 +550020c23100001e023a801871382d40 +582c450020c23100001e000000fc0043 +72657374726f6e0a20202020000000fd +003b3d1e440f000a2020202020200104 +02031961438410012309070783010000 +68030c001000002d0000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000037 \ No newline at end of file diff --git a/data/chameleon_edids/daily/CVT_3_CVT_TV_HDMI.txt b/data/chameleon_edids/daily/CVT_3_CVT_TV_HDMI.txt new file mode 100644 index 0000000..57384ab --- /dev/null +++ b/data/chameleon_edids/daily/CVT_3_CVT_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff000ed4030000000000 +1014010380643d008aee95a3544c9926 +0f5054a54e0001010101010101010101 +010101010101023a801871382d40582c +45003f432100001a000000fd0018550f +5010000a202020202020000000fc0043 +5654205456200a0a0a0a0a0a00000000 +000000000000000000000000000001f0 +020323744f90050403070206011f1413 +12161115230907038301000066030c00 +100080011d00bc52d01e20b8285540c4 +8e2100001e011d80d0721c1620102c25 +80c48e2100009e8c0ad08a20e02d1010 +3e9600138e210000188c0ad090204031 +200c405500138e210000180000000000 +000000000000000000000000000000a5 \ No newline at end of file diff --git a/data/chameleon_edids/daily/DEL_16443_DELL_2208WFP_DP.txt b/data/chameleon_edids/daily/DEL_16443_DELL_2208WFP_DP.txt new file mode 100644 index 0000000..3e4745c --- /dev/null +++ b/data/chameleon_edids/daily/DEL_16443_DELL_2208WFP_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff0010ac3b4053343034 +18120103682f1e78ea3af5aa5037ab24 +135054a54b00714f8180b30001010101 +01010101010121399030621a274068b0 +3600d9281100001c000000ff00463533 +3248383643343034530a000000fc0044 +454c4c20323230385746500a000000fd +00384c1e5310000a2020202020200039 \ No newline at end of file diff --git a/data/chameleon_edids/daily/DEL_16543_DELL_P2314T_DP.txt b/data/chameleon_edids/daily/DEL_16543_DELL_P2314T_DP.txt new file mode 100644 index 0000000..798c233 --- /dev/null +++ b/data/chameleon_edids/daily/DEL_16543_DELL_P2314T_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0010ac9f404c4c3645 +10180104a5331d783ae595a656529d27 +105054a54b00714f8180a9c0d1c00101 +010101010101023a801871382d40582c +4500fd1e1100001e000000ff00445746 +325834344645364c4c0a000000fc0044 +454c4c205032333134540a20000000fd +00384c1e5311010a20202020202001bb +02031cf14f9005040302071601061112 +1513141f2309070783010000023a8018 +71382d40582c4500fd1e1100001e011d +8018711c1620582c2500fd1e1100009e +011d007251d01e206e285500fd1e1100 +001e8c0ad08a20e02d10103e9600fd1e +11000018000000000000000000000000 +0000000000000000000000000000003f \ No newline at end of file diff --git a/data/chameleon_edids/daily/DEL_16544_DELL_P2314T_HDMI.txt b/data/chameleon_edids/daily/DEL_16544_DELL_P2314T_HDMI.txt new file mode 100644 index 0000000..7c7e852 --- /dev/null +++ b/data/chameleon_edids/daily/DEL_16544_DELL_P2314T_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0010aca0404c455145 +1018010380331d78eae595a656529d27 +105054a54b00714f8180a9c0d1c00101 +010101010101023a801871382d40582c +4500fd1e1100001e000000ff00445746 +32583434464551454c0a000000fc0044 +454c4c205032333134540a20000000fd +00384c1e5311000a2020202020200109 +020326f14f9005040302071601061112 +1513141f2309070765030c0010008301 +0000e3050301023a801871382d40582c +4500fd1e1100001e011d8018711c1620 +582c2500fd1e1100009e011d007251d0 +1e206e285500fd1e1100001e8c0ad08a +20e02d10103e9600fd1e110000180000 +000000000000000000000000000000c5 \ No newline at end of file diff --git a/data/chameleon_edids/daily/DEL_16545_DELL_P2314T_HDMI.txt b/data/chameleon_edids/daily/DEL_16545_DELL_P2314T_HDMI.txt new file mode 100644 index 0000000..f689f58 --- /dev/null +++ b/data/chameleon_edids/daily/DEL_16545_DELL_P2314T_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0010aca1404c385145 +1018010380331d78eae595a656529d27 +105054a54b00714f8180a9c0d1c00101 +010101010101023a801871382d40582c +4500fd1e1100001e000000ff00445746 +32583434464551384c0a000000fc0044 +454c4c205032333134540a20000000fd +00384c1e5311000a2020202020200122 +020326f14f9005040302071601061112 +1513141f2309070765030c0020008301 +0000e3050301023a801871382d40582c +4500fd1e1100001e011d8018711c1620 +582c2500fd1e1100009e011d007251d0 +1e206e285500fd1e1100001e8c0ad08a +20e02d10103e9600fd1e110000180000 +000000000000000000000000000000b5 \ No newline at end of file diff --git a/data/chameleon_edids/daily/DEL_40976_DELL_2405FPW_HDMI.txt b/data/chameleon_edids/daily/DEL_40976_DELL_2405FPW_HDMI.txt new file mode 100644 index 0000000..b7380cc --- /dev/null +++ b/data/chameleon_edids/daily/DEL_40976_DELL_2405FPW_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0010ac10a053465630 +0b10010380342178eeee50a3544c9b26 +0f5054a54b008180a940714fb3000101 +010101010101283c80a070b023403020 +360007442100001a000000ff00543631 +33333633493056465320000000fc0044 +454c4c20323430354650570a000000fd +00384c1e5111000a20202020202000e9 \ No newline at end of file diff --git a/data/chameleon_edids/daily/DEL_40983_DELL_2407WFP_HDMI.txt b/data/chameleon_edids/daily/DEL_40983_DELL_2407WFP_HDMI.txt new file mode 100644 index 0000000..3d83fdb --- /dev/null +++ b/data/chameleon_edids/daily/DEL_40983_DELL_2407WFP_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0010ac17a053575930 +0511010380342178eeee91a3544c9926 +0f5054a54b008180a940714fb3000101 +010101010101283c80a070b023403020 +360007442100001a000000ff00555935 +34353732323059575320000000fc0044 +454c4c20323430375746500a000000fd +00384c1e5311000a2020202020200068 \ No newline at end of file diff --git a/data/chameleon_edids/daily/DEL_41046_DELL_U2711_HDMI.txt b/data/chameleon_edids/daily/DEL_41046_DELL_U2711_HDMI.txt new file mode 100644 index 0000000..baa826b --- /dev/null +++ b/data/chameleon_edids/daily/DEL_41046_DELL_U2711_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0010ac56a04c4d3231 +33150103803c2278ea8e05ad4f33b026 +0d5054a54b008100b300714fa9408180 +010101010101023a801871382d40582c +250055502100001e000000ff00443937 +315431434731324d4c0a000000fc0044 +454c4c2055323731310a2020000000fd +00384c1e5111000a20202020202001cc +020329f1509005040302071601061112 +1513141f20230d7f0767030c00100038 +2d830f0000e3050301023a801871382d +40582c250055502100001e011d801871 +1c1620582c250055502100009e011d00 +7251d01e206e28550055502100001e8c +0ad08a20e02d10103e96005550210000 +18000000000000000000000000000068 \ No newline at end of file diff --git a/data/chameleon_edids/daily/DEL_61462_DELL_U2410_HDMI.txt b/data/chameleon_edids/daily/DEL_61462_DELL_U2410_HDMI.txt new file mode 100644 index 0000000..9adf5f4 --- /dev/null +++ b/data/chameleon_edids/daily/DEL_61462_DELL_U2410_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0010ac16f04c4e4332 +1f13010380342078ea1ec5ae4f34b126 +0e5054a54b008180a940d100714f0101 +010101010101283c80a070b023403020 +360006442100001a000000ff00463532 +354d39375332434e4c0a000000fc0044 +454c4c2055323431300a2020000000fd +00384c1e5111000a202020202020012e +020329f15090050403020716011f1213 +14201511062309070767030c00100038 +2d83010000e3050301023a801871382d +40582c450006442100001e011d801871 +1c1620582c250006442100009e011d00 +7251d01e206e28550006442100001e8c +0ad08a20e02d10103e96000644210000 +1800000000000000000000000000003e \ No newline at end of file diff --git a/data/chameleon_edids/daily/DEL_61463_DELL_U2410_DP.txt b/data/chameleon_edids/daily/DEL_61463_DELL_U2410_DP.txt new file mode 100644 index 0000000..04c5ff8 --- /dev/null +++ b/data/chameleon_edids/daily/DEL_61463_DELL_U2410_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0010ac17f04c334a31 +08150104b53420783a1ec5ae4f34b126 +0e5054a54b008180a940d100714f0101 +010101010101283c80a070b023403020 +360006442100001a000000ff00463532 +354d313247314a334c0a000000fc0044 +454c4c2055323431300a2020000000fd +00384c1e5111000a20202020202001ff +02031df15090050403020716011f1213 +14201511062309070783010000023a80 +1871382d40582c450006442100001e01 +1d8018711c1620582c25000644210000 +9e011d007251d01e206e285500064421 +00001e8c0ad08a20e02d10103e960006 +44210000180000000000000000000000 +00000000000000000000000000000021 \ No newline at end of file diff --git a/data/chameleon_edids/daily/DTV_0_DTV_HDMI.txt b/data/chameleon_edids/daily/DTV_0_DTV_HDMI.txt new file mode 100644 index 0000000..3cce70b --- /dev/null +++ b/data/chameleon_edids/daily/DTV_0_DTV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff001296000001010101 +0c180103803a20780a0dc9a057479827 +12484ca14b008180d1c0590f01010101 +010101010101023a801871382d40582c +450020c23100001e011d007251d01e20 +6e28550044402100001e000000fc0020 +202020204454560a20202020000000fd +0032550e4610000a2020202020200125 +02032770521413121116150504030207 +06011f10202122260907071507508301 +000067030c001000b82d011d80d0721c +1620102c258044402100009e011d8018 +711c1620582c2500444021000098011d +00bc52d01e20b828554044402100001e +011d007251d01e206e28550044402100 +001e0000000000000000000000000093 \ No newline at end of file diff --git a/data/chameleon_edids/daily/DTV_0_Kogan_TV_HDMI.txt b/data/chameleon_edids/daily/DTV_0_Kogan_TV_HDMI.txt new file mode 100644 index 0000000..4889890 --- /dev/null +++ b/data/chameleon_edids/daily/DTV_0_Kogan_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff001296000001010101 +05170103800000780adebda355479926 +0c474aa10800d1c00101010101010101 +010101010101023a801871382d40582c +4500a2123200001e662150b051001b30 +40703600f8ae2100001e000000fd0032 +4c1f4b10000a202020202020000000fc +0020204b6f67616e2054560a20200115 +020324744f90050403070206011f1413 +12161115230907038301000067030c00 +1000b82d011d00bc52d01e20b8285540 +c48e2100001e011d80d0721c1620102c +2580c48e2100009e8c0ad08a20e02d10 +103e9600138e210000188c0ad0902040 +31200c405500138e2100001800000000 +0000000000000000000000000000003e \ No newline at end of file diff --git a/data/chameleon_edids/daily/ELO_8705_HDMI.txt b/data/chameleon_edids/daily/ELO_8705_HDMI.txt new file mode 100644 index 0000000..0979fd1 --- /dev/null +++ b/data/chameleon_edids/daily/ELO_8705_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff00158f01220c4b0000 +2b17010381301b78eaf5c5a85337ae25 +1250542308008180814081c001010101 +010101010101d039801871382d40582c +4500dc0c1100001e662156aa51001e30 +468f3300dc0c1100001e21399030621a +274068b03600dc0c1100001c9a29a0d0 +5184223050983600dc0c1100001c00fe \ No newline at end of file diff --git a/data/chameleon_edids/daily/EXN_0_EXTRON_D_HDMI.txt b/data/chameleon_edids/daily/EXN_0_EXTRON_D_HDMI.txt new file mode 100644 index 0000000..0d07b39 --- /dev/null +++ b/data/chameleon_edids/daily/EXN_0_EXTRON_D_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00170e000001010101 +0013010380000078ee00000000000000 +000000a54b00d1c0a940714f90408180 +010101010101023a801871382d40582c +450080387400001e302a7820511a1240 +30701300781a5400001c000000fd0017 +4c0e5c11000a202020202020000000fc +00455854524f4e20440a20202020010e +02031a414690050403020123091f4083 +01000066030c00100000023a80187138 +2d40582c450080387400001e00000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +0000000000000000000000000000002a \ No newline at end of file diff --git a/data/chameleon_edids/daily/EXN_0_ExtronScalerD_HDMI.txt b/data/chameleon_edids/daily/EXN_0_ExtronScalerD_HDMI.txt new file mode 100644 index 0000000..3613c38 --- /dev/null +++ b/data/chameleon_edids/daily/EXN_0_ExtronScalerD_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00170e000000000000 +0017010380000078ee00000000000000 +00000021080081c0810081809500b300 +a940d1c0d100011d007251d01e206e28 +550000d05200001e000000fd00173d0e +4c11000a202020202020000000ff000a +202020202020202020202020000000fc +00457874726f6e5363616c657244011d +020328f053901f200514270413020311 +12060715162221012309070783010000 +67030c001000982d023a801871382d40 +582c4500803874000018023a80d07238 +2d40102c458080387400001800000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000de \ No newline at end of file diff --git a/data/chameleon_edids/daily/EXN_0_Extron_HDMI_HDMI.txt b/data/chameleon_edids/daily/EXN_0_Extron_HDMI_HDMI.txt new file mode 100644 index 0000000..d5fcb26 --- /dev/null +++ b/data/chameleon_edids/daily/EXN_0_Extron_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00170e000000000000 +00160103800000782a00000000000000 +00000021000001010101010101010101 +010101010101011d007251d01e206e28 +550000d05200001e000000fd00173d0e +4c11000a202020202020000000fc0045 +7874726f6e2048444d490a2000000010 +000000000000000000000000000001db +02031ac0468402030607012309070783 +01000066030c00100080000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000006d14 \ No newline at end of file diff --git a/data/chameleon_edids/daily/GSM_1_LG_TV_HDMI.txt b/data/chameleon_edids/daily/GSM_1_LG_TV_HDMI.txt new file mode 100644 index 0000000..7a8b2b7 --- /dev/null +++ b/data/chameleon_edids/daily/GSM_1_LG_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff001e6d010001010101 +0116010380a05a780aee91a3544c9926 +0f5054a1080031404540614071408180 +010101010101023a801871382d40582c +4500a05a0000001e662150b051001b30 +40703600a05a0000001e000000fd003a +3e1e5310000a202020202020000000fc +004c472054560a202020202020200143 +020322f14e109f041305140302122021 +2215012615075009570767030c001000 +801e011d8018711c1620582c250020c2 +3100009e011d007251d01e206e285500 +20c23100001e023a801871382d40582c +4500a05a0000001e011d00bc52d01e20 +b8285540c48e2100001e000000000000 +00000000000000000000000000000025 \ No newline at end of file diff --git a/data/chameleon_edids/daily/GSM_22593_D2342P_HDMI.txt b/data/chameleon_edids/daily/GSM_22593_D2342P_HDMI.txt new file mode 100644 index 0000000..7beca7e --- /dev/null +++ b/data/chameleon_edids/daily/GSM_22593_D2342P_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff001e6d41589d000000 +0c15010380331d78ead945a2554da027 +125054a76b80714f81808140b3000101 +010101010101023a801871382d40582c +4500fe221100001e000000fd00384b1e +530f000a202020202020000000fc0044 +32333432500a202020202020000000ff +003131324e444b4430303135370a0094 \ No newline at end of file diff --git a/data/chameleon_edids/daily/GSM_22594_D2342P_HDMI.txt b/data/chameleon_edids/daily/GSM_22594_D2342P_HDMI.txt new file mode 100644 index 0000000..cb62feb --- /dev/null +++ b/data/chameleon_edids/daily/GSM_22594_D2342P_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff001e6d425801010101 +0113010380331d78ead945a2554da027 +125054210800714081408180b3000101 +010101010101023a801871382d40582c +4500fe221100001e000000fd00383d1e +530f000a202020202020000000fc0044 +32333432500a202020202020000000ff +0053657269616c4e756d6265720a01a7 +020334f14c101f841305140312202122 +0123090707830100007a030c00100000 +2d20c0100041050f0810181088105810 +38104810023a801871382d40582c4500 +fe221100001e011d8018711c1620582c +2500fe221100009e011d007251d01e20 +6e285500fe221100001e000000000000 +0000000000000000000000000000006d \ No newline at end of file diff --git a/data/chameleon_edids/daily/GSM_23155_22CV241_HDMI.txt b/data/chameleon_edids/daily/GSM_23155_22CV241_HDMI.txt new file mode 100644 index 0000000..2240c68 --- /dev/null +++ b/data/chameleon_edids/daily/GSM_23155_22CV241_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff001e6d735a01010101 +32170103802f1a78eaebf5a656519c26 +105054210800010181c0810081809500 +0101a9c0b300023a801871382d40582c +45000f282100001e000000fd00383f1e +530f000a202020202020000000fc0032 +3243563234310a2020202020000000ff +000a2020202020202020202020200143 +02031df14a900403011412051f101323 +0907078301000065030c001000023a80 +1871382d40582c4500fe221100001e01 +1d8018711c1620582c2500fe22110000 +9e011d007251d01e206e285500fe2211 +00001e8c0ad08a20e02d10103e9600fe +22110000180000000000000000000000 +000000000000000000000000000000e6 \ No newline at end of file diff --git a/data/chameleon_edids/daily/GSM_50200_LG_TV_HDMI.txt b/data/chameleon_edids/daily/GSM_50200_LG_TV_HDMI.txt new file mode 100644 index 0000000..d2231b2 --- /dev/null +++ b/data/chameleon_edids/daily/GSM_50200_LG_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff001e6d18c401010101 +0113010380462778ead9b0a357499c25 +11494ba10800a94081809040d1c00101 +010101010101023a801871382d40582c +450008442100001e1b2150a051001e30 +48883500bc882100001c000000fd002f +3f1c4b10000a202020202020000000fc +004c472054560a202020202020200187 +020323f150850402010311121314101f +2021220716230907078301000065030c +003000011d008051d01c2040803500bc +882100001e8c0ad08a20e02d10103e96 +00138e210000182a1200104143172028 +60350000003200001c011d8018711c16 +20582c2500c48e2100009e0000000000 +0000000000000000000000000000000a \ No newline at end of file diff --git a/data/chameleon_edids/daily/GSM_50294_M3704C_HDMI.txt b/data/chameleon_edids/daily/GSM_50294_M3704C_HDMI.txt new file mode 100644 index 0000000..1cfa0d1 --- /dev/null +++ b/data/chameleon_edids/daily/GSM_50294_M3704C_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff001e6d76c401010101 +2514010380522e78eaac27a355499b25 +10474aa1080081807140614045403140 +81400101b300023a801871382d40582c +4500a20b3200001e1a3680a070381f40 +30203500a20b32000018000000fd0038 +3c1e530f000a202020202020000000fc +004d33373034430a202020202020013e +02031c714990050403011f1412132309 +07078301000065030c001000023a8018 +71382d40582c450006442100001e011d +8018711c1620582c250006442100009e +011d007251d01e206e28550006442100 +001e011d80d0721c1620102c2580848a +4200009e023a80d072382d40102c4520 +06442100001e00000000000000000056 \ No newline at end of file diff --git a/data/chameleon_edids/daily/HEC_48_HDMI_HDMI.txt b/data/chameleon_edids/daily/HEC_48_HDMI_HDMI.txt new file mode 100644 index 0000000..2c09b14 --- /dev/null +++ b/data/chameleon_edids/daily/HEC_48_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0020a3300001000000 +23140103807341780acf74a3574cb023 +09484c21080081c08140818001010101 +010101010101023a801871382d40582c +450080884200001e1b2150a051001e30 +48883500444a2100001c000000fc0048 +444d490a2020202020202020000000fd +00324b0f450f000a202020202020016c +020328714b0102040590141f11202122 +26090707177f18830100006c030c0030 +00382d20a0020141011d80d0721c1620 +102c2580c48e2100009e011d8018711c +1620582c2500c48e2100009e011d0072 +51d01e206e285500c48e210000180000 +00000000000000000000000000000000 +00000000000000000000000000000095 \ No newline at end of file diff --git a/data/chameleon_edids/daily/HWP_10345_HP_ZR24w_DP.txt b/data/chameleon_edids/daily/HWP_10345_HP_ZR24w_DP.txt new file mode 100644 index 0000000..d5f5e58 --- /dev/null +++ b/data/chameleon_edids/daily/HWP_10345_HP_ZR24w_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff0022f0692801010101 +0d150104a53623782efc81a4554d9d25 +125054210800814081809500a940b300 +d1c001010101283c80a070b023403020 +360022602100001a000000fd003b3d18 +5011000a202020202020000000fc0048 +50205a523234770a20202020000000ff +00434e54313133373034500a20200031 \ No newline at end of file diff --git a/data/chameleon_edids/daily/HWP_10346_HP_ZR24w_HDMI.txt b/data/chameleon_edids/daily/HWP_10346_HP_ZR24w_HDMI.txt new file mode 100644 index 0000000..bc2241b --- /dev/null +++ b/data/chameleon_edids/daily/HWP_10346_HP_ZR24w_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0022f06a2801010101 +11150103803623782efc81a4554d9d25 +125054210800814081809500a940b300 +d1c001010101283c80a070b023403020 +360022602100001a000000fd003b3d18 +5011000a202020202020000000fc0048 +50205a523234770a20202020000000ff +00434e5431313737354e420a2020003d \ No newline at end of file diff --git a/data/chameleon_edids/daily/HWP_10348_HP_ZR30w_DP.txt b/data/chameleon_edids/daily/HWP_10348_HP_ZR30w_DP.txt new file mode 100644 index 0000000..994bfde --- /dev/null +++ b/data/chameleon_edids/daily/HWP_10348_HP_ZR30w_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff0022f06c2801010101 +0c170104b5402878e28d85ad4f35b125 +0e505400000001010101010101010101 +010101010101e26800a0a0402e603020 +360081902100001abc1b00a050201730 +3020360081902100001a000000fc0048 +50205a523330770a20202020000000ff +00434e34333132303344420a20200067 \ No newline at end of file diff --git a/data/chameleon_edids/daily/HWP_10580_HP_ZR2440w_DP.txt b/data/chameleon_edids/daily/HWP_10580_HP_ZR2440w_DP.txt new file mode 100644 index 0000000..f4e006d --- /dev/null +++ b/data/chameleon_edids/daily/HWP_10580_HP_ZR2440w_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0022f0542900000000 +14170104a534207823fc81a4554d9d25 +125054210800d1c081c0814081809500 +a940b3000101283c80a070b023403020 +360006442100001a000000fd00183c18 +5011000a202020202020000000fc0048 +50205a5232343430770a2020000000ff +00434e3433323030314c500a20200156 +020319c14c901f051404130302070612 +012309070783010000023a801871382d +40582c450006442100001e023a80d072 +382d40102c458006442100001e011d00 +7251d01e206e28550006442100001e01 +1d00bc52d01e20b82855400644210000 +1e8c0ad08a20e02d10103e9600064421 +0000180000000000000000000000007b \ No newline at end of file diff --git a/data/chameleon_edids/daily/HWP_10581_HP_ZR2440w_HDMI.txt b/data/chameleon_edids/daily/HWP_10581_HP_ZR2440w_HDMI.txt new file mode 100644 index 0000000..3b34e3e --- /dev/null +++ b/data/chameleon_edids/daily/HWP_10581_HP_ZR2440w_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0022f0552901010101 +0c170103803420782afc81a4554d9d25 +125054210800d1c081c0814081809500 +a940b3000101283c80a070b023403020 +360006442100001a000000fd00183c18 +5011000a202020202020000000fc0048 +50205a5232343430770a2020000000ff +00434e34333132303836580a2020007f \ No newline at end of file diff --git a/data/chameleon_edids/daily/HWP_10582_HP_ZR2440w_HDMI.txt b/data/chameleon_edids/daily/HWP_10582_HP_ZR2440w_HDMI.txt new file mode 100644 index 0000000..7ec1dcb --- /dev/null +++ b/data/chameleon_edids/daily/HWP_10582_HP_ZR2440w_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0022f0562901010101 +0b170103803420782afc81a4554d9d25 +125054210800d1c081c0814081809500 +a940b3000101283c80a070b023403020 +360006442100001a000000fd00183c18 +5011000a202020202020000000fc0048 +50205a5232343430770a2020000000ff +00434e34333131315042560a2020015c +02031ff14c901f051404130302070612 +0165030c001000230907078301000002 +3a801871382d40582c45000644210000 +1e023a80d072382d40102c4580064421 +00001e011d007251d01e206e28550006 +442100001e011d00bc52d01e20b82855 +4006442100001e8c0ad08a20e02d1010 +3e9600064421000018000000000000c1 \ No newline at end of file diff --git a/data/chameleon_edids/daily/HWP_12441_HP_Z30i_DP.txt b/data/chameleon_edids/daily/HWP_12441_HP_Z30i_DP.txt new file mode 100644 index 0000000..05dff0e --- /dev/null +++ b/data/chameleon_edids/daily/HWP_12441_HP_Z30i_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0022f0993000000000 +06180104a54028783a1df5ae4f35b325 +0d5054a10800d100b30095008100a940 +8180d1c081c0e26800a0a0402e603020 +360081902100001a000000fd00324618 +621b000a202020202020000000fc0048 +50205a3330690a2020202020000000ff +00434e34343036304743560a20200142 +020316f149900403021f131211012309 +070783010000023a801871382d40582c +450081902100001e023a80d072382d40 +102c458081902100001e011d007251d0 +1e206e28550081902100001e011d00bc +52d01e20b828554081902100001e8c0a +d08a20e02d10103e9600819021000018 +00000000000000000000000000000083 \ No newline at end of file diff --git a/data/chameleon_edids/daily/HWP_12442_HP_Z30i_HDMI.txt b/data/chameleon_edids/daily/HWP_12442_HP_Z30i_HDMI.txt new file mode 100644 index 0000000..52d43b2 --- /dev/null +++ b/data/chameleon_edids/daily/HWP_12442_HP_Z30i_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0022f09a3001010101 +06180103804028782a1df5ae4f35b325 +0d5054a10800d100b30095008100a940 +8180d1c081c0e26800a0a0402e603020 +360081902100001a000000fd00324618 +621b000a202020202020000000fc0048 +50205a3330690a2020202020000000ff +00434e34343036304742530a20200078 \ No newline at end of file diff --git a/data/chameleon_edids/daily/HWP_12446_HP_Z24i_DP.txt b/data/chameleon_edids/daily/HWP_12446_HP_Z24i_DP.txt new file mode 100644 index 0000000..1d6082b --- /dev/null +++ b/data/chameleon_edids/daily/HWP_12446_HP_Z24i_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff0022f09e3000000000 +15180104a5342078264ca5a7554da226 +105054a10800b30095008100a9408180 +d1c081c00101283c80a070b023403020 +360006442100001a000000fd00324c18 +5e11000a202020202020000000fc0048 +50205a3234690a2020202020000000ff +00434e343432313050334b0a2020006f \ No newline at end of file diff --git a/data/chameleon_edids/daily/HWP_12447_HP_Z24i_HDMI.txt b/data/chameleon_edids/daily/HWP_12447_HP_Z24i_HDMI.txt new file mode 100644 index 0000000..f17497b --- /dev/null +++ b/data/chameleon_edids/daily/HWP_12447_HP_Z24i_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0022f09f3001010101 +1a180103803420782e3c50a7544da226 +105054a1080081009500b3008180a940 +81c0d1c00101283c80a070b023403020 +360006442100001a000000fd00324c18 +5e11000a202020202020000000fc0048 +50205a3234690a2020202020000000ff +00434e4b343236304c47320a202000d6 \ No newline at end of file diff --git a/data/chameleon_edids/daily/HWP_9846_HP_LP2465_HDMI.txt b/data/chameleon_edids/daily/HWP_9846_HP_LP2465_HDMI.txt new file mode 100644 index 0000000..42796bd --- /dev/null +++ b/data/chameleon_edids/daily/HWP_9846_HP_LP2465_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0022f0762601010101 +1411010380342178eeef95a3544c9b26 +0f5054a56b808140818081997100a900 +a940b300d100283c80a070b023403020 +360007442100001a000000fd0030551e +5e11000a202020202020000000fc0048 +50204c50323436350a202020000000ff +00434e4b373230305739560a20200077 \ No newline at end of file diff --git a/data/chameleon_edids/daily/HWP_9976_HP_LP2475w_HDMI.txt b/data/chameleon_edids/daily/HWP_9976_HP_LP2475w_HDMI.txt new file mode 100644 index 0000000..3bfec32 --- /dev/null +++ b/data/chameleon_edids/daily/HWP_9976_HP_LP2475w_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0022f0f82601010101 +3213010380362378eece50a3544c9926 +0f5054a56b8081408180a900a940b300 +d10001010101283c80a070b023403020 +360022602100001a000000fc00485020 +4c5032343735770a2020000000fd0030 +551e5e11000a202020202020000000ff +00434e433935303059354a0a20200141 +02031e714b010204850610111314151f +230907078301000065030c001000011d +8018711c1620582c250006442100009e +011d80d0721c1620102c258006442100 +009e011d007251d01e206e2855000644 +2100001e011d00bc52d01e20b8285540 +06442100001e00000000000000000000 +000000000000000000000000000000ef \ No newline at end of file diff --git a/data/chameleon_edids/daily/IFS_65330_InFocus_3118D_HDMI.txt b/data/chameleon_edids/daily/IFS_65330_InFocus_3118D_HDMI.txt new file mode 100644 index 0000000..d4933c8 --- /dev/null +++ b/data/chameleon_edids/daily/IFS_65330_InFocus_3118D_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0024d332ff92010000 +13160103800000780a3531a15a5a9725 +1451587fef8081c08100d1c08bc09500 +9040a940b300023a801871382d40582c +450000000000001e283c80a070b02340 +3020360000000000001a000000fd0032 +551f5a11000a202020202020000000fc +00496e466f6375732033313138440126 +020324c14f0102030607111204130514 +901f2021230907078301000067030c00 +10008021011d00bc52d01e20b8285540 +00000000001e011d8018711c1620582c +250000000000009e011d80d0721c1620 +102c258000000000009e8c0ad08a20e0 +2d10103e96000000000000188c0ad090 +204031200c40550000000000001800c5 \ No newline at end of file diff --git a/data/chameleon_edids/daily/JVC_37393_ILAFPJ_--_XH2_HDMI.txt b/data/chameleon_edids/daily/JVC_37393_ILAFPJ_--_XH2_HDMI.txt new file mode 100644 index 0000000..4b1d2cc --- /dev/null +++ b/data/chameleon_edids/daily/JVC_37393_ILAFPJ_--_XH2_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff002ac3119201010101 +0011010380dd7d782a6be9ab544caf24 +0b484a21080081800101010101010101 +010101010101011d8018711c1620582c +2500a2e28400009e011d80d0721c1620 +102c2580a2e28400009e000000fc0049 +4c4146504a202d2d20584832000000fd +00173d0f440f000a202020202020017d +020319314c8594909f04130211061520 +0167030c001000382d023a801871382d +40582c4500a2e28400001e023a80d072 +382d40102c4580a2e28400001e011d00 +7251d01e206e285500a2e28400001e01 +1d00bc52d01e20b8285540a2e2840000 +1e011d803e73382d407eb84590a2e284 +00001e0000000000000000000000002f \ No newline at end of file diff --git a/data/chameleon_edids/daily/LEN_4420_LEN_LT2452pwC_DP.txt b/data/chameleon_edids/daily/LEN_4420_LEN_LT2452pwC_DP.txt new file mode 100644 index 0000000..b5b8255 --- /dev/null +++ b/data/chameleon_edids/daily/LEN_4420_LEN_LT2452pwC_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0030ae441143564254 +31160104a53420783af915a354509e27 +125054adcf0031468180818c9500950f +b300a940d1c0283c80a070b023403020 +360006442100001a1a3680a070381f40 +3020350006442100001a000000fd0032 +4b1e4b11000a202020202020000000fc +004c454e204c54323435327077430192 +020316f14901020304901112131f2309 +7f0783010000023a80d072382d40102c +9680064421000018011d007251d01e20 +6e28550006442100001e8c0ad08a20e0 +2d10103e9600064421000018023a80d0 +72382d40102c258006442100001e0000 +00000000000000000000000000000000 +0000000000000000000000000000000a \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEI_41153_PanasonicTV0_HDMI.txt b/data/chameleon_edids/daily/MEI_41153_PanasonicTV0_HDMI.txt new file mode 100644 index 0000000..c5de176 --- /dev/null +++ b/data/chameleon_edids/daily/MEI_41153_PanasonicTV0_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034a9c1a001010101 +00150103800000780adaffa3584aa229 +17494b00000001010101010101010101 +010101010101023a801871382d40582c +4500ba882100001e011d8018711c1620 +582c2500ba882100009e000000fc0050 +616e61736f6e69635456300a000000fd +00173d0f440f000a20202020202001b4 +02031f71499005200403020706012309 +070168030c001000b82d0fe3051f0101 +1d007251d01e206e285500ba88210000 +1e8c0ad08a20e02d10103e9600ba8821 +0000188c0ad08a20e02d10103e96000b +88210000188c0aa01451f01600267c43 +00ba88210000988c0aa01451f0160026 +7c43000b882100009800000000000088 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEI_41178_PanasonicTV0_HDMI.txt b/data/chameleon_edids/daily/MEI_41178_PanasonicTV0_HDMI.txt new file mode 100644 index 0000000..bd420cc --- /dev/null +++ b/data/chameleon_edids/daily/MEI_41178_PanasonicTV0_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034a9daa001010101 +00160103800000780adaffa3584aa229 +17494b00000001010101010101010101 +010101010101023a801871382d40582c +4500ba882100001e011d8018711c1620 +582c2500ba882100009e000000fc0050 +616e61736f6e69635456300a000000fd +00173d0f440f000a202020202020019a +02032a71499005200403020706012309 +070173030c001000b82d2fc007814901 +fe0608000000e3051f01011d007251d0 +1e206e285500ba882100001e8c0ad08a +20e02d10103e9600ba88210000188c0a +d08a20e02d10103e96000b8821000018 +8c0aa01451f01600267c4300ba882100 +00980000000000000000000000000086 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEI_41622_Panasonic-TV_HDMI.txt b/data/chameleon_edids/daily/MEI_41622_Panasonic-TV_HDMI.txt new file mode 100644 index 0000000..8d294f1 --- /dev/null +++ b/data/chameleon_edids/daily/MEI_41622_Panasonic-TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034a996a201010101 +00180103808048780adaffa3584aa229 +17494b21080031404540614081800101 +010101010101023a80d072382d40102c +4580ba882100001e023a801871382d40 +582c4500ba882100001e000000fc0050 +616e61736f6e69632d54560a000000fd +00173d0f440f000a202020202020015a +020322f24d9f90140520212213041203 +16072309070168030c001000b8260fe2 +004b011d80d0721c1620102c2580ba88 +2100009e011d8018711c1620582c2500 +ba882100009e011d00bc52d01e20b828 +5540ba882100001e662156aa51001e30 +468f3300ba882100001e000000000000 +000000000000000000000000000000bb \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEI_49938_Panasonic-TV_HDMI.txt b/data/chameleon_edids/daily/MEI_49938_Panasonic-TV_HDMI.txt new file mode 100644 index 0000000..6d6e853 --- /dev/null +++ b/data/chameleon_edids/daily/MEI_49938_Panasonic-TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034a912c301010101 +00150103800000780adaffa3584aa229 +17494b00000001010101010101010101 +010101010101023a80d072382d40102c +4580ba882100001e023a801871382d40 +582c4500ba882100001e000000fc0050 +616e61736f6e69632d54560a000000fd +00173d0f440f000a2020202020200141 +02032272509f90140520130412031102 +16071506012309070168030c001000b8 +2600011d80d0721c1620102c2580ba88 +2100009e011d8018711c1620582c2500 +ba882100009e011d00bc52d01e20b828 +5540ba882100001e011d007251d01e20 +6e285500ba882100001e8c0ad0902040 +31200c405500ba882100001800000019 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_12813_UL7400_DP.txt b/data/chameleon_edids/daily/MEL_12813_UL7400_DP.txt new file mode 100644 index 0000000..4fb4fee --- /dev/null +++ b/data/chameleon_edids/daily/MEL_12813_UL7400_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034ac0d32690a0000 +26160103810000780aab02a256579f23 +0e4e5ba1080071408100814081809040 +9500a940a9c0283c80a070b023403020 +360000000000001a9e20009051201f30 +4880360000000000001c000000fd0032 +780f6411000a202020202020000000fc +00554c373430300a2020202020200171 +020310004b0203111205148413101f01 +8c0ad08a20e02d10103e960000000000 +00188c0ad090204031200c4055000000 +00000018011d007251d01e206e285500 +00000000001e011d8018711c1620582c +250000000000009e023a801871382d40 +582c450000000000001e0e1f00805100 +1e304080370000000000001c00000027 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_12813_UL7400_DVI.txt b/data/chameleon_edids/daily/MEL_12813_UL7400_DVI.txt new file mode 100644 index 0000000..048bb71 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_12813_UL7400_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034ac0d329a090000 +22160103810000780aab02a256579f23 +0e4e5ba1080071408100814081809040 +9500a940a9c0283c80a070b023403020 +360000000000001a9e20009051201f30 +4880360000000000001c000000fd0032 +780f6411000a202020202020000000fc +00554c373430300a2020202020200145 +020310004b0203111205148413101f01 +8c0ad08a20e02d10103e960000000000 +00188c0ad090204031200c4055000000 +00000018011d007251d01e206e285500 +00000000001e011d8018711c1620582c +250000000000009e023a801871382d40 +582c450000000000001e0e1f00805100 +1e304080370000000000001c00000027 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18424_MDT521S_DP.txt b/data/chameleon_edids/daily/MEL_18424_MDT521S_DP.txt new file mode 100644 index 0000000..d7ccf7e --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18424_MDT521S_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034acf84701010101 +3214010380734078eab2eda454489824 +0f474aa109008180a94081c0d1009500 +010101010101023a801871382d40582c +4500808842000018000000fd0031561f +5c11000a202020202020000000fc004d +4454353231530a2020202020000000ff +00305a32303237323145570a20200086 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18424_MDT521S_DVI.txt b/data/chameleon_edids/daily/MEL_18424_MDT521S_DVI.txt new file mode 100644 index 0000000..85c6175 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18424_MDT521S_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034acf84701010101 +1415010380734078eab2eda454489824 +0f474aa109008180a94081c0d1009500 +010101010101023a801871382d40582c +4500808842000018000000fd0031561f +5c11000a202020202020000000fc004d +4454353231530a2020202020000000ff +00313532303339313045570a202000c6 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18424_MDT521S_HDMI.txt b/data/chameleon_edids/daily/MEL_18424_MDT521S_HDMI.txt new file mode 100644 index 0000000..58202d0 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18424_MDT521S_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034acf84701010101 +0e15010380734078eab2eda454489824 +0f474aa109008180a94081c0d1009500 +010101010101023a801871382d40582c +4500808842000018000000fd0031561f +5c11000a202020202020000000fc004d +4454353231530a2020202020000000ff +00313332303333353745570a202000c9 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18425_MDT521S_DP.txt b/data/chameleon_edids/daily/MEL_18425_MDT521S_DP.txt new file mode 100644 index 0000000..fbb15c4 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18425_MDT521S_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034acf947b3100000 +1815010380734078eab2eda454489824 +0f474a20000001010101010101010101 +010101010101011d8018711c1620582c +250080884200009e8c0ad08a20e02d10 +103e9600808842000018000000fd0031 +561f5c11000a202020202020000000fc +004d4454353231530a20202020200124 +02031c71488503040207010920230957 +078301000066030c002000008c0ad08a +20e02d10103e960080884200001e8c0a +a01451f01600267c4300808842000018 +011d00bc52d01e20b828554080884200 +00980000000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000d2 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18425_MDT521S_DVI.txt b/data/chameleon_edids/daily/MEL_18425_MDT521S_DVI.txt new file mode 100644 index 0000000..ef50b66 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18425_MDT521S_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034acf9475c0c0000 +0a15010380734078eab2eda454489824 +0f474a20000001010101010101010101 +010101010101011d8018711c1620582c +250080884200009e8c0ad08a20e02d10 +103e9600808842000018000000fd0031 +561f5c11000a202020202020000000fc +004d4454353231530a2020202020018d +02031c71488503040207010920230957 +078301000066030c002000008c0ad08a +20e02d10103e960080884200001e8c0a +a01451f01600267c4300808842000018 +011d00bc52d01e20b828554080884200 +00980000000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000d2 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18426_MDT521S_HDMI.txt b/data/chameleon_edids/daily/MEL_18426_MDT521S_HDMI.txt new file mode 100644 index 0000000..94ba5a1 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18426_MDT521S_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034acfa4701010101 +0e15010380734078eab2eda454489824 +0f474aa109008180a94081c0d1009500 +010101010101023a801871382d40582c +4500808842000018000000fd0031561f +5c11000a202020202020000000fc004d +4454353231530a2020202020000000ff +00313332303335383045570a202001c8 +02031c71488503040207060110230957 +078301000066030c001000008c0ad08a +20e02d10103e960080884200001e8c0a +a01451f01600267c4300808842000018 +011d00bc52d01e20b828554080884200 +00980000000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000f5 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18427_MDT521S_HDMI.txt b/data/chameleon_edids/daily/MEL_18427_MDT521S_HDMI.txt new file mode 100644 index 0000000..c0418b6 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18427_MDT521S_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034acfb47190d0000 +0e15010380734078eab2eda454489824 +0f474a20000001010101010101010101 +010101010101011d8018711c1620582c +250080884200009e8c0ad08a20e02d10 +103e9600808842000018000000fd0031 +561f5c11000a202020202020000000fc +004d4454353231530a202020202001c9 +02031e714a8503040207010906102023 +0957078301000066030c001000008c0a +d08a20e02d10103e960080884200001e +8c0aa01451f01600267c430080884200 +0018011d00bc52d01e20b82855408088 +42000098000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000c8 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18431_MDT421S_DP.txt b/data/chameleon_edids/daily/MEL_18431_MDT421S_DP.txt new file mode 100644 index 0000000..368d1e3 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18431_MDT421S_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034acff4717090000 +1a150103805d3478eab2eba454489824 +0f474aa109008180a94081c0d1000101 +010101010101023a801871382d40582c +4500a20b32000018283c80a070b02340 +30203600a20b3200001a000000fd0031 +561f5c11000a202020202020000000fc +004d4454343231530a202020202000b4 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18431_MDT421S_DVI.txt b/data/chameleon_edids/daily/MEL_18431_MDT421S_DVI.txt new file mode 100644 index 0000000..06fbcca --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18431_MDT421S_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034acff470a070000 +04150103805d3478eab2eba454489824 +0f474aa109008180a94081c0d1000101 +010101010101023a801871382d40582c +4500a20b32000018283c80a070b02340 +30203600a20b3200001a000000fd0031 +561f5c11000a202020202020000000fc +004d4454343231530a202020202000d9 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18431_MDT421S_HDMI.txt b/data/chameleon_edids/daily/MEL_18431_MDT421S_HDMI.txt new file mode 100644 index 0000000..198a970 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18431_MDT421S_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034acff4742090000 +1a150103805d3478eab2eba454489824 +0f474aa109008180a94081c0d1000101 +010101010101023a801871382d40582c +4500a20b32000018283c80a070b02340 +30203600a20b3200001a000000fd0031 +561f5c11000a202020202020000000fc +004d4454343231530a20202020200089 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18432_MDT421S_DVI.txt b/data/chameleon_edids/daily/MEL_18432_MDT421S_DVI.txt new file mode 100644 index 0000000..5196950 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18432_MDT421S_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034ac004883070000 +04150103805d3478eab2eba454489824 +0f474a20000001010101010101010101 +010101010101011d8018711c1620582c +2500a20b3200009e8c0ad08a20e02d10 +103e9600a20b32000018000000fd0031 +561f5c11000a202020202020000000fc +004d4454343231530a20202020200164 +02031c71488503040207010920230957 +078301000066030c002000008c0ad08a +20e02d10103e9600a20b3200001e8c0a +a01451f01600267c4300a20b32000018 +011d00bc52d01e20b8285540a20b3200 +00980000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000013 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18433_MDT421S_HDMI.txt b/data/chameleon_edids/daily/MEL_18433_MDT421S_HDMI.txt new file mode 100644 index 0000000..ccb38a3 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18433_MDT421S_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034ac014817090000 +1a150103805d3478eab2eba454489824 +0f474aa109008180a94081c0d1000101 +010101010101023a801871382d40582c +4500a20b32000018283c80a070b02340 +30203600a20b3200001a000000fd0031 +561f5c11000a202020202020000000fc +004d4454343231530a202020202001b0 +02031cf1488503040207060110230957 +078301000066030c001000008c0ad08a +20e02d10103e9600a20b3200001e8c0a +a01451f01600267c4300a20b32000018 +011d00bc52d01e20b8285540a20b3200 +00980000000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000b6 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18434_MDT421S_HDMI.txt b/data/chameleon_edids/daily/MEL_18434_MDT421S_HDMI.txt new file mode 100644 index 0000000..cdfdb83 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18434_MDT421S_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034ac024828070000 +04150103805d3478eab2eba454489824 +0f474a20000001010101010101010101 +010101010101011d8018711c1620582c +2500a20b3200009e8c0ad08a20e02d10 +103e9600a20b32000018000000fd0031 +561f5c11000a202020202020000000fc +004d4454343231530a202020202001bd +02031e714a8503040207010906102023 +0957078301000066030c001000008c0a +d08a20e02d10103e9600a20b3200001e +8c0aa01451f01600267c4300a20b3200 +0018011d00bc52d01e20b8285540a20b +32000098000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000009 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18435_MDT421S_DP.txt b/data/chameleon_edids/daily/MEL_18435_MDT421S_DP.txt new file mode 100644 index 0000000..097ac0e --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18435_MDT421S_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034ac034801010101 +01160104b55d3478eab2eba454489824 +0f474aa109008180a94081c0d1008bc0 +010101010101023a801871382d40582c +4500a20b32000018000000fd0031561f +5c11000a202020202020000000fc004d +4454343231530a2020202020000000ff +00323132303430363241570a20200177 +020314a166030c001000004885030402 +070601108c0ad08a20e02d10103e9600 +a20b3200001e8c0aa01451f01600267c +4300a20b32000018011d00bc52d01e20 +b8285540a20b32000098000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +0000000000000000000000000000001c \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18473_LDT422V_DVI.txt b/data/chameleon_edids/daily/MEL_18473_LDT422V_DVI.txt new file mode 100644 index 0000000..74a57a2 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18473_LDT422V_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac2948c8140000 +30160103805d3478eab2eba454489824 +0f474aa109008180a94081c0d1000101 +010101010101023a801871382d40582c +4500a20b32000018283c80a070b02340 +30203600a20b3200001a000000fd0031 +561f5c10000a202020202020000000fc +004c4454343232560a202020202000b4 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18477_MDT651S_DP.txt b/data/chameleon_edids/daily/MEL_18477_MDT651S_DP.txt new file mode 100644 index 0000000..0846f4e --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18477_MDT651S_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac2d4801010101 +24140103808e5078eae69da3544a9926 +0f474aa109008180a94081c0d1000101 +010101010101023a801871382d40582c +4500942353000018283c80a070b02340 +3020360094235300001a000000fd0031 +561f5c10000a202020202020000000fc +004d4454363531530a20202020200007 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18477_MDT651S_DVI.txt b/data/chameleon_edids/daily/MEL_18477_MDT651S_DVI.txt new file mode 100644 index 0000000..0846f4e --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18477_MDT651S_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac2d4801010101 +24140103808e5078eae69da3544a9926 +0f474aa109008180a94081c0d1000101 +010101010101023a801871382d40582c +4500942353000018283c80a070b02340 +3020360094235300001a000000fd0031 +561f5c10000a202020202020000000fc +004d4454363531530a20202020200007 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18497_MDT652S_DP.txt b/data/chameleon_edids/daily/MEL_18497_MDT652S_DP.txt new file mode 100644 index 0000000..e4f2fbd --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18497_MDT652S_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac414800000000 +2e150103808f5078eae69da3544a9926 +0f474aa109008180a94081c001018100 +950001010101023a801871382d40582c +4500942353000018283c80a070b02340 +3020360094235300001a000000fd0031 +561f5c11000a202020202020000000fc +004d4454363532530a202020202000a6 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18497_MDT652S_DVI.txt b/data/chameleon_edids/daily/MEL_18497_MDT652S_DVI.txt new file mode 100644 index 0000000..bdba87b --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18497_MDT652S_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac414800000000 +29150103808f5078eae69da3544a9926 +0f474aa109008180a94081c001018100 +950001010101023a801871382d40582c +4500942353000018283c80a070b02340 +3020360094235300001a000000fd0031 +561f5c11000a202020202020000000fc +004d4454363532530a202020202000ab \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18497_MDT652S_HDMI.txt b/data/chameleon_edids/daily/MEL_18497_MDT652S_HDMI.txt new file mode 100644 index 0000000..bdba87b --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18497_MDT652S_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac414800000000 +29150103808f5078eae69da3544a9926 +0f474aa109008180a94081c001018100 +950001010101023a801871382d40582c +4500942353000018283c80a070b02340 +3020360094235300001a000000fd0031 +561f5c11000a202020202020000000fc +004d4454363532530a202020202000ab \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18501_LDT551V_DP.txt b/data/chameleon_edids/daily/MEL_18501_LDT551V_DP.txt new file mode 100644 index 0000000..15ccf5f --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18501_LDT551V_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac4548af020000 +2215010380794478eae69da3544a9926 +0f474aa109004540614081c08bc0d1c0 +810095000101023a801871382d40582c +4500baac4200001e662150b051001b30 +40703600baac4200001e000000fd0031 +561f5c11000a202020202020000000fc +004c4454353531560a20202020200049 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18501_LDT551V_DVI.txt b/data/chameleon_edids/daily/MEL_18501_LDT551V_DVI.txt new file mode 100644 index 0000000..8cbb9a3 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18501_LDT551V_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac45484a020000 +2015010380794478eae69da3544a9926 +0f474aa109004540614081c08bc0d1c0 +810095000101023a801871382d40582c +4500baac4200001e662150b051001b30 +40703600baac4200001e000000fd0031 +561f5c11000a202020202020000000fc +004c4454353531560a202020202000b0 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18545_MDT551S_HDMI.txt b/data/chameleon_edids/daily/MEL_18545_MDT551S_HDMI.txt new file mode 100644 index 0000000..56963f7 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18545_MDT551S_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034ac7148af000000 +2b15010380794478eaf610a3554a9b25 +10484e2000004540614081c08bc0d1c0 +810095000101023a801871382d40582c +4500baac4200001e662150b051001b30 +40703600baac4200001e000000fd0031 +561f5c11000a202020202020000000fc +004d4454353531530a20202020200116 +020322f14e90201f0504020701030911 +121314230957078301000066030c0010 +0000011d007251d01e206e285500baac +4200001e8c0ad08a20e02d10103e9600 +baac42000018023a80d072382d40942c +4500baac4200001efa1c803e73382d40 +7e2c4580baac4200001a011d8018711c +1620582c2500baac4200009e0000006b \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18546_MDT551S_DP.txt b/data/chameleon_edids/daily/MEL_18546_MDT551S_DP.txt new file mode 100644 index 0000000..bf17d17 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18546_MDT551S_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac7248000a0000 +3415010380794478eaf610a3554a9b25 +10484ea109004540614081c08bc0d1c0 +810095000101023a801871382d40582c +4500baac4200001e662150b051001b30 +40703600baac4200001e000000fd0031 +561f5c11000a202020202020000000fc +004d4454353531530a20202020200028 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18546_MDT551S_DVI.txt b/data/chameleon_edids/daily/MEL_18546_MDT551S_DVI.txt new file mode 100644 index 0000000..b645d21 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18546_MDT551S_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac7248ce010000 +2c15010380794478eaf610a3554a9b25 +10484ea109004540614081c08bc0d1c0 +810095000101023a801871382d40582c +4500baac4200001e662150b051001b30 +40703600baac4200001e000000fd0031 +561f5c11000a202020202020000000fc +004d4454353531530a2020202020006b \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18546_MDT551S_HDMI.txt b/data/chameleon_edids/daily/MEL_18546_MDT551S_HDMI.txt new file mode 100644 index 0000000..0c238e1 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18546_MDT551S_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac724865010000 +2c15010380794478eaf610a3554a9b25 +10484ea109004540614081c08bc0d1c0 +810095000101023a801871382d40582c +4500baac4200001e662150b051001b30 +40703600baac4200001e000000fd0031 +561f5c11000a202020202020000000fc +004d4454353531530a202020202000d4 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18547_MDT551S_DP.txt b/data/chameleon_edids/daily/MEL_18547_MDT551S_DP.txt new file mode 100644 index 0000000..11bb4a7 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18547_MDT551S_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac73481e000000 +2b15010380794478eaf610a3554a9b25 +10484e2000004540614081c08bc0d1c0 +810095000101023a801871382d40582c +4500baac4200001e662150b051001b30 +40703600baac4200001e000000fd0031 +561f5c11000a202020202020000000fc +004d4454353531530a202020202000a6 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18547_MDT551S_DVI.txt b/data/chameleon_edids/daily/MEL_18547_MDT551S_DVI.txt new file mode 100644 index 0000000..d3191eb --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18547_MDT551S_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac7348b8010000 +0f16010380794478eaf610a3554a9b25 +10484e2000004540614081c08bc0d1c0 +810095000101023a801871382d40582c +4500baac4200001e662150b051001b30 +40703600baac4200001e000000fd0031 +561f5c11000a202020202020000000fc +004d4454353531530a20202020200026 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18589_A2129_HDMI.txt b/data/chameleon_edids/daily/MEL_18589_A2129_HDMI.txt new file mode 100644 index 0000000..c7f54cb --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18589_A2129_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034ac9d4800000000 +2d16010380794478eae3bda354529e26 +0c474a2000004540614081c08bc0d1c0 +81009500a9c0023a801871382d40582c +4500baa84200001e662150b051001b30 +40703600baa84200001e000000fd0031 +561f5c11000a202020202020000000fc +0041323132390a20202020202020011f +020322f14e90201f0504020701030911 +121314230957078301000066030c0010 +0000011d007251d01e206e285500baa8 +4200001e8c0ad08a20e02d10103e9600 +baa842000018023a80d072382d40942c +4500baa84200001efa1c803e73382d40 +7e2c4580baa84200001a011d8018711c +1620582c2500baa84200009e0000007f \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18590_A2129_DP.txt b/data/chameleon_edids/daily/MEL_18590_A2129_DP.txt new file mode 100644 index 0000000..221e5df --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18590_A2129_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac9e4800000000 +0117010380794478eae3bda354529e26 +0c474aa109004540614081c08bc0d1c0 +81009500a9c0023a801871382d40582c +4500baa84200001e662150b051001b30 +40703600baa84200001e000000fd0031 +561f5c11000a202020202020000000fc +0041323132390a2020202020202000c0 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18590_A2129_DVI.txt b/data/chameleon_edids/daily/MEL_18590_A2129_DVI.txt new file mode 100644 index 0000000..be8ccba --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18590_A2129_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac9e489f010000 +2d16010380794478eae3bda354529e26 +0c474aa109004540614081c08bc0d1c0 +81009500a9c0023a801871382d40582c +4500baa84200001e662150b051001b30 +40703600baa84200001e000000fd0031 +561f5c11000a202020202020000000fc +0041323132390a2020202020202000f5 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18590_A2129_HDMI.txt b/data/chameleon_edids/daily/MEL_18590_A2129_HDMI.txt new file mode 100644 index 0000000..e43b8c1 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18590_A2129_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034ac9e4850010000 +2d16010380794478eae3bda354529e26 +0c474aa109004540614081c08bc0d1c0 +81009500a9c0023a801871382d40582c +4500baa84200001e662150b051001b30 +40703600baa84200001e000000fd0031 +561f5c11000a202020202020000000fc +0041323132390a202020202020200044 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18596_A2129_HDMI.txt b/data/chameleon_edids/daily/MEL_18596_A2129_HDMI.txt new file mode 100644 index 0000000..c220b78 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18596_A2129_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0034aca44800000000 +0917010380794478eae3bda354529e26 +0c474a2000004540614081c08bc0d1c0 +81009500a9c0023a801871382d40582c +4500baa84200001e662150b051001b30 +40703600baa84200001e000000fd0031 +561f5c11000a202020202020000000fc +0041323132390a20202020202020013b +020322f14e90201f0504020701030911 +121314230957078301000066030c0020 +0000011d007251d01e206e285500baa8 +4200001e8c0ad08a20e02d10103e9600 +baa842000018023a80d072382d40942c +4500baa84200001efa1c803e73382d40 +7e2c4580baa84200001a011d8018711c +1620582c2500baa84200009e0000006f \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18599_A3112_DP.txt b/data/chameleon_edids/daily/MEL_18599_A3112_DP.txt new file mode 100644 index 0000000..39c9811 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18599_A3112_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034aca74817040000 +1b170103809a5778eafb34a55851a428 +0f5155a109004540614081c08bc0d1c0 +81009500a9c0023a801871382d40582c +450003626300001e662150b051001b30 +4070360003626300001e000000fd0031 +561f5c11000a202020202020000000fc +0041333131320a202020202020200059 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18599_A3112_DVI.txt b/data/chameleon_edids/daily/MEL_18599_A3112_DVI.txt new file mode 100644 index 0000000..f558a82 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18599_A3112_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034aca74818040000 +1b170103809a5778eafb34a55851a428 +0f5155a109004540614081c08bc0d1c0 +81009500a9c0023a801871382d40582c +450003626300001e662150b051001b30 +4070360003626300001e000000fd0031 +561f5c11000a202020202020000000fc +0041333131320a202020202020200058 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18600_A3112_DP.txt b/data/chameleon_edids/daily/MEL_18600_A3112_DP.txt new file mode 100644 index 0000000..ef115fa --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18600_A3112_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034aca84829010000 +02170103809a5778eafb34a55851a428 +0f51552000004540614081c08bc0d1c0 +81009500a9c0023a801871382d40582c +450003626300001e662150b051001b30 +4070360003626300001e000000fd0031 +561f5c11000a202020202020000000fc +0041333131320a2020202020202000ec \ No newline at end of file diff --git a/data/chameleon_edids/daily/MEL_18600_A3112_DVI.txt b/data/chameleon_edids/daily/MEL_18600_A3112_DVI.txt new file mode 100644 index 0000000..54e7a56 --- /dev/null +++ b/data/chameleon_edids/daily/MEL_18600_A3112_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff0034aca8482a010000 +02170103809a5778eafb34a55851a428 +0f51552000004540614081c08bc0d1c0 +81009500a9c0023a801871382d40582c +450003626300001e662150b051001b30 +4070360003626300001e000000fd0031 +561f5c11000a202020202020000000fc +0041333131320a2020202020202000eb \ No newline at end of file diff --git a/data/chameleon_edids/daily/MST_48_TV_MONITOR_HDMI.txt b/data/chameleon_edids/daily/MST_48_TV_MONITOR_HDMI.txt new file mode 100644 index 0000000..f890b4a --- /dev/null +++ b/data/chameleon_edids/daily/MST_48_TV_MONITOR_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff003674300001000000 +0a160103807341780acf74a3574cb023 +09484c21080081804540614095000101 +010101010101023a801871382d40582c +4500c48e2100001e662150b051001b30 +40703600c48e2100001e000000fc0054 +565f4d4f4e49544f520a2020000000fd +00324b1e5017000a202020202020014c +02032cf24d010304050790121314169f +202226090707111750830100006e030c +002000b82d20c004014100008c0ad08a +20e02d10103e9600c48e210000188c0a +d090204031200c405500c48e21000018 +011d00bc52d01e20b8285540c48e2100 +001e011d80d0721c1620102c2580c48e +2100009e000000000000000000000008 \ No newline at end of file diff --git a/data/chameleon_edids/daily/MTK_1_MTK_LCDTV_HDMI.txt b/data/chameleon_edids/daily/MTK_1_MTK_LCDTV_HDMI.txt new file mode 100644 index 0000000..bb8369c --- /dev/null +++ b/data/chameleon_edids/daily/MTK_1_MTK_LCDTV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00368b010000000000 +010f0103803c22780a0dc9a057479827 +12484c20010001010101010101010101 +010101010101011d007251d01e206e28 +5500c48e2100001e011d8018711c1620 +582c2500c48e2100009e000000fc004d +544b204c434454560a202020000000fd +00314c0f500e000a20202020202001e7 +02031c74498405131401021106152309 +57038301000065030c001000011d00bc +52d01e20b8285540c48e2100001e011d +80d0721c1620102c2580c48e2100009e +8c0ad08a20e02d10103e9600138e2100 +00188c0ad090204031200c405500138e +21000018000000000000000000000000 +00000000000000000000000000000044 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26504_P461_DVI.txt b/data/chameleon_edids/daily/NEC_26504_P461_DVI.txt new file mode 100644 index 0000000..5ef63ff --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26504_P461_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3886701010101 +1115010380663978eaf80da355489b25 +0f474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +4500fa3d3200001e000000fd0030551c +5c11000a202020202020000000fc0050 +3436310a2020202020202020000000ff +0031343130373936374e410a2020013d +02010400023a801871382d40582c4500 +fa3d3200001e023a80d072382d40102c +4580fa3d3200001e011d8018711c1620 +582c2500fa3d3200009e011d80d0721c +1620102c2580fa3d3200009e011d0072 +51d01e206e285500fa3d3200001e011d +00bc52d01e20b8285540fa3d3200001e +000000000000000000000000000000ba \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26505_P461_HDMI.txt b/data/chameleon_edids/daily/NEC_26505_P461_HDMI.txt new file mode 100644 index 0000000..2d4a90e --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26505_P461_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3896700000000 +111501038066397832fa0da355489b25 +0f474a20000001010101010101010101 +010101010101011d8018711c1620582c +2500fa3d3200009e011d80d0721c1620 +102c2580fa3d3200009e000000fd0031 +3d1a440f000a202020202020000000fc +00503436310a2020202020202020019a +02031ef14b851404130312101f202122 +230907078301000065030c001000011d +007251d01e206e285500fa3d3200001e +011d00bc52d01e20b8285540fa3d3200 +001e8c0ad08a20e02d10103e9600fa3d +320000188c0ad090204031200c405500 +fa3d3200001800000000000000000000 +00000000000000000000000000000016 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26511_P521_DVI.txt b/data/chameleon_edids/daily/NEC_26511_P521_DVI.txt new file mode 100644 index 0000000..b40a949 --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26511_P521_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a38f6701010101 +1c14010380734178eab2eda454489824 +0f474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +450080884200001e000000fd0030551c +5c11000a202020202020000000fc0050 +3532310a2020202020202020000000ff +0030373030323330324e410a202001b8 +02010400023a801871382d40582c4500 +80884200001e023a80d072382d40102c +458080884200001e011d8018711c1620 +582c250080884200009e011d80d0721c +1620102c258080884200009e011d0072 +51d01e206e28550080884200001e011d +00bc52d01e20b828554080884200001e +00000000000000000000000000000074 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26515_P551_DP.txt b/data/chameleon_edids/daily/NEC_26515_P551_DP.txt new file mode 100644 index 0000000..cdb1ab0 --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26515_P551_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3936701010101 +0315010380794478ea69ada454499b25 +0f474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +4500b9a84200001e000000fd0030551c +5c11000a202020202020000000fc0050 +3535310a2020202020202020000000ff +0031313030323238354e410a202001e6 +02010400023a801871382d40582c4500 +b9a84200001e023a80d072382d40102c +4580b9a84200001e011d8018711c1620 +582c2500b9a84200009e011d80d0721c +1620102c2580b9a84200009e011d0072 +51d01e206e285500b9a84200001e011d +00bc52d01e20b8285540b9a84200001e +0000000000000000000000000000005e \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26515_P551_DVI.txt b/data/chameleon_edids/daily/NEC_26515_P551_DVI.txt new file mode 100644 index 0000000..bcaa42c --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26515_P551_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3936701010101 +2f14010380794478ea69ada454499b25 +0f474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +4500b9a84200001e000000fd0030551c +5c11000a202020202020000000fc0050 +3535310a2020202020202020000000ff +0030593030313431334e410a2020019c +02010400023a801871382d40582c4500 +b9a84200001e023a80d072382d40102c +4580b9a84200001e011d8018711c1620 +582c2500b9a84200009e011d80d0721c +1620102c2580b9a84200009e011d0072 +51d01e206e285500b9a84200001e011d +00bc52d01e20b8285540b9a84200001e +0000000000000000000000000000005e \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26519_P701_DP.txt b/data/chameleon_edids/daily/NEC_26519_P701_DP.txt new file mode 100644 index 0000000..71653a1 --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26519_P701_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3976701010101 +0c150103809b5778ea8d1da756459c25 +0f474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +45000d686300001e000000fd0030551c +5c11000a202020202020000000fc0050 +3730310a2020202020202020000000ff +003134303032353038524120202001c1 +02010400023a801871382d40582c4500 +0d686300001e023a80d072382d40102c +45800d686300001e011d8018711c1620 +582c25000d686300009e011d80d0721c +1620102c25800d686300009e011d0072 +51d01e206e2855000d686300001e011d +00bc52d01e20b82855400d686300001e +00000000000000000000000000000020 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26519_P701_DVI.txt b/data/chameleon_edids/daily/NEC_26519_P701_DVI.txt new file mode 100644 index 0000000..291125f --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26519_P701_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3976701010101 +0c150103809b5778ea8d1da756459c25 +0f474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +45000d686300001e000000fd0030551c +5c11000a202020202020000000fc0050 +3730310a2020202020202020000000ff +003134303032343937524120202001ba +02010400023a801871382d40582c4500 +0d686300001e023a80d072382d40102c +45800d686300001e011d8018711c1620 +582c25000d686300009e011d80d0721c +1620102c25800d686300009e011d0072 +51d01e206e2855000d686300001e011d +00bc52d01e20b82855400d686300001e +00000000000000000000000000000020 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26666_P402_HDMI.txt b/data/chameleon_edids/daily/NEC_26666_P402_HDMI.txt new file mode 100644 index 0000000..9c3fd32 --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26666_P402_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a32a6801010101 +2c17010380593278ea1aada455499b25 +0f474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +450075f23100001e000000fd0030551c +5c11000a202020202020000000fc0050 +3430320a2020202020202020000000ff +0033583231313132354e570a20200179 +020320f14d900504130312141f202122 +0716230907078301000065030c001000 +0e1f008051001e304080370075f23100 +001c662150b051001b304070360075f2 +3100001e662156aa51001e30468f3300 +75f23100001e011d8018711c1620582c +250075f23100009e011d80d0721c1620 +102c258075f23100009e0000000000ac \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26669_P462_DVI.txt b/data/chameleon_edids/daily/NEC_26669_P462_DVI.txt new file mode 100644 index 0000000..64ed644 --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26669_P462_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a32d6801010101 +2215010380663978eaee9da3544c9926 +0f474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +4500fa3c3200001e000000fd0030551c +5c11000a202020202020000000fc0050 +3436320a2020202020202020000000ff +0031383030323335334e410a2020010b +020104000e1f008051001e3040803700 +fa3c3200001c662150b051001b304070 +3600fa3c3200001e662156aa51001e30 +468f3300fa3c3200001e023a80187138 +2d40582c4500fa3c3200001e023a80d0 +72382d40102c4580fa3c3200001e011d +8018711c1620582c2500fa3c3200009e +00000000000000000000000000000064 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26771_P702_DP.txt b/data/chameleon_edids/daily/NEC_26771_P702_DP.txt new file mode 100644 index 0000000..e26d5fa --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26771_P702_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3936801010101 +15160103809b5778ea8d1da756459c25 +0f474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +45000d676300001e000000fd0030551c +5c11000a202020202020000000fc0050 +3730320a2020202020202020000000ff +003235303030343038525720202001a5 +020104000e1f008051001e3040803700 +0d676300001c662150b051001b304070 +36000d676300001e662156aa51001e30 +468f33000d676300001e023a80187138 +2d40582c45000d676300001e023a80d0 +72382d40102c45800d676300001e011d +8018711c1620582c25000d676300009e +000000000000000000000000000000ca \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26771_P702_DVI.txt b/data/chameleon_edids/daily/NEC_26771_P702_DVI.txt new file mode 100644 index 0000000..0093bc8 --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26771_P702_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3936801010101 +14160103809b5778ea8d1da756459c25 +0f474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +45000d676300001e000000fd0030551c +5c11000a202020202020000000fc0050 +3730320a2020202020202020000000ff +003235303030333538525720202001a2 +020104000e1f008051001e3040803700 +0d676300001c662150b051001b304070 +36000d676300001e662156aa51001e30 +468f33000d676300001e023a80187138 +2d40582c45000d676300001e023a80d0 +72382d40102c45800d676300001e011d +8018711c1620582c25000d676300009e +000000000000000000000000000000ca \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26795_V423_DVI.txt b/data/chameleon_edids/daily/NEC_26795_V423_DVI.txt new file mode 100644 index 0000000..8c5133d --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26795_V423_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3ab6801010101 +1b170103805d3478eaef4ba5554d9c27 +0e474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +4500a20b3200001e000000fd0030551c +5c11000a202020202020000000fc0056 +3432330a2020202020202020000000ff +0033373030353133344e420a2020016e +020104000e1f008051001e3040803700 +a20b3200001c662150b051001b304070 +3600a20b3200001e662156aa51001e30 +468f3300a20b3200001e023a80187138 +2d40582c4500a20b3200001e023a80d0 +72382d40102c4580a20b3200001e011d +8018711c1620582c2500a20b3200009e +0000000000000000000000000000009a \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26796_V423_HDMI.txt b/data/chameleon_edids/daily/NEC_26796_V423_HDMI.txt new file mode 100644 index 0000000..a60b457 --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26796_V423_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3ac6801010101 +0e180103805d3478eaef4ba5554d9c27 +0e474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +4500a20b3200001e000000fd0030551c +5c11000a202020202020000000fc0056 +3432330a2020202020202020000000ff +0034333031353033314e420a2020017f +020320f14d900504130312141f202122 +0716230907078301000065030c001000 +0e1f008051001e3040803700a20b3200 +001c662150b051001b3040703600a20b +3200001e662156aa51001e30468f3300 +a20b3200001e011d8018711c1620582c +2500a20b3200009e011d80d0721c1620 +102c2580a20b3200009e000000000049 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26799_V463_DVI.txt b/data/chameleon_edids/daily/NEC_26799_V463_DVI.txt new file mode 100644 index 0000000..a05dc9a --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26799_V463_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3af6801010101 +1318010380663978eae3bda354529e26 +0c474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +4500fa3c3200001e000000fd0030551c +5c11000a202020202020000000fc0056 +3436330a2020202020202020000000ff +0034353032333137354e410a2020016c +020104000e1f008051001e3040803700 +fa3c3200001c662150b051001b304070 +3600fa3c3200001e662156aa51001e30 +468f3300fa3c3200001e023a80187138 +2d40582c4500fa3c3200001e023a80d0 +72382d40102c4580fa3c3200001e011d +8018711c1620582c2500fa3c3200009e +00000000000000000000000000000064 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26800_V463_HDMI.txt b/data/chameleon_edids/daily/NEC_26800_V463_HDMI.txt new file mode 100644 index 0000000..45f95b6 --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26800_V463_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3b06801010101 +0718010380663978eae3bda354529e26 +0c474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +4500fa3c3200001e000000fd0030551c +5c11000a202020202020000000fc0056 +3436330a2020202020202020000000ff +0034323030383538324e420a20200174 +020320f14d900504130312141f202122 +0716230907078301000065030c001000 +0e1f008051001e3040803700fa3c3200 +001c662150b051001b3040703600fa3c +3200001e662156aa51001e30468f3300 +fa3c3200001e011d8018711c1620582c +2500fa3c3200009e011d80d0721c1620 +102c2580fa3c3200009e00000000009c \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26803_V552_DP.txt b/data/chameleon_edids/daily/NEC_26803_V552_DP.txt new file mode 100644 index 0000000..3bc2de2 --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26803_V552_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3b36801010101 +2018010380794478eae3bda354529e26 +0c474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +4500b9a84200001e000000fd0030551c +5c11000a202020202020000000fc0056 +3535320a2020202020202020000000ff +0034383030383537304e410a202001fe +020104000e1f008051001e3040803700 +b9a84200001c662150b051001b304070 +3600b9a84200001e662156aa51001e30 +468f3300b9a84200001e023a80187138 +2d40582c4500b9a84200001e023a80d0 +72382d40102c4580b9a84200001e011d +8018711c1620582c2500b9a84200009e +00000000000000000000000000000002 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26803_V552_DVI.txt b/data/chameleon_edids/daily/NEC_26803_V552_DVI.txt new file mode 100644 index 0000000..f001142 --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26803_V552_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3b36801010101 +2018010380794478eae3bda354529e26 +0c474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +4500b9a84200001e000000fd0030551c +5c11000a202020202020000000fc0056 +3535320a2020202020202020000000ff +0034383030383536364e410a202001f9 +020104000e1f008051001e3040803700 +b9a84200001c662150b051001b304070 +3600b9a84200001e662156aa51001e30 +468f3300b9a84200001e023a80187138 +2d40582c4500b9a84200001e023a80d0 +72382d40102c4580b9a84200001e011d +8018711c1620582c2500b9a84200009e +00000000000000000000000000000002 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26804_V552_HDMI.txt b/data/chameleon_edids/daily/NEC_26804_V552_HDMI.txt new file mode 100644 index 0000000..439657e --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26804_V552_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3b46801010101 +0d17010380794478eae3bda354529e26 +0c474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +4500b9a84200001e000000fd0030551c +5c11000a202020202020000000fc0056 +3535320a2020202020202020000000ff +0033333030303737374e420a20200115 +020320f14d900504130312141f202122 +0716230907078301000065030c001000 +0e1f008051001e3040803700b9a84200 +001c662150b051001b3040703600b9a8 +4200001e662156aa51001e30468f3300 +b9a84200001e011d8018711c1620582c +2500b9a84200009e011d80d0721c1620 +102c2580b9a84200009e000000000075 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26807_V652_DP.txt b/data/chameleon_edids/daily/NEC_26807_V652_DP.txt new file mode 100644 index 0000000..efe0aef --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26807_V652_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3b76801010101 +0f180103808f5078ea639da154529e26 +0a474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +450094235300001e000000fd0030551c +5c11000a202020202020000000fc0056 +3635320a2020202020202020000000ff +0034343030333739354e410a20200125 +020104000e1f008051001e3040803700 +94235300001c662150b051001b304070 +360094235300001e662156aa51001e30 +468f330094235300001e023a80187138 +2d40582c450094235300001e023a80d0 +72382d40102c458094235300001e011d +8018711c1620582c250094235300009e +00000000000000000000000000000098 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26807_V652_DVI.txt b/data/chameleon_edids/daily/NEC_26807_V652_DVI.txt new file mode 100644 index 0000000..fc4ee93 --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26807_V652_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3b76801010101 +07180103808f5078ea639da154529e26 +0a474aa1090081c08100814081809040 +9500a940b300023a801871382d40582c +450094235300001e000000fd0030551c +5c11000a202020202020000000fc0056 +3635320a2020202020202020000000ff +0034323030333638334e410a20200133 +020104000e1f008051001e3040803700 +94235300001c662150b051001b304070 +360094235300001e662156aa51001e30 +468f330094235300001e023a80187138 +2d40582c450094235300001e023a80d0 +72382d40102c458094235300001e011d +8018711c1620582c250094235300009e +00000000000000000000000000000098 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26811_V801_DP.txt b/data/chameleon_edids/daily/NEC_26811_V801_DP.txt new file mode 100644 index 0000000..d728e3f --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26811_V801_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3bb6801010101 +3417010380b16478eace67a3594c9f26 +0e4849a1090081c08100814081809040 +9500a940b300023a801871382d40582c +4500ebe46300001e000000fd0030551c +5c11000a202020202020000000fc0056 +3830310a2020202020202020000000ff +00335a3030303533334e570a2020013a +020104000e1f008051001e3040803700 +ebe46300001c662150b051001b304070 +3600ebe46300001e662156aa51001e30 +468f3300ebe46300001e023a80187138 +2d40582c4500ebe46300001e023a80d0 +72382d40102c4580ebe46300001e011d +8018711c1620582c2500ebe46300009e +000000000000000000000000000000a8 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26811_V801_DVI.txt b/data/chameleon_edids/daily/NEC_26811_V801_DVI.txt new file mode 100644 index 0000000..e2738e6 --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26811_V801_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3bb6801010101 +2117010380b16478eace67a3594c9f26 +0e4849a1090081c08100814081809040 +9500a940b300023a801871382d40582c +4500ebe46300001e000000fd0030551c +5c11000a202020202020000000fc0056 +3830310a2020202020202020000000ff +0033383030303130324e570a20200177 +020104000e1f008051001e3040803700 +ebe46300001c662150b051001b304070 +3600ebe46300001e662156aa51001e30 +468f3300ebe46300001e023a80187138 +2d40582c4500ebe46300001e023a80d0 +72382d40102c4580ebe46300001e011d +8018711c1620582c2500ebe46300009e +000000000000000000000000000000a8 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_26941_P703_DVI.txt b/data/chameleon_edids/daily/NEC_26941_P703_DVI.txt new file mode 100644 index 0000000..7cd4cbc --- /dev/null +++ b/data/chameleon_edids/daily/NEC_26941_P703_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a33d6901010101 +1d180103809a5778eacdd9a35a4e9f26 +114a4da1090081c08100814081809040 +9500a940b300023a801871382d40582c +450003626300001e000000fd0030551c +5c11000a202020202020000000fc0050 +3730330a2020202020202020000000ff +0034373030303733374e420a20200114 +020104000e1f008051001e3040803700 +03626300001c662150b051001b304070 +360003626300001e662156aa51001e30 +468f330003626300001e023a80187138 +2d40582c450003626300001e023a80d0 +72382d40102c458003626300001e011d +8018711c1620582c250003626300009e +00000000000000000000000000000024 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_31161_NP-PA500U_DVI.txt b/data/chameleon_edids/daily/NEC_31161_NP-PA500U_DVI.txt new file mode 100644 index 0000000..b599b76 --- /dev/null +++ b/data/chameleon_edids/daily/NEC_31161_NP-PA500U_DVI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3b97901010101 +11180103800000782ad466a359599c23 +0b505ea128809040a94081808bc0a9c0 +81009500b300283c80a070b023403020 +360000000000001a000000fd0030551f +5c11000a202020202020000000fc004e +502d5041353030550a202020000000ff +005534343030303233370a20202001a1 +020330f156010203111204130514901f +2221200e0f1d1e060715162309070783 +0100006c030c001000382dc01a002700 +0e1f008051001e304080370000000000 +001c662156aa51001e30468f33000000 +0000001e283c80a070b0234030203600 +00000000001a023a801871382d40582c +450000000000001e00000000000000b7 \ No newline at end of file diff --git a/data/chameleon_edids/daily/NEC_31178_NP-P420X_HDMI.txt b/data/chameleon_edids/daily/NEC_31178_NP-P420X_HDMI.txt new file mode 100644 index 0000000..c740c48 --- /dev/null +++ b/data/chameleon_edids/daily/NEC_31178_NP-P420X_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0038a3ca7901010101 +1e160103800000782a2a02a9545d9d25 +0e525d2fcf00904081808bc0a9c0d1c0 +81009500b30064190040410026301888 +3600000000000018000000fd0030551f +5c10000a202020202020000000fc004e +502d50343230580a20202020000000ff +004732373030303236390a20202001b5 +02031b7148031284051314101f230907 +078300000065030c0010008c0ad08a20 +e02d10103e96001009000000188c0ad0 +90204031200c40550010090000001801 +1d007251d01e206e2855001009000000 +1e011d8018711c1620582c2500100900 +00009e011d00bc52d01e20b828554010 +090000001e0000000000000000000067 \ No newline at end of file diff --git a/data/chameleon_edids/daily/PHL_0_PHILIPS_HDMI.txt b/data/chameleon_edids/daily/PHL_0_PHILIPS_HDMI.txt new file mode 100644 index 0000000..28295c3 --- /dev/null +++ b/data/chameleon_edids/daily/PHL_0_PHILIPS_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00410c000000000000 +00150103800000780a2fcda354459724 +11464721080001010101010101010101 +010101010101023a801871382d40582c +450010090000001e8c0ad08a20e02d10 +103e9600100900000018000000fc0050 +48494c4950530a2020202020000000fd +00173f0f450f000a2020202020200168 +020320704a1003202204020506070126 +0907071507508301000065030c001000 +011d803e73382d407e2c458010090000 +001e011d801871382d40582c45001009 +0000001e011d007251d01e206e285500 +10090000001e662150b051001b304070 +360010090000001ea91a00a050001630 +3020370005030000001a0000000000a9 \ No newline at end of file diff --git a/data/chameleon_edids/daily/PHL_0_Philips_HDMI.txt b/data/chameleon_edids/daily/PHL_0_Philips_HDMI.txt new file mode 100644 index 0000000..8f2275f --- /dev/null +++ b/data/chameleon_edids/daily/PHL_0_Philips_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00410c000001010101 +01140103804627780a6e5ba4554a9b25 +0e474a2dce00d1c03140454061408180 +010101010101023a801871382d40582c +4500bc862100001e662150b051001b30 +40703600bc862100001e000000fd0038 +4b0e4610000a202020202020000000fc +005068696c6970730a202020202001ac +02032771521413121116150504030207 +06011f90202122230907078301000067 +030c001000182d011d80d0721c162010 +2c2580bc862100009e011d8018711c16 +20582c2500bc862100009e011d00bc52 +d01e20b8285540bc862100001e011d00 +7251d01e206e285500bc862100001e00 +00000000000000000000000000000023 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_1629_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_1629_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..31b73a2 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_1629_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d5d0600000000 +2e130103801009780aee91a3544c9926 +0f5054bdef80714f8100814081809500 +950fb300a940023a801871382d40582c +4500a05a0000001e662150b051001b30 +40703600a05a0000001e000000fd0018 +4b1a5117000a202020202020000000fc +0053414d53554e470a20202020200135 +02031ef1469004050320222309070783 +010000e2000f67030c002000b82d011d +007251d01e206e285500a05a0000001e +011d8018711c1620582c2500a05a0000 +009e8c0ad08a20e02d10103e9600a05a +00000018000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000cf \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_1639_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_1639_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..3d7ed37 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_1639_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d670601000000 +2f130103801009780aee91a3544c9926 +0f5054bdef80714f8100814081809500 +950fb300a940023a801871382d40582c +4500a05a0000001e662150b051001b30 +40703600a05a0000001e000000fd0018 +4b1a5117000a202020202020000000fc +0053414d53554e470a20202020200129 +020322f1469004050320222309070783 +010000e2000fe305030167030c004000 +b82d011d007251d01e206e285500a05a +0000001e011d8018711c1620582c2500 +a05a0000009e8c0ad08a20e02d10103e +9600a05a000000180000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000bf \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_1882_SM460DX3_DVI.txt b/data/chameleon_edids/daily/SAM_1882_SM460DX3_DVI.txt new file mode 100644 index 0000000..32bb0c0 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_1882_SM460DX3_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff004c2d5a075a42535a +2715010380663a782ae21da354499925 +0f474abfef8081808140714fb3008100 +950001010101023a801871382d40582c +4500fa3c3200001e662156aa51001e30 +468f3300fa3c3200001e000000fd0038 +551e5110000a202020202020000000fc +00534d3436304458330a202020200078 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_1984_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_1984_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..3648ada --- /dev/null +++ b/data/chameleon_edids/daily/SAM_1984_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2dc00700000000 +2e140103805932780aee91a3544c9926 +0f5054bdef80714f8100814081809500 +950fb300a940023a801871382d40582c +4500a05a0000001e662150b051001b30 +40703600a05a0000001e000000fd0018 +4b1a5117000a202020202020000000fc +0053414d53554e470a2020202020015e +020323f14b901f041305140312202122 +2309070783010000e2000f67030c0040 +00b82d011d007251d01e206e285500a0 +5a0000001e011d00bc52d01e20b82855 +40a05a0000001e011d8018711c162058 +2c2500a05a0000009e011d80d0721c16 +20102c2580a05a0000009e0000000000 +000000000000000000000000000000dd \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_1986_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_1986_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..315e934 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_1986_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2dc20701000000 +2e140103807944780aee91a3544c9926 +0f5054bdef80714f8100814081809500 +950fb300a940023a801871382d40582c +4500a05a0000001e662150b051001b30 +40703600a05a0000001e000000fd0018 +4b1a5117000a202020202020000000fc +0053414d53554e470a20202020200129 +02032bf1469004050320222309070783 +010000e2000fe305030170030c001000 +b82d20d006014000372050011d007251 +d01e206e285500a05a0000001e011d80 +18711c1620582c2500a05a0000009e8c +0ad08a20e02d10103e9600a05a000000 +18000000000000000000000000000000 +000000000000000000000000000000ff \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_1987_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_1987_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..c51f0b5 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_1987_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2dc30701000000 +2e140103801009780aee91a3544c9926 +0f5054bdef80714f8100814081809500 +950fb300a940023a801871382d40582c +4500a05a0000001e662150b051001b30 +40703600a05a0000001e000000fd0018 +4b1a5117000a202020202020000000fc +0053414d53554e470a202020202001cc +020322f1469004050320222309070783 +010000e2000fe305030167030c001000 +b82d011d007251d01e206e285500a05a +0000001e011d8018711c1620582c2500 +a05a0000009e8c0ad08a20e02d10103e +9600a05a000000180000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000ef \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2047_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2047_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..66daa1d --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2047_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2dff0701000000 +31140103808e50780aee91a3544c9926 +0f5054bdef80714f8100814081809500 +950fb300a940023a801871382d40582c +4500a05a0000001e662150b051001b30 +40703600a05a0000001e000000fd0018 +4b1a5117000a202020202020000000fc +0053414d53554e470a202020202001c8 +02032bf1469004050320222309070783 +010000e2000fe305030170030c002000 +b82d20d006014000372050011d007251 +d01e206e285500a05a0000001e011d80 +18711c1620582c2500a05a0000009e8c +0ad08a20e02d10103e9600a05a000000 +18000000000000000000000000000000 +000000000000000000000000000000ef \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2114_SyncMaster_DP.txt b/data/chameleon_edids/daily/SAM_2114_SyncMaster_DP.txt new file mode 100644 index 0000000..fba8f79 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2114_SyncMaster_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d420800000000 +08150104a5593278223cf1a4554c9b25 +0e5054bfef8081808140714f8100b300 +9500950fa940023a801871382d40582c +450075f23100001e662150b051001b30 +4070360075f23100001e000000fd0038 +4b1e5111000a202020202020000000fc +0053796e634d61737465720a2020012b +020312c145901f041303230907078301 +0000023a80d072382d40102c458075f2 +3100001e011d007251d01e206e285500 +75f23100001e011d00bc52d01e20b828 +554075f23100001e0000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +0000000000000000000000000000000d \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2185_SMS27A850T_HDMI.txt b/data/chameleon_edids/daily/SAM_2185_SMS27A850T_HDMI.txt new file mode 100644 index 0000000..0d9abba --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2185_SMS27A850T_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d89084b43585a +12180103803c22782a73a1a4544d9926 +0f5054bfef80a9408180814081009500 +b300714f950f023a801871382d40582c +450055502100001e011d007251d01e20 +6e28550055502100001e000000fd0038 +4b1e5111000a202020202020000000fc +00534d53323741383530540a20200149 +02031af14690041f1303122309070783 +01000066030c00100080011d00bc52d0 +1e20b828554055502100001e8c0ad090 +204031200c4055005550210000188c0a +d08a20e02d10103e9600555021000018 +023a80d072382d40102c458055502100 +001e0000000000000000000000000000 +000000000000000000000000000000dc \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2262_S23B350_HDMI.txt b/data/chameleon_edids/daily/SAM_2262_S23B350_HDMI.txt new file mode 100644 index 0000000..f32128c --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2262_S23B350_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2dd6085451345a +0516010380331d782a01f1a257529f27 +0a5054bfef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +4500fe1f1100001e011d007251d01e20 +6e285500fe1f1100001e000000fd0032 +4b1e5111000a202020202020000000fc +00533233423335300a202020202001b4 +020311b14690041f13120365030c0010 +00011d00bc52d01e20b8285540fe1f11 +00001e8c0ad090204031200c405500fe +1f110000188c0ad08a20e02d10103e96 +00fe1f11000018000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000b4 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2300_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2300_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..1ebf566 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2300_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2dfc0800000000 +29150103801009780aee91a3544c9926 +0f5054bdee0081c00101010101010101 +010101010101662156aa51001e30468f +3300a05a0000001e011d007251d01e20 +6e285500a05a0000001e000000fd0018 +4b0f4417000a202020202020000000fc +0053414d53554e470a2020202020016d +02031ff1478405031020220723090707 +83010000e2000f67030c001000b82d01 +1d8018711c1620582c2500a05a000000 +9e8c0ad08a20e02d10103e9600a05a00 +000018023a801871382d40582c4500a0 +5a0000001e0000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000fd \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2302_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2302_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..44e2583 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2302_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2dfe0800000000 +29150103801009780aee91a3544c9926 +0f5054bdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +4500a05a0000001e662156aa51001e30 +468f3300a05a0000001e000000fd0018 +4b0f5117000a202020202020000000fc +0053414d53554e470a2020202020011d +02031ff1479004050320220723090707 +83010000e2000f67030c001000b82d01 +1d8018711c1620582c2500a05a000000 +9e011d007251d01e206e285500a05a00 +00001e8c0ad08a20e02d10103e9600a0 +5a000000180000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000d6 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2306_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2306_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..b22bd51 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2306_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d020900000000 +29150103806639780aee91a3544c9926 +0f5054bdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +4500a05a0000001e662156aa51001e30 +468f3300a05a0000001e000000fd0018 +4b0f5117000a202020202020000000fc +0053414d53554e470a20202020200192 +020325f14d901f041305140312202122 +07162309070783010000e2000f67030c +001000b82d011d80d0721c1620102c25 +80a05a0000009e011d8018711c162058 +2c2500a05a0000009e011d00bc52d01e +20b8285540a05a0000001e011d007251 +d01e206e285500a05a0000001e000000 +000000000000000000000000000000ec \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2381_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2381_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..3a6c335 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2381_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d4d0901000000 +2e150103807944780aee91a3544c9926 +0f5054bdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +4500a05a0000001e662156aa51001e30 +468f3300a05a0000001e000000fd0018 +4b0f5117000a202020202020000000fc +0053414d53554e470a20202020200123 +02032cf1479004050320220723090707 +83010000e2000fe305030170030c0030 +00b82d21d006014000372050011d8018 +711c1620582c2500a05a0000009e011d +007251d01e206e285500a05a0000001e +8c0ad08a20e02d10103e9600a05a0000 +00180000000000000000000000000000 +000000000000000000000000000000d5 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2382_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2382_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..666d23c --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2382_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d4e0901000000 +2e150103805932780aee91a3544c9926 +0f5054bdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +4500a05a0000001e662156aa51001e30 +468f3300a05a0000001e000000fd0018 +4b0f5117000a202020202020000000fc +0053414d53554e470a20202020200154 +020323f1479004050320220723090707 +83010000e2000fe305030167030c0020 +00b82d011d8018711c1620582c2500a0 +5a0000009e011d007251d01e206e2855 +00a05a0000001e8c0ad08a20e02d1010 +3e9600a05a0000001800000000000000 +00000000000000000000000000000000 +000000000000000000000000000000d6 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2412_SyncMaster_DP.txt b/data/chameleon_edids/daily/SAM_2412_SyncMaster_DP.txt new file mode 100644 index 0000000..c5d0470 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2412_SyncMaster_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff004c2d6c09464c3231 +33140103807944782aee9da354479926 +0f474abfef808180a9c0714fb3008100 +950081c00101023a801871382d40582c +450075f23100001e662156aa51001e30 +468f330075f23100001e000000fd0038 +4b1e5111000a202020202020000000fc +0053796e634d61737465720a20200007 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2412_SyncMaster_DVI.txt b/data/chameleon_edids/daily/SAM_2412_SyncMaster_DVI.txt new file mode 100644 index 0000000..c5d0470 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2412_SyncMaster_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff004c2d6c09464c3231 +33140103807944782aee9da354479926 +0f474abfef808180a9c0714fb3008100 +950081c00101023a801871382d40582c +450075f23100001e662156aa51001e30 +468f330075f23100001e000000fd0038 +4b1e5111000a202020202020000000fc +0053796e634d61737465720a20200007 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2412_SyncMaster_HDMI.txt b/data/chameleon_edids/daily/SAM_2412_SyncMaster_HDMI.txt new file mode 100644 index 0000000..c5d0470 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2412_SyncMaster_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff004c2d6c09464c3231 +33140103807944782aee9da354479926 +0f474abfef808180a9c0714fb3008100 +950081c00101023a801871382d40582c +450075f23100001e662156aa51001e30 +468f330075f23100001e000000fd0038 +4b1e5111000a202020202020000000fc +0053796e634d61737465720a20200007 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2413_SyncMaster_HDMI.txt b/data/chameleon_edids/daily/SAM_2413_SyncMaster_HDMI.txt new file mode 100644 index 0000000..6c20a51 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2413_SyncMaster_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d6d0901000000 +33150103807944780aee9da354479926 +0f474abdef80714f810081c081809500 +a9c0b3000101023a801871382d40582c +450075f23100001e662156aa51001e30 +468f330075f23100001e000000fd0018 +4b1a5111000a202020202020000000fc +0053796e634d61737465720a2020013e +020325f14a901f051422200413031223 +09070783010000e2000fe30503016603 +0c00100080011d007251d01e206e2855 +0075f23100001e011d8018711c162058 +2c250075f23100009e8c0ad08a20e02d +10103e960075f231000018023a80d072 +382d40102c458075f23100001e000000 +000000000000000000000000000000c2 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2460_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2460_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..dd38753 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2460_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d9c0900000000 +0c160103807944780aee91a3544c9926 +0f5054bdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +4500a05a0000001e662156aa51001e30 +468f3300a05a0000001e000000fd0018 +4b0f5117000a202020202020000000fc +0053414d53554e470a202020202001f6 +020328f1479004050320220723090707 +83010000e2000f70030c001000b82d20 +d006014000372050011d8018711c1620 +582c2500a05a0000009e011d007251d0 +1e206e285500a05a0000001e8c0ad08a +20e02d10103e9600a05a000000180000 +00000000000000000000000000000000 +000000000000000000000000000000e6 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2620_S24C350_HDMI.txt b/data/chameleon_edids/daily/SAM_2620_S24C350_HDMI.txt new file mode 100644 index 0000000..a2f31e8 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2620_S24C350_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d3c0a4a37375a +2d17010380341d782a7dd1a45650a128 +0f5054bfef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +450009252100001e011d007251d01e20 +6e28550009252100001e000000fd0032 +4b1e5111000a202020202020000000fc +00533234433335300a2020202020019c +02031af14690041f1312032309070783 +01000066030c00100080011d00bc52d0 +1e20b828554009252100001e8c0ad090 +204031200c4055000925210000188c0a +d08a20e02d10103e9600092521000018 +00000000000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000c9 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2682_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2682_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..baba7d9 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2682_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d7a0a00000000 +2e160103806639780aee91a3544c9926 +0f5054bdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +450024724200001e662156aa51001e30 +468f330024724200001e000000fd0018 +4b0f5117000a202020202020000000fc +0053414d53554e470a20202020200157 +020325f14d901f041305140312202122 +07162309070783010000e2000f67030c +001000b82d011d80d0721c1620102c25 +8024724200009e011d8018711c162058 +2c250024724200009e011d00bc52d01e +20b828554024724200001e011d007251 +d01e206e28550024724200001e8c0ad0 +90204031200c4055002472420000183c \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2685_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2685_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..c11d782 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2685_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d7d0a01000000 +2e160103807944780aee91a3544c9926 +0f5054bdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +450024724200001e662156aa51001e30 +468f330024724200001e000000fd0018 +4b0f5117000a202020202020000000fc +0053414d53554e470a20202020200135 +020330f14d901f041305140312202122 +07162309070783010000e2000f72030c +001000b82d21d0080140073f405090a0 +011d80d0721c1620102c258024724200 +009e011d8018711c1620582c25002472 +4200009e011d00bc52d01e20b8285540 +24724200001e011d007251d01e206e28 +550024724200001e000000000000001e \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2686_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2686_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..c5dd10f --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2686_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d7e0a01000000 +2e160103806f3e780aee91a3544c9926 +0f5054bdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +450024724200001e662156aa51001e30 +468f330024724200001e000000fd0018 +4b0f5117000a202020202020000000fc +0053414d53554e470a20202020200144 +020325f14d901f041305140312202122 +07162309070783010000e2000f67030c +002000b82d011d80d0721c1620102c25 +8024724200009e011d8018711c162058 +2c250024724200009e011d00bc52d01e +20b828554024724200001e011d007251 +d01e206e28550024724200001e000000 +00000000000000000000000000000064 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2758_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2758_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..1e3bc07 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2758_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2dc60a00000000 +34160103806639780aee91a3544c9926 +0f5054bdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +450076f23100001e662156aa51001e30 +468f330076f23100001e000000fd0018 +4b0f5117000a202020202020000000fc +0053414d53554e470a20202020200183 +020330f14d901f041305140312202122 +07162309070783010000e2000f72030c +002000b82d20d0080140073f405090a0 +011d80d0721c1620102c258076f23100 +009e011d8018711c1620582c250076f2 +3100009e011d00bc52d01e20b8285540 +76f23100001e011d007251d01e206e28 +550076f23100001e000000000000000b \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2763_SyncMaster_DP.txt b/data/chameleon_edids/daily/SAM_2763_SyncMaster_DP.txt new file mode 100644 index 0000000..18ea10f --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2763_SyncMaster_DP.txt @@ -0,0 +1,8 @@ +00ffffffffffff004c2dcb0a00000000 +01170103805932782aee9da354479926 +0f474abfef808180a9c0714fb3008100 +950081c00101023a801871382d40582c +450075f23100001e662156aa51001e30 +468f330075f23100001e000000fd0038 +4b1e5111000a202020202020000000fc +0053796e634d61737465720a202000fd \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2763_SyncMaster_DVI.txt b/data/chameleon_edids/daily/SAM_2763_SyncMaster_DVI.txt new file mode 100644 index 0000000..18ea10f --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2763_SyncMaster_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff004c2dcb0a00000000 +01170103805932782aee9da354479926 +0f474abfef808180a9c0714fb3008100 +950081c00101023a801871382d40582c +450075f23100001e662156aa51001e30 +468f330075f23100001e000000fd0038 +4b1e5111000a202020202020000000fc +0053796e634d61737465720a202000fd \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2763_SyncMaster_HDMI.txt b/data/chameleon_edids/daily/SAM_2763_SyncMaster_HDMI.txt new file mode 100644 index 0000000..18ea10f --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2763_SyncMaster_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff004c2dcb0a00000000 +01170103805932782aee9da354479926 +0f474abfef808180a9c0714fb3008100 +950081c00101023a801871382d40582c +450075f23100001e662156aa51001e30 +468f330075f23100001e000000fd0038 +4b1e5111000a202020202020000000fc +0053796e634d61737465720a202000fd \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2764_SyncMaster_DP.txt b/data/chameleon_edids/daily/SAM_2764_SyncMaster_DP.txt new file mode 100644 index 0000000..1961a68 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2764_SyncMaster_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2dcc0a1fcdc15c +01170104a5593278223cf1a4554c9b25 +0e5054bfef808180a9c0714f8100b300 +950081c00101023a801871382d40582c +450075f23100001e662156aa51001e30 +468f330075f23100001e000000fd0038 +4b1e5111000a202020202020000000fc +0053796e634d61737465720a20200118 +020312c145901f041303230907078301 +0000023a80d072382d40102c458075f2 +3100001e011d007251d01e206e285500 +75f23100001e011d00bc52d01e20b828 +554075f23100001e0000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +0000000000000000000000000000000d \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2765_SyncMaster_DP.txt b/data/chameleon_edids/daily/SAM_2765_SyncMaster_DP.txt new file mode 100644 index 0000000..e4805f5 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2765_SyncMaster_DP.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2dcd0a01000000 +01170103806639780aee9da354479926 +0f474abdef80714f810081c081809500 +a9c0b3000101023a801871382d40582c +450075f23100001e662156aa51001e30 +468f330075f23100001e000000fd0018 +4b1a5111000a202020202020000000fc +0053796e634d61737465720a2020012b +020325f14a901f051422200413031223 +09070783010000e2000fe30503016603 +0c00100080011d007251d01e206e2855 +0075f23100001e011d8018711c162058 +2c250075f23100009e8c0ad08a20e02d +10103e960075f231000018023a80d072 +382d40102c458075f23100001e000000 +000000000000000000000000000000c2 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2765_SyncMaster_HDMI.txt b/data/chameleon_edids/daily/SAM_2765_SyncMaster_HDMI.txt new file mode 100644 index 0000000..48cc506 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2765_SyncMaster_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2dcd0a01000000 +01170103805932780aee9da354479926 +0f474abdef80714f810081c081809500 +a9c0b3000101023a801871382d40582c +450075f23100001e662156aa51001e30 +468f330075f23100001e000000fd0018 +4b1a5111000a202020202020000000fc +0053796e634d61737465720a2020013f +020325f14a901f051422200413031223 +09070783010000e2000fe30503016603 +0c00100080011d007251d01e206e2855 +0075f23100001e011d8018711c162058 +2c250075f23100009e8c0ad08a20e02d +10103e960075f231000018023a80d072 +382d40102c458075f23100001e000000 +000000000000000000000000000000c2 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2908_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2908_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..02c3a2a --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2908_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d5c0b01000000 +30170103807944780aee91a3544c9926 +0f5054bdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +4500bcaa4200001e662156aa51001e30 +468f3300bcaa4200001e000000fd0018 +4b0f5117000a202020202020000000fc +0053414d53554e470a202020202001b2 +020326f14d901f041305140312202122 +07162309070783010000e2000f68030c +001000b82d01011d80d0721c1620102c +2580bcaa4200009e011d8018711c1620 +582c2500bcaa4200009e011d00bc52d0 +1e20b8285540bcaa4200001e011d0072 +51d01e206e285500bcaa4200001e0000 +00000000000000000000000000000031 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2912_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2912_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..2293cfc --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2912_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d600b01000000 +30170103807944780aee91a3544c9926 +0f5054bdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +450077f43100001e662156aa51001e30 +468f330077f43100001e000000fd0018 +4b0f5117000a202020202020000000fc +0053414d53554e470a202020202001c6 +020330f14d901f041305140312202122 +07162309070783010000e2000f72030c +001100b82d21d0080140073f405090a0 +011d80d0721c1620102c258077f43100 +009e011d8018711c1620582c250077f4 +3100009e011d00bc52d01e20b8285540 +77f43100001e011d007251d01e206e28 +550077f43100001e000000000000000d \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2919_S27D390_HDMI.txt b/data/chameleon_edids/daily/SAM_2919_S27D390_HDMI.txt new file mode 100644 index 0000000..cf1ae2b --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2919_S27D390_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d670b4b4b3230 +1b180103803c22782a9791a556549d25 +0e5054bfef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +450056502100001e011d007251d01e20 +6e28550056502100001e000000fd0032 +4b1e5111000a202020202020000000fc +00533237443339300a202020202001bf +02031af14690041f1303122309070783 +01000066030c00100080011d00bc52d0 +1e20b828554056502100001e8c0ad090 +204031200c4055005650210000188c0a +d08a20e02d10103e9600565021000018 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000061 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2940_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2940_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..2e7da7c --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2940_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d7c0b00000000 +33170103806f3e780aee91a3544c9926 +0f5054bdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +450076f23100001e662156aa51001e30 +468f330076f23100001e000000fd0018 +4b0f5117000a202020202020000000fc +0053414d53554e470a202020202001be +020325f14d901f041305140312202122 +07162309070783010000e2000f67030c +001000b82d011d80d0721c1620102c25 +8076f23100009e011d8018711c162058 +2c250076f23100009e011d00bc52d01e +20b828554076f23100001e011d007251 +d01e206e28550076f23100001e000000 +00000000000000000000000000000070 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2961_SAMSUNG_HDMI.txt b/data/chameleon_edids/daily/SAM_2961_SAMSUNG_HDMI.txt new file mode 100644 index 0000000..62a9df1 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2961_SAMSUNG_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2d910b01000000 +0218010380a55d780aee91a3544c9926 +0f5054bdef80714f81c0810081809500 +a9c0b300010108e80030f2705a80b058 +8a00501d7400001e023a801871382d40 +582c4500501d7400001e000000fd0018 +4b0f873c000a202020202020000000fc +0053414d53554e470a202020202001d8 +020342f15761101f041305142021225d +5e5f6065666263640716031223090707 +83010000e2000f76030c003000b83c21 +d0880102030401403f9f50608090e30f +01e0011d80d0721c1620102c2580501d +7400009e662156aa51001e30468f3300 +501d7400001e00000000000000000000 +00000000000000000000000000000062 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2965_SyncMaster_DVI.txt b/data/chameleon_edids/daily/SAM_2965_SyncMaster_DVI.txt new file mode 100644 index 0000000..96e6fd3 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2965_SyncMaster_DVI.txt @@ -0,0 +1,8 @@ +00ffffffffffff004c2d950b00000000 +02180103807944782aee9da354479926 +0f474abdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +450075f23100001e662156aa51001e30 +468f330075f23100001e000000fd003c +4b1e5111000a202020202020000000fc +0053796e634d61737465720a202000fc \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2978_SyncMaster_HDMI.txt b/data/chameleon_edids/daily/SAM_2978_SyncMaster_HDMI.txt new file mode 100644 index 0000000..89b6eb5 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2978_SyncMaster_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2da20b00000000 +02180103807944782aee9da354479926 +0f474abdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +450075f23100001e662156aa51001e30 +468f330075f23100001e000000fd003c +4b1e5111000a202020202020000000fc +0053796e634d61737465720a202001ee +020316c1429004230907078301000066 +030c0010008000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +0000000000000000000000000000008b \ No newline at end of file diff --git a/data/chameleon_edids/daily/SAM_2979_SyncMaster_HDMI.txt b/data/chameleon_edids/daily/SAM_2979_SyncMaster_HDMI.txt new file mode 100644 index 0000000..f80aaf4 --- /dev/null +++ b/data/chameleon_edids/daily/SAM_2979_SyncMaster_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004c2da30b01000000 +02180103804627780aee9da354479926 +0f474abdef80714f81c0810081809500 +a9c0b3000101023a801871382d40582c +450075f23100001e662156aa51001e30 +468f330075f23100001e000000fd0018 +4b1a5111000a202020202020000000fc +0053796e634d61737465720a20200184 +020326f14b901f041305140312202122 +2309070783010000e2000fe305030166 +030c00100080023a80d072382d40102c +458075f23100001e011d007251d01e20 +6e28550075f23100001e011d00bc52d0 +1e20b828554075f23100001e8c0ad08a +20e02d10103e960075f2310000180000 +00000000000000000000000000000092 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SEC_42499_EPSON_PJ_HDMI.txt b/data/chameleon_edids/daily/SEC_42499_EPSON_PJ_HDMI.txt new file mode 100644 index 0000000..8c16711 --- /dev/null +++ b/data/chameleon_edids/daily/SEC_42499_EPSON_PJ_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004ca303a601010101 +2614010380a05a780ade50a3544c9926 +0f5054210800a94090408180814081c0 +010101010101023a801871382d40582c +450040846300001e9e20009051201f30 +4880360040846300001c000000fd0017 +550f5c11000a202020202020000000fc +004550534f4e20504a0a2020202001a6 +020328f651901f202205140413030212 +11070616150123090707830100006603 +0c00110080e200fd011d8018711c1620 +582c250040846300009e011d80d0721c +1620102c258040846300009e011d0072 +51d01e206e28550040846300001e8c0a +d08a20e02d10103e9600408463000018 +00000000000000000000000000000039 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SEC_42502_EPSON_PJ_HDMI.txt b/data/chameleon_edids/daily/SEC_42502_EPSON_PJ_HDMI.txt new file mode 100644 index 0000000..90fb769 --- /dev/null +++ b/data/chameleon_edids/daily/SEC_42502_EPSON_PJ_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004ca306a601010101 +0316010380a05a780ade50a3544c9926 +0f5054210800a94090408180814081c0 +9500b300a9c0023a801871382d40582c +450040846300001e9e20009051201f30 +4880360040846300001c000000fd0017 +550f5c11000a202020202020000000fc +004550534f4e20504a0a202020200119 +020328f651901f202205140413030212 +11070616150123090707830100006603 +0c00110080e200fd011d8018711c1620 +582c250040846300009e011d80d0721c +1620102c258040846300009e662156aa +51001e30468f330040846300001e8c0a +d08a20e02d10103e9600408463000018 +000000000000000000000000000000e5 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_0_LC-48LE551U_HDMI.txt b/data/chameleon_edids/daily/SHP_0_LC-48LE551U_HDMI.txt new file mode 100644 index 0000000..36374fc --- /dev/null +++ b/data/chameleon_edids/daily/SHP_0_LC-48LE551U_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10000001010101 +0f18010380693b780a942ba854459622 +204b5ca5ce0001010101010101010101 +010101010101023a801871382d40582c +45001e504200001e000000fd00324d1f +460f000a202020202020000000ff0030 +34303130303731313131320a000000fc +004c432d34384c45353531550a20016c +020326714b010304059020151213141f +29090705155750000700830100006703 +0c003000282d023a801871382d40582c +55001e504200001e011d007251d01e20 +6e2855001e504200001e000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000036 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_0_LC-65LE643U_HDMI.txt b/data/chameleon_edids/daily/SHP_0_LC-65LE643U_HDMI.txt new file mode 100644 index 0000000..30723e4 --- /dev/null +++ b/data/chameleon_edids/daily/SHP_0_LC-65LE643U_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10000001010101 +08180103808f50780a5c3da55549a727 +0a474aa5ce0001c10101010101010101 +010101010101023a801871382d40582c +450094245300001e000000fd00324d1f +460f000a202020202020000000ff0034 +303230303731313131320a20000000fc +004c432d36354c45363433550a200165 +020326714b010304059020151213141f +29090705155750000700830100006703 +0c001000282d023a801871382d40582c +550094245300001e011d007251d01e20 +6e28550094245300001e000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000a0 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_13448_LC-50LE650U_HDMI.txt b/data/chameleon_edids/daily/SHP_13448_LC-50LE650U_HDMI.txt new file mode 100644 index 0000000..91b9826 --- /dev/null +++ b/data/chameleon_edids/daily/SHP_13448_LC-50LE650U_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10883401010101 +29160103806e3e780a838da5544c9826 +0e474aa5ce0001010101010101010101 +010101010101023a801871382d40582c +4500a20b3200001e000000fc004c432d +35304c45363530550a20000000fd0017 +4c0f510f000a20202020202000000010 +00303030303030303030303030300131 +02032471521f14131216111590050403 +07020601202122260907071507506503 +0c001100011d80d0721c1620102c2580 +a20b3200009e011d00bc52d01e20b828 +5540a20b3200001e023a801871382d40 +582c4500a20b3200001e011d8018711c +1620582c2500a20b3200009e00000000 +000000000000000000000000000000b8 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_13450_LC-50LE442U_HDMI.txt b/data/chameleon_edids/daily/SHP_13450_LC-50LE442U_HDMI.txt new file mode 100644 index 0000000..9063576 --- /dev/null +++ b/data/chameleon_edids/daily/SHP_13450_LC-50LE442U_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d108a3401010101 +32160103806e3e780a02eda3554e9d03 +0e474aa5ce0001010101010101010101 +010101010101023a801871382d40582c +45004c6c4200001e000000fc004c432d +35304c45343432550a20000000fd0017 +4c0f510f000a20202020202000000010 +0030303030303030303030303030014a +02032471521f14131216111590050403 +07020601202122260907071507506503 +0c001000011d80d0721c1620102c2580 +4c6c4200009e011d00bc52d01e20b828 +55404c6c4200001e023a801871382d40 +582c45004c6c4200001e011d8018711c +1620582c25004c6c4200009e00000000 +0000000000000000000000000000004d \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_18004_LC-46LE540U_HDMI.txt b/data/chameleon_edids/daily/SHP_18004_LC-46LE540U_HDMI.txt new file mode 100644 index 0000000..b7e4eaa --- /dev/null +++ b/data/chameleon_edids/daily/SHP_18004_LC-46LE540U_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10544601010101 +06160103806639780aef8da3554e9c27 +0d474aa5ce0001010101010101010101 +010101010101023a801871382d40582c +4500fa3d3200001e000000fc004c432d +34364c45353430550a20000000fd0017 +4c0f510f000a20202020202000000010 +00303030303030303030303030300185 +02032471521f14131216111590050403 +07020601202122260907071507506503 +0c001000011d80d0721c1620102c2580 +fa3d3200009e011d00bc52d01e20b828 +5540fa3d3200001e023a801871382d40 +582c4500fa3d3200001e011d8018711c +1620582c2500fa3d3200009e00000000 +00000000000000000000000000000091 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_4168_SHARP_HDMI_HDMI.txt b/data/chameleon_edids/daily/SHP_4168_SHARP_HDMI_HDMI.txt new file mode 100644 index 0000000..268c5fd --- /dev/null +++ b/data/chameleon_edids/daily/SHP_4168_SHARP_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10481000000000 +ff140103809a57782a1bbea25534b326 +144a52afce00a9409040818001010101 +010101010101023a80d072382d40102c +458003626300001e662150b051001b30 +4070360000000000001e000000fc0053 +484152502048444d490a2020000000fd +00174c0f4b11000a202020202020010c +02032e72509f90201405130412031102 +16071506012309070783010000e30503 +016c030c001000b82dc03d3d5b5b023a +801871382d40582c450003626300001e +011d80d0721c1620102c258003626300 +009e011d8018711c1620582c25000362 +6300009e011d00bc52d01e20b8285540 +03626300001e000000000000000000f2 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_4217_SHARP_HDMI_HDMI.txt b/data/chameleon_edids/daily/SHP_4217_SHARP_HDMI_HDMI.txt new file mode 100644 index 0000000..aedddcc --- /dev/null +++ b/data/chameleon_edids/daily/SHP_4217_SHARP_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10791000000000 +ff15010380854b782a1bbea25534b326 +144a52afce00a9409040818001010101 +010101010101023a801871382d40582c +450031ec5200001e662150b051001b30 +4070360000000000001e000000fc0053 +484152502048444d490a2020000000fd +00174c0f4b11000a2020202020200145 +02031f714a9020220504030207060123 +0907078301000067030c001000b82d01 +1d8018711c1620582c250031ec520000 +9e011d007251d01e206e28550031ec52 +00001e8c0ad08a20e02d10103e9600e4 +ec320000188c0aa01451f01600267c43 +00e4ec32000098000000000000000000 +00000000000000000000000000000029 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_4234_SHARP_HDMI_HDMI.txt b/data/chameleon_edids/daily/SHP_4234_SHARP_HDMI_HDMI.txt new file mode 100644 index 0000000..44710eb --- /dev/null +++ b/data/chameleon_edids/daily/SHP_4234_SHARP_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d108a1000000000 +ff15010380854b782a1bbea25534b326 +144a52afce0090408180010101010101 +010101010101023a80d072382d40102c +458032ee5200001e662150b051001b30 +4070360032ee5200001e000000fc0053 +484152502048444d490a2020000000fd +00174c0e440f000a20202020202001bf +02032e72509f90201405130412031102 +16071506012309070183010000e30500 +006c030c002000801e8011110000023a +801871382d40582c450032ee5200001e +011d80d0721c1620102c258032ee5200 +009e011d8018711c1620582c250032ee +5200009e011d00bc52d01e20b8285540 +32ee5200001e000000000000000000d9 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_4262_SHARP_HDMI_HDMI.txt b/data/chameleon_edids/daily/SHP_4262_SHARP_HDMI_HDMI.txt new file mode 100644 index 0000000..8b58500 --- /dev/null +++ b/data/chameleon_edids/daily/SHP_4262_SHARP_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10a61000000000 +ff16010380854b782a1bbea25534b326 +144a52afce00a9409040818001010101 +010101010101023a801871382d40582c +450031ec5200001e662150b051001b30 +4070360000000000001e000000fc0053 +484152502048444d490a2020000000fd +00174c0f4b11000a2020202020200117 +02032d714a9020220504030207060126 +09070715075083010000e30503016e03 +0c003000b82d20a00401401040011d80 +18711c1620582c250031ec5200009e01 +1d007251d01e206e28550031ec520000 +1e8c0ad08a20e02d10103e9600e4ec32 +0000188c0aa01451f01600267c4300e4 +ec320000980000000000000000000044 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_4293_SHARP_HDMI_HDMI.txt b/data/chameleon_edids/daily/SHP_4293_SHARP_HDMI_HDMI.txt new file mode 100644 index 0000000..70654f4 --- /dev/null +++ b/data/chameleon_edids/daily/SHP_4293_SHARP_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10c51000000000 +ff160103807341782a1bbea25534b326 +144a52afce00a9409040818001010101 +010101010101023a80d072382d40102c +458080884200001e662150b051001b30 +4070360000000000001e000000fc0053 +484152502048444d490a2020000000fd +00174c0f4b11000a2020202020200148 +02033472509f90201405130412031102 +16071506012609070715075083010000 +e30503016f030c001000b82d20a00501 +40205060023a801871382d40582c4500 +80884200001e011d80d0721c1620102c +258080884200009e011d8018711c1620 +582c250080884200009e011d00bc52d0 +1e20b828554080884200001e0000008c \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_4314_SHARP_HDMI_HDMI.txt b/data/chameleon_edids/daily/SHP_4314_SHARP_HDMI_HDMI.txt new file mode 100644 index 0000000..5be0e1a --- /dev/null +++ b/data/chameleon_edids/daily/SHP_4314_SHARP_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10da1000000000 +ff17010380b164782a1bbea25534b326 +144a52afce00a9409040818001010101 +010101010101023a801871382d40582c +4500ebe46300001e662150b051001b30 +4070360000000000001e000000fc0053 +484152502048444d490a2020000000fd +00174c0f4b11000a20202020202001da +020330714a9020220504030207060129 +0907071507503d07c083010000e30503 +016e030c003000b82d20a00401401040 +011d8018711c1620582c2500ebe46300 +009e011d007251d01e206e285500ebe4 +6300001e8c0ad08a20e02d10103e9600 +30e4530000188c0aa01451f01600267c +430030e45300009800000000000000ea \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_4315_SHARP_HDMI_HDMI.txt b/data/chameleon_edids/daily/SHP_4315_SHARP_HDMI_HDMI.txt new file mode 100644 index 0000000..915b286 --- /dev/null +++ b/data/chameleon_edids/daily/SHP_4315_SHARP_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10db1000000000 +ff17010380854b782a1bbea25534b326 +144a52afce0090408180010101010101 +010101010101023a80d072382d40102c +458031eb5200001e662150b051001b30 +4070360000000000001e000000fc0053 +484152502048444d490a2020000000fd +00174c0e440f000a20202020202001e2 +02032872509f90201405130412031102 +1607150601230907078301000067030c +001000801ee2003f023a801871382d40 +582c450031eb5200001e011d80d0721c +1620102c258031eb5200009e011d8018 +711c1620582c250031eb5200009e011d +00bc52d01e20b828554031eb5200001e +00000000000000000000000000000067 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_4320_SHARP_HDMI_HDMI.txt b/data/chameleon_edids/daily/SHP_4320_SHARP_HDMI_HDMI.txt new file mode 100644 index 0000000..2080c12 --- /dev/null +++ b/data/chameleon_edids/daily/SHP_4320_SHARP_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10e01000000000 +ff17010380c770782a1bbea25534b326 +144a52afce00a9409040818001010101 +010101010101023a80d072382d40102c +4580c9617400001e662150b051001b30 +4070360000000000001e000000fc0053 +484152502048444d490a2020000000fd +00174c0f4b11000a2020202020200155 +02033772519f90202214051304120311 +021607150601290907071507503d07c0 +830100006f030c003000b82d20a00501 +40206070e2003f023a801871382d4058 +2c4500c9617400001e011d80d0721c16 +20102c2580c9617400009e011d801871 +1c1620582c2500c9617400009e011d00 +bc52d01e20b8285540c9617400001e9a \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_4325_SHARP_HDMI_HDMI.txt b/data/chameleon_edids/daily/SHP_4325_SHARP_HDMI_HDMI.txt new file mode 100644 index 0000000..8c398de --- /dev/null +++ b/data/chameleon_edids/daily/SHP_4325_SHARP_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10e51000000000 +ff170103809a57782a1bbea25534b326 +144a52afce00a9409040818001010101 +010101010101023a801871382d40582c +450003626300001e662150b051001b30 +4070360000000000001e000000fc0053 +484152502048444d490a2020000000fd +00174c0f4b11000a202020202020015d +020325714a9020220504030207060129 +0907071507503d07c08301000067030c +002000b82d011d8018711c1620582c25 +0003626300009e011d007251d01e206e +28550003626300001e8c0ad08a20e02d +10103e96008262430000188c0aa01451 +f01600267c4300826243000098000000 +000000000000000000000000000000a1 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_4326_SHARP_HDMI_HDMI.txt b/data/chameleon_edids/daily/SHP_4326_SHARP_HDMI_HDMI.txt new file mode 100644 index 0000000..b7d948e --- /dev/null +++ b/data/chameleon_edids/daily/SHP_4326_SHARP_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10e61000000000 +ff170103809a57782a1bbea25534b326 +144a52afce00a9409040818001010101 +010101010101023a801871382d40582c +450003626300001e662150b051001b30 +4070360000000000001e000000fc0053 +484152502048444d490a2020000000fd +00174c0f4b11000a202020202020015c +020329714a9020220504030207060129 +0907071507503d07c083010000e30503 +0167030c001100b82d011d8018711c16 +20582c250003626300009e011d007251 +d01e206e28550003626300001e8c0ad0 +8a20e02d10103e96008262430000188c +0aa01451f01600267c43008262430000 +980000000000000000000000000000c0 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_4327_SHARP_HDMI_HDMI.txt b/data/chameleon_edids/daily/SHP_4327_SHARP_HDMI_HDMI.txt new file mode 100644 index 0000000..3434deb --- /dev/null +++ b/data/chameleon_edids/daily/SHP_4327_SHARP_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10e71000000000 +ff17010380c770782a1bbea25534b326 +144a52afce00a9409040818001010101 +010101010101023a801871382d40582c +4500c9617400001e662150b051001b30 +4070360000000000001e000000fc0053 +484152502048444d490a2020000000fd +00174c0f4b11000a202020202020013f +02032c714a9020220504030207060129 +0907071507503d07c0830100006e030c +001200b82d20a00401401040011d8018 +711c1620582c2500c9617400009e011d +007251d01e206e285500c9617400001e +8c0ad08a20e02d10103e9600d6615400 +00188c0aa01451f01600267c4300d661 +540000980000000000000000000000d8 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_4351_SHARP_HDMI_HDMI.txt b/data/chameleon_edids/daily/SHP_4351_SHARP_HDMI_HDMI.txt new file mode 100644 index 0000000..9d93c31 --- /dev/null +++ b/data/chameleon_edids/daily/SHP_4351_SHARP_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10ff1000000000 +ff18010380b164782a1bbea25534b326 +144a52afce00a9409040818001010101 +010101010101023a801871382d40582c +4500ebe46300001e662150b051001b30 +4070360000000000001e000000fc0053 +484152502048444d490a2020000000fd +00174c0f4b1e000a20202020202001a7 +020336714a9020220504030207060129 +0907071507503d07c083010000e30503 +0171030c001200b83c20a06401020301 +401040e2003f011d803e73382d407e2c +4580ebe46300001e011d8018711c1620 +582c2500ebe46300009e011d007251d0 +1e206e285500ebe46300001e8c0ad08a +20e02d10103e9600ebe4630000180070 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SHP_4353_SHARP_HDMI_HDMI.txt b/data/chameleon_edids/daily/SHP_4353_SHARP_HDMI_HDMI.txt new file mode 100644 index 0000000..e15584e --- /dev/null +++ b/data/chameleon_edids/daily/SHP_4353_SHARP_HDMI_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004d10011100000000 +ff18010380b164782a1bbea25534b326 +144a52afce00a9409040818001010101 +010101010101023a80d072382d40102c +4580ebe46300001e662150b051001b30 +4070360000000000001e000000fc0053 +484152502048444d490a2020000000fd +00174c0f4b1e000a20202020202001b3 +02033e72519f90202214051304120311 +021607150601290907071507503d07c0 +83010000e305030172030c002000b83c +20a0650102030140206070e2003f023a +801871382d40582c4500ebe46300001e +011d80d0721c1620102c2580ebe46300 +009e011d8018711c1620582c2500ebe4 +6300009e0000000000000000000000ee \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_11522_SONY_TV_HDMI.txt b/data/chameleon_edids/daily/SNY_11522_SONY_TV_HDMI.txt new file mode 100644 index 0000000..97be509 --- /dev/null +++ b/data/chameleon_edids/daily/SNY_11522_SONY_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd9022d01010101 +01150103807a44780a0dc9a057479827 +12484c21080081800101010101010101 +010101010101023a801871382d40582c +4500c2ad4200001e011d007251d01e20 +6e285500c2ad4200001e000000fc0053 +4f4e592054560a2020202020000000fd +003a3e0e460f000a202020202020019b +020333f04c10050420223c3e03070206 +01260907071507508301000073030c00 +3000b82d2fd0090140000f1040506046 +e200fb8c0ad08a20e02d10103e9600c2 +ad42000018011d8018711c1620582c25 +00c2ad4200009e000000000000000000 +00000000000000000000000000000000 +0000000000000000000000000000001a \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_12546_SONY_TV_HDMI.txt b/data/chameleon_edids/daily/SNY_12546_SONY_TV_HDMI.txt new file mode 100644 index 0000000..505203d --- /dev/null +++ b/data/chameleon_edids/daily/SNY_12546_SONY_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd9023101010101 +01150103806639780a0dc9a057479827 +12484c21080081800101010101010101 +010101010101023a801871382d40582c +4500fa3d3200001e011d007251d01e20 +6e285500fa3d3200001e000000fc0053 +4f4e592054560a2020202020000000fd +003a3e0e460f000a2020202020200146 +020328f04c10050420223c3e03070206 +01260907071507508301000068030c00 +1000b82d0fe200fb8c0ad08a20e02d10 +103e9600fa3d32000018011d8018711c +1620582c2500fa3d3200009e00000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +0000000000000000000000000000006f \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_17666_SONY_TV_HDMI.txt b/data/chameleon_edids/daily/SNY_17666_SONY_TV_HDMI.txt new file mode 100644 index 0000000..19b34e8 --- /dev/null +++ b/data/chameleon_edids/daily/SNY_17666_SONY_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd9024501010101 +0115010380a05a780a83ada256499b25 +0f474a21080081800101010101010101 +010101010101023a801871382d40582c +450040846300001e011d007251d01e20 +6e28550040846300001e000000fd003a +3e0f460f000a202020202020000000fc +00534f4e592054560a20202020200102 +020325f0491004050302070620012609 +07071507508301000068030c00100080 +1e0fe2007b011d8018711c1620582c25 +0040846300009e8c0ad08a20e02d1010 +3e96004084630000188c0ad08a20e02d +10103e9600b084430000188c0aa01451 +f01600267c4300b08443000098000000 +00000000000000000000000000000027 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_19459_SONY_TV_HDMI.txt b/data/chameleon_edids/daily/SNY_19459_SONY_TV_HDMI.txt new file mode 100644 index 0000000..cdc1a0e --- /dev/null +++ b/data/chameleon_edids/daily/SNY_19459_SONY_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd9034c01010101 +01180103805932780a0dc9a057479827 +12484c2108008180a9c0010101010101 +010101010101023a801871382d40582c +450076f23100001e011d007251d01e20 +6e28550076f23100001e000000fc0053 +4f4e592054560a2020202020000000fd +003a3e0e460f000a2020202020200174 +020328f04c10050420223c3e03070206 +01260d0707150750830f000068030c00 +1000b82d0fe200fb8c0ad08a20e02d10 +103e960076f231000018011d8018711c +1620582c250076f23100009e00000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000fd \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_24833_SONY_TV_HDMI.txt b/data/chameleon_edids/daily/SNY_24833_SONY_TV_HDMI.txt new file mode 100644 index 0000000..40737f8 --- /dev/null +++ b/data/chameleon_edids/daily/SNY_24833_SONY_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd9016101010101 +0112010380a05a780a0dc9a057479827 +12484c21080081809040010101010101 +010101010101023a801871382d40582c +450040846300001e011d007251d01e20 +6e28550040846300001e000000fd003a +3e0f460f000a202020202020000000fc +00534f4e592054560a20202020200174 +02032070491004050302070620012609 +07071507508301000066030c00200080 +011d8018711c1620582c250040846300 +009e8c0ad08a20e02d10103e96004084 +630000188c0ad08a20e02d10103e9600 +b084430000188c0aa01451f01600267c +4300b084430000980000000000000000 +00000000000000000000000000000028 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_32258_SONY_TV_HDMI.txt b/data/chameleon_edids/daily/SNY_32258_SONY_TV_HDMI.txt new file mode 100644 index 0000000..5615e25 --- /dev/null +++ b/data/chameleon_edids/daily/SNY_32258_SONY_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd9027e01010101 +0116010380a05a780a0dc9a057479827 +12484c21080081800101010101010101 +010101010101023a801871382d40582c +450040846300001e011d007251d01e20 +6e28550040846300001e000000fc0053 +4f4e592054560a2020202020000000fd +00303e0e460f000a202020202020012b +02032cf0501f10140513041211161503 +02070601202609070715075083010000 +68030c001000801e0fe2007b023a80d0 +72382d40102c458040846300001e011d +00bc52d01e20b828554040846300001e +011d8018711c1620582c250040846300 +009e011d80d0721c1620102c25804084 +6300009e000000000000000000000055 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_32770_SONY_TV_HDMI.txt b/data/chameleon_edids/daily/SNY_32770_SONY_TV_HDMI.txt new file mode 100644 index 0000000..2af8e53 --- /dev/null +++ b/data/chameleon_edids/daily/SNY_32770_SONY_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd9028001010101 +0116010380a05a780a83ada256499b25 +0f474a21080081800101010101010101 +010101010101023a801871382d40582c +450040846300001e011d007251d01e20 +6e28550040846300001e000000fd003a +3e0f460f000a202020202020000000fc +00534f4e592054560a202020202001c6 +020325f0491004050302070620012609 +07071507508301000068030c00100080 +1e0fe2007b011d8018711c1620582c25 +0040846300009e8c0ad08a20e02d1010 +3e96004084630000188c0ad08a20e02d +10103e9600b084430000188c0aa01451 +f01600267c4300b08443000098000000 +00000000000000000000000000000027 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_33280_SONY_TV_HDMI.txt b/data/chameleon_edids/daily/SNY_33280_SONY_TV_HDMI.txt new file mode 100644 index 0000000..8c3652e --- /dev/null +++ b/data/chameleon_edids/daily/SNY_33280_SONY_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd9008201010101 +320f0103804628780a0dc9a057479827 +12484c00000001010101010101010101 +010101010101023a801871382d40582c +4500dfa42100001e8c0ad08a20e02d10 +103e960030a421000018000000fc0053 +4f4e592054560a2020202020000000fd +003a3e0f460f000a202020202020012c +02031c76480590030406070102230907 +078301000066030c00200080011d0072 +51d01e206e285500dfa42100001e8c0a +a01451f01600267c430030a421000098 +011d8018711c1620582c2500dfa42100 +009e8c0ad08a20e02d10103e9600dfa4 +21000018000000000000000000000000 +000000000000000000000000000000c2 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_33536_SONY_TV_XV_HDMI.txt b/data/chameleon_edids/daily/SNY_33536_SONY_TV_XV_HDMI.txt new file mode 100644 index 0000000..b950b79 --- /dev/null +++ b/data/chameleon_edids/daily/SNY_33536_SONY_TV_XV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd9008301010101 +0c12010380a05a780a0dc9a057479827 +12484c21080081800101010101010101 +010101010101023a801871382d40582c +450040846300001e011d007251d01e20 +6e28550040846300001e000000fc0053 +4f4e592054562058560a2020000000fd +003a3e0f460f000a20202020202001a8 +02032570491004050302070620012609 +07071507508301000067030c001000b8 +2de3050301011d8018711c1620582c25 +0040846300009e8c0ad08a20e02d1010 +3e96004084630000188c0ad08a20e02d +10103e960040b0640000188c0aa01451 +f01600267c430040b064000098000000 +00000000000000000000000000000027 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_39937_SONY_TV_HDMI.txt b/data/chameleon_edids/daily/SNY_39937_SONY_TV_HDMI.txt new file mode 100644 index 0000000..9dac2f5 --- /dev/null +++ b/data/chameleon_edids/daily/SNY_39937_SONY_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd9019c01010101 +0113010380a05a780a0dc9a057479827 +12484c21080081800101010101010101 +010101010101023a801871382d40582c +450040846300001e011d007251d01e20 +6e28550040846300001e000000fd003a +3e0f460f000a202020202020000000fc +00534f4e592054560a20202020200106 +02032070491004050302070620012609 +07071507508301000066030c00100080 +011d8018711c1620582c250040846300 +009e8c0ad08a20e02d10103e96004084 +630000188c0ad08a20e02d10103e9600 +b084430000188c0aa01451f01600267c +4300b084430000980000000000000000 +00000000000000000000000000000038 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_43265_SONY_TV_HDMI.txt b/data/chameleon_edids/daily/SNY_43265_SONY_TV_HDMI.txt new file mode 100644 index 0000000..a9fb653 --- /dev/null +++ b/data/chameleon_edids/daily/SNY_43265_SONY_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd901a901010101 +0113010380a05a780a0dc9a057479827 +12484c21080081800101010101010101 +010101010101023a801871382d40582c +450040846300001e011d007251d01e20 +6e28550040846300001e000000fd003a +3e0f460f000a202020202020000000fc +00534f4e592054560a202020202001f9 +020325f0491004050302070620012609 +07071507508301000068030c001000b8 +2d0fe2007b011d8018711c1620582c25 +0040846300009e8c0ad08a20e02d1010 +3e96004084630000188c0ad08a20e02d +10103e9600b084430000188c0aa01451 +f01600267c4300b08443000098000000 +000000000000000000000000000000e0 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_55810_SONY_TV_01_HDMI.txt b/data/chameleon_edids/daily/SNY_55810_SONY_TV_01_HDMI.txt new file mode 100644 index 0000000..d973461 --- /dev/null +++ b/data/chameleon_edids/daily/SNY_55810_SONY_TV_01_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd902da01010101 +01170103807a44780a0dc9a057479827 +12484c21080081800101010101010101 +010101010101023a801871382d40582c +4500c2ad4200001e011d007251d01e20 +6e285500c2ad4200001e000000fc0053 +4f4e5920545620202a30310a000000fd +003a3e0e460f000a20202020202001c1 +020333f04c10050420223c3e03070206 +01260907071507508301000073030c00 +2000b82d2fd0090140000f1040506046 +e200fb8c0ad08a20e02d10103e9600c2 +ad42000018011d8018711c1620582c25 +00c2ad4200009e000000000000000000 +00000000000000000000000000000000 +0000000000000000000000000000002a \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_5635_SONY_TV_HDMI.txt b/data/chameleon_edids/daily/SNY_5635_SONY_TV_HDMI.txt new file mode 100644 index 0000000..e02a15f --- /dev/null +++ b/data/chameleon_edids/daily/SNY_5635_SONY_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd9031601010101 +0117010380a05a780a83ada256499b25 +0f474a21080081800101010101010101 +010101010101023a801871382d40582c +450040846300001e011d007251d01e20 +6e28550040846300001e000000fd003a +3e0f460f000a202020202020000000fc +00534f4e592054560a2020202020012e +020328f04c10050420223c3e03070206 +01260907071507508301000068030c00 +1000801e0fe2007b011d8018711c1620 +582c250040846300009e8c0ad08a20e0 +2d10103e96004084630000188c0ad08a +20e02d10103e9600b084430000188c0a +a01451f01600267c4300b08443000098 +00000000000000000000000000000085 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_59905_SONY_TV_HDMI.txt b/data/chameleon_edids/daily/SNY_59905_SONY_TV_HDMI.txt new file mode 100644 index 0000000..98b3c8b --- /dev/null +++ b/data/chameleon_edids/daily/SNY_59905_SONY_TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd901ea01010101 +0114010380a05a780a83ada256499b25 +0f474a21080081800101010101010101 +010101010101023a801871382d40582c +450040846300001e011d007251d01e20 +6e28550040846300001e000000fd003a +3e0f460f000a202020202020000000fc +00534f4e592054560a2020202020015f +02032270491004050302070620012609 +07071507508301000068030c00100080 +1e0f011d8018711c1620582c25004084 +6300009e8c0ad08a20e02d10103e9600 +4084630000188c0ad08a20e02d10103e +9600b084430000188c0aa01451f01600 +267c4300b08443000098000000000000 +00000000000000000000000000000007 \ No newline at end of file diff --git a/data/chameleon_edids/daily/SNY_9475_SONY_TV_07_HDMI.txt b/data/chameleon_edids/daily/SNY_9475_SONY_TV_07_HDMI.txt new file mode 100644 index 0000000..1abe847 --- /dev/null +++ b/data/chameleon_edids/daily/SNY_9475_SONY_TV_07_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff004dd9032501010101 +01170103807a44780a0dc9a057479827 +12484c2108008180a9c0010101010101 +010101010101023a801871382d40582c +4500c2ad4200001e011d007251d01e20 +6e285500c2ad4200001e000000fc0053 +4f4e5920545620202a30370a000000fd +003a3e0e460f000a2020202020200108 +020343f05010050420223c3e03070206 +015d5e5f622609070715075083010000 +77030c001000b83c2fd0890102030401 +40000f1040506046e200fbe3051f01e3 +0e61668c0ad08a20e02d10103e9600c2 +ad42000018011d8018711c1620582c25 +00c2ad4200009e000000000000000000 +0000000000000000000000000000004d \ No newline at end of file diff --git a/data/chameleon_edids/daily/TFA_1664_PC2TV_HDMI.txt b/data/chameleon_edids/daily/TFA_1664_PC2TV_HDMI.txt new file mode 100644 index 0000000..972b0f7 --- /dev/null +++ b/data/chameleon_edids/daily/TFA_1664_PC2TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff0050c1800601000000 +2115010380331d780ac5c8a3574a9c23 +12484cbfef804bc08100814081809040 +9500b3000101011d007251d01e206e28 +5500c48e2100001e662150b051001b30 +00702644c48e2100001e000000fc0050 +433254560a20202020202020000000fd +00184b0f460f000a2020202020200139 +02032071230906018301000065030c00 +10004d0284050610111314151f202122 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000072 \ No newline at end of file diff --git a/data/chameleon_edids/daily/TSB_518_TOSHIBA-TV_HDMI.txt b/data/chameleon_edids/daily/TSB_518_TOSHIBA-TV_HDMI.txt new file mode 100644 index 0000000..e323a07 --- /dev/null +++ b/data/chameleon_edids/daily/TSB_518_TOSHIBA-TV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff005262060201010101 +0117010380a05a780af09da355499b26 +0f474a2fce0081808bc0010101010101 +010101010101023a801871382d40582c +450040846300001e662150b051001b30 +4070360040846300001e000000fc0054 +4f53484942412d54560a2020000000fd +00174b0f440f000a20202020202001b1 +02032b714a9001020304050607202226 +090707110718830100006c030c001000 +382dc015151f1fe3050301011d801871 +1c1620582c250040846300009e011d00 +7251d01e206e28550040846300001e8c +0ad08a20e02d10103e9600b084430000 +188c0aa01451f01600267c4300b08443 +000098000000000000000000000000f7 \ No newline at end of file diff --git a/data/chameleon_edids/daily/VIZ_113_E370VA_HDMI.txt b/data/chameleon_edids/daily/VIZ_113_E370VA_HDMI.txt new file mode 100644 index 0000000..2335df7 --- /dev/null +++ b/data/chameleon_edids/daily/VIZ_113_E370VA_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00593a710001010101 +0914010380522e782adefda355459924 +10474aa54e00d1c00101010101010101 +010101010101023a801871382d40582c +450033cc3100001e6419004041002630 +1888360033cc31000018000000fc0045 +33373056410a202020202020000000fd +00384b1f500f000a20202020202001bb +02032571480106070203040590261507 +50090707830100006c030c001000001e +c001010101023a801871382d40582c45 +0033cc3100001e011d8018711c162058 +2c250033cc3100009e011d007251d01e +206e28550033cc3100001e0000000000 +00000000000000000000000000000000 +000000000000000000000000000000be \ No newline at end of file diff --git a/data/chameleon_edids/daily/VIZ_120_M3D550KDE_HDMI.txt b/data/chameleon_edids/daily/VIZ_120_M3D550KDE_HDMI.txt new file mode 100644 index 0000000..c4e4514 --- /dev/null +++ b/data/chameleon_edids/daily/VIZ_120_M3D550KDE_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00593a780001010101 +00160103807944782216fda355469924 +10474aa54e00d1c00101010101010101 +010101010101023a801871382d40582c +4500b9a84200001e6419004041002630 +18883600b9a842000018000000fc004d +33443535304b44450a202020000000fd +00384c1f500f000a202020202020010a +02032874490106070203059004202609 +0707110718830100006e030c00300000 +2def010101018000023a801871382d40 +582c4500b9a84200001e011d007251d0 +1e206e285500b9a84200001e8c0aa014 +51f01600267c43008ba8320000980000 +00000000000000000000000000000000 +0000000000000000000000000000007a \ No newline at end of file diff --git a/data/chameleon_edids/daily/VIZ_133_M421NV_HDMI.txt b/data/chameleon_edids/daily/VIZ_133_M421NV_HDMI.txt new file mode 100644 index 0000000..d6df057 --- /dev/null +++ b/data/chameleon_edids/daily/VIZ_133_M421NV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00593a850001010101 +2e140103805d34780afcf7a355499c24 +10474aa5ce0001010101010101010101 +010101010101023a801871382d40582c +4500a2083200001e000000fd00324d1f +460f000a202020202020000000ff0055 +4b4755464d30313030303031000000fc +004d3432314e560a2020202020200123 +020320714b010304059020151213141f +231107508301000067030c003000282d +023a801871382d40582c5500a2083200 +001e011d007251d01e206e285500a208 +3200001e000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +0000000000000000000000000000005a \ No newline at end of file diff --git a/data/chameleon_edids/daily/VIZ_146_E3D470VX_HDMI.txt b/data/chameleon_edids/daily/VIZ_146_E3D470VX_HDMI.txt new file mode 100644 index 0000000..7b7f67b --- /dev/null +++ b/data/chameleon_edids/daily/VIZ_146_E3D470VX_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00593a920001010101 +2a15010380683a780aa5bba3554a9b25 +0e474aa5ce00810081c0010101010101 +010101010101023a801871382d40582c +450010494200001e000000fd00324d1f +460f000a202020202020000000ff0055 +4b4a5a454d30313030303031000000fc +0045334434373056580a2020202001db +02032d714b010304059020111213141f +29090705155750000700830100006e03 +0c002000282d20c0040141002c023a80 +1871382d40582c550010494200001e01 +1d007251d01e206e2855001049420000 +1e000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000014 \ No newline at end of file diff --git a/data/chameleon_edids/daily/VIZ_146_E601i-A3_HDMI.txt b/data/chameleon_edids/daily/VIZ_146_E601i-A3_HDMI.txt new file mode 100644 index 0000000..8adb700 --- /dev/null +++ b/data/chameleon_edids/daily/VIZ_146_E601i-A3_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00593a920001010101 +2316010380854b782a0657a559519c26 +114849a5ce00810081c0010101010101 +010101010101023a801871382d40582c +450031ec5200001e000000fd00324d1f +460f000a202020202020000000ff0055 +4b4a57414d30313030303031000000fc +0045363031692d41330a2020202001d6 +02032d714b010304059020111213141f +29090705155750000700830100006e03 +0c002000282d00000000000000023a80 +1871382d40582c550031ec5200001e01 +1d007251d01e206e28550031ec520000 +1e000000000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000be \ No newline at end of file diff --git a/data/chameleon_edids/daily/VIZ_146_E701i-A3_HDMI.txt b/data/chameleon_edids/daily/VIZ_146_E701i-A3_HDMI.txt new file mode 100644 index 0000000..a05a490 --- /dev/null +++ b/data/chameleon_edids/daily/VIZ_146_E701i-A3_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00593a920001010101 +25160103809a57782a8937a35a4e9e26 +104849a5ce00810081c0010101010101 +010101010101023a801871382d40582c +450002616300001e000000fd00324d1f +460f000a202020202020000000ff0055 +4b4a57414d30313030303031000000fc +0045373031692d41330a2020202001fb +02032d714b010304059020111213141f +29090705155750000700830100006e03 +0c001000282d00000000000000023a80 +1871382d40582c550002616300001e01 +1d007251d01e206e2855000261630000 +1e000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000020 \ No newline at end of file diff --git a/data/chameleon_edids/daily/VIZ_146_M3D651SV_HDMI.txt b/data/chameleon_edids/daily/VIZ_146_M3D651SV_HDMI.txt new file mode 100644 index 0000000..758185f --- /dev/null +++ b/data/chameleon_edids/daily/VIZ_146_M3D651SV_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00593a920001010101 +14160103808f507802639da154529e26 +0a474aa5ce00810081c0010101010101 +010101010101023a801871382d40582c +450096245300001e000000fd00324d1f +460f000a202020202020000000ff0055 +414e43414e30313030303031000000fc +004d334436353153560a2020202001c0 +02032d714b010304059020111213141f +29090705155750100750830100006e03 +0c002000382d20c0040141002c023a80 +1871382d40582c550096245300001e01 +1d007251d01e206e2855009624530000 +1e000000000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000c0 \ No newline at end of file diff --git a/data/chameleon_edids/daily/VIZ_149_E291-A1_HDMI.txt b/data/chameleon_edids/daily/VIZ_149_E291-A1_HDMI.txt new file mode 100644 index 0000000..b2f0ced --- /dev/null +++ b/data/chameleon_edids/daily/VIZ_149_E291-A1_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00593a950001010101 +00170103803f23782a1f1b9f58559e27 +0c474aa5460001010101010101010101 +010101010101662150b051001b304070 +360077622100001e6419004041002630 +18883600776221000018000000fc0045 +3239312d41310a2020202020000000fd +003a4c1e3d09000a2020202020200123 +02031e71488504100203070601260907 +071507508301000065030c001000011d +8018711c1620582c250077622100009e +011d007251d01e206e28550077622100 +001e8c0ad08a20e02d10103e9600d862 +110000188c0aa01451f01600267c4300 +7762210000988c0aa01451f01600267c +4300d862110000980000000000000026 \ No newline at end of file diff --git a/data/chameleon_edids/daily/VIZ_152_E470-A0_HDMI.txt b/data/chameleon_edids/daily/VIZ_152_E470-A0_HDMI.txt new file mode 100644 index 0000000..2f18142 --- /dev/null +++ b/data/chameleon_edids/daily/VIZ_152_E470-A0_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00593a980001010101 +1816010380683a780af8dba257519b27 +0e474aa5ce0001010101010101010101 +010101010101023a801871382d40582c +450010494200001e000000fd00324d1f +460f000a202020202020000000ff004c +41554b4f4e414e3031303030000000fc +00453437302d41300a2020202020016c +020324714b010304059020151213141f +29090705155750000700830100006503 +0c001000023a801871382d40582c5500 +10494200001e011d007251d01e206e28 +550010494200001e0000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000d9 \ No newline at end of file diff --git a/data/chameleon_edids/daily/VIZ_4100_E470i-A0_HDMI.txt b/data/chameleon_edids/daily/VIZ_4100_E470i-A0_HDMI.txt new file mode 100644 index 0000000..e682aee --- /dev/null +++ b/data/chameleon_edids/daily/VIZ_4100_E470i-A0_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00593a041001010101 +0d17010380683a780af8dba257519b27 +0e474aa5ce00810081c0010101010101 +010101010101023a801871382d40582c +450010494200001e000000fd00324d1f +460f000a202020202020000000ff0055 +4b4f43425030313030303031000000fc +0045343730692d41300a202020200127 +020326714b010304059020111213141f +29090705155750100750830100006703 +0c001000382d023a801871382d40582c +550010494200001e011d007251d01e20 +6e28550010494200001e000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000014 \ No newline at end of file diff --git a/data/chameleon_edids/daily/VIZ_4100_E550i-B2_HDMI.txt b/data/chameleon_edids/daily/VIZ_4100_E550i-B2_HDMI.txt new file mode 100644 index 0000000..0a35794 --- /dev/null +++ b/data/chameleon_edids/daily/VIZ_4100_E550i-B2_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00593a041001010101 +0a180103805d34780ae69da3544a9926 +0f474aa1080081809500b30001010101 +010101010101023a801871382d40582c +4500a2083200001e0e1f008051001e30 +40803700dd0c1100001c000000fd0032 +4b1e460f000a202020202020000000fc +0045353530692d42320a202020200156 +02032c714f0203040506079013141f20 +2201111226090707150750830100006c +030c001000382dc002020202011d0072 +51d01e206e2855009ae61000001a011d +8018711c1620582c25009ae61000009e +8c0ad08a20e02d10103a96009ae61000 +0018023a801871382d40582c45009ae6 +1000001e0000000000000000000000e9 \ No newline at end of file diff --git a/data/chameleon_edids/daily/VIZ_4102_E600i-B3_HDMI.txt b/data/chameleon_edids/daily/VIZ_4102_E600i-B3_HDMI.txt new file mode 100644 index 0000000..fb211f2 --- /dev/null +++ b/data/chameleon_edids/daily/VIZ_4102_E600i-B3_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00593a061001010101 +0017010380854b782a2098a35a53a027 +0e484ca5ce00810081c0010101010101 +010101010101023a801871382d40582c +450031ec5200001e000000fd00324d1f +460f000a202020202020000000fc0045 +363030692d42330a20202020000000ff +0056495a494f30303030310a20200168 +02032d714b010304059020111213141f +29090705155750000700830100006e03 +0c001000282d00000000000000023a80 +1871382d40582c550031ec5200001e01 +1d007251d01e206e28550031ec520000 +1e000000000000000000000000000000 +00000000000000000000000000000000 +000000000000000000000000000000ce \ No newline at end of file diff --git a/data/chameleon_edids/daily/VIZ_87_E470VL_HDMI.txt b/data/chameleon_edids/daily/VIZ_87_E470VL_HDMI.txt new file mode 100644 index 0000000..bdd1c55 --- /dev/null +++ b/data/chameleon_edids/daily/VIZ_87_E470VL_HDMI.txt @@ -0,0 +1,16 @@ +00ffffffffffff00593a570001010101 +3113010380683a780afcf7a355499c24 +10474aa5ce0001010101010101010101 +010101010101023a801871382d40582c +450010444200001e000000fd00324d1f +460f000a202020202020000000ff0055 +4b4846414c30313030303031000000fc +0045343730564c0a202020202020019e +020320714b010304059020151213141f +231107508301000067030c001000282d +023a801871382d40582c550010444200 +001e011d007251d01e206e2855001044 +4200001e000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000006 \ No newline at end of file diff --git a/data/chameleon_edids/daily/VSC_54823_VX1951m_HDMI.txt b/data/chameleon_edids/daily/VSC_54823_VX1951m_HDMI.txt new file mode 100644 index 0000000..76cd6d6 --- /dev/null +++ b/data/chameleon_edids/daily/VSC_54823_VX1951m_HDMI.txt @@ -0,0 +1,8 @@ +00ffffffffffff005a6327d601010101 +2615010380291a782a1455a5564a9c25 +115054bfef80a9c0950f8180810f8100 +714f010181c09a29a0d0518422305098 +360098ff1000001c000000ff00534252 +3131333831303938370a000000fd0032 +4b18520e000a202020202020000000fc +005658313935316d0a202020202000e2 \ No newline at end of file @@ -5,7 +5,7 @@ from plainbox.provider_manager import N_ setup( name='plainbox-provider-checkbox', namespace='com.canonical.certification', - version="0.50.0", + version="0.51.0rc1", description=N_("Checkbox provider"), gettext_domain='plainbox-provider-checkbox', strict=False, deprecated=False, diff --git a/units/audio/jobs.pxu b/units/audio/jobs.pxu index 0745e5c..126209e 100644 --- a/units/audio/jobs.pxu +++ b/units/audio/jobs.pxu @@ -679,6 +679,8 @@ flags: also-after-suspend command: alsa_test loopback -d 5 category_id: com.canonical.plainbox::audio estimated_duration: 5 +imports: from com.canonical.plainbox import manifest +requires: manifest.has_audio_loopback_connector == 'True' id: audio/alsa-loopback _summary: Captured sound matches played one diff --git a/units/audio/manifest.pxu b/units/audio/manifest.pxu index 95417f6..d3e285b 100644 --- a/units/audio/manifest.pxu +++ b/units/audio/manifest.pxu @@ -13,3 +13,9 @@ unit: manifest entry id: has_audio_capture _name: Audio capture value-type: bool + +unit: manifest entry +id: has_audio_loopback_connector +prompt: Does this device have the following?: +_name: Audio Loopback Connector +value-type: bool diff --git a/units/bluetooth/test-plan.pxu b/units/bluetooth/test-plan.pxu index 69497ae..9de4d37 100644 --- a/units/bluetooth/test-plan.pxu +++ b/units/bluetooth/test-plan.pxu @@ -17,7 +17,6 @@ include: bluetooth/audio-a2dp certification-status=blocker bluetooth4/HOGP-mouse certification-status=blocker bluetooth4/HOGP-keyboard certification-status=blocker - bluetooth/file-transfer certification-status=non-blocker id: bluetooth-cert-automated unit: test plan diff --git a/units/camera/jobs.pxu b/units/camera/jobs.pxu index 0605d18..d7ad2aa 100644 --- a/units/camera/jobs.pxu +++ b/units/camera/jobs.pxu @@ -6,7 +6,19 @@ requires: device.category == 'CAPTURE' command: camera_test detect -_description: This Automated test attempts to detect a camera. +_summary: This Automated test attempts to detect a camera. +user: root + +plugin: shell +category_id: com.canonical.plainbox::camera +id: camera/detect-rpi +estimated_duration: 1.0 +imports: from com.canonical.plainbox import manifest +requires: + manifest.has_rpi_camera == 'True' +command: + udev_resource -f MMAL | grep "category: MMAL" +_summary: Detect presence of a MMAL camera. unit: template template-resource: device @@ -103,3 +115,19 @@ _description: Takes multiple pictures based on the resolutions supported by the camera and validates their size and that they are of a valid format. +unit: template +template-resource: device +template-filter: device.category == 'MMAL' and device.name != '' +template-unit: job +plugin: shell +category_id: com.canonical.plainbox::camera +id: camera/multiple-resolution-images-rpi_{name} +_summary: Webcam multiple resolution capture test for Pi Camera +estimated_duration: 16.0 +depends: camera/detect-rpi +command: + camera_test_rpi.py --device /dev/{name} +_description: + Takes multiple pictures based on the resolutions supported by the camera and + validates their size and that they are of a valid format. +user: root \ No newline at end of file diff --git a/units/camera/manifest.pxu b/units/camera/manifest.pxu new file mode 100644 index 0000000..de12798 --- /dev/null +++ b/units/camera/manifest.pxu @@ -0,0 +1,4 @@ +unit: manifest entry +id: has_rpi_camera +_name: RaspberryPi Camera Module +value-type: bool \ No newline at end of file diff --git a/units/camera/test-plan.pxu b/units/camera/test-plan.pxu index 578a7ce..c3b8378 100644 --- a/units/camera/test-plan.pxu +++ b/units/camera/test-plan.pxu @@ -60,3 +60,29 @@ include: after-suspend-manual-camera/display_.* certification-status=blocker bootstrap_include: device + +id: camera-full +unit: test plan +_name: Camera tests +_description: Camera tests for Ubuntu Core devices +include: +nested_part: + camera-automated + camera-manual + +id: camera-manual +unit: test plan +_name: Manual camera tests +_description: Manual camera tests for Ubuntu Core devices +include: + +id: camera-automated +unit: test plan +_name: Automated camera tests +_description: Automated camera tests for Ubuntu Core devices +estimated_duration: 1h30m +include: + camera/multiple-resolution-images-_.* + camera/multiple-resolution-images-rpi_.* +bootstrap_include: + device diff --git a/units/cpu/jobs.pxu b/units/cpu/jobs.pxu index a027aa9..dccf2e4 100644 --- a/units/cpu/jobs.pxu +++ b/units/cpu/jobs.pxu @@ -2,7 +2,9 @@ plugin: shell category_id: com.canonical.plainbox::cpu id: cpu/scaling_test estimated_duration: 150.0 -requires: executable.name == 'fwts' +requires: + executable.name == 'fwts' + 'userspace' in cpuinfo.governors user: root environ: PLAINBOX_SESSION_SHARE LD_LIBRARY_PATH SNAP command: diff --git a/units/dock/jobs.pxu b/units/dock/jobs.pxu index c425402..c457102 100644 --- a/units/dock/jobs.pxu +++ b/units/dock/jobs.pxu @@ -152,6 +152,23 @@ _verification: Was the desktop displayed correctly on the screen connected using a "USB Type-C to VGA" adapter in every mode? +id: dock/monitor-thunderbolt3 +category_id: dock-display +depends: dock/cold-plug +imports: from com.canonical.plainbox import manifest +requires: manifest.has_thunderbolt3 == 'True' +estimated_duration: 120.0 +_summary: Thunderbolt3 port test on the dock +plugin: manual +_purpose: + This test will check the Thunderbolt3 port(s) on the dock. +_steps: + Skip this test if the dock does not have a Thunderbolt3 port. + 1. Connect a display (if not already connected) to the Thunderbolt3 port on the dock + 2. Repeat step 1 for each additional Thunderbolt3 port, if any +_verification: + Was the desktop displayed correctly on both screens? + id: dock/monitor-dual-head category_id: dock-display depends: dock/cold-plug @@ -159,9 +176,9 @@ estimated_duration: 120.0 _summary: Dual monitors test while docked plugin: manual _purpose: - This test verifies that dual-monitor output works using the dock. You will need two external monitors to perform this test. + This test verifies that dual-monitor output works using the dock. You will need two external monitors to perform this test. Depends on the specification of the device to use 4K monitor or FHD monitor. _steps: - Skip this test if your video card or the dock do not support multiple monitors. Use 4K monitors to run this test if the video card and dock both support. + Skip this test if your video card or the dock do not support multiple monitors. 1. If your dock provides more than one monitor outputs, connect two monitors 2. Open the "Displays" tool (open the dash and search for "Displays") 3. Configure your output to provide one desktop across all the monitors @@ -169,14 +186,14 @@ _steps: _verification: Was the stretched desktop displayed correctly across all the screens? -id: dock/monitor-tripple-head +id: dock/monitor-triple-head category_id: dock-display depends: dock/cold-plug estimated_duration: 120.0 _summary: Tripple monitors test while docked plugin: manual _purpose: - This test verifies that tripple-monitor output works using the dock. You will need three external monitors to perform this test. + This test verifies that triple-monitor output works using the dock. You will need three external monitors to perform this test. Depends on the specification of the device to use 4K monitor or FHD monitor. _steps: Skip this test if your video card or the dock do not support multiple monitors. 1. If your dock provides more than one monitor outputs, connect three monitors @@ -225,6 +242,7 @@ requires: package.name == 'pulseaudio-utils' _summary: HDMI audio test plugin: user-interact-verify +flags: also-after-suspend-manual estimated_duration: 30.0 command: audio_settings store --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings @@ -252,6 +270,7 @@ requires: package.name == 'pulseaudio-utils' _summary: DisplayPort audio test plugin: user-interact-verify +flags: also-after-suspend-manual estimated_duration: 30.0 command: audio_settings store --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings @@ -269,9 +288,96 @@ _steps: _verification: Did you hear the sound from the DisplayPort device? +id: dock/audio-playback-type-c-hdmi +category_id: dock-audio +depends: dock/cold-plug +requires: + device.category == 'AUDIO' + package.name == 'alsa-base' + package.name == 'gir1.2-gst-plugins-base-0.10' or package.name == 'gir1.2-gst-plugins-base-1.0' + package.name == 'pulseaudio-utils' +_summary: HDMI audio test +plugin: user-interact-verify +estimated_duration: 30.0 +command: + audio_settings store --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings + audio_settings set --verbose --device=hdmi --volume=50 + gst_pipeline_test -t 2 --device hdmi 'audiotestsrc wave=sine freq=512 ! audioconvert ! audioresample ! autoaudiosink' + EXIT_CODE=$? + audio_settings restore --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings + exit $EXIT_CODE +_purpose: + Dock USB Type-C HDMI audio interface verification +_steps: + 1. Plug an external HDMI device with sound on a USB Type-C port using a "USB Typce-C to HDMI" adapter on Dock (use only one HDMI/DisplayPort/Thunderbolt interface at a time for this test) + 2. Go to the Sound settings and make sure the correct Output is selected + 3. Click the Test button +_verification: + Did you hear the sound from the HDMI device? + +id: dock/audio-playback-type-c-displayport +category_id: dock-audio +depends: dock/cold-plug +requires: + device.category == 'AUDIO' + package.name == 'alsa-base' + package.name == 'gir1.2-gst-plugins-base-0.10' or package.name == 'gir1.2-gst-plugins-base-1.0' + package.name == 'pulseaudio-utils' +_summary: HDMI audio test +plugin: user-interact-verify +flags: also-after-suspend-manual +estimated_duration: 30.0 +command: + audio_settings store --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings + audio_settings set --verbose --device=hdmi --volume=50 + gst_pipeline_test -t 2 --device hdmi 'audiotestsrc wave=sine freq=512 ! audioconvert ! audioresample ! autoaudiosink' + EXIT_CODE=$? + audio_settings restore --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings + exit $EXIT_CODE +_purpose: + Dock USB Type-C Displayport audio interface verification +_steps: + 1. Plug an external Displayport device with sound on a USB Type-C port using a "USB Typce-C to Displayport" adapter on Dock (use only one HDMI/DisplayPort/Thunderbolt interface at a time for this test) + 2. Go to the Sound settings and make sure the correct Output is selected + 3. Click the Test button +_verification: + Did you hear the sound from the Displayport device? + +id: dock/audio-playback-thunderbolt3 +category_id: dock-audio +depends: dock/cold-plug +imports: from com.canonical.plainbox import manifest +requires: + device.category == 'AUDIO' + package.name == 'alsa-base' + package.name == 'gir1.2-gst-plugins-base-0.10' or package.name == 'gir1.2-gst-plugins-base-1.0' + package.name == 'pulseaudio-utils' + manifest.has_thunderbolt3 == 'True' +_summary: DisplayPort audio test +plugin: user-interact-verify +flags: also-after-suspend-manual +estimated_duration: 30.0 +command: + audio_settings store --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings + audio_settings set --verbose --device=hdmi --volume=50 + gst_pipeline_test -t 2 --device hdmi 'audiotestsrc wave=sine freq=512 ! audioconvert ! audioresample ! autoaudiosink' + EXIT_CODE=$? + audio_settings restore --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings + exit $EXIT_CODE +_purpose: + Dock Thunderbolt3 audio interface verification +_steps: + 1. Plug an external Thunderbolt3 device with sound to the dock (use only one HDMI/DisplayPort/Thunderbolt3 interface at a time for this test) + 2. Go to the Sound settings and make sure the correct Output is selected + 3. Click the Test button +_verification: + Did you hear the sound from the Thunderbolt3 device? + + id: dock/audio-playback-headphones category_id: dock-audio plugin: user-interact-verify +flags: also-after-suspend-manual estimated_duration: 30.0 _summary: Headphones output test depends: dock/audio-list-devices @@ -292,7 +398,8 @@ _purpose: (Skip this test if there is no headphone connector on the dock) _steps: 1. Connect a pair of headphones to the dock - 2. Click the Test button to play a sound to your audio device + 2. Go to the Sound settings and make sure the correct Output is selected + 3. Click the Test button to play a sound to your audio device _verification: Did you hear a sound through the headphones and did the sound play without any distortion, clicks or other strange noises from your headphones? @@ -300,6 +407,7 @@ plugin: user-interact-verify category_id: dock-audio id: dock/audio-alsa-record-playback-external estimated_duration: 30.0 +flags: also-after-suspend-manual _summary: External microphone plugged to the dock to record sound test depends: dock/audio-playback-headphones requires: @@ -319,8 +427,9 @@ _purpose: (Skip this test if the dock does not have a microphone connector) _steps: 1. Connect a microphone to the dock's microphone port - 2. Click "Test", then speak into the external microphone - 3. After a few seconds, your speech will be played back to you + 2. Go to the Sound settings and make sure the correct Output is selected + 3. Click "Test", then speak into the external microphone + 4. After a few seconds, your speech will be played back to you _verification: Did you hear your speech played back? @@ -883,6 +992,27 @@ _description: Did a notification show and was the connection correctly established? plugin: user-interact +id: dock/hotplug-usb-insert +category_id: dock-hotplug +depends: dock/hot-plug +estimated_duration: 10.0 +_summary: USB drive insertion test +command: removable_storage_watcher insert usb +_purpose: + This test will check that the system correctly detects the insertion of + a USB storage device plugged on the dock +_steps: + 1. Click "Test" and insert a USB storage device, preferably a HDD, + in one of the dock's port. + Although a USB pen drive may be used it might cause performance + related tests to fail. (Note: this test will time-out after 20 + seconds.) + 2. Do not unplug the device after the test. +_verification: + The verification of this test is automated. Do not change the + automatically selected result. + +plugin: user-interact id: dock/hotplug-usb3-insert category_id: dock-hotplug depends: dock/hot-plug @@ -903,6 +1033,17 @@ _verification: automatically selected result. plugin: shell +id: dock/hotplug-usb-storage-automated +category_id: dock-hotplug +depends: dock/hotplug-usb-insert +user: root +estimated_duration: 45.0 +_summary: USB drive storage test +command: removable_storage_test -s 268400000 usb +_description: + This test is automated and executes after the dock/usb_insert test is run. + +plugin: shell id: dock/hotplug-usb3-storage-automated category_id: dock-hotplug depends: dock/hotplug-usb3-insert @@ -914,6 +1055,23 @@ _description: This test is automated and executes after the dock/usb3_insert test is run. plugin: user-interact +id: dock/hotplug-usb-remove +category_id: dock-hotplug +depends: dock/hotplug-usb-insert +estimated_duration: 10.0 +_summary: USB drive removal test +command: removable_storage_watcher remove usb +_purpose: + This test will check that the system correctly detects the removal of + a USB storage device +_steps: + 1. Click "Test" and remove the USB device from the dock. + (Note: this test will time-out after 20 seconds.) +_verification: + The verification of this test is automated. Do not change the + automatically selected result. + +plugin: user-interact id: dock/hotplug-usb3-remove category_id: dock-hotplug depends: dock/hotplug-usb3-insert @@ -930,35 +1088,117 @@ _verification: The verification of this test is automated. Do not change the automatically selected result. -id: dock/hotplug-monitor-displayport +id: dock/hotplug-playback-type-c-displayport category_id: dock-hotplug depends: dock/hot-plug -estimated_duration: 120.0 -_summary: DisplayPort test on the dock -plugin: manual +requires: + device.category == 'AUDIO' + package.name == 'alsa-base' + package.name == 'gir1.2-gst-plugins-base-0.10' or package.name == 'gir1.2-gst-plugins-base-1.0' + package.name == 'pulseaudio-utils' +_summary: HDMI audio test +plugin: user-interact-verify +flags: also-after-suspend-manual +estimated_duration: 30.0 +command: + audio_settings store --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings + audio_settings set --verbose --device=hdmi --volume=50 + gst_pipeline_test -t 2 --device hdmi 'audiotestsrc wave=sine freq=512 ! audioconvert ! audioresample ! autoaudiosink' + EXIT_CODE=$? + audio_settings restore --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings + exit $EXIT_CODE _purpose: - This test will check the DisplayPort(s) on the dock after hot plugged in. + Dock USB Type-C Displayport audio interface verification _steps: - Skip this test if the dock does not have a DisplayPort. - 1. Connect a display (if not already connected) to the DisplayPort on the dock - 2. Repeat step 1 for each additional DisplayPorts, if any + 1. Plug an external Displayport device with sound on a USB Type-C port using a "USB Typce-C to Displayport" adapter on Dock (use only one HDMI/DisplayPort/Thunderbolt interface at a time for this test) + 2. Go to the Sound settings and make sure the correct Output is selected + 3. Click the Test button _verification: - Was the desktop displayed correctly on both screens? + Did you hear the sound from the Displayport device? -id: dock/hotplug-monitor-hdmi +id: dock/hotplug-playback-thumderbolt3 category_id: dock-hotplug depends: dock/hot-plug -estimated_duration: 120.0 -_summary: HDMI port test on the dock -plugin: manual +requires: + device.category == 'AUDIO' + package.name == 'alsa-base' + package.name == 'gir1.2-gst-plugins-base-0.10' or package.name == 'gir1.2-gst-plugins-base-1.0' + package.name == 'pulseaudio-utils' +_summary: HDMI audio test +plugin: user-interact-verify +flags: also-after-suspend-manual +estimated_duration: 30.0 +command: + audio_settings store --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings + audio_settings set --verbose --device=hdmi --volume=50 + gst_pipeline_test -t 2 --device hdmi 'audiotestsrc wave=sine freq=512 ! audioconvert ! audioresample ! autoaudiosink' + EXIT_CODE=$? + audio_settings restore --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings + exit $EXIT_CODE _purpose: - This test will check the HDMI port(s) on the dock after hot plugged in. + Dock Thunderbolt3 audio interface verification _steps: - Skip this test if the dock does not have a HDMI port. - 1. Connect a display (if not already connected) to the HDMI port on the dock - 2. Repeat step 1 for each additional HDMI port, if any + 1. Plug an external Thunderbolt3 device with sound (Use only one HDMI/DisplayPort/Thunderbolt3 interface at a time for this test) + 2. Go to the Sound settings and make sure the correct Output is selected + 3. Click the Test button _verification: - Was the desktop displayed correctly on both screens? + Did you hear the sound from the HDMI device? + +id: dock/hotplug-playback-displayport +category_id: dock-hotplug +depends: dock/hot-plug +requires: + device.category == 'AUDIO' + package.name == 'alsa-base' + package.name == 'gir1.2-gst-plugins-base-0.10' or package.name == 'gir1.2-gst-plugins-base-1.0' + package.name == 'pulseaudio-utils' +_summary: DisplayPort audio test +plugin: user-interact-verify +flags: also-after-suspend-manual +estimated_duration: 30.0 +command: + audio_settings store --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings + audio_settings set --verbose --device=hdmi --volume=50 + gst_pipeline_test -t 2 --device hdmi 'audiotestsrc wave=sine freq=512 ! audioconvert ! audioresample ! autoaudiosink' + EXIT_CODE=$? + audio_settings restore --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings + exit $EXIT_CODE +_purpose: + Dock DisplayPort audio interface verification +_steps: + 1. Plug an external DisplayPort device with sound to the dock (use only one HDMI/DisplayPort/Thunderbolt interface at a time for this test) + 2. Go to the Sound settings and make sure the correct Output is selected + 3. Click the Test button +_verification: + Did you hear the sound from the DisplayPort device? + +id: dock/hotplug-playback-hdmi +category_id: dock-hotplug +depends: dock/hot-plug +requires: + device.category == 'AUDIO' + package.name == 'alsa-base' + package.name == 'gir1.2-gst-plugins-base-0.10' or package.name == 'gir1.2-gst-plugins-base-1.0' + package.name == 'pulseaudio-utils' +_summary: HDMI audio test +plugin: user-interact-verify +flags: also-after-suspend-manual +estimated_duration: 30.0 +command: + audio_settings store --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings + audio_settings set --verbose --device=hdmi --volume=50 + gst_pipeline_test -t 2 --device hdmi 'audiotestsrc wave=sine freq=512 ! audioconvert ! audioresample ! autoaudiosink' + EXIT_CODE=$? + audio_settings restore --verbose --file=$PLAINBOX_SESSION_SHARE/pulseaudio_settings + exit $EXIT_CODE +_purpose: + Dock HDMI audio interface verification +_steps: + 1. Plug an external HDMI device with sound to the dock (use only one HDMI/DisplayPort/Thunderbolt interface at a time for this test) + 2. Go to the Sound settings and make sure the correct Output is selected + 3. Click the Test button +_verification: + Did you hear the sound from the HDMI device? ### Network ### @@ -1234,6 +1474,41 @@ _verification: Was the desktop displayed correctly on the screen connected using a "USB Type-C to VGA" adapter in every mode? +id: dock/monitor-dual-head-after-suspend +category_id: dock-display +depends: suspend/suspend_advanced +estimated_duration: 120.0 +_summary: Dual monitors test while docked after suspend +plugin: manual +_purpose: + This test verifies that dual-monitor output works using the dock after suspend. You will need two external monitors to perform this test. Depends on the specification of the device to use 4K monitor or FHD monitor. +_steps: + Skip this test if your video card or the dock do not support multiple monitors. + 1. If your dock provides more than one monitor outputs, connect two monitors + 2. Open the "Displays" tool (open the dash and search for "Displays") + 3. Configure your output to provide one desktop across all the monitors + 4. Open any application and drag its window from one monitor to the next. +_verification: + Was the stretched desktop displayed correctly across all the screens? + +id: dock/monitor-triple-head-after-suspend +category_id: dock-display +depends: suspend/suspend_advanced +estimated_duration: 120.0 +_summary: Tripple monitors test while docked after suspend +plugin: manual +_purpose: + This test verifies that triple-monitor output works using the dock after suspend. You will need three external monitors to perform this test. Depends on the specification of the device to use 4K monitor or FHD monitor. +_steps: + Skip this test if your video card or the dock do not support multiple monitors. + 1. If your dock provides more than one monitor outputs, connect three monitors + 2. Open the "Displays" tool (open the dash and search for "Displays") + 3. Turn off internal monitor + 4. Configure your output to provide one desktop across all the monitors + 5. Open any application and drag its window from one monitor to the next. +_verification: + Was the stretched desktop displayed correctly across all the screens? + ### Suspend, Undocked, Resume ### id: dock/suspend-undock-resume @@ -1650,52 +1925,84 @@ _verification: Are all kinds of discs properly written? plugin: user-interact -id: dock/thunderbolt-insert +id: dock/thunderbolt3-insert category_id: dock estimated_duration: 40.0 depends: dock/cold-plug +imports: from com.canonical.plainbox import manifest +requires: manifest.has_thunderbolt3 == 'True' +flags: also-after-suspend-manual command: removable_storage_watcher insert --timeout 40 scsi -_summary: Thunderbolt storage insertion detection +_summary: Thunderbolt3 storage insertion detection _purpose: - This test will check if the connection of a Thunderbolt HDD to the dock could be detected + This test will check if the connection of a Thunderbolt3 HDD to the dock could be detected _steps: 1. Click 'Test' to begin the test. This test will timeout and fail if the insertion has not been detected within 40 seconds. - 2. Plug a Thunderbolt HDD into an available Thunderbolt port on the dock; + 2. Plug a Thunderbolt3 HDD into an available Thunderbolt3 port on the dock; if it's not mounted automatically, please click the HDD icon to mount it. _verification: The verification of this test is automated. Do not change the automatically selected result plugin: shell -id: dock/thunderbolt-storage-test +id: dock/thunderbolt3-storage-test category_id: dock estimated_duration: 45.0 user: root -depends: dock/thunderbolt-insert +depends: dock/thunderbolt3-insert +imports: from com.canonical.plainbox import manifest +requires: manifest.has_thunderbolt3 == 'True' +flags: also-after-suspend-manual command: removable_storage_test -s 268400000 scsi -_summary: Thunderbolt storage test +_summary: Thunderbolt3 storage test _description: This is an automated test which performs read/write operations on an attached Thunderbolt HDD plugin: user-interact -id: dock/thunderbolt-remove +id: dock/thunderbolt3-remove category_id: dock estimated_duration: 20.0 -depends: dock/thunderbolt-insert +depends: dock/thunderbolt3-insert +imports: from com.canonical.plainbox import manifest +requires: manifest.has_thunderbolt3 == 'True' +flags: also-after-suspend-manual command: removable_storage_watcher remove scsi -_summary: Thunderbolt storage removal detection +_summary: Thunderbolt3 storage removal detection _purpose: - This test will check the system can detect the removal of a Thunderbolt HDD + This test will check the system can detect the removal of a Thunderbolt3 HDD _steps: 1. Click 'Test' to begin the test. This test will timeout and fail if the removal has not been detected within 20 seconds. - 2. Remove the previously attached Thunderbolt HDD from the Thunderbolt port. + 2. Remove the previously attached Thunderbolt3 HDD from the Thunderbolt3 port. _verification: The verification of this test is automated. Do not change the automatically selected result +plugin: user-interact-verify +category_id: dock +id: dock/thunderbolt3-daisy-chain +flags: also-after-suspend-manual +estimated_duration: 45.0 +imports: from com.canonical.plainbox import manifest +requires: manifest.has_thunderbolt3 == 'True' +command: removable_storage_test -s 268400000 scsi +_summary: Daisy-chain testing for Thunderbolt 3 storage and display device +_description: +_purpose: + This test will check if your system can support daisy-chaining of a storage + and a monitor over Thunderbolt 3 port + _steps: + 1. Connect your Thunderbolt monitor to your systems + 2. Connect and mount your Thunderbolt HDD to another Thunderbolt 3 port of the + monitor (you can do this with HDD first as well) + 3. Click 'Test' to perform the storage test on the Thunderbolt HDD + _verification: + 1. The verification for storage is automated, please select the result combine + with the result for the display. + 2. Was the desktop displayed correctly on the Thunderbolt-connected screen? + ### Hot Plug after suspend ### id: dock/hot-plug-after-suspend @@ -1728,6 +2035,27 @@ _description: Did a notification show and was the connection correctly established? plugin: user-interact +id: dock/hotplug-usb-insert-after-suspend +category_id: dock-hotplug +depends: dock/hot-plug-after-suspend +estimated_duration: 10.0 +_summary: USB drive insertion after resuming +command: removable_storage_watcher insert usb +_purpose: + This test will check that the system correctly detects the insertion of + a USB storage device plugged on the dock after suspend +_steps: + 1. Click "Test" and insert a USB storage device, preferably a HDD, + in one of the dock's port. + Although a USB pen drive may be used it might cause performance + related tests to fail. (Note: this test will time-out after 20 + seconds.) + 2. Do not unplug the device after the test. +_verification: + The verification of this test is automated. Do not change the + automatically selected result. + +plugin: user-interact id: dock/hotplug-usb3-insert-after-suspend category_id: dock-hotplug depends: dock/hot-plug-after-suspend @@ -1748,6 +2076,17 @@ _verification: automatically selected result. plugin: shell +id: dock/hotplug-usb-storage-automated-after-suspend +category_id: dock-hotplug +depends: dock/hotplug-usb-insert-after-suspend +user: root +estimated_duration: 45.0 +_summary: USB drive storage test after resuming +command: removable_storage_test -s 268400000 usb +_description: + This test is automated and executes after the dock/usb-insert test is run. + +plugin: shell id: dock/hotplug-usb3-storage-automated-after-suspend category_id: dock-hotplug depends: dock/hotplug-usb3-insert-after-suspend @@ -1759,6 +2098,23 @@ _description: This test is automated and executes after the dock/usb3_insert test is run. plugin: user-interact +id: dock/hotplug-usb-remove-after-suspend +category_id: dock-hotplug +depends: dock/hotplug-usb-insert-after-suspend +estimated_duration: 10.0 +_summary: USB drive removal after resuming +command: removable_storage_watcher remove usb +_purpose: + This test will check that the system correctly detects the removal of + a USB storage device after suspend +_steps: + 1. Click "Test" and remove the USB device from the dock. + (Note: this test will time-out after 20 seconds.) +_verification: + The verification of this test is automated. Do not change the + automatically selected result. + +plugin: user-interact id: dock/hotplug-usb3-remove-after-suspend category_id: dock-hotplug depends: dock/hotplug-usb3-insert-after-suspend @@ -1775,36 +2131,6 @@ _verification: The verification of this test is automated. Do not change the automatically selected result. -id: dock/hotplug-monitor-displayport-after-suspend -category_id: dock-hotplug -depends: dock/hot-plug-after-suspend -estimated_duration: 120.0 -_summary: DisplayPort test on the dock -plugin: manual -_purpose: - This test will check the DisplayPort(s) on the dock after hot plugged in. -_steps: - Skip this test if the dock does not have a DisplayPort. - 1. Connect a display (if not already connected) to the DisplayPort on the dock - 2. Repeat step 1 for each additional DisplayPorts, if any -_verification: - Was the desktop displayed correctly on both screens? - -id: dock/hotplug-monitor-hdmi-after-suspend -category_id: dock-hotplug -depends: dock/hot-plug-after-suspend -estimated_duration: 120.0 -_summary: HDMI port test on the dock -plugin: manual -_purpose: - This test will check the HDMI port(s) on the dock after hot plugged in. -_steps: - Skip this test if the dock does not have a HDMI port. - 1. Connect a display (if not already connected) to the HDMI port on the dock - 2. Repeat step 1 for each additional HDMI port, if any -_verification: - Was the desktop displayed correctly on both screens? - ### Suspend, Undocked, Docked, Resume ### id: dock/suspend-dock-resume @@ -1838,6 +2164,27 @@ _description: Did a notification show and was the connection correctly established? plugin: user-interact +id: dock/usb-insert-after-suspend-dock-resume +category_id: suspend-dock-resume +depends: dock/suspend-dock-resume +estimated_duration: 10.0 +_summary: USB drive insertion after resuming +command: removable_storage_watcher insert usb +_purpose: + This test will check that the system correctly detects the insertion of + a USB storage device plugged on the dock after suspend +_steps: + 1. Click "Test" and insert a USB storage device, preferably a HDD, + in one of the dock's port. + Although a USB pen drive may be used it might cause performance + related tests to fail. (Note: this test will time-out after 20 + seconds.) + 2. Do not unplug the device after the test. +_verification: + The verification of this test is automated. Do not change the + automatically selected result. + +plugin: user-interact id: dock/usb3-insert-after-suspend-dock-resume category_id: suspend-dock-resume depends: dock/suspend-dock-resume @@ -1858,6 +2205,17 @@ _verification: automatically selected result. plugin: shell +id: dock/usb-storage-automated-after-suspend-dock-resume +category_id: suspend-dock-resume +depends: dock/usb-insert-after-suspend-dock-resume +user: root +estimated_duration: 45.0 +_summary: USB drive storage test after resuming +command: removable_storage_test -s 268400000 usb +_description: + This test is automated and executes after the dock/usb-insert test is run. + +plugin: shell id: dock/usb3-storage-automated-after-suspend-dock-resume category_id: suspend-dock-resume depends: dock/usb3-insert-after-suspend-dock-resume @@ -1869,6 +2227,23 @@ _description: This test is automated and executes after the dock/usb3_insert test is run. plugin: user-interact +id: dock/usb-remove-after-suspend-dock-resume +category_id: suspend-dock-resume +depends: dock/usb-insert-after-suspend-dock-resume +estimated_duration: 10.0 +_summary: USB drive removal after resuming +command: removable_storage_watcher remove usb +_purpose: + This test will check that the system correctly detects the removal of + a USB storage device after suspend +_steps: + 1. Click "Test" and remove the USB device from the dock. + (Note: this test will time-out after 20 seconds.) +_verification: + The verification of this test is automated. Do not change the + automatically selected result. + +plugin: user-interact id: dock/usb3-remove-after-suspend-dock-resume category_id: suspend-dock-resume depends: dock/usb3-insert-after-suspend-dock-resume @@ -1914,3 +2289,13 @@ _steps: 2. Repeat step 1 for each additional HDMI port, if any _verification: Was the desktop displayed correctly on both screens? + +id: dock/mac-address-passthrough +category_id: dock +plugin: shell +user: root +command: mac-passthrough.py +_description: Check dock MAC address pass-through function, please make sure following items before running this test: + 1. Pass-through mac address is flashed in BIOS + 2. MAC address pass-through is enabled in BIOS settings + 3. Dock is connected diff --git a/units/dock/test-plan.pxu b/units/dock/test-plan.pxu new file mode 100644 index 0000000..4c906ac --- /dev/null +++ b/units/dock/test-plan.pxu @@ -0,0 +1,251 @@ +id: dock-cert-full +unit: test plan +_name: Dock Cert tests +_description: + Cert tests for dock devices. +include: +nested_part: + dock-cold-plug-cert + dock-hot-plug + +id: after-suspend-dock-cert-full +unit: test plan +_name: Dock Cert tests after suspend +_description: + Cert tests for dock devices. +include: +nested_part: + after-suspend-dock-cert + after-suspend-dock-hot-plug + suspend-dock-resume-test + suspend-undock-resume-test + +id: dock-cold-plug-cert +unit: test plan +_name: Dock Cold Plug Cert tests +_description: + Cert tests for dock cold plug. +include: + dock/cold-plug certification-status=blocker + dock/power-button certification-status=blocker + dock/monitor-displayport certification-status=blocker + dock/audio-playback-displayport certification-status=blocker + dock/monitor-dvi certification-status=blocker + dock/monitor-hdmi certification-status=blocker + dock/audio-playback-hdmi certification-status=blocker + dock/monitor-vga certification-status=blocker + dock/monitor_type-c_displayport certification-status=blocker + dock/audio-playback-type-c-displayport certification-status=blocker + dock/monitor_type-c_hdmi certification-status=blocker + dock/audio-playback-type-c-hdmi certification-status=blocker + dock/monitor_type-c_vga certification-status=blocker + dock/keys-video-out certification-status=blocker + dock/monitor-dual-head certification-status=blocker + dock/monitor-triple-head + dock/audio-alsa-info-collect + dock/audio-alsa-info-attachment + dock/audio-list-devices + dock/audio-playback-headphones certification-status=blocker + dock/audio-alsa-record-playback-external certification-status=blocker + dock/audio-external-linein + dock/audio-external-lineout + dock/networking-gateway-ping certification-status=blocker + dock/networking-ntp certification-status=blocker + dock/mac-address-passthrough + dock/usb-HID certification-status=blocker + dock/usb-insert certification-status=blocker + dock/usb-storage-automated certification-status=blocker + dock/usb-remove certification-status=blocker + dock/usb3-insert certification-status=blocker + dock/usb3-storage-automated certification-status=blocker + dock/usb3-remove certification-status=blocker + dock/usb-c/c-to-a-adapter/insert + dock/usb-c/c-to-a-adapter/storage-automated + dock/usb-c/c-to-a-adapter/remove + dock/usb-c/insert + dock/usb-c/storage-automated + dock/usb-c/remove + dock/battery-charging certification-status=blocker + dock/monitor-thunderbolt3 + dock/audio-playback-thunderbolt3 + dock/thunderbolt3-insert + dock/thunderbolt3-storage-test + dock/thunderbolt3-remove + dock/thunderbolt3-daisy-chain + dock/network-before-suspend certification-status=blocker + dock/audio-before-suspend certification-status=blocker + +id: dock-hot-plug +unit: test plan +_name: Dock Hot Plug tests +_description: + Tests for dock cold plug. +include: + dock/hot-plug + dock/hotplug-ethernet + dock/hotplug-usb-insert + dock/hotplug-usb-storage-automated + dock/hotplug-usb-remove + dock/hotplug-usb3-insert + dock/hotplug-usb3-storage-automated + dock/hotplug-usb3-remove + dock/hotplug-playback-displayport + dock/hotplug-playback-hdmi + dock/hotplug-playback-type-c-displayport + dock/hotplug-playback-thumderbolt3 + +id: after-suspend-dock-cert +unit: test plan +_name: After suspend Dock Cert tests +_description: + Cert tests for the dock after suspend. +include: + # Do power on/off to clean up the test environment + power-management/poweroff certification-status=blocker + power-management/poweroff-log-attach + suspend/suspend_advanced certification-status=blocker + dock/power-button-after-suspend certification-status=blocker + dock/networking-gateway-ping-after-suspend certification-status=blocker + dock/usb-HID-after-suspend certification-status=blocker + dock/usb-insert-after-suspend certification-status=blocker + dock/usb-storage-automated-after-suspend certification-status=blocker + dock/usb-remove-after-suspend certification-status=blocker + dock/usb3-insert-after-suspend certification-status=blocker + dock/usb3-storage-automated-after-suspend certification-status=blocker + dock/usb3-remove-after-suspend certification-status=blocker + dock/usb-c/c-to-a-adapter/insert-after-suspend + dock/usb-c/c-to-a-adapter/storage-automated-after-suspend + dock/usb-c/c-to-a-adapter/remove-after-suspend + dock/usb-c/insert-after-suspend + dock/usb-c/storage-automated-after-suspend + dock/usb-c/remove-after-suspend + after-suspend-manual-dock/audio-playback-headphones certification-status=blocker + after-suspend-manual-dock/audio-alsa-record-playback-external certification-status=blocker + dock/monitor-displayport-after-suspend certification-status=blocker + after-suspend-manual-dock/audio-playback-displayport certification-status=blocker + dock/monitor-dvi-after-suspend certification-status=blocker + dock/monitor-hdmi-after-suspend certification-status=blocker + after-suspend-manual-dock/audio-playback-hdmi certification-status=blocker + dock/monitor-vga-after-suspend certification-status=blocker + dock/monitor_type-c_displayport-after-suspend + after-suspend-manual-dock/audio-playback-type-c-displayport + dock/monitor_type-c_hdmi-after-suspend + dock/monitor_type-c_vga-after-suspend + after-suspend-manual-dock/thunderbolt3-insert + after-suspend-manual-dock/thunderbolt3-storage-test + after-suspend-manual-dock/thunderbolt3-remove + after-suspend-manual-dock/thunderbolt3-daisy-chain + after-suspend-manual-dock/audio-playback-thunderbolt3 + dock/monitor-dual-head-after-suspend certification-status=blocker + dock/monitor-triple-head-after-suspend + +id: after-suspend-dock-hot-plug +unit: test plan +_name: After suspend Dock Hot-plug tests +_description: + Tests for after suspend dock hot-plug. +include: + dock/hot-plug-after-suspend + dock/hotplug-ethernet-after-suspend + dock/hotplug-usb-insert-after-suspend + dock/hotplug-usb-storage-automated-after-suspend + dock/hotplug-usb-remove-after-suspend + dock/hotplug-usb3-insert-after-suspend + dock/hotplug-usb3-storage-automated-after-suspend + dock/hotplug-usb3-remove-after-suspend + dock/hotplug-monitor-displayport-after-suspend + dock/hotplug-monitor-hdmi-after-suspend + after-suspend-manual-dock/hotplug-playback-displayport + after-suspend-manual-dock/hotplug-playback-hdmi + after-suspend-manual-dock/hotplug-playback-type-c-displayport + after-suspend-manual-dock/hotplug-playback-thumderbolt3 + +id: suspend-dock-resume-test +unit: test plan +_name: Suspend dock resume tests +_description: + Tests for suspend dock then resume it. +include: + dock/suspend-dock-resume + dock/ethernet-after-suspend-dock-resume + dock/usb-insert-after-suspend-dock-resume + dock/usb-storage-automated-after-suspend-dock-resume + dock/usb-remove-after-suspend-dock-resume + dock/usb3-insert-after-suspend-dock-resume + dock/usb3-storage-automated-after-suspend-dock-resume + dock/usb3-remove-after-suspend-dock-resume + dock/monitor-displayport-after-suspend-dock-resume + dock/monitor-hdmi-after-suspend-dock-resume + +id: suspend-undock-resume-test +unit: test plan +_name: After suspend Dock Hot-plug Cert tests +_description: + Test for after susepnd then undock then resume the system. +include: + dock/suspend-undock-resume + +id: dock-cold-plug-cert-blockers +unit: test plan +_name: Dock Cold Plug Cert blocker tests +_description: + Cert blocker tests for dock cold plug. +include: + dock/cold-plug certification-status=blocker + dock/power-button certification-status=blocker + dock/monitor-displayport certification-status=blocker + dock/audio-playback-displayport certification-status=blocker + dock/monitor-dvi certification-status=blocker + dock/monitor-hdmi certification-status=blocker + dock/audio-playback-hdmi certification-status=blocker + dock/monitor-vga certification-status=blocker + dock/monitor_type-c_displayport certification-status=blocker + dock/dock_playback_type-c_displayport certification-status=blocker + dock/monitor_type-c_hdmi certification-status=blocker + dock/dock_playback_type-c_hdmi certification-status=blocker + dock/monitor_type-c_vga certification-status=blocker + dock/keys-video-out certification-status=blocker + dock/monitor-dual-head certification-status=blocker + dock/audio-playback-headphones certification-status=blocker + dock/audio-alsa-record-playback-external certification-status=blocker + dock/networking-gateway-ping certification-status=blocker + dock/networking-ntp certification-status=blocker + dock/usb-HID certification-status=blocker + dock/usb-insert certification-status=blocker + dock/usb-storage-automated certification-status=blocker + dock/usb-remove certification-status=blocker + dock/usb3-insert certification-status=blocker + dock/usb3-storage-automated certification-status=blocker + dock/usb3-remove certification-status=blocker + dock/battery-charging certification-status=blocker + dock/network-before-suspend certification-status=blocker + dock/audio-before-suspend certification-status=blocker + +id: after-suspend-dock-cert-blockers +unit: test plan +_name: After suspend Dock Cert blocker tests +_description: + Cert blocker tests for the dock after suspend. +include: + # Do power on/off to clean up the test environment + power-management/poweroff certification-status=blocker + power-management/poweroff-log-attach + suspend/suspend_advanced certification-status=blocker + dock/power-button-after-suspend certification-status=blocker + dock/networking-gateway-ping-after-suspend certification-status=blocker + after-suspend-manual-dock/audio-playback-headphones certification-status=blocker + after-suspend-manual-dock/audio-alsa-record-playback-external certification-status=blocker + dock/usb-HID-after-suspend certification-status=blocker + dock/usb-insert-after-suspend certification-status=blocker + dock/usb-storage-automated-after-suspend certification-status=blocker + dock/usb-remove-after-suspend certification-status=blocker + dock/usb3-insert-after-suspend certification-status=blocker + dock/usb3-storage-automated-after-suspend certification-status=blocker + dock/usb3-remove-after-suspend certification-status=blocker + dock/monitor-displayport-after-suspend certification-status=blocker + after-suspend-manual-dock/audio-playback-displayport certification-status=blocker + dock/monitor-dvi-after-suspend certification-status=blocker + dock/monitor-hdmi-after-suspend certification-status=blocker + after-suspend-manual-dock/audio-playback-hdmi certification-status=blocker + dock/monitor-vga-after-suspend certification-status=blocker + dock/monitor-dual-head-after-suspend certification-status=blocker diff --git a/units/gpgpu/jobs.pxu b/units/gpgpu/jobs.pxu index 2c823a0..e65d0be 100644 --- a/units/gpgpu/jobs.pxu +++ b/units/gpgpu/jobs.pxu @@ -5,4 +5,4 @@ estimated_duration: 300 requires: package.name == 'cuda' _summary: GPGPU stress testing -command: cd /opt/gpu-burn/ && ./gpu_burn 1800 +command: cd /opt/gpu-burn/ && ./gpu_burn 14400 | grep -v -e '^[[:space:]]*$' -e "errors:" -e "Summary at" diff --git a/units/graphics/jobs.pxu b/units/graphics/jobs.pxu index 13d9afe..fba1f7e 100644 --- a/units/graphics/jobs.pxu +++ b/units/graphics/jobs.pxu @@ -405,7 +405,7 @@ command: totem --fullscreen $PLAINBOX_PROVIDER_DATA/video/Ogg_Theora_Video.ogv 2>/dev/null & set -o pipefail sleep 15 && camera_test still --device=/dev/external_webcam -f $PLAINBOX_SESSION_SHARE/screenshot_fullscreen_video_{index}.jpg -q 2>&1 | ansi_parser - sleep 5 && totem --quit 2>/dev/null + sleep 5 && pkill totem gsettings set org.gnome.totem repeat false _summary: Test FSV screenshot for {vendor} {product} _description: diff --git a/units/i2c/jobs.pxu b/units/i2c/jobs.pxu index db90509..a928917 100644 --- a/units/i2c/jobs.pxu +++ b/units/i2c/jobs.pxu @@ -16,9 +16,9 @@ _steps: detected there's at least one i2c bus. command: if [ -z ${I2C_BUS_NUMBER+x} ]; then - i2c_driver_test bus + i2c_driver_test.py bus else - i2c_driver_test bus -b $I2C_BUS_NUMBER + i2c_driver_test.py bus -b $I2C_BUS_NUMBER fi user: root plugin: shell @@ -37,7 +37,7 @@ _steps: 1. This task is fully automatic, test will pass if there's at least one i2c device detected on any I2C bus. command: - i2c_driver_test device + i2c_driver_test.py device user: root plugin: shell category_id: i2c diff --git a/units/info/jobs.pxu b/units/info/jobs.pxu index e7ac3ea..e1d56ae 100644 --- a/units/info/jobs.pxu +++ b/units/info/jobs.pxu @@ -103,7 +103,7 @@ category_id: com.canonical.plainbox::info user: root command: if [[ -v SNAP ]]; then - checkbox-support-lsusb -f $SNAP/checkbox-runtime/var/lib/usbutils/usb.ids + checkbox-support-lsusb -f $CHECKBOX_RUNTIME/var/lib/usbutils/usb.ids else lsusb -vv | iconv -t 'utf-8' -c fi @@ -218,7 +218,7 @@ plugin: attachment category_id: com.canonical.plainbox::info requires: package.name == 'dkms' -command: dkms_info --format json +command: dkms_info.py --format json _description: Attaches json dumps of installed dkms package information. _summary: Attaches json dumps of installed dkms package information. @@ -361,7 +361,7 @@ user: root estimated_duration: 0.2 _summary: Check existence of recovery partition _description: Check existence of recovery partition -command: recovery_info +command: recovery_info.py plugin: shell category_id: com.canonical.plainbox::info @@ -372,7 +372,7 @@ user: root estimated_duration: 0.2 _summary: Check the recovery type is dell or not _description: Check the recovery type is dell or not -command: recovery_info checktype DELL +command: recovery_info.py checktype DELL plugin: attachment category_id: com.canonical.plainbox::info @@ -389,7 +389,7 @@ _description: Example: image_version: somerville-trusty-amd64-20140620-0 bto_version: A00_dell-bto-trusty-houston-15-A11-iso-20141203-0.iso -command: recovery_info version +command: recovery_info.py version plugin: attachment category_id: com.canonical.plainbox::info @@ -404,7 +404,7 @@ _description: The information include: - fish packages - dell recovery stage 2 boot log -command: recovery_info file bto.xml +command: recovery_info.py file bto.xml plugin: attachment category_id: com.canonical.plainbox::info @@ -463,7 +463,11 @@ command: network_configs id: parts_meta_info_attachment plugin: attachment category_id: com.canonical.plainbox::info -command: cat $SNAP/parts_meta_info $SNAP/checkbox-runtime/parts_meta_info || echo "no parts meta info available" +command: + # some top-level snaps don't bother with parts + cat $SNAP/parts_meta_info || true + # should always have parts info from content snap + cat $CHECKBOX_RUNTIME/parts_meta_info environ: SNAP estimated_duration: 0.02 _summary: Attaches an information about all parts that constituted this snap diff --git a/units/info/packaging.pxu b/units/info/packaging.pxu index 67f18c2..61e26d2 100644 --- a/units/info/packaging.pxu +++ b/units/info/packaging.pxu @@ -3,11 +3,6 @@ unit: packaging meta-data os-id: debian Depends: python3-debian -# The dkms_info script requires python3-guacamole package -unit: packaging meta-data -os-id: debian -Depends: python3-guacamole (>= 0.9) - # This is for lsblk attachment and disk/detect unit: packaging meta-data os-id: debian diff --git a/units/keys/jobs.pxu b/units/keys/jobs.pxu index 4402b4c..7bc69a2 100644 --- a/units/keys/jobs.pxu +++ b/units/keys/jobs.pxu @@ -277,3 +277,16 @@ _description: VERIFICATION: Did the keyboard overhead light key or switch turns on and off the light? +plugin: manual +category_id: com.canonical.plainbox::keys +id: keys/power-button +estimated_duration: 30.0 +flags: also-after-suspend-manual +_purpose: + This test will test the power button +_steps: + 1. press the power button. + 2. press cancel to quit. +_verification: + Did the power management prompt pop up when press power button? + diff --git a/units/keys/test-plan.pxu b/units/keys/test-plan.pxu index 38386ef..87b7fbc 100644 --- a/units/keys/test-plan.pxu +++ b/units/keys/test-plan.pxu @@ -24,6 +24,7 @@ include: keys/wireless certification-status=blocker keys/keyboard-backlight certification-status=blocker keys/microphone-mute certification-status=blocker + keys/power-button certification-status=blocker id: keys-cert-automated unit: test plan diff --git a/units/led/test-plan.pxu b/units/led/test-plan.pxu index 40f5697..33c5642 100644 --- a/units/led/test-plan.pxu +++ b/units/led/test-plan.pxu @@ -22,9 +22,6 @@ _description: - led/wireless is redundant given that we have led/wlan and led/bluetooth already. (Manual) include: - led/battery-charged - led/battery-charging - led/battery-low camera/led_.* certification-status=blocker led/caps-lock certification-status=blocker led/numeric-keypad certification-status=blocker @@ -52,9 +49,6 @@ unit: test plan _name: LED tests (after suspend) _description: LED tests (after suspend) include: - suspend/led_after_suspend/battery-charged - suspend/led_after_suspend/battery-charging - suspend/led_after_suspend/battery-low after-suspend-manual-camera/led_.* certification-status=blocker suspend/led_after_suspend/caps-lock certification-status=blocker suspend/led_after_suspend/numeric-keypad certification-status=blocker diff --git a/units/miscellanea/jobs.pxu b/units/miscellanea/jobs.pxu index 41c9253..ebc7c4d 100644 --- a/units/miscellanea/jobs.pxu +++ b/units/miscellanea/jobs.pxu @@ -150,12 +150,23 @@ command: boot_mode_test secureboot plugin: shell category_id: com.canonical.plainbox::miscellanea estimated_duration: 0.5 +id: miscellanea/reboot_firmware +requires: + cpuinfo.platform in ("i386", "x86_64", "aarch64") +depends: miscellanea/efi_boot_mode +_summary: Test that system supports booting into firmware setup utility +_description: + Test that the system supports rebooting into the firmware setup utility. +command: boot_mode_test reboot_firmware + +plugin: shell +category_id: com.canonical.plainbox::miscellanea +estimated_duration: 0.5 unit: template template-resource: model_assertion template-unit: job requires: - executable.name == 'dumpimage' - executable.name == 'mokutil' + executable.name == 'dumpimage' or executable.name == 'mokutil' id: miscellanea/secure_boot_mode_{gadget} _summary: Test that {gadget} Ubuntu Core system booted with Secure Boot active _description: @@ -190,6 +201,16 @@ command: check-prerelease plugin: shell category_id: com.canonical.plainbox::miscellanea +estimated_duration: 0.5 +id: miscellanea/kernel_taint_test +_summary: Test that kernel is not tainted +_description: + Test to verify that the kernel is not tainted by out-of-tree + drivers, live patches, proprietary modules, etc. +command: kernel_taint_test + +plugin: shell +category_id: com.canonical.plainbox::miscellanea id: miscellanea/bmc_info requires: package.name == 'ipmitool' or executable.name == 'ipmitool' diff --git a/units/miscellanea/test-plan.pxu b/units/miscellanea/test-plan.pxu index 1b119f1..b202727 100644 --- a/units/miscellanea/test-plan.pxu +++ b/units/miscellanea/test-plan.pxu @@ -32,7 +32,6 @@ include: firmware/fwts_uefirtvariable.* certification-status=blocker miscellanea/oops certification-status=blocker miscellanea/oops_results.log - miscellanea/dmitest_client miscellanea/fan_stress_reaction bootstrap_include: fwts @@ -65,8 +64,10 @@ mandatory_include: miscellanea/get_maas_version certification-status=blocker miscellanea/efi_boot_mode certification-status=blocker miscellanea/secure_boot_mode + miscellanea/reboot_firmware miscellanea/efi_pxeboot miscellanea/check_prerelease + miscellanea/kernel_taint_test miscellanea/cpus_are_not_samples miscellanea/ipmi_test certification-status=blocker miscellanea/bmc_info diff --git a/units/monitor/jobs.pxu b/units/monitor/jobs.pxu index df1bb95..c16471d 100644 --- a/units/monitor/jobs.pxu +++ b/units/monitor/jobs.pxu @@ -403,17 +403,16 @@ plugin: shell category_id: com.canonical.plainbox::monitor _summary: Automated HDMI hotplug test _description: - This test will use edid injector on muxpi to check if system detect HDMI hotplug -environ: HDMI_PORT MUXPI_IP -requires: manifest.has_muxpi_hdmi == 'True' -imports: from com.canonical.plainbox import manifest + Use chamleon board to simulate connection/disconnection of an HDMI monitor. +environ: HDMI_PORT CHAMELEON_IP +command: + chameleon_hdmi_hotplug.py $HDMI_PORT $CHAMELEON_IP + +id: monitor/edid-stress-automated +estimated_duration: 30m +plugin: shell +category_id: com.canonical.plainbox::monitor +_summary: Stress DUT by switching through large EDID set +environ: HDMI_PORT CHAMELEON_IP command: - export SSH_OPTS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" - timeout 60 ssh $SSH_OPTS ubuntu@$MUXPI_IP "stm -hdmi off" || exit 1 - sleep 3 - timeout 60 ssh $SSH_OPTS ubuntu@$MUXPI_IP "stm -hdmi on" || exit 1 - sleep 3 - if [ "$(cat /sys/class/drm/$HDMI_PORT/status)" != "connected" ] ;then exit 1; fi - timeout 60 ssh $SSH_OPTS ubuntu@$MUXPI_IP "stm -hdmi off" || exit 1 - sleep 3 - if [ "$(cat /sys/class/drm/$HDMI_PORT/status)" != "disconnected" ] ;then exit 1; fi + chameleon_edid_stress.py $HDMI_PORT $CHAMELEON_IP diff --git a/units/monitor/test-plan.pxu b/units/monitor/test-plan.pxu index 5eb1f66..aa99f3f 100644 --- a/units/monitor/test-plan.pxu +++ b/units/monitor/test-plan.pxu @@ -36,9 +36,6 @@ include: monitor/1_dvi_.* certification-status=blocker monitor/1_hdmi_.* certification-status=blocker audio/1_playback_hdmi_.* certification-status=blocker - monitor/1_thunderbolt_.* certification-status=blocker - audio/1_playback_thunderbolt_.* certification-status=blocker - thunderbolt/daisy-chain certification-status=blocker monitor/1_thunderbolt3_.* certification-status=non-blocker audio/1_playback_thunderbolt3_.* certification-status=non-blocker thunderbolt3/daisy-chain certification-status=non-blocker @@ -65,9 +62,6 @@ include: after-suspend-manual-monitor/1_dvi_.* certification-status=blocker after-suspend-manual-monitor/1_hdmi_.* certification-status=blocker after-suspend-manual-audio/1_playback_hdmi_.* certification-status=blocker - after-suspend-manual-monitor/1_thunderbolt_.* certification-status=blocker - after-suspend-manual-audio/1_playback_thunderbolt_.* certification-status=blocker - after-suspend-manual-thunderbolt/daisy-chain certification-status=blocker after-suspend-manual-monitor/1_thunderbolt3_.* certification-status=non-blocker after-suspend-manual-audio/1_playback_thunderbolt3_.* certification-status=non-blocker after-suspend-manual-thunderbolt3/daisy-chain certification-status=non-blocker @@ -116,8 +110,6 @@ include: monitor/2_dvi_.* certification-status=blocker monitor/2_hdmi_.* certification-status=blocker audio/2_playback_hdmi_.* certification-status=blocker - monitor/2_thunderbolt_.* certification-status=blocker - audio/2_playback_thunderbolt_.* certification-status=blocker monitor/2_thunderbolt3_.* certification-status=non-blocker audio/2_playback_thunderbolt3_.* certification-status=non-blocker monitor/2_vga_.* certification-status=blocker @@ -153,9 +145,6 @@ include: after-suspend-manual-monitor/2_dvi_.* certification-status=blocker after-suspend-manual-monitor/2_hdmi_.* certification-status=blocker after-suspend-manual-audio/2_playback_hdmi_.* certification-status=blocker - after-suspend-manual-monitor/2_thunderbolt_.* certification-status=blocker - after-suspend-manual-audio/2_playback_thunderbolt_.* certification-status=blocker - after-suspend-manual-thunderbolt/daisy-chain certification-status=blocker after-suspend-manual-monitor/2_thunderbolt3_.* certification-status=non-blocker after-suspend-manual-audio/2_playback_thunderbolt3_.* certification-status=non-blocker after-suspend-manual-thunderbolt3/daisy-chain certification-status=non-blocker @@ -191,9 +180,6 @@ include: monitor/1_dvi_.* certification-status=blocker monitor/1_hdmi_.* certification-status=blocker audio/1_playback_hdmi_.* certification-status=blocker - monitor/1_thunderbolt_.* certification-status=blocker - audio/1_playback_thunderbolt_.* certification-status=blocker - thunderbolt/daisy-chain certification-status=blocker monitor/1_vga_.* certification-status=blocker monitor/1_multi-head_.* certification-status=blocker bootstrap_include: @@ -216,9 +202,6 @@ include: after-suspend-manual-monitor/1_dvi_.* certification-status=blocker after-suspend-manual-monitor/1_hdmi_.* certification-status=blocker after-suspend-manual-audio/1_playback_hdmi_.* certification-status=blocker - after-suspend-manual-monitor/1_thunderbolt_.* certification-status=blocker - after-suspend-manual-audio/1_playback_thunderbolt_.* certification-status=blocker - after-suspend-manual-thunderbolt/daisy-chain certification-status=blocker after-suspend-manual-monitor/1_vga_.* certification-status=blocker after-suspend-manual-monitor/1_multi-head_.* certification-status=blocker bootstrap_include: @@ -241,8 +224,6 @@ include: monitor/2_dvi_.* certification-status=blocker monitor/2_hdmi_.* certification-status=blocker audio/2_playback_hdmi_.* certification-status=blocker - monitor/2_thunderbolt_.* certification-status=blocker - audio/2_playback_thunderbolt_.* certification-status=blocker monitor/2_vga_.* certification-status=blocker monitor/2_multi-head_.* certification-status=blocker bootstrap_include: @@ -265,9 +246,6 @@ include: after-suspend-manual-monitor/2_dvi_.* certification-status=blocker after-suspend-manual-monitor/2_hdmi_.* certification-status=blocker after-suspend-manual-audio/2_playback_hdmi_.* certification-status=blocker - after-suspend-manual-monitor/2_thunderbolt_.* certification-status=blocker - after-suspend-manual-audio/2_playback_thunderbolt_.* certification-status=blocker - after-suspend-manual-thunderbolt/daisy-chain certification-status=blocker after-suspend-manual-monitor/2_vga_.* certification-status=blocker after-suspend-manual-monitor/2_multi-head_.* certification-status=blocker bootstrap_include: @@ -299,6 +277,7 @@ _name: Automated monitor tests _description: Automated monitor tests for Snappy Ubuntu Core devices include: monitor/hdmi-hotplug-automated + monitor/edid-stress-automated id: after-suspend-monitor-full unit: test plan diff --git a/units/stress/boot.pxu b/units/stress/boot.pxu index dcc0bf5..f4085aa 100644 --- a/units/stress/boot.pxu +++ b/units/stress/boot.pxu @@ -48,7 +48,7 @@ plugin: shell command: lspci -i $SNAP/usr/share/misc/pci.ids > $PLAINBOX_SESSION_SHARE/lspci_original || true nmcli -t -f active,BSSID d w l | grep -oP "(?<=^yes:).*" > $PLAINBOX_SESSION_SHARE/wifi_original || true - checkbox-support-lsusb -f $SNAP/checkbox-runtime/var/lib/usbutils/usb.ids -s | sort > $PLAINBOX_SESSION_SHARE/lsusb_original || true + checkbox-support-lsusb -f $CHECKBOX_RUNTIME/var/lib/usbutils/usb.ids -s | sort > $PLAINBOX_SESSION_SHARE/lsusb_original || true environ: LD_LIBRARY_PATH user: root estimated_duration: 1s @@ -101,7 +101,7 @@ environ: LD_LIBRARY_PATH command: lspci -i $SNAP/usr/share/misc/pci.ids > $PLAINBOX_SESSION_SHARE/lspci_test nmcli -t -f active,BSSID d w l | grep -oP "(?<=^yes:).*" > $PLAINBOX_SESSION_SHARE/wifi_test - checkbox-support-lsusb -f $SNAP/checkbox-runtime/var/lib/usbutils/usb.ids -s | sort > $PLAINBOX_SESSION_SHARE/lsusb_test + checkbox-support-lsusb -f $CHECKBOX_RUNTIME/var/lib/usbutils/usb.ids -s | sort > $PLAINBOX_SESSION_SHARE/lsusb_test diff -u $PLAINBOX_SESSION_SHARE/lspci_original $PLAINBOX_SESSION_SHARE/lspci_test if [ $? -ne 0 ] ; then echo "lspci mismatch during cycle 1" @@ -136,7 +136,7 @@ environ: LD_LIBRARY_PATH command: lspci -i $SNAP/usr/share/misc/pci.ids > $PLAINBOX_SESSION_SHARE/lspci_test nmcli -t -f active,BSSID d w l | grep -oP "(?<=^yes:).*" > $PLAINBOX_SESSION_SHARE/wifi_test - checkbox-support-lsusb -f $SNAP/checkbox-runtime/var/lib/usbutils/usb.ids -s | sort > $PLAINBOX_SESSION_SHARE/lsusb_test + checkbox-support-lsusb -f $CHECKBOX_RUNTIME/var/lib/usbutils/usb.ids -s | sort > $PLAINBOX_SESSION_SHARE/lsusb_test diff -u $PLAINBOX_SESSION_SHARE/lspci_original $PLAINBOX_SESSION_SHARE/lspci_test if [ $? -ne 0 ] ; then echo "lspci mismatch during cycle {reboot_id}" @@ -205,7 +205,7 @@ environ: LD_LIBRARY_PATH command: lspci -i $SNAP/usr/share/misc/pci.ids > $PLAINBOX_SESSION_SHARE/lspci_test nmcli -t -f active,BSSID d w l | grep -oP "(?<=^yes:).*" > $PLAINBOX_SESSION_SHARE/wifi_test - checkbox-support-lsusb -f $SNAP/checkbox-runtime/var/lib/usbutils/usb.ids -s | sort > $PLAINBOX_SESSION_SHARE/lsusb_test + checkbox-support-lsusb -f $CHECKBOX_RUNTIME/var/lib/usbutils/usb.ids -s | sort > $PLAINBOX_SESSION_SHARE/lsusb_test diff -u $PLAINBOX_SESSION_SHARE/lspci_original $PLAINBOX_SESSION_SHARE/lspci_test if [ $? -ne 0 ] ; then echo "lspci mismatch during cycle 1" @@ -240,7 +240,7 @@ environ: LD_LIBRARY_PATH command: lspci -i $SNAP/usr/share/misc/pci.ids > $PLAINBOX_SESSION_SHARE/lspci_test nmcli -t -f active,BSSID d w l | grep -oP "(?<=^yes:).*" > $PLAINBOX_SESSION_SHARE/wifi_test - checkbox-support-lsusb -f $SNAP/checkbox-runtime/var/lib/usbutils/usb.ids -s | sort > $PLAINBOX_SESSION_SHARE/lsusb_test + checkbox-support-lsusb -f $CHECKBOX_RUNTIME/var/lib/usbutils/usb.ids -s | sort > $PLAINBOX_SESSION_SHARE/lsusb_test diff -u $PLAINBOX_SESSION_SHARE/lspci_original $PLAINBOX_SESSION_SHARE/lspci_test if [ $? -ne 0 ] ; then echo "lspci mismatch during cycle {reboot_id}" diff --git a/units/stress/jobs.pxu b/units/stress/jobs.pxu index 719e9e1..cf44c6c 100644 --- a/units/stress/jobs.pxu +++ b/units/stress/jobs.pxu @@ -86,13 +86,14 @@ flags: noreturn user: root environ: PM_TEST_DRY_RUN command: + rm -f $PLAINBOX_SESSION_SHARE/__result pm_test reboot --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox --fwts --log-level=debug --log-dir=$PLAINBOX_SESSION_SHARE --suspends-before-reboot=30 -r 3 --silent --check-hardware-list _summary: 30 suspend/resume cycles and 1 reboot, 3 times (automated stress test) _description: This is an automated stress test that will run a sequence of '30 suspend/resume cycles and one reboot' 3 times. _siblings: [ { "id": "power-management/suspend_30_cycles_with_coldboots", - "command": "pm_test poweroff --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox --fwts --log-level=debug --log-dir=$PLAINBOX_SESSION_SHARE --suspends-before-reboot=30 -r 3 --silent --check-hardware-list", + "command": "rm -f $PLAINBOX_SESSION_SHARE/__result; pm_test poweroff --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox --fwts --log-level=debug --log-dir=$PLAINBOX_SESSION_SHARE --suspends-before-reboot=30 -r 3 --silent --check-hardware-list", "_description": "This is an automated stress test that will run a sequence of '30 suspend/resume cycles and one poweroff' 3 times.", "_summary": "30 suspend/resume cycles and 1 poweroff, 3 times (automated stress test)" } @@ -267,7 +268,9 @@ category_id: com.canonical.plainbox::stress id: stress/reboot estimated_duration: 4500.0 requires: executable.name == 'fwts' -command: pm_test --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox -r 100 --silent --log-level=notset reboot --log-dir=$PLAINBOX_SESSION_SHARE +command: + rm -f $PLAINBOX_SESSION_SHARE/__result + pm_test --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox -r 100 --silent --log-level=notset reboot --log-dir=$PLAINBOX_SESSION_SHARE flags: noreturn user: root environ: PLAINBOX_SESSION_SHARE PM_TEST_DRY_RUN @@ -288,7 +291,9 @@ category_id: com.canonical.plainbox::stress id: stress/reboot_30 requires: executable.name == 'fwts' executable.name == 'x-terminal-emulator' -command: pm_test --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox -r 30 --silent --log-level=notset reboot --log-dir=$PLAINBOX_SESSION_SHARE +command: + rm -f $PLAINBOX_SESSION_SHARE/__result + pm_test --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox -r 30 --silent --log-level=notset reboot --log-dir=$PLAINBOX_SESSION_SHARE flags: noreturn estimated_duration: 2700 user: root @@ -311,7 +316,9 @@ estimated_duration: 4500.0 requires: executable.name == 'fwts' executable.name == 'x-terminal-emulator' -command: pm_test --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox -r 100 --silent --log-level=notset poweroff --log-dir=$PLAINBOX_SESSION_SHARE +command: + rm -f $PLAINBOX_SESSION_SHARE/__result + pm_test --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox -r 100 --silent --log-level=notset poweroff --log-dir=$PLAINBOX_SESSION_SHARE flags: noreturn user: root environ: PLAINBOX_SESSION_SHARE PM_TEST_DRY_RUN @@ -333,7 +340,9 @@ id: stress/poweroff_30 requires: executable.name == 'fwts' executable.name == 'x-terminal-emulator' -command: pm_test --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox -r 30 --wakeup 150 --silent --log-level=notset poweroff --log-dir=$PLAINBOX_SESSION_SHARE +command: + rm -f $PLAINBOX_SESSION_SHARE/__result + pm_test --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox -r 30 --wakeup 150 --silent --log-level=notset poweroff --log-dir=$PLAINBOX_SESSION_SHARE flags: noreturn estimated_duration: 3600 user: root @@ -495,3 +504,41 @@ _description: 2. Press wifi hotkey at a rate of 1 press per second and slowly increase the speed of the tap, until you are tapping as fast as possible VERIFICATION: Verify the system is not frozen and the wifi and bluetooth applets are still visible and functional + +plugin:shell +category_id: com.canonical.plainbox::stress +id: stress/s2idle_pm-graph_30 +estimated_duration: 10m +requires: executable.name == 'sleepgraph' +user: root +_summary: Resume from idle by using Intel pm-graph +command: + sleepgraph -m freeze -rtcwake 10 -sync -gzip -multi 30 0 -skiphtml -o $PLAINBOX_SESSION_SHARE/s2idle_pm-graph/s2idle-{date}-{time} + +plugin: attachment +category_id: com.canonical.plainbox::stress +id: stress/s2idle_pm-graph_30.tar.xz +estimated_duration: 1 +user: root +_summary: Attach pm-graph logs (s2idle) +command: + tar Jcf $PLAINBOX_SESSION_SHARE/s2idle_pm-graph_30.tar.xz $PLAINBOX_SESSION_SHARE/s2idle_pm-graph && cat $PLAINBOX_SESSION_SHARE/s2idle_pm-graph_30.tar.xz + +plugin:shell +category_id: com.canonical.plainbox::stress +id: stress/s3_pm-graph_30 +estimated_duration: 10m +requires: executable.name == 'sleepgraph' +user: root +_summary: Resume from suspend by using Intel pm-graph +command: + sleepgraph -m mem -rtcwake 10 -sync -gzip -multi 30 0 -skiphtml -o $PLAINBOX_SESSION_SHARE/s3_pm-graph/suspend-{date}-{time} + +plugin: attachment +category_id: com.canonical.plainbox::stress +id: stress/s3_pm-graph_30.tar.xz +estimated_duration: 1 +user: root +_summary: Attach pm-graph logs (s3) +command: + tar Jcf $PLAINBOX_SESSION_SHARE/s3_pm-graph_30.tar.xz $PLAINBOX_SESSION_SHARE/s3_pm-graph && cat $PLAINBOX_SESSION_SHARE/s3_pm-graph_30.tar.xz diff --git a/units/stress/test-plan.pxu b/units/stress/test-plan.pxu index 7967dd5..f162517 100644 --- a/units/stress/test-plan.pxu +++ b/units/stress/test-plan.pxu @@ -245,3 +245,13 @@ include: ethernet/iperf3_.* bootstrap_include: device + +id: stress-pm-graph +unit: test plan +_name: pm-graph stress test +_description: pm-graph stress test +include: + stress/s2idle_pm-graph_30 + stress/s2idle_pm-graph_30.tar.xz + stress/s3_pm-graph_30 + stress/s3_pm-graph_30.tar.xz diff --git a/units/submission/jobs.pxu b/units/submission/jobs.pxu index b433fd3..e0829b6 100644 --- a/units/submission/jobs.pxu +++ b/units/submission/jobs.pxu @@ -2,7 +2,7 @@ id: dkms_info_json plugin: attachment category_id: com.canonical.plainbox::info command: - dkms_info --format json | python3 -m plainbox dev parse dkms-info | \ + dkms_info.py --format json | python3 -m plainbox dev parse dkms-info | \ jq '.dkms_info' _description: Attaches json dumps of installed dkms package information. _summary: Attaches json dumps of installed dkms package information. @@ -62,7 +62,7 @@ _description: The information include: - fish packages - dell recovery stage 2 boot log -command: recovery_info file bto.xml | python3 -m plainbox dev parse bto +command: recovery_info.py file bto.xml | python3 -m plainbox dev parse bto id: recovery_info_attachment_json plugin: attachment @@ -79,7 +79,7 @@ _description: Example: image_version: somerville-trusty-amd64-20140620-0 bto_version: A00_dell-bto-trusty-houston-15-A11-iso-20141203-0.iso -command: recovery_info version | python3 -m plainbox dev parse recovery-info +command: recovery_info.py version | python3 -m plainbox dev parse recovery-info id: system_info_json plugin: attachment diff --git a/units/submission/test-plan.pxu b/units/submission/test-plan.pxu index 3bb4cd3..5ae692f 100644 --- a/units/submission/test-plan.pxu +++ b/units/submission/test-plan.pxu @@ -4,7 +4,6 @@ _name: Submission resources _description: Submission resources include: mandatory_include: - com.canonical.plainbox::collect-manifest miscellanea/device_check # Meta-job to include required resources, don't remove. miscellanea/submission-resources diff --git a/units/suspend/test-plan.pxu b/units/suspend/test-plan.pxu index 1d6e12f..e84d6e9 100644 --- a/units/suspend/test-plan.pxu +++ b/units/suspend/test-plan.pxu @@ -35,8 +35,6 @@ include: suspend/cpu_before_suspend certification-status=blocker suspend/memory_before_suspend certification-status=blocker suspend/bluetooth_obex_send_before_suspend certification-status=blocker - suspend/bluetooth_obex_browse_before_suspend certification-status=blocker - suspend/bluetooth_obex_get_before_suspend certification-status=blocker bluetooth4/beacon_eddystone_url_.* certification-status=blocker bootstrap_include: device @@ -52,8 +50,6 @@ include: suspend/memory_after_suspend certification-status=blocker suspend/bluetooth_detect_after_suspend certification-status=blocker suspend/bluetooth_obex_send_after_suspend certification-status=blocker - suspend/bluetooth_obex_browse_after_suspend certification-status=blocker - suspend/bluetooth_obex_get_after_suspend certification-status=blocker after-suspend-manual-bluetooth4/beacon_eddystone_url_.* certification-status=blocker bootstrap_include: device diff --git a/units/thunderbolt/test-plan.pxu b/units/thunderbolt/test-plan.pxu index 75aa0ac..5015cde 100644 --- a/units/thunderbolt/test-plan.pxu +++ b/units/thunderbolt/test-plan.pxu @@ -23,9 +23,6 @@ _name: Thunderbolt tests (Manual) _description: Thunderbolt tests (Manual) include: - thunderbolt/insert certification-status=blocker - thunderbolt/storage-test certification-status=blocker - thunderbolt/remove certification-status=blocker thunderbolt3/insert certification-status=non-blocker thunderbolt3/storage-test certification-status=non-blocker thunderbolt3/remove certification-status=non-blocker @@ -43,9 +40,6 @@ unit: test plan _name: Thunderbolt tests (certification blockers only) _description: Thunderbolt tests (certification blockers only) include: - thunderbolt/insert certification-status=blocker - thunderbolt/storage-test certification-status=blocker - thunderbolt/remove certification-status=blocker id: after-suspend-thunderbolt-cert-manual unit: test plan @@ -53,9 +47,6 @@ _name: Thunderbolt tests (after suspend Manual) _description: Thunderbolt tests (after suspend Manual) include: - after-suspend-manual-thunderbolt/insert certification-status=blocker - after-suspend-manual-thunderbolt/storage-test certification-status=blocker - after-suspend-manual-thunderbolt/remove certification-status=blocker after-suspend-manual-thunderbolt3/insert certification-status=non-blocker after-suspend-manual-thunderbolt3/storage-test certification-status=non-blocker after-suspend-manual-thunderbolt3/remove certification-status=non-blocker @@ -65,8 +56,5 @@ unit: test plan _name: Thunderbolt tests (after suspend - certification blockers only) _description: Thunderbolt tests (after suspend - certification blockers only) include: - after-suspend-manual-thunderbolt/insert certification-status=blocker - after-suspend-manual-thunderbolt/storage-test certification-status=blocker - after-suspend-manual-thunderbolt/remove certification-status=blocker diff --git a/units/tpm/sysfs.pxu b/units/tpm/sysfs.pxu index fdbf390..5db5fe7 100644 --- a/units/tpm/sysfs.pxu +++ b/units/tpm/sysfs.pxu @@ -11,8 +11,8 @@ plugin: resource _summary: Count the number of visible TPM chips in sysfs _description: This job just counts the number of visible TPM chips in as reported by - tpm-sysfs-resource tool. The only resource attribute is 'count' -command: echo "count: $(tpm-sysfs-resource | grep -F 'x-sysfs-device-name' | wc -l)" + tpm_sysfs_resource.py tool. The only resource attribute is 'count' +command: echo "count: $(tpm_sysfs_resource.py | grep -F 'x-sysfs-device-name' | wc -l)" estimated_duration: 2s flags: preserve-locale @@ -24,7 +24,7 @@ _summary: Collect TPM information from sysfs _description: This job collects all the available TPM information from /sys/class/tpm/*/device/*. -command: tpm-sysfs-resource +command: tpm_sysfs_resource.py estimated_duration: 2s flags: preserve-locale # Tie this resource with the has_tpm_chip manifest entry. This way it will @@ -43,7 +43,7 @@ _description: This job collects all the available TPM information from /sys/class/tpm/*/device/*. Distinct files present there are converted to attributes of resource records. -command: tpm-sysfs-resource +command: tpm_sysfs_resource.py estimated_duration: 2s flags: preserve-locale # See note about manifest on the sysfs_tpm job above. @@ -60,7 +60,7 @@ _description: This job collects all the available TPM information from /sys/class/tpm/*/device/*. Distinct files present there are converted to attributes of resource records. -command: tpm-sysfs-resource +command: tpm_sysfs_resource.py estimated_duration: 2s flags: preserve-locale # See note about manifest on the sysfs_tpm job above. @@ -76,6 +76,6 @@ _description: This job collects all the available DMI information from /sys/class/dmi/id/*. The main purpose of including this job is to allow the provider to include vendor-specific quirks by looking at the sysfs_dmi.bios_vendor attribute. -command: dmi-sysfs-resource +command: dmi_sysfs_resource.py estimated_duration: 1s flags: preserve-locale diff --git a/units/usb/manifest.pxu b/units/usb/manifest.pxu index 914e892..fef1a64 100644 --- a/units/usb/manifest.pxu +++ b/units/usb/manifest.pxu @@ -2,3 +2,8 @@ unit: manifest entry id: has_usb_type_c _name: USB Type-C Support value-type: bool + +unit: manifest entry +id: has_usb_storage +_name: USB Storage Device Connected +value-type: bool diff --git a/units/usb/test-plan.pxu b/units/usb/test-plan.pxu index f177798..02dc6e5 100644 --- a/units/usb/test-plan.pxu +++ b/units/usb/test-plan.pxu @@ -221,6 +221,7 @@ unit: test plan _name: Automated USB tests _description: Automated USB tests for Snappy Ubuntu Core devices include: + usb/storage-detect usb/storage-preinserted-.* bootstrap_include: removable_partition @@ -326,6 +327,7 @@ unit: test plan _name: Automated USB tests _description: Automated USB tests for Snappy Ubuntu Core devices include: + after-suspend-usb/storage-detect after-suspend-usb/storage-preinserted-.* bootstrap_include: removable_partition diff --git a/units/usb/usb.pxu b/units/usb/usb.pxu index 670f649..77dd601 100644 --- a/units/usb/usb.pxu +++ b/units/usb/usb.pxu @@ -7,7 +7,7 @@ estimated_duration: 1.0 command: set -o pipefail if [[ -v SNAP ]]; then - checkbox-support-lsusb -f $SNAP/checkbox-runtime/var/lib/usbutils/usb.ids 2>/dev/null | sed 's/.*\(ID .*\)/\1/' | head -n 4 || echo "No USB devices were detected" >&2 + checkbox-support-lsusb -f $CHECKBOX_RUNTIME/var/lib/usbutils/usb.ids 2>/dev/null | sed 's/.*\(ID .*\)/\1/' | head -n 4 || echo "No USB devices were detected" >&2 else lsusb 2>/dev/null | sort || echo "No USB devices were detected" >&2 fi @@ -18,6 +18,8 @@ plugin: user-interact-verify category_id: com.canonical.plainbox::usb id: usb/disk_detect depends: usb/detect +requires: + package.name == 'udisks2' or snap.name == 'udisks2' estimated_duration: 1.0 command: removable_storage_test -l usb _description: @@ -232,7 +234,7 @@ category_id: com.canonical.plainbox::usb id: usb/storage-preinserted user: root estimated_duration: 45.0 -command: removable_storage_test -l usb && removable_storage_test -s 268400000 usb +command: removable_storage_test -l usb && timeout 300 removable_storage_test -s 268400000 usb flags: also-after-suspend preserve-cwd requires: cpuinfo.platform != 's390x' @@ -256,7 +258,7 @@ requires: package.name == 'udisks2' or snap.name == 'udisks2' package.name == 'udisks2' or (snap.name == 'core' and int(snap.revision) >= 1804) estimated_duration: 45.0 -command: removable_storage_test -l usb && removable_storage_test -s 268400000 -m 500000000 usb --driver xhci_hcd +command: removable_storage_test -l usb && timeout 300 removable_storage_test -s 268400000 -m 500000000 usb --driver xhci_hcd _summary: Test USB 3.0 or 3.1 ports _description: @@ -291,6 +293,18 @@ _description: This test will check that your USB 2.0 port transfers data at a minimum expected speed. +id: usb/storage-detect +category_id: com.canonical.plainbox::usb +plugin: shell +_summary: Detect storage partitions on a device on the USB bus +command: + udev_resource -f PARTITION | grep "bus: usb" +estimated_duration: 1.0 +flags: also-after-suspend +imports: from com.canonical.plainbox import manifest +requires: + manifest.has_usb_storage == 'True' + unit: template template-resource: removable_partition template-filter: "usb" in removable_partition.bus @@ -308,6 +322,7 @@ _description: Tests USB 2.0 or 1.1 ports on a system by doing write/read/compare tests on randomly created data. It requires that a USB stick is plugged into an available USB port before running the certification suite. +depends: usb/storage-detect id: usb/hid _summary: USB keyboard works diff --git a/units/wireless/wifi-ap.pxu b/units/wireless/wifi-ap.pxu index 335d505..493a2ca 100644 --- a/units/wireless/wifi-ap.pxu +++ b/units/wireless/wifi-ap.pxu @@ -585,7 +585,6 @@ plugin: user-interact-verify requires: wifi_interface_mode.{interface}_AP == 'supported' snap.name == 'wifi-ap' -depends: wireless/wireless_connection_open_bg_nm_{interface} estimated_duration: 120.0 environ: LD_LIBRARY_PATH OPEN_BG_SSID command: @@ -624,7 +623,6 @@ plugin: shell requires: wifi_interface_mode.{interface}_AP == 'supported' snap.name == 'wifi-ap' -depends: wireless/wireless_connection_open_bg_nm_{interface} estimated_duration: 120.0 environ: LD_LIBRARY_PATH OPEN_BG_SSID WIFI_AP_SETUPTIME command: @@ -673,7 +671,6 @@ plugin: user-interact-verify requires: wifi_interface_mode.{interface}_AP == 'supported' snap.name == 'wifi-ap' -depends: wireless/wireless_connection_open_bg_nm_{interface} estimated_duration: 120.0 environ: LD_LIBRARY_PATH $OPEN_BG_SSID command: @@ -712,7 +709,6 @@ plugin: shell requires: wifi_interface_mode.{interface}_AP == 'supported' snap.name == 'wifi-ap' -depends: wireless/wireless_connection_open_bg_nm_{interface} estimated_duration: 120.0 environ: LD_LIBRARY_PATH OPEN_BG_SSID WIFI_AP_SETUPTIME command: @@ -761,7 +757,6 @@ plugin: user-interact-verify requires: wifi_interface_mode.{interface}_AP == 'supported' snap.name == 'wifi-ap' -depends: wireless/wireless_connection_open_bg_nm_{interface} estimated_duration: 120.0 environ: LD_LIBRARY_PATH OPEN_BG_SSID command: @@ -800,7 +795,6 @@ plugin: shell requires: wifi_interface_mode.{interface}_AP == 'supported' snap.name == 'wifi-ap' -depends: wireless/wireless_connection_open_bg_nm_{interface} estimated_duration: 120.0 environ: LD_LIBRARY_PATH OPEN_BG_SSID WIFI_AP_SETUPTIME command: @@ -849,7 +843,6 @@ plugin: user-interact-verify requires: wifi_interface_mode.{interface}_AP == 'supported' snap.name == 'wifi-ap' -depends: wireless/wireless_connection_open_bg_nm_{interface} estimated_duration: 120.0 environ: LD_LIBRARY_PATH OPEN_BG_SSID command: @@ -888,7 +881,6 @@ plugin: shell requires: wifi_interface_mode.{interface}_AP == 'supported' snap.name == 'wifi-ap' -depends: wireless/wireless_connection_open_bg_nm_{interface} estimated_duration: 120.0 environ: LD_LIBRARY_PATH OPEN_BG_SSID WIFI_AP_SETUPTIME command: diff --git a/units/wwan/jobs.pxu b/units/wwan/jobs.pxu index d18cdc3..b031385 100644 --- a/units/wwan/jobs.pxu +++ b/units/wwan/jobs.pxu @@ -15,7 +15,7 @@ _purpose: plugin: shell user: root command: - COUNT=$(wwan_tests count) + COUNT=$(wwan_tests.py count) if [ $COUNT -eq 0 ]; then exit 1 fi @@ -38,7 +38,7 @@ _description: plugin: shell command: BEGIN_CONNECTION_TEST_TS=`date '+%Y-%m-%d %H:%M:%S'` - wwan_tests 3gpp-connection $WWAN_CONTROL_IF $WWAN_NET_IF $WWAN_APN ${{WWAN_SETUPTIME:-30}} + wwan_tests.py 3gpp-connection $WWAN_CONTROL_IF $WWAN_NET_IF $WWAN_APN ${{WWAN_SETUPTIME:-30}} RETVAL=$? if [ $RETVAL -ne 0 ]; then echo "==== Service units logs ====" @@ -64,7 +64,7 @@ _summary: Check if a SIM card is present in a slot connected to the modem _description: Check if a SIM card is present in a slot connected to the modem plugin: shell -command: wwan_tests sim-present {hw_id} +command: wwan_tests.py sim-present {hw_id} environ: LD_LIBRARY_PATH user: root estimated_duration: 10.0 @@ -90,7 +90,7 @@ _steps: 1. Start the test to automatically retrieve information from the SIM card _verification: Check the output, if as expected then mark the test as passed. -command: wwan_tests sim-info {hw_id} +command: wwan_tests.py sim-info {hw_id} environ: LD_LIBRARY_PATH user: root estimated_duration: 5s diff --git a/units/wwan/resource.pxu b/units/wwan/resource.pxu index a0e82ff..0197f15 100644 --- a/units/wwan/resource.pxu +++ b/units/wwan/resource.pxu @@ -11,7 +11,7 @@ category_id: wwan plugin: resource _summary: Gather device info about WWAN modems _description: Gather device info about WWAN modems -command: wwan_tests --use-cli resources +command: wwan_tests.py --use-cli resources user: root estimated_duration: 3s flags: preserve-locale |