rockowitz / ddcutil

Control monitor settings using DDC/CI and USB
http://www.ddcutil.com
GNU General Public License v2.0
909 stars 38 forks source link

Cannot get capabilities: Maximum DDC retries exceeded. #433

Open SamuelBorn opened 3 weeks ago

SamuelBorn commented 3 weeks ago

System Information:

Problem Description

One of my monitors is recognized by ddcutil detect but everything else fails.

Is this a problem with my hardware not being supported or a software error?


Output of ddcutil detect:

Display 1
   I2C bus:  /dev/i2c-3
   DRM connector:           card0-HDMI-A-1
   EDID synopsis:
      Mfg id:               VSC - ViewSonic Corporation
      Model:                VG2433Smh
      Product code:         4911  (0x132f)
      Serial number:        TXC143300082
      Binary serial number: 16843009 (0x01010101)
      Manufacture year:     2014,  Week: 33
   VCP version:         2.2

Display 2
   I2C bus:  /dev/i2c-4
   DRM connector:           card0-DP-1
   EDID synopsis:
      Mfg id:               VSC - ViewSonic Corporation
      Model:                VX2457
      Product code:         47409  (0xb931)
      Serial number:        
      Binary serial number: 16843009 (0x01010101)
      Manufacture year:     2016,  Week: 22
   VCP version:         2.1

Example output of ddcutil -d 2 capabilities (took 24s)

Unable to get capabilities for monitor on Display_Handle[i2c-4: fd=3].  Maximum DDC retries exceeded.
rockowitz commented 2 weeks ago

Please submit the output of ddcutil interrogate as an attachment.

SamuelBorn commented 2 weeks ago

> ddcutil interrogate interrogate.txt

rockowitz commented 2 weeks ago

When you say everything else fails, are you including getvcp etc? The detect command internally performs getvcp operations to test DDC communication and read the VCP version. The interrogate output also shows successful operations.

capabilities is the most complicated operation. It performs several getvcp operations, each based on what is returned in the prior operation. So if you have a marginal video card/monitor, it's the most likely to fail.

Option --ddcdata (previously named --ddc) reports DDC data errors. I suspect you'll see lot of them for commands that fail.

It appears that you are using a high sleep multiplier for the monitor (2.0) so there's nothing more to be done there.

Your video card is rather old. It likely needs the special Nvidia settings .

SamuelBorn commented 2 weeks ago

When you say everything else fails, are you including getvcp etc? The detect command internally performs getvcp operations to test DDC communication and read the VCP version. The interrogate output also shows successful operations.

Sorry, you are right. getvcp works. I only tested setvcp.

~ ❯ ddcutil -d 2  getvcp 10         
VCP code 0x10 (Brightness                    ): current value =    70, max value =   100

Option --ddcdata (previously named --ddc) reports DDC data errors. I suspect you'll see lot of them for commands that fail.

Yes, I do:

~ ❯ ddcutil -d 2 setvcp 10 50 --ddcdata
DDC: Unexpected source address 0x82, should be 0x6e
DDC: i2c_response_bytes: 82 01 10 ac df 00 ff ff 02 02 6b 32 29 29 29 73 65 74 5f 65 65 70 28 6e 88 02 00 10 00 00 64 00 64 a4 32 29 29 29 73 65
DDC: Unexpected source address 0x82, should be 0x6e
DDC: i2c_response_bytes: 82 01 dd 61 10 00 00 64 00 64 a4 32 6e 88 02 01 dd 00 00 64 00 64 68 32 29 29 29 73 65 74 5f 65 65 70 28 34 30 29 6d 63
DDC: Unexpected source address 0x82, should be 0x6e
DDC: i2c_response_bytes: 82 01 df 63 dd 00 00 64 00 64 68 32 29 29 29 73 65 74 5f 65 65 70 28 34 30 88 02 00 df 00 ff ff 02 02 6b 32 29 29 29 73
DDC: Unexpected source address 0xff, should be 0x6e
DDC: i2c_response_bytes: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
DDC: Unexpected source address 0xff, should be 0x6e
DDC: i2c_response_bytes: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
DDC: Unexpected source address 0xff, should be 0x6e
DDC: i2c_response_bytes: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
DDC: Unexpected source address 0xff, should be 0x6e
DDC: i2c_response_bytes: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
DDC: Unexpected source address 0xff, should be 0x6e
DDC: i2c_response_bytes: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
DDC: Unexpected source address 0xff, should be 0x6e
DDC: i2c_response_bytes: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Verification failed for feature 10

It appears that you are using a high sleep multiplier for the monitor (2.0) so there's nothing more to be done there.

I did not (consciously) set it this high. Is it because of my old monitor?

rockowitz commented 1 week ago

I may have misinterpreted your cached sleep multiplier data. Try explicitly setting a high sleep multiplier using option sleep-multiplier 2.0

SamuelBorn commented 1 week ago

This did not seem to help.

$ ddcutil --sleep-multiplier 2.0 -d 2 setvcp 10 50 --ddcdata

DDC: Unexpected source address 0xff, should be 0x6e
DDC: i2c_response_bytes: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
DDC: Unexpected source address 0xff, should be 0x6e
DDC: i2c_response_bytes: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
rockowitz commented 1 week ago

I'm afraid there's nothing more I can suggest.

SamuelBorn commented 1 week ago

Okay, thank you for your time and attention anyway.