Code Monkey home page Code Monkey logo

ddcutil's Introduction

ddcutil

ddcutil is a Linux program for querying and changing monitor settings, such as brightness and color levels.

Most monitors, other than laptop displays, have a Virtual Control Panel (VCP), which implements features defined in the Monitor Control Command Set (MCCS). Typically, ddcutil communicates with the monitor's VCP over an I2C bus, as per the Display Data Channel/Command Interface Standard (DDC/CI).

Alternatively, some monitors (e.g. Eizo ColorEdge, Apple Cinema) provide a USB interface to the VCP, as described in the USB Monitor Control Class Specification. ddcutil can communicate with these monitors over USB instead of I2C.

A particular use case for ddcutil is as part of color profile management. Monitor calibration is relative to the monitor color settings currently in effect, e.g. red gain. ddcutil allows color related settings to be saved at the time a monitor is calibrated, and then restored when the calibration is applied.

The tarball/github project builds both command line (ddcutil) and shared library (libddcutil) executables. The command line executable does not depend on the shared library.

For detailed information about ddcutil, see the project website: www.ddcutil.com.

In particular, for a summary of key post-installation steps, including loading driver i2c-dev, see Post-Installation Checklist. More generally, for instructions on building and configuring ddcutil, see Installation and Configuration

Once ddcutil is installed, online help is also available. Use the --help option or see the man page:

$ ddcutil --help
$ man 1 ddcutil

References to the relevant specifictions can be found at www.ddcutil.com/bibliography.

Installation Diagnostics

If ddcutil is successfully built but execution fails, command ddcutil environment probes the I2C environment and may provide clues as to the problem.

User Support

Please direct technical support questions, bug reports, and feature requests to the Issue Tracker on the github repository. Use of this forum allows everyone to benefit from individual questions and ideas.

When posting questions regarding ddcutil configuration, please execute the following command, capture its output in a file, and submit the output as an attachement.

$ ddcutil interrogate 

For further information about technical support, see https://www.ddcutil.com/tech_support.

Maintaining ddcutil in Linux Distributions

Those responsible for maintaining ddcutil related packages in Linux distributions should see Notes for Linux Distribution Maintainers.

Author

Sanford Rockowitz [email protected]

ddcutil's People

Contributors

baloo avatar crozzers avatar evgeni avatar mdempsky avatar pinotree avatar rockowitz avatar timcharper avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ddcutil's Issues

Build without X11

On many embedded platforms X11 is not present anymore. It could be nice to allow disabling X11 support via configuration switch. What do you think about that? Do you think X11 is necessary to run this app? For a quick test I removed all X11 and xrand from code and configuration checks, and it seems to be working fine.

(resolved by reading man and copying the setting to xorg.conf) driver nvidia-381 / videocard gt 1030: no displays found (Failure getting EDID for /dev/i2c-1: status code=DDCRC_EDID(-3016): invalid EDID)

(resolved by reading man and copying the setting for nvidia card to xorg.conf.d.
I am now trying to close or delete this issue if I have rights. Sorry for opening it =)

Hi. Thank you for your work and for this tool!

I was using ddcutil to change brightness/contrast of my monitor, and it worked like charm on ubuntu 16.04 with my 5 year old nvidia card and nvidia-375 drivers. (I even attached yoctopuce light sensor and wrote simple script to adjust brightness according to current background lighting)

Well, I just bought nvidia gt 1030 to support 4k monitor, and had to install also nvidia-381 for it to be able to boot. And ddcutil stopped working (I've updated it to the latest version from master)

(I've read configuration issues points from another ticket, and will add RW permissions for my user to be able to use ddcutil without sudo)

Display is connected via HDMI.

Can you please advise if I can do anything to try and debug the problem?

❯ sudo src/ddcutil interrogate --verbose 2>&1 | pbcopy

Failure getting EDID for /dev/i2c-1: status code=DDCRC_EDID(-3016): invalid EDID
Output level:               Verbose
Reporting DDC data errors:  false
Trace groups active:        none
Force I2C slave address:    false

Setting output level verbose...
Setting maximum retries...
Forcing --stats...
Forcing --force-slave-address..
This command will take a while to run...


*** Basic System Information ***

ddcutil version: 0.8.4

/proc/version:
   Linux version 4.4.0-87-generic (buildd@lcy01-31) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #110-Ubuntu SMP Tue Jul 18 12:55:35 UTC 2017

/etc/os-release...
   PRETTY_NAME="Ubuntu 16.04.3 LTS"

/proc/cmdline:
   BOOT_IMAGE=/boot/vmlinuz-4.4.0-87-generic root=UUID=890c5053-2fab-497d-b889-c60e496b7562 ro quiet splash vt.handoff=7

Processor information as reported by lscpu:
   Architecture:          x86_64
   CPU op-mode(s):        32-bit, 64-bit
   Byte Order:            Little Endian
   CPU(s):                8
   On-line CPU(s) list:   0-7
   Thread(s) per core:    2
   Core(s) per socket:    4
   Socket(s):             1
   NUMA node(s):          1
   Vendor ID:             GenuineIntel
   CPU family:            6
   Model:                 26
   Model name:            Intel(R) Core(TM) i7 CPU         920  @ 2.67GHz
   Stepping:              5
   CPU MHz:               1596.000
   CPU max MHz:           2793,0000
   CPU min MHz:           1596,0000
   BogoMIPS:              5397.34
   Virtualization:        VT-x
   L1d cache:             32K
   L1i cache:             32K
   L2 cache:              256K
   L3 cache:              8192K
   NUMA node0 CPU(s):     0-7
   Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm tpr_shadow vnmi flexpriority ept vpid dtherm ida

DMI Information from /sys/class/dmi/id:
   Motherboard vendor:       Gigabyte Technology Co., Ltd.
   Motherboard product name: EX58-UD5
   System vendor:            Gigabyte Technology Co., Ltd.
   System product name:      EX58-UD5
   Chassis vendor:           Gigabyte Technology Co., Ltd.
   Chassis type:             3 - Desktop

*** Primary Check 1: Identify video card and driver ***

Obtaining card and driver information from /sys...

Determining driver name and possibly version...
   Driver name:    nvidia
   Driver version: 381.22

Video card identification:
   Vendor:              10de       NVIDIA Corporation
   Device:              1d01       unknown device

*** Primary Check 2: Check that /dev/i2c-* exist and writable ***

(identify_i2c_devices) Identified 2 I2C devices

Checking /dev/i2c-* devices...

Unless the system is using the AMD proprietary driver fglrx, devices /dev/i2c-*
must exist and the logged on user must have read/write permission for those
devices (or at least those devices associated with monitors).
Typically, this access is enabled by:
  - setting the group for /dev/i2c-* to i2c
  - setting group RW permissions for /dev/i2c-*
  - making the current user a member of group i2c
Alternatively, this could be enabled by just giving everyone RW permission
The following tests probe for these conditions.

Checking for /dev/i2c-* devices...
   crw------- 1 root root 89, 0 авг  4 01:42 /dev/i2c-0
   crw------- 1 root root 89, 1 авг  4 01:42 /dev/i2c-1

Current user: root (0)

Current user (root) has RW access to all /dev/i2c-* devices.

Checking for group i2c...
   Group i2c does not exist

Looking for udev nodes files that reference i2c:
   grep: /etc/udev/makedev.d/*: No such file or directory

Looking for udev rules files that reference i2c:
   grep: /run/udev/rules.d/*rules: No such file or directory

*** Primary Check 3: Check that module i2c_dev is loaded ***

Checking for module i2c_dev...
Using only proprietary nvidia or fglrx driver. Module i2c_dev not required.
Remaining i2c_dev detail is purely informational.
   Module i2c_dev          is built into kernel

Check that kernel module i2c_dev is being loaded by examining files where this would be specified...
   grep: /run/modules-load.d/*conf: No such file or directory
   grep: /usr/lib/modules-load.d/*conf: No such file or directory

Check for any references to i2c_dev in /etc/modprobe.d ...
   grep: /run/modprobe.d/*conf: No such file or directory

*** Primary Check 4: Driver specific checks ***

Performing driver specific checks...

Checking for special settings for proprietary Nvidia driver 
(needed for some newer Nvidia cards).
   grep: /etc/X11/xorg.conf: No such file or directory
   grep: /etc/X11/xorg.conf.d/*: No such file or directory

*** Additional probes ***

Scanning /proc/modules for driver environment...
   Found other loaded module: videobuf2_vmalloc
   Found other loaded module: videobuf2_memops
   Found other loaded module: videobuf2_v4l2
   Found other loaded module: videobuf2_core
   Found other loaded module: videodev
   Found other loaded module: drm_kms_helper
   Loaded drm module depends on: nvidia_drm,drm_kms_helper,
   Found video driver module: nvidia

Using lspci to examine driver environment...
Video controller:  NVIDIA Corporation Device 1d01 (rev a1)


Testing if modules are loaded using /sys...
   Module amdgpu           is NOT loaded
   Module fglrx            is NOT loaded
   Module i915             is NOT loaded
   Module nvidia           is loaded
   Module nouveau          is NOT loaded
   Module radeon           is NOT loaded
   Module vboxvideo        is NOT loaded
   Module drm              is loaded
   Module eeprom           is NOT loaded
   Module i2c_algo_bit     is NOT loaded
   Module i2c_dev          is NOT loaded
   Module i2c_piix4        is NOT loaded

Examining /sys/bus/i2c/devices...
   /sys/bus/i2c/devices/i2c-0/name: NVIDIA i2c adapter 4 at 4:00.0
   /sys/bus/i2c/devices/i2c-1/name: NVIDIA i2c adapter 5 at 4:00.0

Examining /proc/driver/nvidia:
   /proc/driver/nvidia/version:
      NVRM version: NVIDIA UNIX x86_64 Kernel Module  381.22  Thu May  4 00:55:03 PDT 2017
      GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
   /proc/driver/nvidia/registry:
      Binary: ""
   /proc/driver/nvidia/params:
      Mobile: 4294967295
      ResmanDebugLevel: 4294967295
      RmLogonRC: 1
      ModifyDeviceFiles: 1
      DeviceFileUID: 0
      DeviceFileGID: 0
      DeviceFileMode: 438
      UpdateMemoryTypes: 4294967295
      InitializeSystemMemoryAllocations: 1
      UsePageAttributeTable: 4294967295
      EnableMSI: 1
      MapRegistersEarly: 0
      RegisterForACPIEvents: 1
      CheckPCIConfigSpace: 1
      EnablePCIeGen3: 0
      MemoryPoolSize: 0
      TCEBypassMode: 0
      UseThreadedInterrupts: 1
      RegistryDwords: ""
      RegistryDwordsPerDevice: ""
      RmMsg: ""
      AssignGpus: ""
   PCI bus id: 0000:04:00.0
   /proc/driver/nvidia/gpus/0000:04:00.0/information:
      Model: 		 GeForce GT 1030
      IRQ:   		 30
      GPU UUID: 	 GPU-eec473f3-aebd-0018-64ff-fb37f9d2fc9f
      Video BIOS: 	 86.08.0c.00.0b
      Bus Type: 	 PCIe
      DMA Size: 	 47 bits
      DMA Mask: 	 0x7fffffffffff
      Bus Location: 	 0000:04:00.0
      Device Minor: 	 0
   /proc/driver/nvidia/gpus/0000:04:00.0/registry:
      Binary: ""

Examining I2C buses, as detected by I2C layer...

   Detected I2C buses:

   Bus /dev/i2c-0 found:    true
   Bus /dev/i2c-0 probed:   true
   Address 0x30 present:    false
   Address 0x37 present:    false
   Address 0x50 present:    false
   Functionality: I2C_FUNC_I2C, I2C_FUNC_SMBUS_QUICK, I2C_FUNC_SMBUS_READ_BYTE, 
                  I2C_FUNC_SMBUS_WRITE_BYTE, I2C_FUNC_SMBUS_READ_BYTE_DATA, 
                  I2C_FUNC_SMBUS_WRITE_BYTE_DATA, I2C_FUNC_SMBUS_READ_WORD_DATA, 
                  I2C_FUNC_SMBUS_WRITE_WORD_DATA, I2C_FUNC_SMBUS_READ_BLOCK_DATA, 
                  I2C_FUNC_SMBUS_WRITE_BLOCK_DATA

   Bus /dev/i2c-1 found:    true
   Bus /dev/i2c-1 probed:   true
   Address 0x30 present:    true
   Address 0x37 present:    true
   Address 0x50 present:    true
   Functionality: I2C_FUNC_I2C, I2C_FUNC_SMBUS_QUICK, I2C_FUNC_SMBUS_READ_BYTE, 
                  I2C_FUNC_SMBUS_WRITE_BYTE, I2C_FUNC_SMBUS_READ_BYTE_DATA, 
                  I2C_FUNC_SMBUS_WRITE_BYTE_DATA, I2C_FUNC_SMBUS_READ_WORD_DATA, 
                  I2C_FUNC_SMBUS_WRITE_WORD_DATA, I2C_FUNC_SMBUS_READ_BLOCK_DATA, 
                  I2C_FUNC_SMBUS_WRITE_BLOCK_DATA

xrandr connection report:
   DP-0 disconnected (normal left inverted right x axis y axis)
   DP-1 disconnected (normal left inverted right x axis y axis)
   HDMI-0 connected primary 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm x 371mm

Checking for possibly conflicting programs...

Examining I2C buses using i2cdetect... 

   Probing bus /dev/i2c-0 using command "i2cdetect -y 0"
   i2cdetect command unavailable

Performing basic scan of I2C devices using local sysenv functions...

   Examining device /dev/i2c-0...
      Device name (/sys/bus/i2c/devices/i2c-0/name): NVIDIA i2c adapter 4 at 4:00.0
      Functionality: I2C_FUNC_I2C, I2C_FUNC_SMBUS_QUICK, I2C_FUNC_SMBUS_READ_BYTE, 
                     I2C_FUNC_SMBUS_WRITE_BYTE, I2C_FUNC_SMBUS_READ_BYTE_DATA, 
                     I2C_FUNC_SMBUS_WRITE_BYTE_DATA, I2C_FUNC_SMBUS_READ_WORD_DATA, 
                     I2C_FUNC_SMBUS_WRITE_WORD_DATA, I2C_FUNC_SMBUS_READ_BLOCK_DATA, 
                     I2C_FUNC_SMBUS_WRITE_BLOCK_DATA
      Unable to read EDID, psc=EIO(-5): Input/output error

      Trying simple VCP read of feature 0x10...
      Attempt 1 to read feature returned hard error: EIO(-5): Input/output error
      DDC communication failed.

   Examining device /dev/i2c-1...
      Device name (/sys/bus/i2c/devices/i2c-1/name): NVIDIA i2c adapter 5 at 4:00.0
      Functionality: I2C_FUNC_I2C, I2C_FUNC_SMBUS_QUICK, I2C_FUNC_SMBUS_READ_BYTE, 
                     I2C_FUNC_SMBUS_WRITE_BYTE, I2C_FUNC_SMBUS_READ_BYTE_DATA, 
                     I2C_FUNC_SMBUS_WRITE_BYTE_DATA, I2C_FUNC_SMBUS_READ_WORD_DATA, 
                     I2C_FUNC_SMBUS_WRITE_WORD_DATA, I2C_FUNC_SMBUS_READ_BLOCK_DATA, 
                     I2C_FUNC_SMBUS_WRITE_BLOCK_DATA
      Unable to read EDID, psc=DDCRC_EDID(-3016): invalid EDID

      Trying simple VCP read of feature 0x10...
      read() returned 6e 88 02 00 6e 88 02 00 88 02 00
      Attempt 1 to read feature failed. status = DDCRC_CHECKSUM(-3003): checksum error.  Retrying...
      read() returned 6e 88 02 00 6e 88 02 00 88 02 00
      Attempt 2 to read feature failed. status = DDCRC_CHECKSUM(-3003): checksum error.  Retrying...
      read() returned 6e 88 02 00 6e 88 02 00 88 02 00
      Attempt 3 to read feature failed. status = DDCRC_CHECKSUM(-3003): checksum error.  
      DDC communication failed.

EDIDs reported by X11 for connected xrandr outputs:
   xrandr output: HDMI-0
      Raw EDID:
              +0          +4          +8          +c            0   4   8   c   
      +0000   00 ff ff ff ff ff ff 00 22 64 e5 20 ed 02 00 00   ........"d. ....
      +0010   18 14 01 03 80 3b 25 78 ea af f6 a6 54 4c 9e 23   .....;%x....TL.#
      +0020   10 4f 54 bf ef 80 d1 00 b3 00 a9 40 95 00 90 40   .OT........@...@
      +0030   81 80 81 40 71 4f 28 3c 80 a0 70 b0 23 40 30 20   ...@qO(<..p.#@0 
      +0040   36 00 51 73 21 00 00 1a 00 00 00 ff 00 30 32 34   6.Qs!........024
      +0050   4c 4b 33 51 41 30 30 37 34 39 00 00 00 fd 00 38   LK3QA00749.....8
      +0060   4b 18 50 0f 00 0a 20 20 20 20 20 20 00 00 00 fc   K.P...      ....
      +0070   00 48 48 32 38 31 0a 20 20 20 20 20 20 20 01 e5   .HH281.       ..
      EDID synopsis:
         Mfg id:           HSD
         Model:            HH281
         Serial number:    024LK3QA00749
         Manufacture year: 2010
         EDID version:     1.3
         Product code:     0x20e5 (8421)
         Extra descriptor: Unspecified
         Video input definition: 0x80 - Digital Input
         White x,y:        0.310, 0.330
         Red   x,y:        0.650, 0.330
         Green x,y:        0.300, 0.620
         Blue  x,y:        0.140, 0.065
         Extension blocks: 1
      EDID source: 


Probing I2C devices using udev, susbsystem i2c-dev...

   ***One Device ***
   path: /sys/devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-0/i2c-dev/i2c-0
   Device Node Path: /dev/i2c-0
      struct udev_device at: 0x55abac76ac70
         devpath:   /devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-0/i2c-dev/i2c-0
         subsystem: i2c-dev
         devtype:   (null)
         syspath:   /sys/devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-0/i2c-dev/i2c-0
         sysname:   i2c-0
         sysnum:    0
         devnode:   /dev/i2c-0
         Properties:
            DEVNAME -> /dev/i2c-0
            DEVPATH -> /devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-0/i2c-dev/i2c-0
            MAJOR -> 89
            MINOR -> 0
            SUBSYSTEM -> i2c-dev
         Sysattrs:
            dev -> 89:0
            device -> (null)
            name -> NVIDIA i2c adapter 4 at 4:00.0
            subsystem -> i2c-dev
            uevent -> MAJOR=89
                      MINOR=0
                      DEVNAME=i2c-0

   ***One Device ***
   path: /sys/devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-1/i2c-dev/i2c-1
   Device Node Path: /dev/i2c-1
      struct udev_device at: 0x55abac77cfb0
         devpath:   /devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-1/i2c-dev/i2c-1
         subsystem: i2c-dev
         devtype:   (null)
         syspath:   /sys/devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-1/i2c-dev/i2c-1
         sysname:   i2c-1
         sysnum:    1
         devnode:   /dev/i2c-1
         Properties:
            DEVNAME -> /dev/i2c-1
            DEVPATH -> /devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-1/i2c-dev/i2c-1
            MAJOR -> 89
            MINOR -> 1
            SUBSYSTEM -> i2c-dev
         Sysattrs:
            dev -> 89:1
            device -> (null)
            name -> NVIDIA i2c adapter 5 at 4:00.0
            subsystem -> i2c-dev
            uevent -> MAJOR=89
                      MINOR=1
                      DEVNAME=i2c-1

Summary of udev I2C devices
   Subsystem   Sysname    Sysattr Name                        Devpath
   i2c-dev     i2c-0      NVIDIA i2c adapter 4 at 4:00.0      /devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-0/i2c-dev/i2c-0
   i2c-dev     i2c-1      NVIDIA i2c adapter 5 at 4:00.0      /devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-1/i2c-dev/i2c-1

Looking for udev devices with name attribute DPMST...
Summary of udev DPMST devices...
   No devices detected

Examining system logs...

   Checking dmesg for video and I2C related lines...
      [    0.313012] pci 0000:04:00.0: Video device with shadowed ROM
      [    1.308931] nvidia: module license 'NVIDIA' taints kernel.
      [    1.314548] nvidia: module verification failed: signature and/or required key missing - tainting kernel
      [    1.319219] nvidia-nvlink: Nvlink Core is being initialized, major device number 248
      [    1.319568] NVRM: loading NVIDIA UNIX x86_64 Kernel Module  381.22  Thu May  4 00:55:03 PDT 2017 (using threaded interrupts)
      [    1.325980] [drm] Initialized drm 1.1.0 20060810
      [    1.344082] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  381.22  Thu May  4 00:21:48 PDT 2017
      [    1.344825] [drm] [nvidia-drm] [GPU ID 0x00000400] Loading driver
      [    5.371373] Linux video capture interface: v2.00
      [    5.403410] nvidia-uvm: Loaded the UVM driver in 8 mode, major device number 244
      [    5.930022] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:07.0/0000:04:00.1/sound/card1/input18
      [    5.930154] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:07.0/0000:04:00.1/sound/card1/input19
      [    6.256112] NVRM: on the primary VGA device. The NVIDIA Linux graphics driver
      [    6.486993] uvcvideo: Found UVC 1.00 device <unnamed> (046d:0825)
      [    6.505223] usbcore: registered new interface driver uvcvideo
      [    6.505226] USB Video Class driver (1.1.1)
      [    7.322156] nvidia-modeset: Allocated GPU:0 (GPU-eec473f3-aebd-0018-64ff-fb37f9d2fc9f) @ PCI:0000:04:00.0

   Checking journalctl for video and I2C related lines...
      авг 04 01:42:57 home kernel: pci 0000:04:00.0: Video device with shadowed ROM
      авг 04 01:42:57 home kernel: nvidia: module license 'NVIDIA' taints kernel.
      авг 04 01:42:57 home kernel: nvidia: module verification failed: signature and/or required key missing - tainting kernel
      авг 04 01:42:57 home kernel: nvidia-nvlink: Nvlink Core is being initialized, major device number 248
      авг 04 01:42:57 home kernel: NVRM: loading NVIDIA UNIX x86_64 Kernel Module  381.22  Thu May  4 00:55:03 PDT 2017 (using threaded interrupts)
      авг 04 01:42:57 home kernel: [drm] Initialized drm 1.1.0 20060810
      авг 04 01:42:57 home kernel: nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  381.22  Thu May  4 00:21:48 PDT 2017
      авг 04 01:42:57 home kernel: [drm] [nvidia-drm] [GPU ID 0x00000400] Loading driver
      авг 04 01:42:57 home kernel: Linux video capture interface: v2.00
      авг 04 01:42:57 home kernel: nvidia-uvm: Loaded the UVM driver in 8 mode, major device number 244
      авг 04 01:42:58 home systemd[1]: Starting NVIDIA Persistence Daemon...
      авг 04 01:42:58 home nvidia-persistenced[1193]: Verbose syslog connection opened
      авг 04 01:42:58 home nvidia-persistenced[1193]: Now running with user ID 124 and group ID 135
      авг 04 01:42:58 home nvidia-persistenced[1193]: Started (1193)
      авг 04 01:42:58 home systemd[1]: Started NVIDIA Persistence Daemon.
      авг 04 01:42:58 home kernel: input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:07.0/0000:04:00.1/sound/card1/input18
      авг 04 01:42:58 home kernel: input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:07.0/0000:04:00.1/sound/card1/input19
      авг 04 01:42:58 home nvidia-persistenced[1193]: device 0000:04:00.0 - registered
      авг 04 01:42:58 home nvidia-persistenced[1193]: Local RPC service initialized
      авг 04 01:42:58 home kernel: NVRM: on the primary VGA device. The NVIDIA Linux graphics driver
      авг 04 01:42:58 home kernel: uvcvideo: Found UVC 1.00 device <unnamed> (046d:0825)
      авг 04 01:42:58 home nvidia-persistenced[1193]: Received signal 15
      авг 04 01:42:58 home systemd[1]: Stopping NVIDIA Persistence Daemon...
      авг 04 01:42:58 home nvidia-persistenced[1193]: Socket closed.
      авг 04 01:42:58 home nvidia-persistenced[1193]: PID file unlocked.
      авг 04 01:42:58 home nvidia-persistenced[1193]: PID file closed.
      авг 04 01:42:58 home nvidia-persistenced[1193]: The daemon no longer has permission to remove its runtime data directory /var/run/nvidia-persistenced
      авг 04 01:42:58 home nvidia-persistenced[1193]: Shutdown (1193)
      авг 04 01:42:58 home systemd[1]: Stopped NVIDIA Persistence Daemon.
      авг 04 01:42:58 home kernel: usbcore: registered new interface driver uvcvideo
      авг 04 01:42:58 home kernel: USB Video Class driver (1.1.1)
      авг 04 01:42:59 home systemd[1]: Starting NVIDIA Persistence Daemon...
      авг 04 01:42:59 home nvidia-persistenced[1366]: Verbose syslog connection opened
      авг 04 01:42:59 home nvidia-persistenced[1366]: Now running with user ID 124 and group ID 135
      авг 04 01:42:59 home systemd[1]: Started NVIDIA Persistence Daemon.
      авг 04 01:42:59 home nvidia-persistenced[1366]: Started (1366)
      авг 04 01:42:59 home nvidia-persistenced[1366]: device 0000:04:00.0 - registered
      авг 04 01:42:59 home nvidia-persistenced[1366]: Local RPC service initialized
      авг 04 01:42:59 home kernel: nvidia-modeset: Allocated GPU:0 (GPU-eec473f3-aebd-0018-64ff-fb37f9d2fc9f) @ PCI:0000:04:00.0

   Limiting output to 200 lines...
   Checking Xorg.0.log for video and I2C related lines...
      [     6.465] 	X.Org Video Driver: 20.0
      [     6.466] (II) xfree86: Adding drm device (/dev/dri/card0)
      [     6.553] (II) Module glx: vendor="NVIDIA Corporation"
      [     6.554] (II) NVIDIA GLX Module  381.22  Thu May  4 00:17:15 PDT 2017
      [     6.555] (==) Matched nvidia as autoconfigured driver 0
      [     6.555] (==) Matched nouveau as autoconfigured driver 1
      [     6.555] (==) Matched nvidia as autoconfigured driver 2
      [     6.555] (==) Matched nouveau as autoconfigured driver 3
      [     6.556] (II) LoadModule: "nvidia"
      [     6.556] (II) Loading /usr/lib/x86_64-linux-gnu/xorg/extra-modules/nvidia_drv.so
      [     6.564] (II) Module nvidia: vendor="NVIDIA Corporation"
      [     6.564] 	Module class: X.Org Video Driver
      [     6.565] (II) LoadModule: "nouveau"
      [     6.566] (II) Loading /usr/lib/xorg/modules/drivers/nouveau_drv.so
      [     6.569] (II) Module nouveau: vendor="X.Org Foundation"
      [     6.569] 	Module class: X.Org Video Driver
      [     6.569] 	ABI class: X.Org Video Driver, version 20.0
      [     6.570] 	Module class: X.Org Video Driver
      [     6.570] 	ABI class: X.Org Video Driver, version 20.0
      [     6.571] 	Module class: X.Org Video Driver
      [     6.571] 	ABI class: X.Org Video Driver, version 20.0
      [     6.572] 	Module class: X.Org Video Driver
      [     6.572] 	ABI class: X.Org Video Driver, version 20.0
      [     6.572] (II) NVIDIA dlloader X Driver  381.22  Wed May  3 23:53:41 PDT 2017
      [     6.572] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
      [     6.573] (II) NOUVEAU driver Date:   Tue Dec 8 15:52:25 2015 +1000
      [     6.573] (II) NOUVEAU driver for NVIDIA chipset families :
      [     6.581] 	ABI class: X.Org Video Driver, version 20.0
      [     6.581] (II) NVIDIA(0): Creating default Display subsection in Screen section
      [     6.581] (==) NVIDIA(0): Depth 24, (==) framebuffer bpp 32
      [     6.581] (==) NVIDIA(0): RGB weight 888
      [     6.581] (==) NVIDIA(0): Default visual is TrueColor
      [     6.581] (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
      [     6.582] (**) NVIDIA(0): Enabling 2D acceleration
      [     7.240] (--) NVIDIA(0): Valid display device(s) on GPU-0 at PCI:4:0:0
      [     7.240] (--) NVIDIA(0):     DFP-0
      [     7.240] (--) NVIDIA(0):     DFP-1
      [     7.240] (--) NVIDIA(0):     DFP-2 (boot)
      [     7.241] (II) NVIDIA(0): NVIDIA GPU GeForce GT 1030 (GP108-A) at PCI:4:0:0 (GPU-0)
      [     7.241] (--) NVIDIA(0): Memory: 2097152 kBytes
      [     7.241] (--) NVIDIA(0): VideoBIOS: 86.08.0c.00.0b
      [     7.242] (II) NVIDIA(0): Detected PCI Express Link width: 4X
      [     7.242] (--) NVIDIA(GPU-0): DFP-0: disconnected
      [     7.242] (--) NVIDIA(GPU-0): DFP-0: Internal DisplayPort
      [     7.242] (--) NVIDIA(GPU-0): DFP-0: 1440.0 MHz maximum pixel clock
      [     7.242] (--) NVIDIA(GPU-0): 
      [     7.242] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [     7.242] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [     7.242] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [     7.242] (--) NVIDIA(GPU-0): 
      [     7.271] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): connected
      [     7.271] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): Internal TMDS
      [     7.271] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): 600.0 MHz maximum pixel clock
      [     7.271] (--) NVIDIA(GPU-0): 
      [     7.277] (==) NVIDIA(0): 
      [     7.277] (==) NVIDIA(0): No modes were requested; the default mode "nvidia-auto-select"
      [     7.277] (==) NVIDIA(0):     will be used as the requested mode.
      [     7.277] (==) NVIDIA(0): 
      [     7.278] (II) NVIDIA(0): Validated MetaModes:
      [     7.278] (II) NVIDIA(0):     "DFP-2:nvidia-auto-select"
      [     7.278] (II) NVIDIA(0): Virtual screen size determined to be 1920 x 1200
      [     7.293] (--) NVIDIA(0): DPI set to (82, 82); computed from "UseEdidDpi" X config
      [     7.293] (--) NVIDIA(0):     option
      [     7.293] (II) UnloadModule: "nouveau"
      [     7.293] (II) Unloading nouveau
      [     7.294] (II) NVIDIA: Using 49152.00 MB of virtual memory for indirect memory
      [     7.294] (II) NVIDIA:     access.
      [     7.321] (II) NVIDIA(0): Setting mode "DFP-2:nvidia-auto-select"
      [     7.382] (==) NVIDIA(0): Disabling shared memory pixmaps
      [     7.382] (==) NVIDIA(0): Backing store enabled
      [     7.382] (==) NVIDIA(0): Silken mouse enabled
      [     7.383] (==) NVIDIA(0): DPMS enabled
      [     7.383] (II) NVIDIA(0): [DRI2] Setup complete
      [     7.383] (II) NVIDIA(0): [DRI2]   VDPAU driver: nvidia
      [     7.464] (II) config/udev: Adding input device HDA NVidia HDMI/DP,pcm=3 (/dev/input/event14)
      [     7.464] (II) config/udev: Adding input device HDA NVidia HDMI/DP,pcm=7 (/dev/input/event15)
      [    12.770] (--) NVIDIA(GPU-0): DFP-0: disconnected
      [    12.770] (--) NVIDIA(GPU-0): DFP-0: Internal DisplayPort
      [    12.770] (--) NVIDIA(GPU-0): DFP-0: 1440.0 MHz maximum pixel clock
      [    12.770] (--) NVIDIA(GPU-0): 
      [    12.770] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [    12.770] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [    12.770] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [    12.770] (--) NVIDIA(GPU-0): 
      [    12.799] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): connected
      [    12.799] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): Internal TMDS
      [    12.799] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): 600.0 MHz maximum pixel clock
      [    12.799] (--) NVIDIA(GPU-0): 
      [    13.245] (--) NVIDIA(GPU-0): DFP-0: disconnected
      [    13.245] (--) NVIDIA(GPU-0): DFP-0: Internal DisplayPort
      [    13.245] (--) NVIDIA(GPU-0): DFP-0: 1440.0 MHz maximum pixel clock
      [    13.245] (--) NVIDIA(GPU-0): 
      [    13.245] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [    13.245] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [    13.245] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [    13.245] (--) NVIDIA(GPU-0): 
      [    13.274] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): connected
      [    13.274] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): Internal TMDS
      [    13.274] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): 600.0 MHz maximum pixel clock
      [    13.274] (--) NVIDIA(GPU-0): 
      [    16.726] (--) NVIDIA(GPU-0): DFP-0: disconnected
      [    16.726] (--) NVIDIA(GPU-0): DFP-0: Internal DisplayPort
      [    16.726] (--) NVIDIA(GPU-0): DFP-0: 1440.0 MHz maximum pixel clock
      [    16.726] (--) NVIDIA(GPU-0): 
      [    16.726] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [    16.726] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [    16.726] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [    16.726] (--) NVIDIA(GPU-0): 
      [    16.756] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): connected
      [    16.756] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): Internal TMDS
      [    16.756] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): 600.0 MHz maximum pixel clock
      [    16.756] (--) NVIDIA(GPU-0): 
      [   460.761] (--) NVIDIA(GPU-0): DFP-0: disconnected
      [   460.762] (--) NVIDIA(GPU-0): DFP-0: Internal DisplayPort
      [   460.762] (--) NVIDIA(GPU-0): DFP-0: 1440.0 MHz maximum pixel clock
      [   460.762] (--) NVIDIA(GPU-0): 
      [   460.762] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [   460.762] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [   460.762] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [   460.762] (--) NVIDIA(GPU-0): 
      [   460.790] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): connected
      [   460.790] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): Internal TMDS
      [   460.790] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): 600.0 MHz maximum pixel clock
      [   460.790] (--) NVIDIA(GPU-0): 
      [   605.508] (--) NVIDIA(GPU-0): DFP-0: disconnected
      [   605.508] (--) NVIDIA(GPU-0): DFP-0: Internal DisplayPort
      [   605.508] (--) NVIDIA(GPU-0): DFP-0: 1440.0 MHz maximum pixel clock
      [   605.508] (--) NVIDIA(GPU-0): 
      [   605.508] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [   605.508] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [   605.508] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [   605.508] (--) NVIDIA(GPU-0): 
      [   605.537] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): connected
      [   605.537] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): Internal TMDS
      [   605.537] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): 600.0 MHz maximum pixel clock
      [   605.537] (--) NVIDIA(GPU-0): 
      [   608.703] (--) NVIDIA(GPU-0): DFP-0: disconnected
      [   608.703] (--) NVIDIA(GPU-0): DFP-0: Internal DisplayPort
      [   608.703] (--) NVIDIA(GPU-0): DFP-0: 1440.0 MHz maximum pixel clock
      [   608.703] (--) NVIDIA(GPU-0): 
      [   608.703] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [   608.703] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [   608.703] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [   608.703] (--) NVIDIA(GPU-0): 
      [   608.733] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): connected
      [   608.733] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): Internal TMDS
      [   608.733] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): 600.0 MHz maximum pixel clock
      [   608.733] (--) NVIDIA(GPU-0): 
      [   630.923] (--) NVIDIA(GPU-0): DFP-0: disconnected
      [   630.923] (--) NVIDIA(GPU-0): DFP-0: Internal DisplayPort
      [   630.923] (--) NVIDIA(GPU-0): DFP-0: 1440.0 MHz maximum pixel clock
      [   630.923] (--) NVIDIA(GPU-0): 
      [   630.924] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [   630.924] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [   630.924] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [   630.924] (--) NVIDIA(GPU-0): 
      [   630.953] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): connected
      [   630.953] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): Internal TMDS
      [   630.953] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): 600.0 MHz maximum pixel clock
      [   630.953] (--) NVIDIA(GPU-0): 
      [   943.941] (--) NVIDIA(GPU-0): DFP-0: disconnected
      [   943.941] (--) NVIDIA(GPU-0): DFP-0: Internal DisplayPort
      [   943.941] (--) NVIDIA(GPU-0): DFP-0: 1440.0 MHz maximum pixel clock
      [   943.941] (--) NVIDIA(GPU-0): 
      [   943.942] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [   943.942] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [   943.942] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [   943.942] (--) NVIDIA(GPU-0): 
      [   943.971] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): connected
      [   943.971] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): Internal TMDS
      [   943.971] (--) NVIDIA(GPU-0): HannStar Display Corp HH281 (DFP-2): 600.0 MHz maximum pixel clock
      [   943.971] (--) NVIDIA(GPU-0): 

Not built with libdrm support.  Skipping DRM related checks

Device Identifier Cross Reference Report

   EDID: ...202001E5  Mfg: HSD  Model: HH281          SN: 024LK3QA00749
      Bus:           Not found
      XrandR output: HDMI-0
      DRM connector: (null)
      UDEV name:     (null)
      UDEV syspath:  (null)

Skipping USB environment exploration.
Issue command "ddcutil usbenvironment --verbose" if there are any USB attached monitors.

Statistics for environment exploration:

Maximum Try Settings:
Operation Type             Current  Default
Write only exchange tries:        4        4
Write read exchange tries:       15       10
Multi-part exchange tries:       15        8

Retry statistics for ddc write only
   No tries attempted

Retry statistics for ddc write/read
   No tries attempted

Retry statistics for multi-part exchange
   No tries attempted

DDC Related Errors:  None
Total errors: 0

Errors Wrapped in Retry:  None
Total errors: 0

Sleep Strategy Stats:
   Total IO events:         46
   IO error count:           0
   Total sleep events:       0

   Sleep Event type      Count
   SE_WRITE_TO_READ          0
   SE_POST_OPEN              0
   SE_POST_WRITE             0
   SE_POST_READ              0
   SE_DDC_NULL               0
   SE_POST_SAVE_SETTINGS     0

Call Stats:
   Type                                     Count Millisec  (   Nanosec)
   write calls       (IE_WRITE)                11       19  (  19525076)
   read calls        (IE_READ)                 10       14  (  14216260)
   open file calls   (IE_OPEN)                  5        0  (     50087)
   close file calls  (IE_CLOSE)                 5        0  (     28169)
   other I/O calls   (IE_OTHER)                15        0  (     30417)
   Totals:                                     46       33  (  33850009)

Sleep Call Stats:
   Total sleep calls:                                    3
   Requested sleep time milliseconds :                 150
   Actual sleep milliseconds (nanosec):                150  ( 150352200)

Total elapsed milliseconds (nanoseconds):              834  ( 834521536)

*** Detected Displays ***
No displays found

Statistics for display detection:

Maximum Try Settings:
Operation Type             Current  Default
Write only exchange tries:        4        4
Write read exchange tries:       15       10
Multi-part exchange tries:       15        8

Retry statistics for ddc write only
   No tries attempted

Retry statistics for ddc write/read
   No tries attempted

Retry statistics for multi-part exchange
   No tries attempted

DDC Related Errors:  None
Total errors: 0

Errors Wrapped in Retry:  None
Total errors: 0

Sleep Strategy Stats:
   Total IO events:          0
   IO error count:           0
   Total sleep events:       0

   Sleep Event type      Count
   SE_WRITE_TO_READ          0
   SE_POST_OPEN              0
   SE_POST_WRITE             0
   SE_POST_READ              0
   SE_DDC_NULL               0
   SE_POST_SAVE_SETTINGS     0

Call Stats:
   Type                                     Count Millisec  (   Nanosec)
   Totals:                                      0        0  (         0)

Sleep Call Stats:
   Total sleep calls:                                    3
   Requested sleep time milliseconds :                 150
   Actual sleep milliseconds (nanosec):                150  ( 150352200)

Elapsed milliseconds since last reset (nanoseconds):     0  (     14860)
Total elapsed milliseconds (nanoseconds):              834  ( 834542343)
Setting output level normal  Table features will be skipped...

Display scanning complete.

Macro for ddcutil version

Hi,
is there a macro to check ddcutil major.minor.patch version?
I see there are 2 runtime functions, but i cannot see any macro for it.

Thanks!

Useful return codes

Hello,

so you want feedback. It's a great little tool and I thank you for it.

I have one issue though.

I want ddcutil to retry until it reaches success.

Unfortunately ddcutil doesn't exit with return code 0 when it
does something (such as lowering brightness) with success.

Only way I've found to work around this is to use the --verify option and to catch stderr.
If there is output I assume that something failed, if there's no
output I assume it has worked.

However when using this logic in bash, you get something
like this:

`

function my_dim_screen
{
  RET=$(ddcutil -d $1 setvcp 10 $2 --maxtries "15,15,15" --verify 2>&1)
  [[ "${#RET}" -eq 0 ]]
}

RET=false
until [[ $RET == "0" ]]
do
  my_dim_screen_ 1 30
  RET=$?
done

my_dim_screen returns the return codes I would expect from a well behaving program.

But my solution is bad for two reasons:

  1. I have to use a subshell which is less efficient
  2. ugliness

I hope you can fix this.

ddcutil 0.7.0 doesn't build when --enable-lib=no.

Hi,

The way I understand it, disabling shared lib will then disable the building of the C API. However, I receive the following error when trying to build without shared lib.

Also, please note that I have SWIG disabled, but it is finding python. If swig is not enabled, then it shouldn't even look for it.

>>> Install ddcutil-0.7.0 into /var/tmp/portage/app-misc/ddcutil-0.7.0/image/ category app-misc
make -j2 DESTDIR=/var/tmp/portage/app-misc/ddcutil-0.7.0/image/ install 
Making install in src
make[1]: Entering directory '/var/tmp/portage/app-misc/ddcutil-0.7.0/work/ddcutil-0.7.0/src'
Making install in .
make[2]: Entering directory '/var/tmp/portage/app-misc/ddcutil-0.7.0/work/ddcutil-0.7.0/src'
Executing hook all-local...
make[3]: Entering directory '/var/tmp/portage/app-misc/ddcutil-0.7.0/work/ddcutil-0.7.0/src'
 /bin/mkdir -p '/var/tmp/portage/app-misc/ddcutil-0.7.0/image//usr/include'
 /bin/mkdir -p '/var/tmp/portage/app-misc/ddcutil-0.7.0/image//usr/bin'
 /usr/lib/portage/python3.5/ebuild-helpers/xattr/install -c -m 644 public/ddcutil_types.h public/ddcutil_c_api.h '/var/tmp/portage/app-misc/ddcutil-0.7.0/image//usr/include'
  /bin/sh ../libtool   --mode=install /usr/lib/portage/python3.5/ebuild-helpers/xattr/install -c ddcutil '/var/tmp/portage/app-misc/ddcutil-0.7.0/image//usr/bin'
libtool: install: /usr/lib/portage/python3.5/ebuild-helpers/xattr/install -c ddcutil /var/tmp/portage/app-misc/ddcutil-0.7.0/image//usr/bin/ddcutil
make  install-exec-hook
make[4]: Entering directory '/var/tmp/portage/app-misc/ddcutil-0.7.0/work/ddcutil-0.7.0/src'
(install-exec-hook) Executing...
  pythondir       = /usr/lib64/python3.4/site-packages
  pyexecdir       = /usr/lib64/python3.4/site-packages
/var/tmp/portage/app-misc/ddcutil-0.7.0/image//usr/lib64
ls -ld /var/tmp/portage/app-misc/ddcutil-0.7.0/image//usr/lib64
ls: cannot access '/var/tmp/portage/app-misc/ddcutil-0.7.0/image//usr/lib64': No such file or directory
make[4]: *** [Makefile:1980: install-exec-hook] Error 2
make[4]: Leaving directory '/var/tmp/portage/app-misc/ddcutil-0.7.0/work/ddcutil-0.7.0/src'
make[3]: *** [Makefile:1845: install-exec-am] Error 2
make[3]: Leaving directory '/var/tmp/portage/app-misc/ddcutil-0.7.0/work/ddcutil-0.7.0/src'
make[2]: *** [Makefile:1753: install-am] Error 2
make[2]: Leaving directory '/var/tmp/portage/app-misc/ddcutil-0.7.0/work/ddcutil-0.7.0/src'
make[1]: *** [Makefile:1586: install-recursive] Error 1
make[1]: Leaving directory '/var/tmp/portage/app-misc/ddcutil-0.7.0/work/ddcutil-0.7.0/src'
make: *** [Makefile:553: install-recursive] Error 1

With the same configure options, but with shared libs enabled, it installs just fine.

The config options:

>>> Configuring source in /var/tmp/portage/app-misc/ddcutil-0.7.0/work/ddcutil-0.7.0 ...
 * econf: updating ddcutil-0.7.0/config/config.guess with /usr/share/gnuconfig/config.guess
 * econf: updating ddcutil-0.7.0/config/config.sub with /usr/share/gnuconfig/config.sub
./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --disable-dependency-tracking --disable-silent-rules --docdir=/usr/share/doc/ddcutil-0.7.0 --htmldir=/usr/share/doc/ddcutil-0.7.0/html --libdir=/usr/lib64 --disable-lib --disable-usb --disable-swig
configure: debug messages disabled
checking for a BSD-compatible install... /usr/lib/portage/python3.5/ebuild-helpers/xattr/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking for style of include used by make... GNU
checking for x86_64-pc-linux-gnu-gcc... x86_64-pc-linux-gnu-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether x86_64-pc-linux-gnu-gcc accepts -g... yes
checking for x86_64-pc-linux-gnu-gcc option to accept ISO C89... none needed
checking whether x86_64-pc-linux-gnu-gcc understands -c and -o together... yes
checking dependency style of x86_64-pc-linux-gnu-gcc... none
checking for x86_64-pc-linux-gnu-ar... x86_64-pc-linux-gnu-ar
checking the archiver (x86_64-pc-linux-gnu-ar) interface... ar
checking for x86_64-pc-linux-gnu-pkg-config... /usr/bin/x86_64-pc-linux-gnu-pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for x86_64-pc-linux-gnu-gcc... (cached) x86_64-pc-linux-gnu-gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether x86_64-pc-linux-gnu-gcc accepts -g... (cached) yes
checking for x86_64-pc-linux-gnu-gcc option to accept ISO C89... (cached) none needed
checking whether x86_64-pc-linux-gnu-gcc understands -c and -o together... (cached) yes
checking dependency style of x86_64-pc-linux-gnu-gcc... (cached) none
checking for x86_64-pc-linux-gnu-gcc option to accept ISO C99... none needed
checking for x86_64-pc-linux-gnu-gcc option to accept ISO Standard C... (cached) none needed
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by x86_64-pc-linux-gnu-gcc... /usr/x86_64-pc-linux-gnu/bin/ld
checking if the linker (/usr/x86_64-pc-linux-gnu/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/x86_64-pc-linux-gnu-nm -B
checking the name lister (/usr/bin/x86_64-pc-linux-gnu-nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/x86_64-pc-linux-gnu/bin/ld option to reload object files... -r
checking for x86_64-pc-linux-gnu-objdump... x86_64-pc-linux-gnu-objdump
checking how to recognize dependent libraries... pass_all
checking for x86_64-pc-linux-gnu-dlltool... no
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for x86_64-pc-linux-gnu-ar... (cached) x86_64-pc-linux-gnu-ar
checking for archiver @FILE support... @
checking for x86_64-pc-linux-gnu-strip... x86_64-pc-linux-gnu-strip
checking for x86_64-pc-linux-gnu-ranlib... x86_64-pc-linux-gnu-ranlib
checking command to parse /usr/bin/x86_64-pc-linux-gnu-nm -B output from x86_64-pc-linux-gnu-gcc object... ok
checking for sysroot... no
checking for a working dd... /bin/dd
checking how to truncate binary pipes... /bin/dd bs=4096 count=1
checking for x86_64-pc-linux-gnu-mt... no
checking for mt... no
checking if : is a manifest tool... no
checking how to run the C preprocessor... x86_64-pc-linux-gnu-gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if x86_64-pc-linux-gnu-gcc supports -fno-rtti -fno-exceptions... yes
checking for x86_64-pc-linux-gnu-gcc option to produce PIC... -fPIC -DPIC
checking if x86_64-pc-linux-gnu-gcc PIC flag -fPIC -DPIC works... yes
checking if x86_64-pc-linux-gnu-gcc static flag -static works... yes
checking if x86_64-pc-linux-gnu-gcc supports -c -o file.o... yes
checking if x86_64-pc-linux-gnu-gcc supports -c -o file.o... (cached) yes
checking whether the x86_64-pc-linux-gnu-gcc linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
configure: Checking configure command options... 
configure: adl_header_dir = 
configure: adl... disabled 
configure: lib... disabled 
configure: swig... disabled 
configure: usb... disabled 
configure: doxygen... disabled 
configure: testcases... disabled 
configure: callgraph... disabled 
configure: gobject-api... disabled 
configure: failsim..... disabled 
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for inline... inline
checking whether byte ordering is bigendian... no
checking for size_t... yes
checking for ssize_t... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for uint8_t... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible realloc... yes
checking whether strerror_r is declared... yes
checking for strerror_r... yes
checking whether strerror_r returns char *... no
checking for clock_gettime... yes
checking for memset... yes
checking for nl_langinfo... yes
checking for stpcpy... yes
checking for strchr... yes
checking for strdup... yes
checking for strerror... yes
checking for strrchr... yes
checking for strtol... yes
checking for library containing dlopen... -ldl
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking langinfo.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking libintl.h usability... yes
checking libintl.h presence... yes
checking for libintl.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking for stdint.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking for unistd.h... (cached) yes
checking wchar.h usability... yes
checking wchar.h presence... yes
checking for wchar.h... yes
checking for dlfcn.h... (cached) yes
checking for GLIB... yes
checking for XRANDR... yes
checking for X11... yes
checking for UDEV... yes
configure: usb disabled, not checking for libusb 
configure: doxygen disabled, not checking for Doxygen
configure: USE_DOXYGEN not set
checking for install-docs... no
configure: WARNING: doc-base not installed - continuing without doc-base support
checking for gobject-introspection... yes
configure: Calling am_path_python... 
checking for a Python interpreter with version >= 2.6... python
checking for python... /usr/bin/python
checking for python version... 3.4
checking for python platform... linux
checking for python script directory... ${prefix}/lib64/python3.4/site-packages
checking for python extension module directory... ${exec_prefix}/lib64/python3.4/site-packages
configure: Calling ax_python_devel...
checking for python3.4... (cached) /usr/bin/python
checking for a version of Python >= '2.1.0'... yes
checking for the distutils Python package... yes
checking for Python include path... -I/usr/include/python3.4m
checking for Python library path... -L/usr/lib64 -lpython3.4m
checking for Python site-packages path... /usr/lib64/python3.4/site-packages
checking python extra libraries... -lpthread -ldl  -lutil -lm
checking python extra linking flags... -Xlinker -export-dynamic
checking consistency of all components of python development environment... yes
configure: Calling ax_pkg_swig... 
checking for swig... /usr/bin/swig
checking SWIG version... 3.0.10
checking for SWIG library... /usr/share/swig/3.0.10
configure: python_and_swig_found  = yes 
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating src/swig/Makefile
config.status: creating src/gobject_api/Makefile
config.status: creating man/Makefile
config.status: creating data/Makefile
config.status: creating docs/Makefile
config.status: creating docs/doxygen/Makefile
config.status: creating package/Makefile
config.status: creating package/ddcutil.spec
config.status: creating ddcutil.pc
config.status: creating package/upload_obsrpm
config.status: creating package/build_dpkg
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands

        ddcutil 0.7.0
        =============

        libtool version         0:0:0

        prefix:                 /usr
        datarootdir:            ${prefix}/share
        datadir:                /usr/share
        mandir:                 /usr/share/man

        adl_header_dir:         
        enable_lib:             no
        enable_swig:            no
        enable_usb:             no
        enable_doxygen          no

        compiler:               x86_64-pc-linux-gnu-gcc
        cflags:                 -march=native -O2 -w -pipe
        ldflags:                -Wl,-O1 -Wl,--as-needed

>>> Source configured.

Segfault on interrogate, Architecture (null)

Here's the output when running interrogate, same thing with environment

$ sudo ddcutil interrogate
Setting output level verbose...
Setting maximum retries...
Forcing --stats...
Forcing --force-slave-address..
This command will take a while to run...


*** Basic System Information ***

ddcutil version: 0.8.5

/proc/version:
  Linux version 4.12.8-2-ARCH (builduser@foutrelis) (gcc version 7.2.0 (GCC) ) #1 SMP PREEMPT Fri Aug 18 14:08:02 UTC 2017

Architecture:     (null)
Distributor id:   Arch
Release:          rolling
Unexpected architecture (null).  Please report.
Segmentation fault

DisplayLink DL-4xxx support

ddcutil is not finding USB3 DL monitor, even though the monitor is working fine on Ubuntu 16.04. According to the official note DDC/CI is supported, and works with ScreenBright.
usbenv's only relevant output is
"(possible_monitor_config_descriptor) Examining only interface 0 for device 2:1, vid=0x17e9, pid=0x4301 DisplayLink (null)", but nothing else

When running ddcutil with the --usb 2.1 I get "Unable to find monitor with the specified USB bus and device numbers"

--trace all is no help

Where's the culprit? How do troubleshoot it further?

Compilation error when using the musl libc

Hi,

I was trying to compile version 0.8.6 on Void Linux using the musl libc and ran into the following error which I would like to report:

query_sysenv_usb.c: In function 'probe_hiddev':
query_sysenv_usb.c:193:26: error: overflow in implicit constant conversion [-Werror=overflow]
           rc = ioctl(fd, HIDIOCGDEVINFO, &dev_info);
                          ^~~~~~~~~~~~~~
cc1: all warnings being treated as errors

I can make the error disappear by removing -Wpedantic from src/app_sysenv/Makefile (it isn’t set in 0.8.5), but I’d rather solve the underlying issue ;) which seems to be that glibc defines ioctl() as

extern int ioctl (int __fd, unsigned long int __request, ...) __THROW;

but the musl libc as

int ioctl (int, int, ...);

It compiles when casting to int:

rc = ioctl(fd, (int) HIDIOCGDEVINFO, &dev_info);

but I don’t know enough about the whole matter to be sure that’s safe to do.

There are a couple of instances more where a warning is issued, but not treated as an error:

make[3]: Entering directory '/builddir/ddcutil-0.8.6/src/usb'
  CC       usb_base.lo
usb_base.c: In function 'hiddev_get_device_info':
usb_base.c:188:23: warning: overflow in implicit constant conversion [-Woverflow]
    int rc = ioctl(fd, HIDIOCGDEVINFO, dev_info);
                       ^~~~~~~~~~~~~~
usb_base.c: In function 'hiddev_get_report_info':
usb_base.c:208:23: warning: overflow in implicit constant conversion [-Woverflow]
    int rc = ioctl(fd, HIDIOCGREPORTINFO, rinfo);
                       ^~~~~~~~~~~~~~~~~
usb_base.c: In function 'hiddev_get_field_info':
usb_base.c:228:23: warning: overflow in implicit constant conversion [-Woverflow]
    int rc = ioctl(fd, HIDIOCGFIELDINFO, finfo);
                       ^~~~~~~~~~~~~~~~
usb_base.c: In function 'hiddev_get_usage_code':
usb_base.c:250:23: warning: overflow in implicit constant conversion [-Woverflow]
    int rc = ioctl(fd, HIDIOCGUCODE, uref);    // Fills in usage code
                       ^~~~~~~~~~~~
usb_base.c: In function 'hiddev_get_usage_value':
usb_base.c:267:23: warning: overflow in implicit constant conversion [-Woverflow]
    int rc = ioctl(fd, HIDIOCGUSAGE, uref);
                       ^~~~~~~~~~~~
usb_base.c: In function 'hiddev_get_report':
usb_base.c:283:23: warning: overflow in implicit constant conversion [-Woverflow]
    int rc = ioctl(fd, HIDIOCGUCODE, rinfo);
                       ^~~~~~~~~~~~

...

usb_vcp.c: In function 'usb_get_usage_value_by_report_type_and_ucode':
usb_vcp.c:133:19: warning: overflow in implicit constant conversion [-Woverflow]
    rc = ioctl(fd, HIDIOCGFIELDINFO, &finfo);  // Fills in usage value
                   ^~~~~~~~~~~~~~~~

Can you put releases in the releases tab?

Hi,

Currently there are no releases in the releases tab, but there are tarballs in the main repo. It would be better if the downloads were in the releases tab, which I think you can tell github to do automatically(?) and remove the tarballs from the main repository.

Thanks.

Invalid Display, HP monitor sends only 80 80 be 6e 6e bytes over I2C

I try to control the brightness of my HP monitor HP 27es (codename HWP3325), pluged in HDMI port of Asus Laptop (UX310). I tried both HDMI ports on the monitor (it was suggested by gddccontrol utility, which did not work on the first port. ddcutil reports same output on both ports).

DDC/IC enabled in OSD.

ddcutil detect reports Invalid Display :

Invalid display
   I2C bus:             /dev/i2c-0
   Supports DDC:        true
   EDID synopsis:
      Mfg id:           HWP
      Model:            HP 27es
      Serial number:    3CM7240ZLG   
      Manufacture year: 2017
      EDID version:     1.3
   DDC communication failed

if --ddc is enabled the following is visible :

DDC: Unexpected source address 0x80, should be 0x6e
DDC: i2c_response_bytes: 80 80 be 6e 80 be 6e 6e 80 be 00 6e 80 be 6e 80 be 6e 6e 80
DDC: Unexpected source address 0xbe, should be 0x6e
DDC: i2c_response_bytes: be 00 6e 80 be 6e 80 be 6e 80 be 6e 80 be 6e 80 be 6e 6e 80
DDC: Unexpected source address 0xbe, should be 0x6e
DDC: i2c_response_bytes: be be 6e 80 be 6e 80 be 6e 80 80 be 6e 6e 80 be 6e 80 be 6e
DDC: Unexpected source address 0x80, should be 0x6e
DDC: i2c_response_bytes: 80 80 be 00 6e 80 be 6e 80 be 00 6e 80 be 6e 80 be 6e 6e 80
DDC: Unexpected source address 0xbe, should be 0x6e
DDC: i2c_response_bytes: be 00 6e 80 be 6e 6e 80 be 6e 80 be 6e 6e 80 be 6e 80 80 be
DDC: Double byte in packet.
DDC: i2c_response_bytes: 6e 6e 80 be 6e 6e 80 be 6e 80 be 6e 80 be 6e 80 be 6e 80 be
DDC: Double byte in packet.
DDC: i2c_response_bytes: 6e 6e 80 be 6e 6e 80 be 6e 80 be 6e 80 be 6e 80 be 6e 6e 80
DDC: Unexpected source address 0xbe, should be 0x6e
DDC: i2c_response_bytes: be 00 6e 80 be 6e 80 be 6e 80 80 be 6e 80 be 6e 80 be 00 6e
DDC: Unexpected source address 0x80, should be 0x6e
DDC: i2c_response_bytes: 80 80 be 6e 6e 80 be 6e 80 be 00 6e 80 be 6e 80 be 6e 6e 80
DDC: Unexpected source address 0xbe, should be 0x6e
DDC: i2c_response_bytes: be 00 6e 80 be 6e 80 be 6e 80 be 6e 80 be 6e 80 be 6e 6e 80

It looks like the bytes received are shifted (ddcutil expects 0x6e but reads 0x80 whereas next byte is 0x6e).

ddcutil 0.8.6 on Ubuntu 17.10 (wayland) for what it worth.

ddcutil detect --verbose --ddc --force-slave-address >> ddcutil-detect.txt
ddcutil environment --verbose --ddc --force-slave-address >> ddcutil-environment.txt

relative input for setvcp

Hi,
I want to set speaker volume of my LCD monitor from PC, but setvcp accepts absolute volume only. Would it be possible to implement relative value input? Like setvcp -10. ddcutil would in such case read current value from device a write modified value back.

One more question, is it possible to somehow speedup ddcutil?
ddcutil --noverify --nodetect --bus=9 setvcp 0x62 [volume]
Takes 450ms and that is still too much.

[gtx1300 / ubuntu 16] ddcutil can't find any monitors after possibly nvidia driver update

Edit: this was suddenly resolved by connecting again from display port to hdmi 2.0 port, restarting, saying 'oh mighty computer'. I have no idea what happened and why. I also run

 sudo chmod a+rw /dev/i2c-*
 ll /dev/i2c-*
 sudo modprobe i2c-dev -f -vv
 sudo modprobe nvidiafb

which I have run many times before. While it works I will try not to reboot this machine ever again (

Hi Sanford.

I had this tool working on my Ubuntu for 1 month, and after restarting a computer it stopped seeing my monitor.

I tried installing nvidia-381, nvidia-378, and nvidia-384, restarting several times, and saying 'oh mighty computer', all of which didn't help. I remember I did something one time to fix it by accident (launching nvidia-settings? setting refresh rate by xrandr?), but I have no idea what should I try next.

Can you give an advice how would I approach to digging brightness control of my monitor through command line?
(I was trying to buy passive AMD graphics card, but there are none on the market for 4K monitors with no cooler where I live)

Patch for Nvidia cards is there copied to xorg.conf.d dir, but the ticket I opened and solved when it was a problem described in the man page did not have a message 'no monitors found', it was different.

Setting output level verbose...
Setting maximum retries...
Forcing --stats...
Forcing --force-slave-address..
This command will take a while to run...


*** Basic System Information ***

ddcutil version: 0.8.4

/proc/version:
   Linux version 4.4.0-96-generic (buildd@lgw01-10) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #119-Ubuntu SMP Tue Sep 12 14:59:54 UTC 2017

/etc/os-release...
   PRETTY_NAME="Ubuntu 16.04.3 LTS"

/proc/cmdline:
   BOOT_IMAGE=/boot/vmlinuz-4.4.0-96-generic root=UUID=890c5053-2fab-497d-b889-c60e496b7562 ro quiet splash vt.handoff=7

Processor information as reported by lscpu:
   Architecture:          x86_64
   CPU op-mode(s):        32-bit, 64-bit
   Byte Order:            Little Endian
   CPU(s):                8
   On-line CPU(s) list:   0-7
   Thread(s) per core:    2
   Core(s) per socket:    4
   Socket(s):             1
   NUMA node(s):          1
   Vendor ID:             GenuineIntel
   CPU family:            6
   Model:                 26
   Model name:            Intel(R) Core(TM) i7 CPU         920  @ 2.67GHz
   Stepping:              5
   CPU MHz:               2793.000
   CPU max MHz:           2793,0000
   CPU min MHz:           1596,0000
   BogoMIPS:              5397.55
   Virtualization:        VT-x
   L1d cache:             32K
   L1i cache:             32K
   L2 cache:              256K
   L3 cache:              8192K
   NUMA node0 CPU(s):     0-7
   Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm tpr_shadow vnmi flexpriority ept vpid dtherm ida

DMI Information from /sys/class/dmi/id:
   Motherboard vendor:       Gigabyte Technology Co., Ltd.
   Motherboard product name: EX58-UD5
   System vendor:            Gigabyte Technology Co., Ltd.
   System product name:      EX58-UD5
   Chassis vendor:           Gigabyte Technology Co., Ltd.
   Chassis type:             3 - Desktop

*** Primary Check 1: Identify video card and driver ***

Obtaining card and driver information from /sys...

Determining driver name and possibly version...
   Driver name:    nvidia
   Driver version: 387.12

Video card identification:
   Vendor:              10de       NVIDIA Corporation
   Device:              1d01       unknown device

*** Primary Check 2: Check that /dev/i2c-* exist and writable ***

(identify_i2c_devices) Identified 2 I2C devices

Checking /dev/i2c-* devices...

Unless the system is using the AMD proprietary driver fglrx, devices /dev/i2c-*
must exist and the logged on user must have read/write permission for those
devices (or at least those devices associated with monitors).
Typically, this access is enabled by:
  - setting the group for /dev/i2c-* to i2c
  - setting group RW permissions for /dev/i2c-*
  - making the current user a member of group i2c
Alternatively, this could be enabled by just giving everyone RW permission
The following tests probe for these conditions.

Checking for /dev/i2c-* devices...
   crw-r--r-- 1 root root 89, 0 окт  4 01:15 /dev/i2c-0
   crw-r--r-- 1 root root 89, 1 окт  4 01:15 /dev/i2c-1

Current user: root (0)

Current user (root) has RW access to all /dev/i2c-* devices.

Checking for group i2c...
   Group i2c does not exist

Looking for udev nodes files that reference i2c:
   grep: /etc/udev/makedev.d/*: No such file or directory

Looking for udev rules files that reference i2c:
   grep: /run/udev/rules.d/*rules: No such file or directory

*** Primary Check 3: Check that module i2c_dev is loaded ***

Checking for module i2c_dev...
Using only proprietary nvidia or fglrx driver. Module i2c_dev not required.
Remaining i2c_dev detail is purely informational.
   Module i2c_dev          is built into kernel

Check that kernel module i2c_dev is being loaded by examining files where this would be specified...
   grep: /run/modules-load.d/*conf: No such file or directory
   grep: /usr/lib/modules-load.d/*conf: No such file or directory

Check for any references to i2c_dev in /etc/modprobe.d ...
   grep: /run/modprobe.d/*conf: No such file or directory

*** Primary Check 4: Driver specific checks ***

Performing driver specific checks...

Checking for special settings for proprietary Nvidia driver 
(needed for some newer Nvidia cards).
   grep: /etc/X11/xorg.conf: No such file or directory
   grep: /etc/X11/xorg.conf.d/*: No such file or directory

*** Additional probes ***

Scanning /proc/modules for driver environment...
   Found other loaded module: i2c_algo_bit
   Found other loaded module: videobuf2_vmalloc
   Found other loaded module: videobuf2_memops
   Found other loaded module: videobuf2_v4l2
   Found other loaded module: videobuf2_core
   Found other loaded module: videodev
   Found video driver module: nvidia
   Found other loaded module: drm_kms_helper
   Loaded drm module depends on: nvidia_drm,drm_kms_helper,

Using lspci to examine driver environment...
Video controller:  NVIDIA Corporation Device 1d01 (rev a1)


Testing if modules are loaded using /sys...
   Module amdgpu           is NOT loaded
   Module fglrx            is NOT loaded
   Module i915             is NOT loaded
   Module nvidia           is loaded
   Module nouveau          is NOT loaded
   Module radeon           is NOT loaded
   Module vboxvideo        is NOT loaded
   Module drm              is loaded
   Module eeprom           is NOT loaded
   Module i2c_algo_bit     is loaded
   Module i2c_dev          is NOT loaded
   Module i2c_piix4        is NOT loaded

Examining /sys/bus/i2c/devices...
   /sys/bus/i2c/devices/i2c-0/name: NVIDIA i2c adapter 4 at 4:00.0
   /sys/bus/i2c/devices/i2c-1/name: NVIDIA i2c adapter 5 at 4:00.0

Examining /proc/driver/nvidia:
   /proc/driver/nvidia/version:
      NVRM version: NVIDIA UNIX x86_64 Kernel Module  387.12  Thu Sep 28 20:18:48 PDT 2017
      GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
   /proc/driver/nvidia/registry:
      Binary: ""
   /proc/driver/nvidia/params:
      Mobile: 4294967295
      ResmanDebugLevel: 4294967295
      RmLogonRC: 1
      ModifyDeviceFiles: 1
      DeviceFileUID: 0
      DeviceFileGID: 0
      DeviceFileMode: 438
      UpdateMemoryTypes: 4294967295
      InitializeSystemMemoryAllocations: 1
      UsePageAttributeTable: 4294967295
      EnableMSI: 1
      MapRegistersEarly: 0
      RegisterForACPIEvents: 1
      CheckPCIConfigSpace: 1
      EnablePCIeGen3: 0
      MemoryPoolSize: 0
      TCEBypassMode: 0
      UseThreadedInterrupts: 1
      EnableStreamMemOPs: 0
      RegistryDwords: ""
      RegistryDwordsPerDevice: ""
      RmMsg: ""
      AssignGpus: ""
   PCI bus id: 0000:04:00.0
   /proc/driver/nvidia/gpus/0000:04:00.0/information:
      Model: 		 GeForce GT 1030
      IRQ:   		 30
      GPU UUID: 	 GPU-eec473f3-aebd-0018-64ff-fb37f9d2fc9f
      Video BIOS: 	 86.08.0c.00.0b
      Bus Type: 	 PCIe
      DMA Size: 	 47 bits
      DMA Mask: 	 0x7fffffffffff
      Bus Location: 	 0000:04:00.0
      Device Minor: 	 0
   /proc/driver/nvidia/gpus/0000:04:00.0/registry:
      Binary: ""

Examining I2C buses, as detected by I2C layer...

   Detected I2C buses:

   Bus /dev/i2c-0 found:    true
   Bus /dev/i2c-0 probed:   true
   Address 0x30 present:    false
   Address 0x37 present:    false
   Address 0x50 present:    false
   Functionality: I2C_FUNC_I2C, I2C_FUNC_SMBUS_QUICK, I2C_FUNC_SMBUS_READ_BYTE, 
                  I2C_FUNC_SMBUS_WRITE_BYTE, I2C_FUNC_SMBUS_READ_BYTE_DATA, 
                  I2C_FUNC_SMBUS_WRITE_BYTE_DATA, I2C_FUNC_SMBUS_READ_WORD_DATA, 
                  I2C_FUNC_SMBUS_WRITE_WORD_DATA, I2C_FUNC_SMBUS_READ_BLOCK_DATA, 
                  I2C_FUNC_SMBUS_WRITE_BLOCK_DATA

   Bus /dev/i2c-1 found:    true
   Bus /dev/i2c-1 probed:   true
   Address 0x30 present:    false
   Address 0x37 present:    false
   Address 0x50 present:    false
   Functionality: I2C_FUNC_I2C, I2C_FUNC_SMBUS_QUICK, I2C_FUNC_SMBUS_READ_BYTE, 
                  I2C_FUNC_SMBUS_WRITE_BYTE, I2C_FUNC_SMBUS_READ_BYTE_DATA, 
                  I2C_FUNC_SMBUS_WRITE_BYTE_DATA, I2C_FUNC_SMBUS_READ_WORD_DATA, 
                  I2C_FUNC_SMBUS_WRITE_WORD_DATA, I2C_FUNC_SMBUS_READ_BLOCK_DATA, 
                  I2C_FUNC_SMBUS_WRITE_BLOCK_DATA

xrandr connection report:
   DP-0 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 885mm x 498mm
   DP-1 disconnected (normal left inverted right x axis y axis)
   HDMI-0 disconnected (normal left inverted right x axis y axis)

Checking for possibly conflicting programs...

Examining I2C buses using i2cdetect... 

   Probing bus /dev/i2c-0 using command "i2cdetect -y 0"
   i2cdetect command unavailable

Performing basic scan of I2C devices using local sysenv functions...

   Examining device /dev/i2c-0...
      Device name (/sys/bus/i2c/devices/i2c-0/name): NVIDIA i2c adapter 4 at 4:00.0
      Functionality: I2C_FUNC_I2C, I2C_FUNC_SMBUS_QUICK, I2C_FUNC_SMBUS_READ_BYTE, 
                     I2C_FUNC_SMBUS_WRITE_BYTE, I2C_FUNC_SMBUS_READ_BYTE_DATA, 
                     I2C_FUNC_SMBUS_WRITE_BYTE_DATA, I2C_FUNC_SMBUS_READ_WORD_DATA, 
                     I2C_FUNC_SMBUS_WRITE_WORD_DATA, I2C_FUNC_SMBUS_READ_BLOCK_DATA, 
                     I2C_FUNC_SMBUS_WRITE_BLOCK_DATA
      Unable to read EDID, psc=EIO(-5): Input/output error

      Trying simple VCP read of feature 0x10...
      Attempt 1 to read feature returned hard error: EIO(-5): Input/output error
      DDC communication failed.

   Examining device /dev/i2c-1...
      Device name (/sys/bus/i2c/devices/i2c-1/name): NVIDIA i2c adapter 5 at 4:00.0
      Functionality: I2C_FUNC_I2C, I2C_FUNC_SMBUS_QUICK, I2C_FUNC_SMBUS_READ_BYTE, 
                     I2C_FUNC_SMBUS_WRITE_BYTE, I2C_FUNC_SMBUS_READ_BYTE_DATA, 
                     I2C_FUNC_SMBUS_WRITE_BYTE_DATA, I2C_FUNC_SMBUS_READ_WORD_DATA, 
                     I2C_FUNC_SMBUS_WRITE_WORD_DATA, I2C_FUNC_SMBUS_READ_BLOCK_DATA, 
                     I2C_FUNC_SMBUS_WRITE_BLOCK_DATA
      Unable to read EDID, psc=EIO(-5): Input/output error

      Trying simple VCP read of feature 0x10...
      Attempt 1 to read feature returned hard error: EIO(-5): Input/output error
      DDC communication failed.

EDIDs reported by X11 for connected xrandr outputs:
   xrandr output: DP-0
      Raw EDID:
              +0          +4          +8          +c            0   4   8   c   
      +0000   00 ff ff ff ff ff ff 00 41 0c 42 c1 61 11 00 00   ........A.B.a...
      +0010   17 1b 01 04 b5 59 32 78 3a 15 71 ad 50 47 a7 26   .....Y2x:.q.PG.&
      +0020   12 50 54 bf ef 00 d1 c0 b3 00 95 00 81 80 81 40   .PT............@
      +0030   81 c0 01 01 01 01 4d d0 00 a0 f0 70 3e 80 30 20   ......M....p>.0 
      +0040   35 00 75 f2 31 00 00 1a a3 66 00 a0 f0 70 1f 80   5.u.1....f...p..
      +0050   30 20 35 00 75 f2 31 00 00 1a 00 00 00 fd 00 17   0 5.u.1.........
      +0060   50 1e a0 3c 01 0a 20 20 20 20 20 20 00 00 00 fc   P..<..      ....
      +0070   00 50 48 4c 20 42 44 4d 34 30 33 37 55 0a 01 25   .PHL BDM4037U..%
      EDID synopsis:
         Mfg id:           PHL
         Model:            PHL BDM4037U
         Serial number:    Unspecified
         Manufacture year: 2017
         EDID version:     1.4
         Product code:     0xc142 (49474)
         Extra descriptor: Unspecified
         Video input definition: 0xb5 - Digital Input (DisplayPort)
         White x,y:        0.312, 0.329
         Red   x,y:        0.676, 0.313
         Green x,y:        0.278, 0.653
         Blue  x,y:        0.149, 0.073
         Extension blocks: 1
      EDID source: 


Probing I2C devices using udev, susbsystem i2c-dev...

   ***One Device ***
   path: /sys/devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-0/i2c-dev/i2c-0
   Device Node Path: /dev/i2c-0
      struct udev_device at: 0x55baf83db630
         devpath:   /devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-0/i2c-dev/i2c-0
         subsystem: i2c-dev
         devtype:   (null)
         syspath:   /sys/devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-0/i2c-dev/i2c-0
         sysname:   i2c-0
         sysnum:    0
         devnode:   /dev/i2c-0
         Properties:
            DEVNAME -> /dev/i2c-0
            DEVPATH -> /devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-0/i2c-dev/i2c-0
            MAJOR -> 89
            MINOR -> 0
            SUBSYSTEM -> i2c-dev
         Sysattrs:
            dev -> 89:0
            device -> (null)
            name -> NVIDIA i2c adapter 4 at 4:00.0
            subsystem -> i2c-dev
            uevent -> MAJOR=89
                      MINOR=0
                      DEVNAME=i2c-0

   ***One Device ***
   path: /sys/devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-1/i2c-dev/i2c-1
   Device Node Path: /dev/i2c-1
      struct udev_device at: 0x55baf83ecbe0
         devpath:   /devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-1/i2c-dev/i2c-1
         subsystem: i2c-dev
         devtype:   (null)
         syspath:   /sys/devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-1/i2c-dev/i2c-1
         sysname:   i2c-1
         sysnum:    1
         devnode:   /dev/i2c-1
         Properties:
            DEVNAME -> /dev/i2c-1
            DEVPATH -> /devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-1/i2c-dev/i2c-1
            MAJOR -> 89
            MINOR -> 1
            SUBSYSTEM -> i2c-dev
         Sysattrs:
            dev -> 89:1
            device -> (null)
            name -> NVIDIA i2c adapter 5 at 4:00.0
            subsystem -> i2c-dev
            uevent -> MAJOR=89
                      MINOR=1
                      DEVNAME=i2c-1

Summary of udev I2C devices
   Subsystem   Sysname    Sysattr Name                        Devpath
   i2c-dev     i2c-0      NVIDIA i2c adapter 4 at 4:00.0      /devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-0/i2c-dev/i2c-0
   i2c-dev     i2c-1      NVIDIA i2c adapter 5 at 4:00.0      /devices/pci0000:00/0000:00:07.0/0000:04:00.0/i2c-1/i2c-dev/i2c-1

Looking for udev devices with name attribute DPMST...
Summary of udev DPMST devices...
   No devices detected

Examining system logs...

   Checking dmesg for video and I2C related lines...
      [    0.312615] pci 0000:04:00.0: Video device with shadowed ROM
      [    1.335973] [drm] Initialized drm 1.1.0 20060810
      [    1.349153] nvidia: module license 'NVIDIA' taints kernel.
      [    1.355691] nvidia: module verification failed: signature and/or required key missing - tainting kernel
      [    1.361362] nvidia-nvlink: Nvlink Core is being initialized, major device number 247
      [    1.361734] NVRM: loading NVIDIA UNIX x86_64 Kernel Module  387.12  Thu Sep 28 20:18:48 PDT 2017 (using threaded interrupts)
      [    1.363028] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  387.12  Thu Sep 28 19:30:23 PDT 2017
      [    1.363721] [drm] [nvidia-drm] [GPU ID 0x00000400] Loading driver
      [    4.709785] Linux video capture interface: v2.00
      [    4.848513] nvidia-uvm: Loaded the UVM driver in 8 mode, major device number 244
      [    5.193056] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:07.0/0000:04:00.1/sound/card1/input18
      [    5.193152] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:07.0/0000:04:00.1/sound/card1/input19
                     on the primary VGA device. The NVIDIA Linux graphics driver
      [    5.887587] uvcvideo: Found UVC 1.00 device <unnamed> (046d:0825)
      [    5.902136] usbcore: registered new interface driver uvcvideo
      [    5.902138] USB Video Class driver (1.1.1)
      [    6.785857] nvidia-modeset: Allocated GPU:0 (GPU-eec473f3-aebd-0018-64ff-fb37f9d2fc9f) @ PCI:0000:04:00.0

   Checking journalctl for video and I2C related lines...
      окт 04 01:15:19 home kernel: pci 0000:04:00.0: Video device with shadowed ROM
      окт 04 01:15:19 home kernel: [drm] Initialized drm 1.1.0 20060810
      окт 04 01:15:19 home kernel: nvidia: module license 'NVIDIA' taints kernel.
      окт 04 01:15:19 home kernel: nvidia: module verification failed: signature and/or required key missing - tainting kernel
      окт 04 01:15:19 home kernel: nvidia-nvlink: Nvlink Core is being initialized, major device number 247
      окт 04 01:15:19 home kernel: NVRM: loading NVIDIA UNIX x86_64 Kernel Module  387.12  Thu Sep 28 20:18:48 PDT 2017 (using threaded interrupts)
      окт 04 01:15:19 home kernel: nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  387.12  Thu Sep 28 19:30:23 PDT 2017
      окт 04 01:15:19 home kernel: [drm] [nvidia-drm] [GPU ID 0x00000400] Loading driver
      окт 04 01:15:19 home kernel: Linux video capture interface: v2.00
      окт 04 01:15:20 home kernel: nvidia-uvm: Loaded the UVM driver in 8 mode, major device number 244
      окт 04 01:15:20 home kernel: input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:07.0/0000:04:00.1/sound/card1/input18
      окт 04 01:15:20 home kernel: input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:07.0/0000:04:00.1/sound/card1/input19
      окт 04 01:15:20 home systemd[1]: Starting NVIDIA Persistence Daemon...
      окт 04 01:15:20 home nvidia-persistenced[1077]: Verbose syslog connection opened
      окт 04 01:15:20 home nvidia-persistenced[1077]: Now running with user ID 124 and group ID 135
      окт 04 01:15:20 home nvidia-persistenced[1077]: Started (1077)
      окт 04 01:15:20 home systemd[1]: Started NVIDIA Persistence Daemon.
      окт 04 01:15:20 home nvidia-persistenced[1077]: device 0000:04:00.0 - registered
      окт 04 01:15:20 home nvidia-persistenced[1077]: Local RPC service initialized
                                      on the primary VGA device. The NVIDIA Linux graphics driver
      окт 04 01:15:21 home kernel: uvcvideo: Found UVC 1.00 device <unnamed> (046d:0825)
      окт 04 01:15:21 home kernel: usbcore: registered new interface driver uvcvideo
      окт 04 01:15:21 home kernel: USB Video Class driver (1.1.1)
      окт 04 01:15:22 home kernel: nvidia-modeset: Allocated GPU:0 (GPU-eec473f3-aebd-0018-64ff-fb37f9d2fc9f) @ PCI:0000:04:00.0
      окт 04 01:15:44 home sudo[2333]:     valt : TTY=pts/0 ; PWD=/home/valt ; USER=root ; COMMAND=/sbin/modprobe nvidiafb

   Limiting output to 200 lines...
   Checking Xorg.0.log for video and I2C related lines...
      [     5.926] 	X.Org Video Driver: 20.0
      [     5.927] (II) xfree86: Adding drm device (/dev/dri/card0)
      [     6.018] (II) Module glx: vendor="NVIDIA Corporation"
      [     6.018] (II) NVIDIA GLX Module  387.12  Thu Sep 28 19:24:49 PDT 2017
      [     6.018] (II) LoadModule: "nvidia"
      [     6.018] (II) Loading /usr/lib/x86_64-linux-gnu/xorg/extra-modules/nvidia_drv.so
      [     6.031] (II) Module nvidia: vendor="NVIDIA Corporation"
      [     6.031] 	Module class: X.Org Video Driver
      [     6.032] (II) NVIDIA dlloader X Driver  387.12  Thu Sep 28 18:57:27 PDT 2017
      [     6.032] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
      [     6.067] (II) NVIDIA(0): Creating default Display subsection in Screen section
      [     6.067] (==) NVIDIA(0): Depth 24, (==) framebuffer bpp 32
      [     6.067] (==) NVIDIA(0): RGB weight 888
      [     6.067] (==) NVIDIA(0): Default visual is TrueColor
      [     6.067] (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
      [     6.069] (**) NVIDIA(0): Option "RegistryDwords" "RMUseSwI2c=0x01; RMI2cSpeed=100"
      [     6.069] (**) NVIDIA(0): Enabling 2D acceleration
      [     6.719] (--) NVIDIA(0): Valid display device(s) on GPU-0 at PCI:4:0:0
      [     6.719] (--) NVIDIA(0):     DFP-0 (boot)
      [     6.719] (--) NVIDIA(0):     DFP-1
      [     6.719] (--) NVIDIA(0):     DFP-2
      [     6.721] (II) NVIDIA(0): NVIDIA GPU GeForce GT 1030 (GP108-A) at PCI:4:0:0 (GPU-0)
      [     6.721] (--) NVIDIA(0): Memory: 2097152 kBytes
      [     6.721] (--) NVIDIA(0): VideoBIOS: 86.08.0c.00.0b
      [     6.721] (II) NVIDIA(0): Detected PCI Express Link width: 4X
      [     6.721] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): connected
      [     6.721] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): Internal DisplayPort
      [     6.721] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): 1440.0 MHz maximum pixel clock
      [     6.721] (--) NVIDIA(GPU-0): 
      [     6.722] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [     6.722] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [     6.722] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [     6.722] (--) NVIDIA(GPU-0): 
      [     6.722] (--) NVIDIA(GPU-0): DFP-2: disconnected
      [     6.722] (--) NVIDIA(GPU-0): DFP-2: Internal TMDS
      [     6.722] (--) NVIDIA(GPU-0): DFP-2: 165.0 MHz maximum pixel clock
      [     6.722] (--) NVIDIA(GPU-0): 
      [     6.726] (==) NVIDIA(0): 
      [     6.726] (==) NVIDIA(0): No modes were requested; the default mode "nvidia-auto-select"
      [     6.726] (==) NVIDIA(0):     will be used as the requested mode.
      [     6.726] (==) NVIDIA(0): 
      [     6.727] (II) NVIDIA(0): Validated MetaModes:
      [     6.727] (II) NVIDIA(0):     "DFP-0:nvidia-auto-select"
      [     6.727] (II) NVIDIA(0): Virtual screen size determined to be 3840 x 2160
      [     6.742] (--) NVIDIA(0): DPI set to (109, 109); computed from "UseEdidDpi" X config
      [     6.742] (--) NVIDIA(0):     option
      [     6.743] (II) NVIDIA: Using 24576.00 MB of virtual memory for indirect memory
      [     6.743] (II) NVIDIA:     access.
      [     6.773] (II) NVIDIA(0): Setting mode "DFP-0:nvidia-auto-select"
      [     6.902] (==) NVIDIA(0): Disabling shared memory pixmaps
      [     6.902] (==) NVIDIA(0): Backing store enabled
      [     6.902] (==) NVIDIA(0): Silken mouse enabled
      [     6.904] (==) NVIDIA(0): DPMS enabled
      [     6.904] (II) NVIDIA(0): [DRI2] Setup complete
      [     6.904] (II) NVIDIA(0): [DRI2]   VDPAU driver: nvidia
      [     6.962] (II) config/udev: Adding input device HDA NVidia HDMI/DP,pcm=3 (/dev/input/event14)
      [     6.963] (II) config/udev: Adding input device HDA NVidia HDMI/DP,pcm=7 (/dev/input/event15)
      [     7.312] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): connected
      [     7.312] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): Internal DisplayPort
      [     7.312] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): 1440.0 MHz maximum pixel clock
      [     7.312] (--) NVIDIA(GPU-0): 
      [     7.921] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): connected
      [     7.921] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): Internal DisplayPort
      [     7.921] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): 1440.0 MHz maximum pixel clock
      [     7.921] (--) NVIDIA(GPU-0): 
      [     7.922] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [     7.922] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [     7.922] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [     7.922] (--) NVIDIA(GPU-0): 
      [     7.922] (--) NVIDIA(GPU-0): DFP-2: disconnected
      [     7.922] (--) NVIDIA(GPU-0): DFP-2: Internal TMDS
      [     7.922] (--) NVIDIA(GPU-0): DFP-2: 165.0 MHz maximum pixel clock
      [     7.922] (--) NVIDIA(GPU-0): 
      [     8.266] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): connected
      [     8.266] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): Internal DisplayPort
      [     8.266] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): 1440.0 MHz maximum pixel clock
      [     8.266] (--) NVIDIA(GPU-0): 
      [     8.267] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [     8.267] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [     8.267] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [     8.267] (--) NVIDIA(GPU-0): 
      [     8.267] (--) NVIDIA(GPU-0): DFP-2: disconnected
      [     8.267] (--) NVIDIA(GPU-0): DFP-2: Internal TMDS
      [     8.267] (--) NVIDIA(GPU-0): DFP-2: 165.0 MHz maximum pixel clock
      [     8.267] (--) NVIDIA(GPU-0): 
      [    18.708] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): connected
      [    18.708] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): Internal DisplayPort
      [    18.708] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): 1440.0 MHz maximum pixel clock
      [    18.708] (--) NVIDIA(GPU-0): 
      [    18.709] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [    18.709] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [    18.709] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [    18.709] (--) NVIDIA(GPU-0): 
      [    18.709] (--) NVIDIA(GPU-0): DFP-2: disconnected
      [    18.709] (--) NVIDIA(GPU-0): DFP-2: Internal TMDS
      [    18.709] (--) NVIDIA(GPU-0): DFP-2: 165.0 MHz maximum pixel clock
      [    18.709] (--) NVIDIA(GPU-0): 
      [    51.217] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): connected
      [    51.217] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): Internal DisplayPort
      [    51.217] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): 1440.0 MHz maximum pixel clock
      [    51.217] (--) NVIDIA(GPU-0): 
      [    51.218] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [    51.218] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [    51.218] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [    51.218] (--) NVIDIA(GPU-0): 
      [    51.218] (--) NVIDIA(GPU-0): DFP-2: disconnected
      [    51.218] (--) NVIDIA(GPU-0): DFP-2: Internal TMDS
      [    51.218] (--) NVIDIA(GPU-0): DFP-2: 165.0 MHz maximum pixel clock
      [    51.218] (--) NVIDIA(GPU-0): 
      [    56.223] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): connected
      [    56.223] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): Internal DisplayPort
      [    56.223] (--) NVIDIA(GPU-0): Philips PHL BDM4037U (DFP-0): 1440.0 MHz maximum pixel clock
      [    56.223] (--) NVIDIA(GPU-0): 
      [    56.224] (--) NVIDIA(GPU-0): DFP-1: disconnected
      [    56.224] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
      [    56.224] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
      [    56.224] (--) NVIDIA(GPU-0): 
      [    56.224] (--) NVIDIA(GPU-0): DFP-2: disconnected
      [    56.224] (--) NVIDIA(GPU-0): DFP-2: Internal TMDS
      [    56.224] (--) NVIDIA(GPU-0): DFP-2: 165.0 MHz maximum pixel clock
      [    56.224] (--) NVIDIA(GPU-0): 

Not built with libdrm support.  Skipping DRM related checks

Device Identifier Cross Reference Report

   EDID: ...550A0125  Mfg: PHL  Model: PHL BDM4037U   SN: Unspecified  
      Bus:           Not found
      XrandR output: DP-0
      DRM connector: (null)
      UDEV name:     (null)
      UDEV syspath:  (null)

Skipping USB environment exploration.
Issue command "ddcutil usbenvironment --verbose" if there are any USB attached monitors.

Statistics for environment exploration:

Maximum Try Settings:
Operation Type             Current  Default
Write only exchange tries:        4        4
Write read exchange tries:       15       10
Multi-part exchange tries:       15        8

Retry statistics for ddc write only
   No tries attempted

Retry statistics for ddc write/read
   No tries attempted

Retry statistics for multi-part exchange
   No tries attempted

DDC Related Errors:  None
Total errors: 0

Errors Wrapped in Retry:  None
Total errors: 0

Sleep Strategy Stats:
   Total IO events:         34
   IO error count:           0
   Total sleep events:       0

   Sleep Event type      Count
   SE_WRITE_TO_READ          0
   SE_POST_OPEN              0
   SE_POST_WRITE             0
   SE_POST_READ              0
   SE_DDC_NULL               0
   SE_POST_SAVE_SETTINGS     0

Call Stats:
   Type                                     Count Millisec  (   Nanosec)
   write calls       (IE_WRITE)                 8       80  (  80201901)
   read calls        (IE_READ)                  4       40  (  40051060)
   open file calls   (IE_OPEN)                  4        0  (     24226)
   close file calls  (IE_CLOSE)                 4        0  (     11034)
   other I/O calls   (IE_OTHER)                14        0  (     21293)
   Totals:                                     34      120  ( 120309514)

Sleep Call Stats:
   Total sleep calls:                                    2
   Requested sleep time milliseconds :                 100
   Actual sleep milliseconds (nanosec):                100  ( 100310817)

Total elapsed milliseconds (nanoseconds):              518  ( 518798414)

*** Detected Displays ***
No displays found

Statistics for display detection:

Maximum Try Settings:
Operation Type             Current  Default
Write only exchange tries:        4        4
Write read exchange tries:       15       10
Multi-part exchange tries:       15        8

Retry statistics for ddc write only
   No tries attempted

Retry statistics for ddc write/read
   No tries attempted

Retry statistics for multi-part exchange
   No tries attempted

DDC Related Errors:  None
Total errors: 0

Errors Wrapped in Retry:  None
Total errors: 0

Sleep Strategy Stats:
   Total IO events:          0
   IO error count:           0
   Total sleep events:       0

   Sleep Event type      Count
   SE_WRITE_TO_READ          0
   SE_POST_OPEN              0
   SE_POST_WRITE             0
   SE_POST_READ              0
   SE_DDC_NULL               0
   SE_POST_SAVE_SETTINGS     0

Call Stats:
   Type                                     Count Millisec  (   Nanosec)
   Totals:                                      0        0  (         0)

Sleep Call Stats:
   Total sleep calls:                                    2
   Requested sleep time milliseconds :                 100
   Actual sleep milliseconds (nanosec):                100  ( 100310817)

Elapsed milliseconds since last reset (nanoseconds):     0  (     26980)
Total elapsed milliseconds (nanoseconds):              518  ( 518830845)
Setting output level normal  Table features will be skipped...

Display scanning complete.

Feature Request: sys class backlight driver

Apparently, a lot of software uses /sys/class/backlight/*/actual_brightness to try to control screen brightness. It would be cool if it was possible to control DDC enabled monitors using this interface, too.

Multiple unknown type name ‘PyFileObject’; did you mean ‘PyCodeObject’? errors

Hi

In src/swig/ddc_swig.h and ddc_swig.cpp I'm getting these errors:

src/swig/ddc_swig.h:92:31: error: unknown type name ‘PyFileObject’; did you mean ‘PyCodeObject’? void save_current_python_fout(PyFileObject * pfy);
src/swig/ddc_swig.h:93:1: error: unknown type name ‘PyFileObject’; did you mean ‘PyCodeObject’?PyFileObject * get_current_python_fout();
ddc_swig.c:154:8: error: unknown type name ‘PyFileObject’ static PyFileObject * current_python_fout;
ddc_swig.c:156:31: error: unknown type name ‘PyFileObject’; did you mean ‘PyCodeObject’? void save_current_python_fout(PyFileObject * pfy) {
ddc_swig.c:161:1: error: unknown type name ‘PyFileObject’; did you mean ‘PyCodeObject’? PyFileObject * get_current_python_fout() {

Python: 3.5.4
Swig: 3.0.12
Cffi: 1.11.2
Cython: 0.26.1

loadvcp failes when only EDID is present

I've used dumpvcp to create a dump file and then went ahead and started messing with it a bit :). I've noticed that when I've removed all the identification except EDID loadvcp failed with:

ddcutil: base/displays.c:211: create_mfg_model_sn_display_identifier: Assertion `strlen(pIdent->mfg_id) + strlen(pIdent->model_name) + strlen(pIdent->serial_ascii) > 0' failed.
[1]    8411 abort (core dumped)  ddcutil loadvcp file

Is there any reason for failing? ddcutil --edid <EDID> works ok.

Feedback:
Thanks for ddcutil! I'm playing with it for some time already. My initial interest was to test if my monitor is off or not. Seems I can do it with ddcutil getvcp d6 and parse for sl=0x05. I was wondering that maybe some option for making output a bit more quiet, that is showing just a value? So far I'm using this for setting brightness.

  • Intel HD 4000 (i915)
  • DELL U2412M (VCP Version: 2.1)

Doesn't work anymore after switching to laptop

I used a desktop system until today, and now I switched to a laptop
as a desktop replacement.

The same monitor that used to work up until now over HDMI and which
I used to be able to control with ddcutil, is now connected over HDMI again,
however I can't control it through ddcutil anymore.

For example:

ddcutil --sn YE8J023664 setvcp 10 100
ioctl error in function i2c_set_addr at line 214 in file i2c/i2c_bus_core.c: errno=EBUSY(16): Device or resource busy
(i2c_set_addr) addr = 0x50. Returning -16
Failure detecting bus addresses for /dev/i2c-5: status code=EBUSY(-16): Device or resource busy
ioctl error in function i2c_set_addr at line 214 in file i2c/i2c_bus_core.c: errno=EBUSY(16): Device or resource busy
(i2c_set_addr) addr = 0x50. Returning -16
Failure detecting bus addresses for /dev/i2c-18: status code=EBUSY(-16): Device or resource busy
Display not found

The other monitor is connected with VGA and can be controlled with ddcutil perfectly fine.

ddctool v0.5.2: No command specified error

I went from v0.5.0 to v0.5.2 and when I run a command, I get this:

# ddctool detect
No command specified

When before on v0.5.2, I would get this:

# ddctool detect
Display 1
   I2C bus:             /dev/i2c-2
   EDID synopsis:
      Mfg id:           ACI
      Model:            ASUS VN247
      Serial number:    {snip}
      Manufacture year: 2014
      EDID version:     1.3
   VCP version:         2.1

This happens with both user and root. v0.5.1 failed to compile with this error:
main.c:(.text.startup+0xc0): undefined reference to is_module_loaded_using_sysfs'`

Cheers.

Package list for building on Debian Jessie

If you maybe want to list it in your README, here's a list of packages that I had to install to be able to build and use ddcutil in Debian Jessie:

build-essential
pkg-config
libglib2.0-dev
libxrandr-dev
libusb-1.0-0-dev
libudev-dev
i2c-tools

(This list might not be complete because this isn't a freshly installed system so other packages might have already been installed beforehand.)

ddcutil not working through lenovo dock

Hi

I built ddcutil 0.7.0 on Ubuntu 16.10. I have two external displays connected to my Lenovo x260 via a Lenovo Ultra Dock. The displays are Dell U2412Ms.

Here is the output of ddcutil detect:

sudo ddcutil detect
Display 1
   I2C bus:             /dev/i2c-3
   Supports DDC:        true
   EDID synopsis:
      Mfg id:           AUO
      Model:            Unspecified
      Serial number:    Unspecified
      Manufacture year: 2015
      EDID version:     1.4
   VCP version:         Detection failed

Invalid display
   I2C bus:             /dev/i2c-5
   Supports DDC:        false
   EDID synopsis:
      Mfg id:           DEL
      Model:            DELL U2412M
      Serial number:    Unspecified
      Manufacture year: 2015
      EDID version:     1.4

Display 2
   I2C bus:             /dev/i2c-6
   Supports DDC:        true
(ddc_open_display) No EDID for device on bus /dev/i2c-6
   Error opening display bus /dev/i2c-6, error = -3016 (DDCRC_EDID)
(ddc_close_display) close_i2c_bus returned 9

Display 3
   I2C bus:             /dev/i2c-7
   Supports DDC:        true
(ddc_open_display) No EDID for device on bus /dev/i2c-7
   Error opening display bus /dev/i2c-7, error = -3016 (DDCRC_EDID)
(ddc_close_display) close_i2c_bus returned 9

However when I try and detect monitor capabilities it doesn't work:

tom@x260:~$ sudo ddcutil capabilities --display 1
Unable to get capabilities for monitor on Display_Handle[i2c: fh=3, busno=3].  Maximum DDC retries exceeded.

This seems like it may be related to issue number 8 - I'm not really all that stressed about not getting this to work, but thought this might be helpful.

Package for Ubuntu 17.04?

Thank you for the PPA on Launchpad. Any chance to build for Ubuntu versions later than 16.04, currently 17.04?

Dell U3818DW on NVIDIA 960GTX not detected

Hey,

I'm having trouble getting ddcutil v0.8.5 detect a Dell 3818DW monitor over DisplayPort (Haven't tried HDMI yet). The detect command comes up with nothing. I previously used a Dell U2711 monitor on the same card (though through DVI), and that worked. Running ddcctl on MacOS with the same monitor over HDMI also works. Any suggestions? Thanks in advance!

$ ddcutil detect --verbose              
Output level:               Verbose
Reporting DDC data errors:  false
Trace groups active:        none
Traced functions:           none
Traced files:               none
Force I2C slave address:    false

No displays found

I2C detect lists the following:

i2cdetect -l
i2c-3	smbus     	SMBus PIIX4 adapter port 4 at 0b00	SMBus adapter
i2c-1	smbus     	SMBus PIIX4 adapter port 2 at 0b00	SMBus adapter
i2c-8	i2c       	NVIDIA i2c adapter 8 at e:00.0  	I2C adapter
i2c-6	i2c       	NVIDIA i2c adapter 6 at e:00.0  	I2C adapter
i2c-4	i2c       	NVIDIA i2c adapter 0 at e:00.0  	I2C adapter
i2c-2	smbus     	SMBus PIIX4 adapter port 3 at 0b00	SMBus adapter
i2c-0	smbus     	SMBus PIIX4 adapter port 0 at 0b00	SMBus adapter
i2c-9	i2c       	NVIDIA i2c adapter 9 at e:00.0  	I2C adapter
i2c-7	i2c       	NVIDIA i2c adapter 7 at e:00.0  	I2C adapter
i2c-5	i2c       	NVIDIA i2c adapter 2 at e:00.0  	I2C adapter

The interrogation command crashes because of #40.

Changing Power Mode?

I recently started running ddcutil on a Pi to easily switch input modes on my Dell monitor. No problems so far.

I noticed with the ddcutil capabilities command that I also had:

Feature: D6 (Power mode)
Values:
01: DPM: On, DPMS: Off
04: DPM: Off, DPMS: Off
05: Write only value to turn off display

Is this safe to use? I did try it, turning off worked fine with 'ddcutil setvcp D6 x05'.

I set it back on, 'ddcutil setvcp D6 x01' (which is what it was when I hadn't touched it). That also worked, but I got this 'additional' response:

Setting value failed for feature d6. rc=DDCRC_RETRIES(-3015): maximum retries exceeded

Do you know why this might come up even though it worked fine? I would be happier knowing why it happened and whether it was safe to use frequently. Seems to happen constantly.

Should I get some logs to further find out why?

trouble switching input source

I was have two computers hooked up to one monitor (one hdmi, one dvi)
which I can switch between using the physical buttons on the monitor to switch the
input channel.

I didn't seem to find a way to do the same using ddcutil:

$ ddcutil capabilities
Feature: 60 (Input Source)
Values:
01: VGA-1
03: DVI-1
04: DVI-2
trying to setvcp 60 1 it will switch to vga and back,
but switching between 3, and 4 doesn't appear to do anything (never leaves the current input source)

I ran ddcutil in the background switched input source with physical buttons
$ while true; do ./ddcutil getvcp 60; sleep 1; done
VCP code 0x60 (Input Source ): DVI-1 (sl=0x03)
Display not found
VCP code 0x60 (Input Source ): VGA-2 (sl=0x02)
Display not found
Display not found

VCP code 0x60 (Input Source ): DVI-1 (sl=0x03)

What is mildly interesting to note is that the using the physical buttons it temporarily switched to
vga-2 before switching to hdmi input source (It shows this on screen as well),
but vga-2 doesn't show up in the ddcutil capabilities output above. The values there mysteriously jump from 1 to 3.

Will try and get ddcutil running on the other hardware connected to the monitor and see what it does, let me know if there is anything else that would be helpful

ddcutil detect --> I2C address 0x30 (EDID block#) present: false + DDC communication failed

Hello I couldn't find anything related to my error message so I opened an issue. My setup is pretty complicated, with four displays (2x Asus MX279 + 2x Asus VX239) hooked to Nvidia GTX 1080 via 1x HDMI->HDMI, 2x DP->HDMI, and 1x DVI->HDMI. DDC/CI is enabled in every display's OSD, yet all seem to output the same pattern:

(ddc_open_display) No EDID for device on bus /dev/i2c-2
Invalid display
I2C bus: /dev/i2c-2
Supports DDC: true
I2C address 0x30 (EDID block#) present: false
I2C address 0x37 (DDC) present: true
I2C address 0x50 (EDID) present: true
/sys/bus/i2c/devices/i2c-2/name: NVIDIA i2c adapter 4 at 1:00.0
DDC communication failed
Is DDC/CI enabled in the monitor's on-screen display?

I have attached the outputs you requested in similar cases like #14, and would greatly appreciate pointers toward fixing the problem. Thank you!

ddcutil detect --verbose --ddc --force-slave-address --stats.txt
ddcutil environment --verbose --ddc --force-slave-address --stats.txt

Some ddcutil memleaks

Hi!
I'm currently using ddcutil C api 0.8.6 in a project.
I noticed that valgrind points out some memleaks, or at least some memory that is not freed after program ends; in fact they're not proper memleaks (ie: consecutive calls to ddcutil api won't leak new memory).

This is the code i'm using: http://dpaste.com/1H4QE1N. (it is a dbus interface to change both laptop's internal and external monitors backlight/brightness).
And this is valgrind output with debug symbols enabled: http://dpaste.com/1JGV0S5.

Hope this helps :)

ddcutil always coredumps

I run Fedora 25 64bit, with latest updates, on Dell Inspiron N5110, CPU: Intel i3-2350M, with integrated Intel graphics.

uname -a
Linux localhost.localdomain 4.10.11-200.fc25.x86_64 #1 SMP Tue Apr 18 17:25:01 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Monitor attached via HDMI is LG 29UB67 Ultrawide. Internal laptop monitor is disabled via Gnome settings.

Whatever command I try, I get Segmentation fault (core dumped).
I run ddcutil as root. Commands I tried:

ddcutil detect
ddcutil  --force-slave-address detect
ddcutil environment
ddcutil --force environment

I have installed ddcutil with commands:

dnf config-manager --add-repo http://download.opensuse.org/repositories/home:rockowitz/Fedora_25/home:rockowitz.repo
dnf install ddcutil

which resulted in successful installation of following packages:

i2c-tools-3.1.0-17.fc25.x86_64.rpm
ddcutil-0.7.4-1.1.fc25.x86_64.rpm

i2c_dev kernel module is loaded, /dev/i2c-n devices are present.

lsmod | grep i2c
i2c_dev                16384  0
i2c_i801               24576  0
i2c_algo_bit           16384  1 i915

ls -l /dev/i2c-*
crw-------. 1 root root 89, 0 Apr 28 14:48 /dev/i2c-0
crw-------. 1 root root 89, 1 Apr 28 14:48 /dev/i2c-1
crw-------. 1 root root 89, 2 Apr 28 14:48 /dev/i2c-2
crw-------. 1 root root 89, 3 Apr 28 14:48 /dev/i2c-3
crw-------. 1 root root 89, 4 Apr 28 14:48 /dev/i2c-4
crw-------. 1 root root 89, 5 Apr 28 14:48 /dev/i2c-5
crw-------. 1 root root 89, 6 Apr 28 14:48 /dev/i2c-6
crw-------. 1 root root 89, 7 Apr 28 14:48 /dev/i2c-7

Do you have any idea how to troubleshoot?
Will coredump help you?

libxrandr-dev on Ubuntu 16.04

I also needed to install libxrandr-dev on Ubuntu 16.04 to be able to compile it.

I was getting the following error when running ./configure

checking for XRANDR... no
cconfigure: error: Package requirements (xrandr) were not met:

No package 'xrandr' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix.

Alternatively, you may set the environment variables XRANDR_CFLAGS and XRANDR_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

The issue is fixed after installing libxrandr-dev.

segfaults

Looks like it is crashing when it can't access some device files:

⏵ apt-cache policy ddcutil
ddcutil:
  Installed: 0.8.0-1

⏵ ddcutil detect --verbose > ddc_detect.txt
Failure getting EDID for /dev/i2c-6: status code=EIO(-5): Input/output error
ddcutil: ddc/ddc_displays.c:401: ddc_report_display_by_dref: Assertion `dref->flags & DREF_DDC_COMMUNICATION_CHECKED' failed.
fish: “ddcutil detect --verbose > ddc_…” terminated by signal SIGABRT (Abort)

⏵ ddcutil environment --verbose > ddc_env.txt
Failure getting EDID for /dev/i2c-6: status code=EIO(-5): Input/output error

⏵ ddcutil usbenvironment --verbose  > ddc_usb.txt
Failure getting EDID for /dev/i2c-6: status code=EIO(-5): Input/output error
libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/001/002: Permission denied
libusb: error [_get_usbfs_fd] libusb requires write access to USB device nodes.
fish: “ddcutil usbenvironment --verbos…” terminated by signal SIGSEGV (Address boundary error)

⏵ sudo ddcutil usbenvironment --verbose  > ddc_usb.txt
Failure getting EDID for /dev/i2c-6: status code=EIO(-5): Input/output error


DDC communication failed for Display Port attached monitor

Hello

I'm using 2 monitors LG 24EB23.
Both attached to an Radeon R9 290 using the amdgpu driver on an Arch linux with the latest kernel (4.10.8)

I can control the monitor attached via DVI with ddcutil.
But not the one attached via DP

# ddcutil detect --verbose
Output level:               Verbose
Reporting DDC data errors:  false
Trace groups active:        none
Force I2C slave address:    false

Display 1
   I2C bus:             /dev/i2c-5
   Supports DDC:        true
      I2C address 0x30 (EDID block#)  present: true 
      I2C address 0x37 (DDC)          present: true 
      I2C address 0x50 (EDID)         present: true 
      /sys/bus/i2c/devices/i2c-5/name: AMDGPU i2c bit bus 0x95
   EDID synopsis:
      Mfg id:           GSM
      Model:            24EB23
      Serial number:    (disclosed)
      Manufacture year: 2014
      EDID version:     1.3
      Product code:     0x59b4 (22964)
      Extra descriptor: Unspecified
      Video input definition: 0x80 - Digital Input
      White x,y:        0.312, 0.329
      Red   x,y:        0.652, 0.335
      Green x,y:        0.304, 0.633
      Blue  x,y:        0.152, 0.065
      Extension blocks: 0
   EDID hex dump:
              +0          +4          +8          +c            0   4   8   c   
      +0000   00 ff ff ff ff ff ff 00 1e 6d b4 59 b4 9b 02 00   .........m.Y....
      +0010   09 18 01 03 80 34 21 78 ea 3c 31 a7 55 4d a2 27   .....4!x.<1.UM.'
      +0020   10 50 54 a5 4b 00 71 4f 81 00 81 80 81 8f 95 00   .PT.K.qO........
      +0030   a9 40 b3 00 d1 c0 28 3c 80 a0 70 b0 23 40 30 20   .@....(<..p.#@0 
      +0040   36 00 08 4a 21 00 00 1a 00 00 00 fd 00 38 4b 1e   6..J!........8K.
      +0050   53 11 00 0a 20 20 20 20 20 20 00 00 00 fc 00 32   S...      .....2
      +0060   34 45 42 32 33 0a 20 20 20 20 20 20 00 00 00 ff   4EB23.      ....
      +0070   00 0a 20 20 20 20 20 20 20 20 20 20 20 20 01 d4   ..            ..
   VCP version:         2.1
   Controller mfg:      Mstar
   Firmware version:    1.1

Invalid display
   I2C bus:             /dev/i2c-8
   Supports DDC:        true
      I2C address 0x30 (EDID block#)  present: false
      I2C address 0x37 (DDC)          present: true 
      I2C address 0x50 (EDID)         present: true 
      /sys/bus/i2c/devices/i2c-8/name: card0-DP-1
   EDID synopsis:
      Mfg id:           GSM
      Model:            24EB23
      Serial number:    
      Manufacture year: 2013
      EDID version:     1.4
      Product code:     0x59b5 (22965)
      Extra descriptor: Unspecified
      Video input definition: 0xa5 - Digital Input(DisplayPort)
      White x,y:        0.312, 0.329
      Red   x,y:        0.652, 0.335
      Green x,y:        0.304, 0.633
      Blue  x,y:        0.152, 0.065
      Extension blocks: 1
   EDID hex dump:
              +0          +4          +8          +c            0   4   8   c   
      +0000   00 ff ff ff ff ff ff 00 1e 6d b5 59 01 01 01 01   .........m.Y....
      +0010   01 17 01 04 a5 34 21 78 fa 3c 31 a7 55 4d a2 27   .....4!x.<1.UM.'
      +0020   10 50 54 21 08 00 71 40 81 c0 81 00 81 80 95 00   .PT!..q@........
      +0030   a9 40 b3 00 d1 c0 28 3c 80 a0 70 b0 23 40 30 20   .@....(<..p.#@0 
      +0040   36 00 08 4a 21 00 00 1a 00 00 00 fd 00 38 3d 1e   6..J!........8=.
      +0050   53 11 00 0a 20 20 20 20 20 20 00 00 00 fc 00 32   S...      .....2
      +0060   34 45 42 32 33 0a 20 20 20 20 20 20 00 00 00 ff   4EB23.      ....
      +0070   00 0a 20 20 20 20 20 20 20 20 20 20 20 20 01 d4   ..            ..
   DDC communication failed
   Is DDC/CI enabled in the monitor's on-screen display?

(I've stripped the serial number from the first hex dump, the second was already empty)

ddcutil 0.7.0: doxyfile: Command not found error

When enabling doxygen in the configure options, this error is hit. The strange thing is that it is saying "command not found" since doxyfile is a text file, not a command. However, the file itself does exist in ddcutil-0.7.0/docs/doxygen, so it is being generated.

Making all in docs
make[2]: Entering directory '/var/tmp/portage/app-misc/ddcutil-0.7.0/work/ddcutil-0.7.0/docs'
Making all in doxygen
make[3]: Entering directory '/var/tmp/portage/app-misc/ddcutil-0.7.0/work/ddcutil-0.7.0/docs/doxygen'
doxyfile
make[3]: doxyfile: Command not found
make[3]: *** [Makefile:580: doxygen.stamp] Error 127
make[3]: Leaving directory '/var/tmp/portage/app-misc/ddcutil-0.7.0/work/ddcutil-0.7.0/docs/doxygen'
make[2]: *** [Makefile:484: all-recursive] Error 1
make[2]: Leaving directory '/var/tmp/portage/app-misc/ddcutil-0.7.0/work/ddcutil-0.7.0/docs'
make[1]: *** [Makefile:553: all-recursive] Error 1
make[1]: Leaving directory '/var/tmp/portage/app-misc/ddcutil-0.7.0/work/ddcutil-0.7.0'
make: *** [Makefile:462: all] Error 2

setvcp settings revert after ~1 second

Hi!
I've run into a strange problem using ddutil. It correctly detects my display (over DisplayPort) and I can set the brightness as I want. However, after ~1 second it goes back to the previous brightness setting.
I'm not sure what information to provide, but here's the output of ddcutil detect:

Display 1
   I2C bus:             /dev/i2c-8
   Supports DDC:        true
   EDID synopsis:
      Mfg id:           GSM
      Model:            LG Ultra HD
      Serial number:    Unspecified
      Manufacture year: 2015
      EDID version:     1.4
   VCP version:         2.1

Any ideas what might be causing this? I'm happy to provide further information on my setup if needed.
Cheers!

API Thread Safety

From writing a rust wrapper around the c api I've realised that there's no documentation on the thread-safety (or lack thereof) for any of the API calls. A few specific scenarios I'm wondering about, and whether they're safe and/or guaranteed:

  • is it safe to enumerate/create display handles on one thread, then spawn another thread and run operations there? Can you move handles to other threads between operations without issue?
    • I think this mostly is a question of whether there's any use of hidden background threads or TLS when API operations aren't running?
  • is it safe to concurrently run operations on different threads with different/distinct displays?
    • the CLI has a --async flag that indicates this could maybe be okay?
  • is it safe to concurrently run operations on the same handle from different threads?
    • this one seems useless because you'd have to wait for one operation to complete before another can start, but it's useful to know whether there's any inherent synchronization in the implementation or not.

pkg-config script issue

Hi, first of all let me thank you for your great work!
By the way, trying to build an example with gcc, i realized that pkg-config --libs --cflags ddcutil does not set required "-lddcutil" (that seems only needed flag too).
On my system (archlinux) version 0.8.4 sets:
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -lXrandr -lX11

But without "-lddcutil" i am not able to build.
I guess that adding:
Libs: -L${libdir} -lddcutil
to ddcutil.pc.in should do the trick (if i am correct).
At least, that is what x11.pc does ("Libs: -L${libdir} -lX11").

Samsung 971p

Not an issue per-se, just a quick report, ddcutil seems to be working just fine on good old Samsung 971p monitor.
Which is helpful, since it only has one hardware key to play with.

ddcutil interrogate output attached. 971p.txt

Also, display mode labels are wrong, but I guess these are sample value only, since there is no way to query monitor for actual labels.

Feature: DC (Display Mode)
Values:

   01: Productivity -> Text
   02: Mixed -> Internet
   03: Movie -> Game
   04: User defined -> Sport
   05: Games -> Movie
   06: Sports -> Custom
   f0: Dynamic contrast = Dynamic contrast

i2c device or resource busy

I tried to detect ddc devices and it ended with error...

sudo ddcutil interrogate                                                                                                                                                                                                                               Sat 12 Nov 2016 02:24:36 PM CET
Setting output level verbose...
Setting maximum retries...
Forcing --stats...
This command will take a while to run...


System information (uname):
   Linux version 4.8.6-1-ARCH (builduser@tobias) (gcc version 6.2.1 20160830 (GCC) ) #1 SMP PREEMPT Mon Oct 31 18:51:30 CET 2016

*** Primary Check 1: Identify video card and driver ***
Obtaining card and driver information from /sys...

Determining driver name and possibly version...
   Driver name:    i915
   Unable to determine driver version

Video card identification:
   Vendor:              8086       Intel Corporation
   Device:              0166       3rd Gen Core processor Graphics Controller
   Subvendor/Subdevice: 17aa/21f3  Lenovo

*** Primary Check 2: Check that /dev/i2c-* exist and writable ***

Checking /dev/i2c-* devices...

Unless the system is using the AMD proprietary driver fglrx, devices /dev/i2c-*
must exist and the logged on user must have read/write permission for those
devices (or at least those devices associated with monitors).
Typically, this access is enabled by:
  - setting the group for /dev/i2c-* to i2c
  - setting group RW permissions for /dev/i2c-*
  - making the current user a member of group i2c
Alternatively, this could be enabled by just giving everyone RW permission
The following tests probe for these conditions.

Checking for /dev/i2c-* devices...
   crw------- 1 root root 89, 0 Nov  5 20:59 /dev/i2c-0
   crw------- 1 root root 89, 1 Nov  5 20:59 /dev/i2c-1
   crw------- 1 root root 89, 2 Nov  5 20:59 /dev/i2c-2
   crw------- 1 root root 89, 3 Nov  5 20:59 /dev/i2c-3
   crw------- 1 root root 89, 4 Nov  5 20:59 /dev/i2c-4
   crw------- 1 root root 89, 5 Nov  5 20:59 /dev/i2c-5
   crw------- 1 root root 89, 6 Nov  5 20:59 /dev/i2c-6
   crw------- 1 root root 89, 7 Nov  5 20:59 /dev/i2c-7
   crw------- 1 root root 89, 8 Nov  5 20:59 /dev/i2c-8
   crw------- 1 root root 89, 9 Nov  5 20:59 /dev/i2c-9

Current user: root (0)

ioctl error in function i2c_set_addr at line 159 in file i2c/i2c_bus_core.c: errno=EBUSY(16): Device or resource busy
Aborting. Internal status code = -3026

My version is:

ddcutil -V                                                                                                                                                                                                                                        Sat 12 Nov 2016 02:27:20 PM CET
ddcutil 0.6.0
Built Nov  5 2016 at 13:26:09
Built without support for AMD Display Library (AMD proprietary driver).
Built with support for USB connected displays.

Copyright (C) 2015-2016 Sanford Rockowitz
License GPLv2: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ddccontrol is capable to communicate with my monitor, so device is accessible.

What can I do to help you debug this?

Feature request : incrementing value

I have a quite simple usage of ddcutil. I use it only to change the brightness of my monitor.
Being able to increment/decrement brightness could be quite handy :
Something like "ddcutil setvcp 10 +10" would read the current value and add 10 to that value.

ddcutil detect => Invalid display + DDC communication failed

I have a Linux PC and a Raspberry Pi 2 attached to one monitor. The Linux PC is connected to the DisplayPort interface and the Raspberry Pi to the HDMI interface.

I'm looking for a CLI solution for switching interfaces. Google search pointed me to ddccontrol and ddcutil. Having spent two hours playing with both tools and reading about them, I come to the conclusion that ddcutil is the more promising way to go ("ddcutil setvcp D0 DPDDC-B" might do the trick).

My understanding is that ddcutil is still under development and that certain devices/features are not supported yet. When I run 'ddcutil detect --verbose' on my Linux PC the output contains a couple of warnings and errors:

  • "Open failed for /dev/usb/hiddev0: errno=EACCES(13): Permission denied"
  • "Invalid display"
  • "DDC communication failed"
  • "No active displays found"

Perhaps someone more familiar with ddcutil can help and interpret the output. Is my monitor and/or graphic card supported? Should I spend more time investigating a ddcutil-based solution? - Thank you for any help.

The full output of 'ddcutil detect --verbose' on my Linux PC is as follows:

$ ddcutil detect --verbose
Output level:               Verbose
Reporting DDC data errors:  false
Trace groups active:        none
Force I2C slave address:    false

Open failed for /dev/usb/hiddev0: errno=EACCES(13): Permission denied
Invalid display
   I2C bus:             /dev/i2c-6
   Supports DDC:        true
      I2C address 0x37 (DDC)  present: true 
      I2C address 0x50 (EDID) present: true 
      /sys/bus/i2c/devices/i2c-6/name: DPDDC-B
   EDID synopsis:
      Mfg id:           AOC
      Model:            Q2775
      Serial number:    KKRG3JA001207�
      Manufacture year: 2016
      EDID version:     1.4
      Product code:     0x2775 (10101)
      Extra descriptor: 
      White x,y:        0.313, 0.329
      Red   x,y:        0.660, 0.331
      Green x,y:        0.300, 0.632
      Blue  x,y:        0.148, 0.055
   EDID hex dump:
              +0          +4          +8          +c            0   4   8   c   
      +0000   00 ff ff ff ff ff ff 00 05 e3 75 27 b7 04 00 00   ..........u'....
      +0010   0b 1a 01 04 b5 3c 22 78 3a 3f 05 a9 54 4c a1 26   .....<"x:?..TL.&
      +0020   0e 50 54 bf ef 00 d1 c0 b3 00 95 00 81 80 81 40   .PT............@
      +0030   81 c0 01 01 01 01 56 5e 00 a0 a0 a0 29 50 30 20   ......V^....)P0 
      +0040   35 00 55 50 21 00 00 1e 00 00 00 fd 00 32 4c 1e   5.UP!........2L.
      +0050   63 1e 01 0a 20 20 20 20 20 20 00 00 00 fc 00 51   c...      .....Q
      +0060   32 37 37 35 0a 20 20 20 20 20 20 20 00 00 00 ff   2775.       ....
      +0070   00 4b 4b 52 47 33 4a 41 30 30 31 32 30 37 01 c6   .KKRG3JA001207..
   DDC communication failed

No active displays found

I2C workaround Nvidia drivers for dual monitors?

Previously I was using ddcutil without any problems on AMD hardware. Because of the mining craze I got a good deal on my used AMD hardware and a good deal on a GTX 1070. Now unfortunately I cannot get ddcutil to work on one of my monitors with the proprietary Nvidia drivers. It seems to only detect 1 monitor, but the environment says there is a second one, it just cannot find the udev information. I've got 2 Dell U2515H connected (1 landscape over HDMI and 1 portrait over DP), here is some more information of the following commands.

sudo ddcutil detect --verbose
sudo ddcutil environment --verbose
sudo ddcutil interrogate --verbose
ddcutil interrogate --verbose

I'm not the greatest when it comes to X11 config, but here is my config regardless.

/etc/X11/xorg.conf

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    Option	   "RegistryDwords"  "RMUseSwI2c=0x01; RMI2cSpeed=100"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    Option	   "RegistryDwords"  "RMUseSwI2c=0x01; RMI2cSpeed=100"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth   24
    Option         "DPI" "96 x 96"
    Option	   "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth   24
    Option         "DPI" "96 x 96"
    Option 	   "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Fails to build from master or tarball on Ubuntu 14.04.4 LTS

Errors out during make

In file included from i2c/i2c_base_io.c:37:0:
/usr/include/linux/i2c-dev.h: In function 'i2c_smbus_write_quick':
/usr/include/linux/i2c-dev.h:176:55: error: 'NULL' undeclared (first use in this function)
return i2c_smbus_access(file,value,0,I2C_SMBUS_QUICK,NULL);

Details of configure, make & packages installed in this gist
https://gist.github.com/zentrification/bc95b2c8c55e29c9aecf

Seems similar to this which I found by googling
http://comments.gmane.org/gmane.comp.monitoring.nut.devel/6731

Also, when trying to build master autogen.sh did not work correctly, but this sequence did

autoreconf --install
./autogen.sh
./configure

Let me know if you need any more information, or would like me to try anything out.

ThinkPad dock not working

I have a Lenovo ThinkPad T440s laptop (Debian jessie), ThinkPad Ultra dock, and Dell U2415 monitor. I'm using Intel i915 graphics (haswell).

When I connect the monitor directly to the laptop, I can set the brightness with ddcutil setvcp 10. However, when the monitor is connected through the dock, ddcutil detect reports "Invalid display" for the monitor and a broken display 1 (see below) and ddcutil setvcp reports "Cannot communicate DDC".

The dock seems to expose monitors as multi-stream DisplayPort (DP2-1, DP2-2, DP2-3, though I'm only using the first). So I'm curious if DDC works over a dual-link DisplayPort connection. Otherwise this could also be an issue with I2C or the dock not passing through DDC.

I've tried ddcutil from both git source and deb package.

 $ ./src/ddcutil detect
  [...]
 Invalid display
    I2C bus:             /dev/i2c-9
    EDID synopsis:
       Mfg id:           DEL
       Model:            DELL U2415
       Serial number:    [redacted]
       Manufacture year: 2016
       EDID version:     1.4

 Display 1
    I2C bus:             /dev/i2c-10
       No EDID
 ddcutil: ddc/ddc_packet_io.c:166: ddc_open_display: Assertion `pDispHandle->pedid' failed.
 Aborted

$ cat /sys/bus/i2c/devices/i2c-9/name
DPDDC-C

$ cat /sys/bus/i2c/devices/i2c-10/name 
DPMST

Cannot set vcp value

i get the following error whenever i try to set a vcp value :

Setting value failed. rc=-3015: DDCRC_RETRIES(-3015): maximum retries exceeded

for instance i send command such as this one
ddctool --adl=0.0 setvcp 10 20

i tried this command maybe a hundred times and it did not work once so i assume maximum retries is not the problem here.
i use debian stable and use fglrx driver. i am using philips 234E5 display. i got no issues building from source and functions such as detect, capabilities, getvcp work fine. am i missing something here? does the return code 3015 refer to anything? here is the commands and features of this display ;
ddctool.txt

i am quite interested in this tool because i change brightness during day and night manually every day. it would be great if i could get this work. also i think tools such as redshift, flux etc could potentially use this tool.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.