Open jonpas opened 4 years ago
Same problem with the 32QN600-B (manufactured in week 3/2021)
Is there a way to extract the firmware image for analysis without resorting to physical means?
I can add and confirm the LG 32GP850-B which has the same issue (manufactured in week 4/2021)
Thanks for sharing the the information about the LG monitors.
The only way I can think of to obtain the firmware would be if LG provided a firmware updater. Presumably the program would save the old firmware.
On 06/25/2021 05:08 PM, uhlat wrote:
Same problem with the 32QN600-B
Is there a way to extract the firmware image for analysis without resorting to physical means?
— 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-868834320, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADMGY3XOLG3NZVC5R35CX73TUTV5RANCNFSM4J22O4BA.
Using 27UD88-W , it switches from DVI to HDMI just fine, but can't switch back from HDMI to DVI. That's what others are experiencing right? That the INPUT_SOURCE code fails when the current source is HDMI?
I updated my monitor firmware to 3.21 but that didn't work.
@hartman If your older monitor doesn't have this same problem, do you think downgrading the firmware could fix it?
That's what others are experiencing right? That the INPUT_SOURCE code fails when the current source is HDMI?
No, switching via DDC doesn't work at all, from any source.
I have the similar behaviour on my lg29um68. Can switch from any source (displayport and hdmi2) to hdmi1 but cannot switch from hdmi1 to hdmi2 or displayport or from displayport to hdmi2 or from hdmi2 to displayport
On Mon, Jul 19, 2021, 8:14 PM Adam Merritt @.***> wrote:
Using 27UD88-W , it switches from DVI to HDMI just fine, but can't switch back from HDMI to DVI. That's what others are experiencing right? That the INPUT_SOURCE code fails when the current source is HDMI?
I updated my monitor firmware to 3.21 https://www.lg.com/us/support/software-firmware-drivers?customerModelCode=27UD88-W&csSalesCode=27UD88-W.AEU&category=CT10000030&subcategory=CT30000200 but that didn't work.
@hartman https://github.com/hartman If your older monitor doesn't have this same problem, do you think downgrading the firmware could fix it?
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/rockowitz/ddcutil/issues/100#issuecomment-882677265, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEJTZP474SPVKC6CXLOYKFLTYRFOXANCNFSM4J22O4BA .
I haven't tried the other HDMI port, but I doubt that'd work. Anyone out there with a workaround? Could the monitors be controlled over USB-C for example... ?
On Mon, Jul 19, 2021 at 1:23 PM yeahman45 @.***> wrote:
I have the similar behaviour on my lg29um68. Can switch from any source (displayport and hdmi2) to hdmi1 but cannot switch from hdmi1 to hdmi2 or displayport or from displayport to hdmi2 or from hdmi2 to displayport
On Mon, Jul 19, 2021, 8:14 PM Adam Merritt @.***> wrote:
Using 27UD88-W , it switches from DVI to HDMI just fine, but can't switch back from HDMI to DVI. That's what others are experiencing right? That the INPUT_SOURCE code fails when the current source is HDMI?
I updated my monitor firmware to 3.21 < https://www.lg.com/us/support/software-firmware-drivers?customerModelCode=27UD88-W&csSalesCode=27UD88-W.AEU&category=CT10000030&subcategory=CT30000200
but that didn't work.
@hartman https://github.com/hartman If your older monitor doesn't have this same problem, do you think downgrading the firmware could fix it?
— You are receiving this because you commented. Reply to this email directly, view it on GitHub <https://github.com/rockowitz/ddcutil/issues/100#issuecomment-882677265 , or unsubscribe < https://github.com/notifications/unsubscribe-auth/AEJTZP474SPVKC6CXLOYKFLTYRFOXANCNFSM4J22O4BA
.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/rockowitz/ddcutil/issues/100#issuecomment-882724444, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACP6YCJ46DUSWDUNWCJLQBDTYRNSPANCNFSM4J22O4BA .
I'm purchasing an HDMI to USB-C adapter for $8 ... I hope that'll work
@amerrit2 I'm using a LG UltraFine 32UN880-B with a MacBook Pro + ddcutil. I can confirm that switching from USB-C does not work either (same as HDMI).
I'm using a LG ultrawide 29UB67-B.
From windows I can switch : from dvi to hdmi 1 from hdmi 1 to dvi
From windows i cannot switch from or to displayport (it flashes my screen and come back to current input source)
I tried from Mac os with a m1 chip and I can switch from displayport and to displayport ... I have no idea why
Can confirm "getvcp 60 always returns x00, which is not a valid value. setvcp 60 flashes the screen, never sets the value" is also happening on LG 29WN600-W (UltraWide 29"). What a shame :(
Potential 'fix' for those affected, on my new 27GP850
1) Enable auto-switch in monitor settings 2) In ClickMonitorDDC 7.2 use the 'turn off' command (not 'power off/on', this doesn't work) 3) If you activate something on the input you want to switch to (eg wiggle a mouse), the monitor will recycle to that input
Takes a few seconds longer than input switch command on CMM did with my old acer, but it's a workaround I'm willing to accept as I really didn't want to return an otherwise excellent monitor. Not sure how it would work with a non-interactive input. Hopefully helps somebody with a similar usage scenario to me :)
Potential 'fix' for those affected, on my new 27GP850
- Enable auto-switch in monitor settings
- In ClickMonitorDDC 7.2 use the 'turn off' command (not 'power off/on', this doesn't work)
- If you activate something on the input you want to switch to (eg wiggle a mouse), the monitor will recycle to that input
Takes a few seconds longer than input switch command on CMM did with my old acer, but it's a workaround I'm willing to accept as I really didn't want to return an otherwise excellent monitor. Not sure how it would work with a non-interactive input. Hopefully helps somebody with a similar usage scenario to me :)
nice clever trick but my stupid LG 29UM68-P does not have auto switch... :(
I can confirm the LG 27UL650 also has the input switch issue, I was replacing an older model which did work, I have emailed UK tech support to see what they say and will post any response, but have returned monitor and will look for a replacement.
32UL950-W having same issue - does not switch between inputs. (firmware was updated in aug. 2021)
# ddcutil detect | grep year
Manufacture year: 2019, Week: 9
# ddcutil -d 1 getvcp 60
VCP code 0x60 (Input Source ): DisplayPort-1 (sl=0x0f)
# ddcutil -d 1 setvcp 60 0x11
# ddcutil -d 1 getvcp 60
VCP code 0x60 (Input Source ): DisplayPort-1 (sl=0x0f)
LG 🖥 🗑
Had a response from tech support and same as others in forum, they said
We have had a response from our Technical Team and they have advised that our monitors do not support DDC-CI officially. Some models are able to issue some commands such as brightness, contrast etc, but if there are issues with this, it would not be considered a fault as it is not guaranteed to work. I apologise for any frustration this causes.
Having already sent the monitor back I didn't take it further as it was in the manual but would not expect anything to be done. Have replaced with a BenQ model, which fully works with DDC-CI (and allows input to be changed from an input that is not currently selected which is great for my use case).
So it seems the newer model simply won't work with DDC-CI input switching as it is intended.
can confirm this workaround works on LG ULTRAGEAR. I have found no other methods that work. I really loved this feature on my old samsung monitors - flip flopping between my docking station (work) an my gaming pc was so convenient with a keystroke both ways. AHK - ctrl+alt+[ & ctrl+alt+]
Potential 'fix' for those affected, on my new 27GP850
1. Enable auto-switch in monitor settings 2. In ClickMonitorDDC 7.2 use the 'turn off' command (not 'power off/on', this doesn't work) 3. If you activate something on the input you want to switch to (eg wiggle a mouse), the monitor will recycle to that input
Does anyone know what the ClickMonitorDDC 'turn off' command actually does? Which VCP code is it? It doesn't appear to be the same as VCP code D6 based on my testing with an Acer CB272U.
Confirming same issue here on LG49wl95c...
Same issue with LG 34WK95U, cannot seem to switch input.
Same issue with LG 34WN750. Never again LG.
I'm seeing the same behavior with an LG 27UK580
, and I will probably be returning it as a result of this and purchasing a non-LG monitor
also confirmed on LG 49WQ95C - trying to escalate with LG support now
Same issue 27GL850, it tries to change and then goes back...
In for updates.
Fails with LG 34" ultrawide 34GP83A-B. The monitor does not react to the x60 message whatsoever (no screen flashes). There's also no differences in x60 or any of the other vcp codes listed in ControlMyMonitor when observed from either workstation (one on DP and one on HDMI1)
Oddly, x60 lists four Possible values (15-18), however the hardware only has 3 ports (DP, hdmi(x2))
@primesun Try xset dpms force standby
, as it does the trick for me (with 32GN600).
What is doing that command ? I am on macOS so I tried my luck with kfix/ddcctl but inputs change doesnt seems to work either for my LG monitor (32UQ850-W). It seems that tools doesnt have that standby
command
@egormanga You workaround force the standby on the current used inputs, and then it auto switch to another one ?
Add the 35BN75C-B to the list of LG monitors that cannot switch inputs using DDC.
When the input is set to DisplayPort, it will switch to HDMI, but then it's stuck. The monitor menu still shows the input set to DisplayPort. I have to use the hardware controls to set it back.
When the input is set to HDMI, any DDC software I try returns errors and nothing happens.
Other settings (brightness, volume, etc.) seem to work as expected.
Some notes, because I just got LG's funky 16:18 monitor which also has PBP:
Other stuff from reverse engineering their OSC software:
Adding to the list, LG 29WK500 is also stubborn and wont switch inputs.
So, I've been reverse engineering the LG firmware (with a surprising amount of success given that MStar uses a proprietary ISA) and the only significant discovery I've made is that I can activate PBP mode using VCP 0xD7: 0x3 sets it to 2/3 on the left, 1/3 on the right, and 0x5 sets it to half and half.
The problem is that I have the 8:3 aspect ratio monitor and the vertical splits are kinda useless for me lmao, hopefully I can find the horizontal ones. But I guess if anyone has a ultrawide with PBP: there you go. Still can't find the input switcher either, it expects a value under 5 though.
ok actually I managed to find the input switching in a service manual of all things (filename 32BL95UW.pdf, search lg monitor service manual "DDC2AB"
), but it's not via VCPs, it's via the service/factory/manufacturer sidechannel "DDC2AB" (0x50 instead of 0x51)
Over USB HID (VID 0x043E, PID 0x9a39):
08 02 55 04 26 00 0b 37 50 84 03 f4 00 90 dd
Over I2C:
50 84 03 f4 00 90 dd
So it's DDC2AB Command 0xF4, values 0x90 (HDMI1) 0xD0 (DP) 0xD2 (USB-C). It operates the same as the input switcher as well, so if you're in PBP and the secondary is HDMI1, it will swap the displays if you set the primary to HDMI1.
ok actually I managed to find the input switching in a service manual of all things (filename 32BL95UW.pdf, search
lg monitor service manual "DDC2AB"
), but it's not via VCPs, it's via the service/factory/manufacturer sidechannel "DDC2AB" (0x50 instead of 0x51)Over USB HID (VID 0x043E, PID 0x9a39):
08 02 55 04 26 00 0b 37 50 84 03 f4 00 90 dd
Over I2C:
50 84 03 f4 00 90 dd
So it's DDC2AB Command 0xF4, values 0x90 (HDMI1) 0xD0 (DP) 0xD2 (USB-C). It operates the same as the input switcher as well, so if you're in PBP and the secondary is HDMI1, it will swap the displays if you set the primary to HDMI1.
Very nice work @shinyquagsire23.
Any suggestions for those of us who need to switch inputs while using Windows? I don't see a way to do this using ControlMyMonitor or ClickMonitorDDC.
@aeleus not sure honestly, the easiest way would be via USB instead of i2c though, since i2c apparently has to go through GPU drivers which is its own mess. I've got a basic python script if anyone wants to try on Windows:
https://gist.github.com/shinyquagsire23/f6b2adef253c6c3ab557a4852bf3abad
@shinyquagsire23 I've tried your Python script on 38WN95C-W and unfortunately it does not work :( The data is sent to monitor, but nothing changes. Do you have any other ideas I can try?
Same issue on 27GP95R, and python script above not working.
@TinkoLiu @drzony I apparently had a bug which caused it to error before sending things, but also I went ahead and cleaned up the script for normal usage (it takes arguments now instead of just being hardcoded to switch to HDMI1 and no PBP, and it shows a help prompt)
@shinyquagsire23 I was already able to send data with the previous code (I modified it a bit before trying, so the bug didn't affect me). It seems that 38WN95C-W has a different firmware. I get zero response when sending commands. I also tried your new script and nothing works. Things that I have tried:
write
to send_feature_report
. Also tried to remove the "wrapper"hex_dump
lines and added printing results for HID calls. It seems that data is written properly, but the commands have no effectread
results and it seems that no data is coming from the monitorEiher my monitor does not have this functionality or it requires a different "wrapper" for the command.
@shinyquagsire23 Kudos on an impressive bit of reverse engineering. When I have a bit of time I'll look into exposing lower level ddcutil services for DDC communication with an arbitrary I2C slave address.
For those unaware of it, page Reverse Engineering Proprietary DDC Extensions on the ddcutil web site outlines a relatively inexpensive (i.e. less than $100) setup for sniffing the I2c bus and watching how LG's Windows app communicates with the monitor.
Sadly the modified script still don't work on 27GP95R. I can confirm that the packets was written, already captured by bus hound. But my monitor has no response to that.
@rockowitz The problem with my monitor is that the LG Windows app does not support input switching, so I have nothing to sniff. I was hoping that the reverse engineered HID communication would work.
I just tried some decompile research on OnScreen Control and searching if there were hidden input switch function. Bad news, nothing found. Another bad news, this is how LG engineers write the code.
omg... it's a ternary explosion!!
@TinkoLiu for the 27GP950 firmware (I assume it's similar to the 27GP95R, but 27GP95R has no fw updates so idk), they seem to have inexplicably feature flagged it to 3 older monitors, whereas on the DualUp (28MQ780) it's feature flagged using a bitmap (again, why they need a per-model feature flag is beyond me lol)
DualUp firmware code
27GP95R
For the curious, the list of 'supported' monitors for input switching is supposed to be: GP850, QP750, GP950, WP950C, QP88D, UL550/500, GP750, 28MQ780, UP850, GP950, UN880, GQ850, UQ85R, WQ75C, WQ60C, WQ95C, UP600, UQ85R again
Explicitly unsupported monitors (lol?): GP850, UQ750, GQ900
Might see if I can make a tool that pulls the firmware bc I have a way to fix it, technically, but it relies on memory reads/writes and without the firmware I can't know the addresses to patch. That's what I've been doing w/ https://github.com/shinyquagsire23/lg_display_manager to fix the PBP/PIP switching.
Adding 32UN650-W having same issue
Following this thread. Recently got a 49WQ95C-W and for my use case, I want to have the ability to enable/disable PBP using software rather than the button behind the monitor
@shinyquagsire23 is there any possibility of "adapting" your lg display monitor utility for the 49WQ95C-W running on windows?
The current 1.5.0-dev branch has a hack that allow you to set set an arbitrary source address field in the DDC/CI Set Feature Request packet. It is controlled by temporary option name --i1, which takes an integer argument. (The parser recognizes several temporary use options named --f1, --s1, --i1 etc. to simplify testing without having to modify the parser.)
Here's an example of its use:
$ ddcutil setvcp xf4 x0090 --i1 x50 --noverify --trcfile i2c_execute
The final lines show the output show the ioctl() write for the Set Vcp Feature request packet, which has the non-standard source address, and is the same packet as documented by @shinyquagsire23.
...
1217380](i2c_ioctl_writer ) Starting fh=3, filename=/dev/i2c-5, slave_address=0x37, bytect=7, pbytes=0x557ef2cefe71 -> 50 84 03 f4 00 90 dd
i2c_rdwr_ioctl_data at: 0x7ffeae527e90
nmsgs: 1
i2c_msg[0]
addr: 0x0037
flags: 0x0000
len: 0x0007 (7)
buf: 0x557ef2cefe71 -> 50 84 03 f4 00 90 dd
[1217380](i2c_ioctl_writer ) Done Returning: OK(0).
[1217380](main ) ddcutil execution complete, Sat Feb 25 13:51:38 2023
This is the same packet documented by @shinyquagsire23.
(Note that --i1 argument needs to specified as a hex number. Otherwise it will be interpreted as an integer. The --noverify option was specified because a normal getvcp request would of course fail.)
I just tried some decompile research on OnScreen Control and searching if there were hidden input switch function. Bad news, nothing found.
Its kinda there (not really). In the libraries there is a code to "SetInputSource" in LGMonitorDDCCISDK.dll that is installed in windows directory, this calls SetProperty(0x60, value) in LGProtocolEngine.dll that is also there. All that code does is just standard setvcp 0x60. which obviously doesn't work. Given that OSC doesn't have ability to switch inputs thats probably just some of their standard ddc sdk stuff that is not used by osc
LG 24GN600 here, also doesn't respond to Input Select.
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.There is no
Supports DDC: [true|false]
in the output.$ ddcutil environment
shows all permissions are correct (read & write).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.Both monitors are connected to both an integrated GPU (Intel CPU) and dedicated GPU (GTX 1060) in the following way (VFIO setup):
Thank you in advance!