Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ddcutil detect => Invalid display + DDC communication failed #14

Closed
fm99 opened this issue Feb 25, 2017 · 12 comments
Closed

ddcutil detect => Invalid display + DDC communication failed #14

fm99 opened this issue Feb 25, 2017 · 12 comments
Labels

Comments

@fm99
Copy link

fm99 commented Feb 25, 2017

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
@fm99 fm99 changed the title ddcutil detect => Invalid dislay + DDC communication failed ddcutil detect => Invalid display + DDC communication failed Feb 25, 2017
@rockowitz
Copy link
Owner

rockowitz commented Feb 26, 2017 via email

@fm99
Copy link
Author

fm99 commented Feb 26, 2017

Hi Sanford

Thank you for looking at my problem.

Both 'ddcutil setvcp d0 x11' and 'ddcutil setvcp d0 x12' give me the error message "Invalid display number".

Please find attached the output of the commands you have been asking for (including also the result of 'ddcutil interrogate'). The output looks fairly "normal" and "unsuspicious" to me. Being not an expert, I can only guess what might be wrong or missing. Maybe I need to load more I2C kernel modules (i2c_dev, i2c_piix4)?
ddcutil environment.txt
ddcutil detect --verbose --ddc --force-slave-address.txt
ddcutil environment --verbose.txt
ddcutil interrogate.txt

@rockowitz
Copy link
Owner

rockowitz commented Feb 26, 2017 via email

@fm99
Copy link
Author

fm99 commented Feb 26, 2017

Here we go:

  1. "[...] you're using an HP desktop with a Xeon processor having integrated graphics. Is that correct? Model?" => It's a HP EliteDesk 800 Mini PC (model F6X30EA#UUZ) with an i7-4785T CPU and an Integrated Graphics Controller.
  2. "Is there a secondary video card in the system?" => Nope.
  3. "If this happens to be a laptop, [...]" => It's not a laptop and there is no docking station.
  4. "Please try the following commands and send me the output." => Output:
    ddcutil detect --verbose --trace ddc --trace i2c --stats.txt
    ddcutil getvcp 10 --verbose --trace ddc --trace i2c --stats.txt
    ddcutil getvcp 10 --bus 6 --force --verbose --trace ddc --trace i2c --stats.txt

FYI: I have just built and configured ddcutil for my Raspberry Pi. The output for the first set of commands looks similar, i.e. on the Raspi I also get the "Invalid display" and "DDC communication failed" errors:
ddcutil environment.raspi.txt
ddcutil detect --verbose --ddc --force-slave-address.raspi.txt
ddcutil environment --verbose.raspi.txt
ddcutil interrogate.raspi.txt

Thank you.

@rockowitz
Copy link
Owner

rockowitz commented Feb 26, 2017 via email

@fm99
Copy link
Author

fm99 commented Feb 26, 2017

Hi again. You had the same thoughts as I did: In the user manual of the monitor there is an "Extra" tab mentioned on the OSD menu with an DDC-CI option for turning on/off DDC-CI support - on my monitor this option was turned off (default) :‑/ . So I have turned on DDC-CI and bingo: ddcutil does not complain anymore, i.e. I now get information for "Display 1" and the "DDC communication" error has gone.

The next problem was that switching interfaces with 'ddcutil setvcp d0 x11' (Linux PC -> Raspi) and 'ddcutil setvcp d0 x0f' (Raspi -> Linux PC) did not work: "Unrecognized VCP feature code: 0d". Finally, I have also found the solution for this remaining obstacle. The output of 'ddcutil capabilities' told me that the code for my monitor for changing input sources is 60 (and not 0d). So the working CLI commands for switching interfaces in my situation are 'ddcutil setvcp 60 x11' (Linux PC -> Raspi) and 'ddcutil setvcp 60 x0f' (Raspi -> Linux PC) - for both I have now defined handy keyboard shortcuts - mission accomplished :-))

Sanford, let me apologize for the fact that I have opened an issue here because of a wrong OSD default setting. I hope you have not spent too much time investigating my problem. I thank you very much for your efforts! You might want to consider adding a hint on your documentaton site (http://www.ddcutil.com/) for checking OSD settings before using ddcutil or reporting problems.

I owe you one!

@rockowitz
Copy link
Owner

rockowitz commented Feb 26, 2017 via email

@fm99
Copy link
Author

fm99 commented Feb 26, 2017

I'm glad you say that the effort was worth it.

  1. "Let me know if you can switch in both directions from the PC or the Pi." => Yes, it's working in both directions: On the Linux PC I enter 'ddcutil setvcp 60 x11' which switches to HDMI-1 where the Raspi is attached, and on the Raspi the command 'ddcutil setvcp 60 x0f' switches to DisplayPort-1 with my Linux PC attached. Apart from being very convenient, switching via ddcutil is much faster (<< 1s) than pressing the respective monitor button (~ 5s).

  2. Please find attached the output of 'ddcutil interrogate' from both machines:
    ddcutil interrogate.LinuxPC.txt
    ddcutil interrogate.Raspi.txt

Let me thank you again for your help and for the many interesting explanations that you have provided. Please keep up your excellent work - ddcutil is a very useful and cool tool!

All the best from Switzerland & kind regards,
Fabian M.

@rockowitz
Copy link
Owner

rockowitz commented Feb 26, 2017 via email

@fm99
Copy link
Author

fm99 commented Feb 26, 2017

"What I'm wondering is whether, just from the Linux PC, you can issue the command "ddcutil setvcp 60 x11" to switch to the Pi and then, again from the Linux PC, issue the command "ddcutil setvcp 60 x0f" to switch back." => This is working as well. While the monitor was showing the screen of my Raspi I've ssh'ed from my Android smartphone to my Linux PC and launched 'ddcutil setvcp 60 x0f' - the result was that my monitor switched back to the Linux PC - hope this helps.

@rockowitz
Copy link
Owner

rockowitz commented Feb 26, 2017 via email

@fm99
Copy link
Author

fm99 commented Feb 26, 2017

Thanks for the advice. I'm just re-compiling ddcutil with the option --disable-usb ;-)

Update:

# before # ./configure --disable-usb && make && make install :
-rwxr-xr-x 1 1182084 17:03:01 2017-02-26 /usr/local/bin/ddcutil

# after ## ./configure --disable-usb && make && make install :
-rwxr-xr-x 1 881852 23:56:25 2017-02-26 /usr/local/bin/ddcutil

# delta (with both executables unstripped): 300232 bytes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants