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
getvcp/setvcp 0x60 failed with Philips 328P6VUBREB/11 #162
Comments
Thank you for the detailed report. There's a lot to digest. This is the first monitor I've ever encountered that claims to support MCCS 3.0. But as you note the MCCS value obtained from the capabilities string differers from that returned by feature xDF. More to follow. |
Your problem report was the impetus to address enhancements that were "on the back burner". Commands vcpinfo, capabilites, getvcp, setvcp, dumpvcp, and watch now recognize the *--mccs option. The effect of the option, of course, depends on what the command does. ddcutil, for some time now, has had undocumented support for user supplied feature definitions. I've hesitated to announce the facility because the semantics of the facility, and particularly the format of feature definition files, is subject to change. A feature definition file for a monitor model specifies feature definitions that add to or override those in the MCCS spec. It can also optionally specify the MCCS version of the monitor. You could use a feature definition to supply your own list of recognized values for feature x60 (Input Source). The facility is enabled by option --udf. The default is currently --noudf. Preliminary documentation is at page User Defined Features. Command line option --mccs takes precedence over a MCCS version in a feature definition file, which in turn overrides the value obtained from feature xDF (VCP Version). The value in the capabilities string is not part of the algorithm. Let me know of any aspects of the design you regard as problematic, as well as any bugs. Extending and integrating these two features required significant refactoring, and there are undoubtedly as yet unaddressed "corner cases". Finally, let me say again how much I appreciated the clarity and thoroughness of your problem report. It encouraged me to address these long standing enhancements. Regards, |
Thanks for your quick response!
|
I have created an entry for your monitor on the ddcutil web site. Let me know if anything should be changed or added. |
LGTM! |
Environment
Hosts
I'm using ddcutil on a Raspbery Pi 4 and a Raspbery Pi Zero WH.
Both of them did not work properly due to the following problems.
#97
However, by using bangom's workarround below, I am able to use it without any problems.
raspberrypi/linux#3152 (comment)
According to the latest comments on the above issue, it looks like this Raspbery Pi issue has just been resolved. Excellent.
Monitor
My monitor is a Philips 328P6VUBREB/11.
https://www.philips.co.jp/c-p/328P6VUBREB_11/brilliance-lcd-monitor-with-usb-c-dock
The monitor has the following four input sources
ddcutil
Using the latest commit from the 1.0.0-dev branch as of today.
https://github.com/rockowitz/ddcutil/commits/1.0.0-dev
https://github.com/rockowitz/ddcutil/tree/c2c9d0a3472926c1fc2762d3cdb3d031a6eea079
Problem
I have been using the above environment with almost no problem, but I noticed that each VCP code may or may not work properly.
Example of both getvcp and setvcp working properly 0x62 (Audio speaker volume)
Example of neither getvcp nor setvcp working properly 0x60 (Input Source)
Investigation
VCP version 3.0
I started investigating from the source code about the
0xnn
notation not being available when usingsetvcp
. Then I noticed that when using that monitor, it seems to be processed for VCP version 3.0, which is not used very often. In fact, the VCP version obtained byddcutil detect
was 3.0.So I assumed that the monitor was actually running on 2.2 or something like that, and investigated the rest on that assumption.
(supplementary) After I finished the whole investigation, I noticed that the output of
ddcutil interrogate
seems to be 2.2 in theMCCS version
obtained byddcutil capabilities
.--mccs
optionI tried to specify 2.2 with the
--mccs
option, and the option itself was accepted, but from the source code, it seems to work only withvcpinfo
.Force change to VCP version 2.2 by hard coding
This made getvcp/setvcp 0x60 work as expected.
(Supplemental)
Invalid Value
ingetvcp 0x60
When USB-C is the input source,
getvcp 0x60
returnsInvalid value
. I haven't been able to track it properly, but it looks like the monitor is actually returning0x00
, so there's nothing I can do about it.Address
0x4cbeb1
inreadbuf
afterddc_write_read_raw()
is set to0x00
.ddcutil/src/ddc/ddc_packet_io.c
Lines 562 to 569 in c2c9d0a
Request
It would be nice to be able to force the VCP version to be used for getvcp and setvcp using options such as
--mccs
.However, since this seems to be a problem specific to the monitor, and not many users may be affected by it, and since passing
--mccs
may affect many functions, I don't intend to make such a strong request.Attachment
ddcutil interrogate
with vanilla ddcutilddcutil interrogate
with the patch to force VCP version 2.2 mentioned above.The text was updated successfully, but these errors were encountered: