monitorcontrol: Severity of VCPIOError errors

Due to high level of errors severity it is impossible to use monitorcontrol (VCPIOError exception thrown) with monitors which do not follow the DDC/CI standard e.g. Philips 223V monitors returns corrupted data i.e. incorrect checksum and/or wrong length, despite that it is possible to control it.

Example output: Reading 0x60... Send: 51 82 01 60 dc | Q... Recv: 6e | n Invalid response, corrupted data - xor is 0x5e, length 0x08 6e 88 88 02 00 60 00 00 03 00 01 | n......... Send: 51 82 01 60 dc | Q... Recv: 6e | n Invalid response, corrupted data - xor is 0x5e, length 0x08 6e 88 88 02 00 60 00 00 03 00 01 | n......... Send: 51 82 01 60 dc | Q... Recv: 6e | n Invalid response, corrupted data - xor is 0x5e, length 0x08 6e 88 88 02 00 60 00 00 03 00 01 | n.........

If possible, it could be better to handle errors without throwing an exception and try to continue execution.

About this issue

  • Original URL
  • State: open
  • Created 4 years ago
  • Comments: 22 (10 by maintainers)

Most upvoted comments

Bypassing only checksum won’t work as most probably remaining code will fail as well. I saw this already - not only checksum was incorrect but expected data was too short thus unpacking failed and it was not caught.

For my application it would be better to pass some argument during runtime down to vcp to bypass checksum and following operations and try to recover and/or use some predefined default values i.e. I have config file in which I can specify e.g. which bus number should have it bypassed and remaining one(s) should not.

As I have physical access to this monitor I can prototype and propose something. What do you think?