ddcutil icon indicating copy to clipboard operation
ddcutil copied to clipboard

LG 29UM69G fails switching input

Open jonpas opened this issue 5 years ago • 153 comments

LG 29UM69G fails at switching monitor inputs. I did not try other capabilities. Performing $ ddcutil --display 2 setvcp 60 0x[0f|11] simply flashes the screen, but nothing changes.

$ ddcutil detect
...
Display 2
   I2C bus:             /dev/i2c-6
   EDID synopsis:
      Mfg id:           GSM
      Model:            LG ULTRAWIDE
      Serial number:    
      Manufacture year: 2019
      EDID version:     1.3
   VCP version:         2.1

There is no Supports DDC: [true|false] in the output.

$ ddcutil environment shows all permissions are correct (read & write).

$ ddcutil --display 2 getvcp 60
VCP code 0x60 (Input Source                  ): Invalid value (sl=0x00)

This shows up correctly as VGA-1 (sl=0x01) for display 1 (secondary monitor).

ClickMonitorDDC on Windows has the same issue of reporting 0x00 and not being able to switch.

$ ddcutil capabilities --display 2 --verbose
...
Unparsed capabilities string: (prot(monitor)type(lcd)UM69cmds(01 02 03 0C E3 F3)vcp(02 04 05 08 10 12 14(05 08 0B ) 16 18 1A 52 60( 11 0F 10) AC AE B2 B6 C0 C6 C8 C9 D6(01 04) DF 62 8D F4 F5(01 02 03 04) F6(00 01 02) 4D 4E 4F 15(01 06 11 13 14 15 18 19 20 22 23 24 28 29 32 48) F7(00 01 02 03) F8(00 01) F9 E4 E5 E6 E7 E8 E9 EA EB EF FA(00 01) FD(00 01) FE(00 01 02) FF)mccs_ver(2.1)mswhql(1))
...
   Feature: 60 (Input Source)
      Values (unparsed):  11 0F 10
      Values (  parsed):
         0f: DisplayPort-1
         10: DisplayPort-2
         11: HDMI-1

Both monitors are connected to both an integrated GPU (Intel CPU) and dedicated GPU (GTX 1060) in the following way (VFIO setup):

  • Display 1 (secondary):
    • VGA -> iGPU
    • DVI -> dGPU
  • Display 2 (primary, LG 29UM69G):
    • HDMI -> iGPU
    • DisplayPort -> dGPU

Thank you in advance!

jonpas avatar Dec 14 '19 12:12 jonpas

Displays vary in how they implement DDC when multiple monitors are attached.  Feature code x60 is particularly problematic. For some, setvcp works only if issued from the device whose input is selected.  That is, ddcutil or ClickMonitorDDC work only if issued on the currently selected input. For others, setvcp 60 works no matter what the input.

I assume since you mention ClickMonitorDDC that you're running Windows in a VM.  So as a first step, check whether ddcutil setvcp 60 or ClickMonitorDDC work when used on the currently active input.

DisplayPort connections are also problematic.  Can you configure so that DVI or HDMI, not DisplayPort, is used for the 29UM69G?

Finally, LG monitors, particularly Ultrawide monitors, have been seen to depart from the DDC standard.  See the description of "LG Ultrawide" in http://www.ddcutil.com/monitor_notes, which includes the following:

"When responding to a Get VCP Feature request, the monitor never sets the Result Code field of the VCP Feature Reply to Unsupported VCP Code. Instead, it always reports No Error. For unsupported VCP codes, all bytes in the response (MH, ML, SH, SL) are set to x00."

So that's the explanation for the x00 response you're seeing.  ddcutil tries to figure out if a display (pathologically) uses an all 0 response to indicate unsupported, but it's a heuristic test and isn't perfect.  If the answer is yes, that is stated in the monitor description.

The test that is reported by the "Supports DDC" line in the monitor description has been eliminated.  It was a simple test that probed slave address x37 without actually trying to communicate.   That was found to not always be accurate.  Instead, ddcutil simply uses whether DDC protocol communication works.  If it does, you see the "VCP version" line, if not there a message that the display does not support DDC.

Please run command "ddcutil interrogate"  when the input is set to the source of the command, and send the output as an attachment.

Sanford

On 12/14/19 7:55 AM, jonpas wrote:

LG 29UM69G fails at switching monitor inputs. I did not try other capabilities. Performing |$ ddcutil --display setvcp 2 60 0x[0f|11]| simply flashes the screen, but nothing changes.

|$ ddcutil detect ... Display 2 I2C bus: /dev/i2c-6 EDID synopsis: Mfg id: GSM Model: LG ULTRAWIDE Serial number: Manufacture year: 2019 EDID version: 1.3 VCP version: 2.1 |

There is no |Supports DDC: [true|false]| in the output.

|$ ddcutil environment| shows all permissions are correct (read & write).

|$ ddcutil --display 2 getvcp 60 VCP code 0x60 (Input Source ): Invalid value (sl=0x00) |

This shows up correctly as |VGA-1 (sl=0x01)| for display 1 (secondary monitor).

|$ ddcutil capabilities --display 2 --verbose ... Unparsed capabilities string: (prot(monitor)type(lcd)UM69cmds(01 02 03 0C E3 F3)vcp(02 04 05 08 10 12 14(05 08 0B ) 16 18 1A 52 60( 11 0F 10) AC AE B2 B6 C0 C6 C8 C9 D6(01 04) DF 62 8D F4 F5(01 02 03 04) F6(00 01 02) 4D 4E 4F 15(01 06 11 13 14 15 18 19 20 22 23 24 28 29 32 48) F7(00 01 02 03) F8(00 01) F9 E4 E5 E6 E7 E8 E9 EA EB EF FA(00 01) FD(00 01) FE(00 01 02) FF)mccs_ver(2.1)mswhql(1)) ... Feature: 60 (Input Source) Values (unparsed): 11 0F 10 Values ( parsed): 0f: DisplayPort-1 10: DisplayPort-2 11: HDMI-1 |

ClickMonitorDDC on Windows has the same issue of reporting |0x00| and not being able to switch.


Both monitors are connected to both an integrated GPU (Intel CPU) and dedicated GPU (GTX 1060) in the following way (VFIO setup):

  • Display 1 (secondary): o VGA -> iGPU o DVI -> dGPU
  • Display 2 (primary, LG 29UM69G): o HDMI -> iGPU o DisplayPort -> dGPU

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/rockowitz/ddcutil/issues/100?email_source=notifications&email_token=ADMGY3QQW2HL3D6TSKIMH2LQYTJUPA5CNFSM4J22O4BKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4IAP3SNA, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADMGY3XTANLUXQ4L6YUI32DQYTJUPANCNFSM4J22O4BA.

rockowitz avatar Dec 14 '19 18:12 rockowitz

I assume since you mention ClickMonitorDDC that you're running Windows in a VM. So as a first step, check whether ddcutil setvcp 60 or ClickMonitorDDC work when used on the currently active input.

Correct, Windows is in a VM, host is Arch Linux. That is why I tried both ddcutil and ClickMonitorDDC, but neither combination worked.

DisplayPort connections are also problematic. Can you configure so that DVI or HDMI, not DisplayPort, is used for the 29UM69G?

Sadly not possible, as 29UM69G only has 1x HDMI, 1x DisplayPort and 1x USB-C Alt. DP.

So that's the explanation the x00 response you're seeing.

Ah, I read that but didn't quite understand it, thanks for the explanation.

Please run command "ddcutil interrogate" when the input is set to the source of the command, and send the output as an attachment.

Here you go, ran $ ddcutil interrogate on Linux host (connected with HDMI to iGPU): ddcutil_interrogate.log

jonpas avatar Dec 14 '19 19:12 jonpas

On 12/14/19 2:49 PM, jonpas wrote:

I assume since you mention ClickMonitorDDC that you're running Windows
in a VM. So as a first step, check whether ddcutil setvcp 60 or
ClickMonitorDDC work when used on the currently active input.

Correct, Windows is in a VM, host is Arch Linux. That is why I tried both ddcutil and ClickMonitorDDC, but neither combination worked.

Let me put the question more precisely. When the monitor is displaying your Linux system, do getvcp and setvcp work for feature x60? What about feature x10 (brightness)? Conversely, when the monitor is displaying your VM Windows system, can ClickMonitorDDC change the input to Linux?  Can it change any of the more ordinary features such as brightness?

DisplayPort connections are also problematic. Can you configure so
that
DVI or HDMI, not DisplayPort, is used for the 29UM69G?

Sadly not possible, as 29UM69G only has 1x HDMI, 1x DisplayPort and 1x USB-C Alt. DP.

So that's the explanation the x00 response you're seeing.

Ah, I read that but didn't quite understand it, thanks for the explanation.

Please run command "ddcutil interrogate" when the input is set to the
source of the command, and send the output as an attachment.

Here you go, ran |$ ddcutil --display 2 interrogate| on Linux host (connected with DisplayPort to dGPU): ddcutil_interrogate.log https://github.com/rockowitz/ddcutil/files/3964274/ddcutil_interrogate.log

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/rockowitz/ddcutil/issues/100?email_source=notifications&email_token=ADMGY3WJAQLIWEWM4K542S3QYU2FVA5CNFSM4J22O4BKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEG4J5TQ#issuecomment-565747406, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADMGY3QFEZFGOFFKCDQSUE3QYU2FVANCNFSM4J22O4BA.

rockowitz avatar Dec 15 '19 07:12 rockowitz

Monitor displaying Linux (HDMI to iGPU - ddcutil):

  • getvcp 60 always returns 0 (LG Ultra-Wide issue)
  • setvcp 60 0x<> just blinks the monitor, nothing changes (tried all 3 given options)
  • getvcp 10 correctly returns current brightness
  • setvcp 10 [50|100|...] correctly sets brightness (as well as contrast, volume etc.)

Monitor displaying VM Windows (DisplayPort to dGPU - ClickMonitorDDC):

  • Input always shows 0 (LG Ultra-Wide issue)
  • Changing input just blinks the monitor, nothing changes
  • Current brightness is correctly shown
  • Brightness can be set (as well as contrast, volume etc.)

Brightness, contrast, volume etc. can also be set over non-active input and it works perfectly. Input however does nothing.

jonpas avatar Dec 15 '19 11:12 jonpas

Well, that pretty much nails it.  It's the monitor's implementation of feature x60.

To further confirm, you might try using Windows program softMCCS by enTech. (https://www.entechtaiwan.com/lib/softmccs.shtm). enTech is a maker of DDC chips for monitors, and softMCCS is designed to exercise implementations.

So that I can better understand/document this monitor, I'd appreciate it if you would run the following commands (assuming your physical configuration is unchanged) and send me the output.   Thanks.

  ddcutil getvcp 10 --bus 6 --trcfunc invoke_i2c_reader --trcfunc ddc_write_read --verbose   ddcutil getvcp 11 --bus 6 --trcfunc invoke_i2c_reader --trcfunc ddc_write_read --verbose

Sanford

On 12/15/19 6:53 AM, jonpas wrote:

Monitor displaying Linux (HDMI to iGPU - |ddcutil|):

  • |getvcp 60| always returns |0| (LG Ultra-Wide issue)
  • |setvcp 60 0x<>| just blinks the monitor, nothing changes (tried all 3 given options)
  • |getvcp 10| correctly returns current brightness
  • |setvcp 10 [50|100|...]| correctly sets brightness (as well as contrast, volume etc.)

Monitor displaying VM Windows (DisplayPort to dGPU - ClickMonitorDDC):

  • Input always shows |0| (LG Ultra-Wide issue)
  • Changing input just blinks the monitor, nothing changes
  • Current brightness is correctly shown
  • Brightness can be set (as well as contrast, volume etc.)

Brightness, contrast, volume etc. can also be set over non-active input and it works perfectly. Input however does nothing.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/rockowitz/ddcutil/issues/100?email_source=notifications&email_token=ADMGY3S3J6B7KYPGP4IBCQ3QYYLEXA5CNFSM4J22O4BKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEG4XM7Y#issuecomment-565802623, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADMGY3QMEF2RDRGZUE5ZZI3QYYLEXANCNFSM4J22O4BA.

rockowitz avatar Dec 15 '19 22:12 rockowitz

softMCCS gets all the correct codes but switching also fails with the same blank and return. Everything works correctly with my secondary (old Samsung SyncMaster) screen.

ddcutil_getvcp10_trcfunc.log ddcutil_getvcp11_trcfunc.log

jonpas avatar Dec 16 '19 14:12 jonpas

Thanks for the logs.  I stand corrected.  From the logs I see that the monitor is properly not setting the supported feature bit for feature x00 (by definition not a value feature) and feature x11 (which I've never seen implemented).  So it looks like the SL byte value x00 returned for feature x60 is just a special case reflecting the bad implementation of feature x60.

Sanford

On 12/16/19 9:55 AM, jonpas wrote:

softMCCS gets all the correct codes but switching also fails with the same blank and return.

ddcutil_getvcp10_trcfunc.log https://github.com/rockowitz/ddcutil/files/3968549/ddcutil_getvcp10_trcfunc.log ddcutil_getvcp11_trcfunc.log https://github.com/rockowitz/ddcutil/files/3968550/ddcutil_getvcp11_trcfunc.log

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/rockowitz/ddcutil/issues/100?email_source=notifications&email_token=ADMGY3SEC3MFWXWW3X6Z7BLQY6JFTA5CNFSM4J22O4BKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEG664TI#issuecomment-566095437, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADMGY3THNSAYGTFQBTKGRNDQY6JFTANCNFSM4J22O4BA.

rockowitz avatar Dec 16 '19 15:12 rockowitz

I assume there is no workaround to make feature x60 work properly?

And no problem!

jonpas avatar Dec 16 '19 17:12 jonpas

There's nothing in my toolbox to solve the problem. Since it appears in ClickMonitorDDC and softMCCS as well as ddcutil it's clearly a hardware problem in the monitor. All I can suggest is contacting LG tech support. If they get back to you please post their response here.

Sanford

On 12/16/2019 12:04 PM, jonpas wrote:

I assume there is no workaround to make feature x60 work properly?

And no problem!

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/rockowitz/ddcutil/issues/100?email_source=notifications&email_token=ADMGY3QWVYXYDG3BQWJHLCLQY6YLBA5CNFSM4J22O4BKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEG7MOKQ#issuecomment-566150954, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADMGY3SKVZAH7FQYPQKIU3LQY6YLBANCNFSM4J22O4BA.

rockowitz avatar Dec 17 '19 17:12 rockowitz

Thank you for your help. I will post here if I get any more information.

jonpas avatar Dec 17 '19 18:12 jonpas

I have this exact same issue with a 6 months old monitor. Seems unlikely that it would be hardware related, but I'm just speculating.

SkyLeite avatar Mar 06 '20 02:03 SkyLeite

I have the same issue and would be great if we could find a fix. @jonpas, have you heard anything from LG?

davemap avatar Apr 13 '20 19:04 davemap

Negative, it was presumably passed to their technical department, but there has been no other reply so far.

jonpas avatar Apr 13 '20 20:04 jonpas

It seems my LG 34WK500-P ultrawide monitor has the same issue. Changing control 0x60 to any value flashes the screen and returns to the current input. Interestingly, executing the command from my only connected device (my Manjaro PC) while being on the other (unused) HDMI input causes the OSD to pop up directly on the input list.

Gimzie avatar Jul 08 '20 17:07 Gimzie

I'm not clear how to interpret "executing the command from my only connected device (my Manjaro PC) while being on the other (unused) HDMI input".  What computers (or virtual machines with a dedicated video card using passthru) are connected to which monitor inputs?

On 7/8/20 1:05 PM, Gimzie wrote:

It seems my LG 34WK500-P ultrawide monitor has the same issue. Changing control 0x60 to any value flashes the screen and returns to the current input. Interestingly, executing the command from my only connected device (my Manjaro PC) while being on the other (unused) HDMI input causes the OSD to pop up directly on the input list.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/rockowitz/ddcutil/issues/100#issuecomment-655642786, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADMGY3SBSVJCKTXQREHHYVDR2SROBANCNFSM4J22O4BA.

rockowitz avatar Jul 08 '20 18:07 rockowitz

Sorry for the late reply (I sort of forgot about this thread) but I have my PC connected to HDMI 2 (running Manjaro Linux on an Intel UHD Graphics 630), and I have all of my GPU passthrough VMs set to use HDMI 1 (with my Nvidia Geforce GTX 1060 3GB card).

Gimzie avatar Jul 23 '20 07:07 Gimzie

I'm afraid I have nothing to add here. Seems like another LG idiosyncratic DDC implementation.

rockowitz avatar Jul 28 '20 03:07 rockowitz

I'm afraid I have nothing to add here. Seems like another LG idiosyncratic DDC implementation.

is this something that can be corrected in software/firmware (if that is the case, we can try asking LG technical support) or it is in hardware?

yeahman45 avatar Sep 02 '20 05:09 yeahman45

I'm afraid I have nothing to add here. Seems like another LG idiosyncratic DDC implementation.

is this something that can be corrected in software/firmware (if that is the case, we can try asking LG technical support) or it is in hardware?

Personally I'm not too sure. I think a couple of us have opened cases with LG support but I'm pretty sure my case has got lost because it probably isn't work their time.or effort to investigate. However, if enough people raise the question, we may see some results

davemap avatar Sep 02 '20 06:09 davemap

ok it is worth trying.

For my monitor lg 29um68-p, switching to hdmi 1 works but all other inputs (hdmi 2 and displayport) do not work. :(

yeahman45 avatar Sep 02 '20 06:09 yeahman45

Came here looking for help with this on an LG 38WN95C - same thing, changing control 60 does nothing, whereas other things like brightness works. Was hoping for a workaround, but clearly there isn't one at the moment.

marcosscriven avatar Sep 09 '20 17:09 marcosscriven

@rockowitz - can something like ddcutil watch help here? I tried it and this is the only output I get, over and over:

sudo ddcutil watch      
Watching for VCP feature changes on display [i2c: fd=3, busno=7]
Type ^C to exit...
(new_control_values_exist      ) New control values exist. x02 value: 0x02
(reset_vcp_x02                 ) reset feature x02 (new control value) successful

Every time the reset line is logged, the OSD disappears. I was trying to change the input while running watch.

marcosscriven avatar Sep 09 '20 17:09 marcosscriven

@marcosscriven strangely, that one lists DDC/CI in the specs (unlike others, including mine)

TaiSHiNet avatar Sep 09 '20 18:09 TaiSHiNet

I do have one further thought on this problem, though it's just a hunch. Picture By Picture mode complicates the logic of switching inputs.
Feature x60 was not designed with this capability in mind. Presumably X60 applies to the main (left) screen. The problems you're having may reflect how x60 was implemented given this increased complexity.

On 09/09/2020 01:36 PM, Marcos Scriven wrote:

Came here looking for help with this on an LG 38WN95C - same thing, changing control 60 does nothing, whereas other things like brightness works. Was hoping for a workaround, but clearly there isn't one at the moment.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/rockowitz/ddcutil/issues/100#issuecomment-689712611, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADMGY3V2HWXG6QCNYFRND6DSE64IHANCNFSM4J22O4BA.

rockowitz avatar Sep 09 '20 19:09 rockowitz

From an OSD menu perspective, PBP is a separate mode. In regular mode, one can choose an input from the top level. When in PBP mode, the menu changes, and then one has options for what goes on which side. All that said - does this means potentially there’s still something that can be sent over I2C would do it, albeit nonstandard? And could this be determined empirically in a safe manner? Or is the only safe option (I.e not bricking your monitor) to beg LG to help somehow (which we all know means somehow getting past requests like “reinstall Windows” etc.)?

marcosscriven avatar Sep 09 '20 19:09 marcosscriven

Another thought - I see running ddcutil capabilities shows a number of "manufacturer specific features". Could any of these potentially be used to change inputs? I can't find any explanation of this.

   Feature: F4 (manufacturer specific feature)
   Feature: F5 (manufacturer specific feature)
      Values: 01 02 03 04 (interpretation unavailable)
   Feature: F6 (manufacturer specific feature)
      Values: 00 01 02 (interpretation unavailable)
   Feature: 4D (unrecognized feature)
   Feature: 4E (unrecognized feature)
   Feature: 4F (unrecognized feature)
   Feature: 15 (unrecognized feature)
      Values: 01 06 11 13 14 15 18 19 20 22 23 24 28 29 32 48 (interpretation unavailable)
   Feature: F7 (manufacturer specific feature)
      Values: 00 01 02 03 (interpretation unavailable)
   Feature: F8 (manufacturer specific feature)
      Values: 00 01 (interpretation unavailable)
   Feature: F9 (manufacturer specific feature)
   Feature: EF (manufacturer specific feature)
   Feature: FA (manufacturer specific feature)
      Values: 00 01 (interpretation unavailable)
   Feature: FD (manufacturer specific feature)
      Values: 00 01 (interpretation unavailable)
   Feature: FE (manufacturer specific feature)
      Values: 00 01 02 (interpretation unavailable)
   Feature: FF (manufacturer specific feature)

Just looking at the value of the first one, for example:

sudo ddcutil getvcp F4  
VCP code 0xf4 (Manufacturer Specific         ): mh=0xff, ml=0xff, sh=0x00, sl=0x06

I have no idea what this means? Or how dangerous it would be to randomly start setting values.

marcosscriven avatar Sep 10 '20 16:09 marcosscriven

Further to the above, I noticed one can get all manufacturer code values:

sudo ddcutil getvcp MANUFACTURER 
VCP code 0xe2 (Manufacturer Specific         ): mh=0xff, ml=0xff, sh=0x00, sl=0x01
VCP code 0xe4 (Manufacturer Specific         ): mh=0x00, ml=0xff, sh=0x00, sl=0x00
VCP code 0xe5 (Manufacturer Specific         ): mh=0x00, ml=0xb3, sh=0x00, sl=0x00
VCP code 0xe7 (Manufacturer Specific         ): mh=0xff, ml=0xff, sh=0x00, sl=0x00
VCP code 0xe8 (Manufacturer Specific         ): mh=0x00, ml=0xff, sh=0x00, sl=0x00
VCP code 0xe9 (Manufacturer Specific         ): mh=0x00, ml=0xff, sh=0x00, sl=0x02
VCP code 0xea (Manufacturer Specific         ): mh=0x00, ml=0xff, sh=0x00, sl=0x00
VCP code 0xeb (Manufacturer Specific         ): mh=0x00, ml=0x01, sh=0x00, sl=0x00
VCP code 0xef (Manufacturer Specific         ): mh=0xff, ml=0xff, sh=0x5a, sl=0x60
VCP code 0xf4 (Manufacturer Specific         ): mh=0xff, ml=0xff, sh=0x00, sl=0x06
VCP code 0xf5 (Manufacturer Specific         ): mh=0x00, ml=0xff, sh=0x00, sl=0x02
VCP code 0xf6 (Manufacturer Specific         ): mh=0x00, ml=0xff, sh=0x00, sl=0x00
VCP code 0xf7 (Manufacturer Specific         ): mh=0x00, ml=0xff, sh=0x00, sl=0x02
VCP code 0xf8 (Manufacturer Specific         ): mh=0x00, ml=0xff, sh=0x00, sl=0x01
VCP code 0xf9 (Manufacturer Specific         ): mh=0x00, ml=0xff, sh=0x00, sl=0x32
VCP code 0xfa (Manufacturer Specific         ): mh=0x00, ml=0xff, sh=0x00, sl=0xff
VCP code 0xfb (Manufacturer Specific         ): mh=0x00, ml=0x0f, sh=0x00, sl=0x02
VCP code 0xfe (Manufacturer Specific         ): mh=0x00, ml=0xff, sh=0x00, sl=0x03

I noticed that 0xf9 changed from 0x32 to 0x46 when I swapped which side of PBP it was.

I thought therefore setting it by ddcutil might change it back, but I get a validation error:

sudo ddcutil setvcp f9 46   
Verification failed for feature f9

Sorry to bug @rockowitz - but do you have any guidance here please?

marcosscriven avatar Sep 10 '20 16:09 marcosscriven

Sorry for the stream - one other thing I tried is sudo ddcutil getvcp SCAN before and after swapping between HDMI 1 and HDMI 2 inputs. The only thing I see changing is the sh part of 0xAF:

HDMI 1

VCP code 0xaf (Unknown feature               ): mh=0x00, ml=0xff, sh=0x00, sl=0x00

HDMI 2

VCP code 0xaf (Unknown feature               ): mh=0x00, ml=0xff, sh=0xff, sl=0x00

So I tried setting this, to see if it would switch between HDMI 1 & 2.

However, it doesn't work directly with getvcp or setsvcp:

sudo ddcutil getvcp 0xaf
Unrecognized VCP feature code: 0xaf

sudo ddcutil setvcp 0xaf 0x0000  
Unrecognized VCP feature code: 0xaf

Is there any way @rockowitz to set an Unknown feature that can be read with sudo ddcutil getvcp SCAN?

marcosscriven avatar Sep 11 '20 13:09 marcosscriven

One more thing - I ran the scan again and saw more things change between HDMI 1 and 2:

< VCP code 0x0c (Color temperature request     ): 3000 + 35 * (feature 0B color temp increment) degree(s) Kelvin
---
> VCP code 0x0c (Color temperature request     ): 3000 + 45 * (feature 0B color temp increment) degree(s) Kelvin
5c5
< VCP code 0x10 (Brightness                    ): current value =    85, max value =   100
---
> VCP code 0x10 (Brightness                    ): current value =   100, max value =   100
8c8
< VCP code 0x15 (Unknown feature               ): mh=0x00, ml=0xff, sh=0x00, sl=0x0b
---
> VCP code 0x15 (Unknown feature               ): mh=0x00, ml=0xff, sh=0x00, sl=0x1e
23c23
< VCP code 0x62 (Audio speaker volume          ): current value =    34, max value =   100
---
> VCP code 0x62 (Audio speaker volume          ): current value =    37, max value =   100
31c31
< VCP code 0x87 (Sharpness                     ): current value =    50, max value =   100
---
> VCP code 0x87 (Sharpness                     ): current value =    70, max value =   100
35c35
< VCP code 0xaf (Unknown feature               ): mh=0x00, ml=0xff, sh=0x01, sl=0x00
---
> VCP code 0xaf (Unknown feature               ): mh=0x00, ml=0xff, sh=0x02, sl=0x00
38c38
< VCP code 0xc1 (Unknown feature               ): mh=0x01, ml=0x2c, sh=0x00, sl=0x55
---
> VCP code 0xc1 (Unknown feature               ): mh=0x01, ml=0x2c, sh=0x00, sl=0x64
62c62
< VCP code 0xf9 (Manufacturer Specific         ): mh=0x00, ml=0xff, sh=0x00, sl=0x32
---
> VCP code 0xf9 (Manufacturer Specific         ): mh=0x00, ml=0xff, sh=0x00, sl=0x46

marcosscriven avatar Sep 11 '20 13:09 marcosscriven

You could try executing the watch loop using individual ddcutil commands. That MAY allow you to learn something about what features are changed before the OSD disappears. Basically, here's pseudo-code for what watch does:

while (true): sleep(.5) # prevent the loop from consuming all the cpu cycles x02_val = getvcp x02 # this is pseudo-code, the getvcp command reports the value, but does not return it if x02_val == x02: # one or more new control values have changed x52_val = getvcp x52 while (x52_val != 0x00): changed_value = getvcp x52_val report the changed feature value setval x02 x01 # reset feature x02

For VCP 2.2, whether the OSD is enabled and sends button events is controlled by feature xCA. This is a complex non-continuous feature, introduced in VCP 3.0/2.2. If you're able to read feature codes from x52, you don't need to worry about it.

Assuming your VCP version is 2.2, see sections of the VESA Monitor Control Command Set Standard, V 2.2a https://milek7.pl/ddcbacklight/mccs.pdf. 2. Co-existence of Local and Remote Adjustment Options 8.3.2: OSD/Button Event control (xCA) 8.5: Miscellaneous Functions VCP codes (x02, x52) Appendix B.2: Keeping Local and Remote Operations in Synchronization

On 09/09/2020 01:54 PM, Marcos Scriven wrote:

@rockowitz https://github.com/rockowitz - can something like |ddcutil watch| help here? I tried it and this is the only output I get, over and over:

|sudo ddcutil watch Watching for VCP feature changes on display [i2c: fd=3, busno=7] Type ^C to exit... (new_control_values_exist ) New control values exist. x02 value: 0x02 (reset_vcp_x02 ) reset feature x02 (new control value) successful |

Every time the reset line is logged, the OSD disappears. I was trying to change the input while running watch.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/rockowitz/ddcutil/issues/100#issuecomment-689721584, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADMGY3QGUTBARAIYIFXNRGLSE66MJANCNFSM4J22O4BA.

rockowitz avatar Sep 11 '20 19:09 rockowitz